Skip to content

Latest commit

 

History

History
412 lines (321 loc) · 27.5 KB

File metadata and controls

412 lines (321 loc) · 27.5 KB

CircuitPython Weekly Meeting for October 3, 2022

Video is available on YouTube.

Join here for the chat all week: http://adafru.it/discord.

The CircuitPython Weekly happens normally at 2pm ET/11am PT on Mondays. Check the #circuitpython channel on Discord for notices of change in time and links to past meetings. Meeting times are also available in iCal format for use with standard calendar applications and can also be viewed in your browser.

If you want to be able to participate in the meeting by speaking, you will need to be added to the @circuitpythonistas role on Discord. Please ask any one of the moderators or admins to add you if you’d like to join.

CircuitPython development is sponsored by Adafruit. Please support them by purchasing hardware from https://adafruit.com.

Reminders: Podcast available on most services. Let us know if we’re missing some.

02:50 Community News

CircuitPython 8.0.0 Beta.1 Released

Adafruit has released CircuitPython 8.0.0-beta.1, a beta release for 8.0.0. It is relatively stable, but there will be further additions and fixes before final release - Adafruit Blog. Notable changes to 8.0.0 since 7.3.0:

  • Added WiFi workflow with browser-based device discovery, filesystem browsing, upload, download, file editing, serial/REPL connection.
  • Added a one-line status bar, which displays connection status, last exception, and version on a terminal window title or on the top line of an attached display. Support for status bar display is also being added to the Mu and Thonny editors.
  • .env file in CIRCUITPY specifies WiFI connection parameters, BLE name, and other startup values.
  • dotenv support: os.getenv() values can be set in the .env file.
  • Preliminary implementation of WiFi on the Pi Pico W.
  • Revised Espressif camera support, now available on ESP32, ESP32-S2, and ESP32-S3.
  • Bulk analog input: analogbufio (available only on RP2040 for now).
  • Pin state can be preserved during deep sleep (available only on Espressif for now).
  • Allow setting USB VID, PID, manufacturer, and product ids at runtime.
  • AnalogIn values are full range from 0 to 65535, instead of having zeros on low-order bits.
  • OneWire is only in onewireio, and is no longer in busio or bitbangio.
  • gamepadshift has been removed: use keypad.ShiftRegisterKeys instead.
  • MP3Decoder and WaveFile can now take a filename instead of an open file.
  • PulseOut no longer accepts a PWMOut. Use a Pin instead.
  • Added TileGrid.contains().
  • i2ctarget.I2CTarget is the new name for i2cperipheral.I2CPeripheral. Accept both for now. I2CPeripheral will be removed in 9.0.0.
  • Auto-brightness support in displayio and framebufferio has been removed. It was never implemented completely.
  • Restored rainbowio and onewireio to a number of boards.
  • Print out whole-number floats exactly and correctly.
  • Enabled collections.deque on most builds. Full Release Notes - GitHub.

03:30 Hacktoberfest 2022

Hacktoberfest 2022

Hacktoberfest 2022 is here! Whether it's your first time or not, it's time to hack out four (or more) pristine open source pull/merge requests. All of October, DigitalOcean sponsors Hacktoberfest - Hacktoberfest. "The first 40,000 participants (maintainers and contributors) who complete Hacktoberfest can elect to receive one of two prizes: a tree planted in their name or the Hacktoberfest 2022 t-shirt" - Hacktoberfest Participation. CircuitPython wants your Hacktoberfest contributions! We've labeled a number of issues as "hacktoberfest" and the the full list is on circuitpython.org. Your Hacktoberfest participation is not limited to these issues.

04:20 Project of the Week: Turn your houseplant into a pet

Turn your houseplant into a pet

Fytó is a project by CodersCafeTech which incorporates Raspberry Pi Zero and sensors to turn your basic houseplant into a pet. Fytó can show six different emotions based on its interpretation of three sensors measuring soil moisture, temperature, and light levels. It uses a Raspberry Pi Zero 2 W running Python with the Adafruit Blinka compatibility software, allowing use of CircuitPython code - Raspberry Pi and YouTube.

04:56 Newsletter Details

The CircuitPython Weekly Newsletter is a CircuitPython community-run newsletter emailed every Tuesday. The complete archives are here. It highlights the latest Python on hardware related news from around the web including CircuitPython, Python and MicroPython developments. To contribute your own news or project, edit next week's draft on GitHub and submit a pull request with the changes. You may also tag a tweet with #CircuitPython on Twitter, or email cpnews@adafruit.com.

05:41 State of CircuitPython, Libraries and Blinka

Overall

  • 40 pull requests merged
    • 17 authors - dhalbert, semininja, flom84, tekktrik, rsbohn, bergdahl, tcfranks, kattni, patrickslarson8, isacben, FoamyGuy, wtuemura, weblate, jepler, Neradoc, MicroDev1, JulianOrteil
    • 5 reviewers - makermelissa, dhalbert, tekktrik, FoamyGuy, jepler
  • 25 closed issues by 8 people, 18 opened by 15 people
  • Assigned Hacktoberfest label to 0 issues.

06:58 Core (read by Dan this week)

09:06 Libraries

Library updates in the last seven days:

12:06 Blinka

12:53 Hug reports

@kattni (hosting)

  • @Neradoc for previously implementing the ability to search the support matrix by boards that do not have a particular module included
  • @deshipu for providing me with the code to print out a series of ASCII characters using CircuitPython.
  • @makermelissa for providing guidance on a guide update

14:27 @anecdata (lurking)

  • @jepler for all of the work so far getting Pico W wifi up and running - it’s great to have wifi working on a new port!

14:39 @CGrover (text only)

  • @tekktrik for ‘splaining git concepts during the Community Help Desk stream. Came away with some very useful hints.

14:53 @danh

  • @jepler for fixing some Pico W WiFi issues on Friday and Saturday, allowing the release of 8.0.0-beta.1 on Saturday.
  • @anecdata for doing vital testing for the above
  • @jepler for automating the formatting of in-line documentation with black
  • @UnexpectedMaker for helping with debugging some puzzling ESP32-S3 problems
  • @MicroDev1 for fixes and reviews

15:47 @DJDevon3

  • @DanH & @UnexpectedMaker for helping me troubleshoot a nasty UM FeatherS3 bug. Still haven’t gotten to the bottom of it yet.
  • @Skerr & @Hem for the advice on how to possibly repair a Feather S2 where I accidentally dropped a solder blob between the voltage regulator and capacitor.
  • @Core Developers for releasing a new version this week.
  • @Tannewt for a very helpful Pico video even though it's a year old it was still very helpful for a project I’m working on.
  • @Tekktrik for helping me figure out some Git issues in preparation for Hacktoberfest.
  • @Everyone working on neat projects and documentation.

16:40 @foamyguy

  • @jepler for getting support for picow going
  • @danh and everyone who contributed since previous beta for making a new beta1 release
  • @shulltronics on Github for investigating an issue with the Turtle library when used via Blinka_DisplayIO vs. CircuitPython, submitting a fix for it, as well as testing a few additional tweaks
  • @tekktrik for leading the Community Help desk and Hacktoberfest kickoff.

17:32 @jepler

  • @Anecdata especially, but everyone who provided testing and feedback on Pico W wifi functionality
  • @paulsk for dogged pursuit of I2CTarget
  • @bill88t for adding the Pico W to circuitpython.org
  • Hug in anticipation of all the Hacktoberfest contributions the community will be offering.
  • Group hug

18:43 @makermelissa

  • @kattni for updating the Quad Alphanumeric Backpack guide
  • Group Hug

19:04 @Paul Cutler (gone this week)

  • @Kattni for her help with the Community Help Desk blog post at the last minute
  • @Tekktrik for running the Community Help Desk last Thursday for Hacktoberfest kickoff and to everyone who stopped by
  • Group hug

19:24 @tekktrik (not present or text only)

  • @DJDevon3, @CGrover, @KeithTheEE, @PaulCutler and anyone else I missed that tuned in for the Community Help Desk stream last week, I especially enjoyed chatting with you all after the tutorial
  • @kattni for the Community Help Desk blog post, as well as the nice banner image for it
  • @Hem and @madbodger for the feedback on posting things in the Discord server, and making sure the right info goes in just the right places
  • @foamyguy for all the reviews and streams, they’re always fascinating to watch
  • Group hug!

20:02 @snkYmkrct (Snakey Maker Cat) - text only

  • @foamyguy, @jepler, and @danh for being so awesome and helpful during my first contributions to CircuitPython
  • Group hug

20:20 Status Updates

20:49 @kattni (hosting)

  • Last week:
    • Finished up the QT update for the quad alphanumeric backpack STEMMA revision.
    • Submitted a now merged fix to update the pin order on Grand Central M4 to match the silk.
    • Continued working on LTR-3xx guide.
  • This week:
    • Finish up final additions to WiFi Mailbox guide.
      • Add an external antenna to the completed project to show another way to do it
      • Update the Power Usage graphs with the latest CircuitPython build.
    • Test issue #6676 on the core
    • Finish up the LTR-3xx guide
    • Add webhook for RTD to four library repos
    • Add Metro Mini V2 to Metro Mini guide
    • PCF8575 new product guide.

23:26 @CGrover (text only)

  • Since ulab was dropped from the MatrixPortal distribution, I refactored PaletteFader to use list iteration instead. Successfully tested the new version on v7.3.3 and v8.0.0-beta.1. The revised version runs 25% to 30% slower than the ulab version, but is still in an acceptable range for most applications. Both versions are available in the PaletteFader Community Bundle library.
  • Cooler weather (< 90F) means the landscaping project will be completed soon – if the wildfire smoke dissipates. Just a 3-bag concrete project and one more yard of decorative stones to move before a dozen or so boulders arrive. After that there will be ample time for music, electronics, and software projects (thinking wishfully).

24:16 @danh

  • Released CircuitPython 8.0.0-beta.1. Includes a lot of working Pico W network code.
  • Debugged Espressif power consumption during deep sleep. Got consumption back down to expected value by not asking for pin holds if not needed.
  • Simplified the status bar enabling/disabling code in the hopes of fixing some bugs. It seems better, but still needs more testing.
  • Did a lot of reviewing.
  • Wrote a draft page of specific limitations for built-in modules per port, after surveying what those limitations were.
  • This week will continue to work on 8.0.0 issues.

26:34 @DJDevon3

  • Got my TR-Cowbell OSHW (Open Source Hardware) certified. No t-shirt but a nice logo I can put on the board. Still waiting for v1.2 boards to arrive later this week.
  • Finished the port of Becky Stern’s Youtube Subscriber counter from NodeMCU to Circuit Python using 7-segment display backpacks and ESP32-S2. I’m using the non-stemma version of the displays, the stemma version didn’t exist when I bought them 2 years ago.. Splicing wires to make it work came with a big mistake. All of my future 7-segment display purchases will be the stemma version if possible.
  • While working on the 7-segment backpacks I accidentally dropped a solder blob right onto the voltage regulator of the Feather S2. This morning I used a hot air rework station for the first time ever and successfully repaired the board! It smoked a lot and some headers are melted but still a great success in resurrected a board that would otherwise had to be thrown away.
  • No progress on the LORA messenger/mailbox project.
  • Started a new Youtube channel that will be focusing on maker types of projects.
  • Went through the outskirts of a hurricane since last meeting. Wasn’t nearly as affected as the Ruiz brothers or others on the west coast of Florida. Used WipperSnapper to log some neat pressure data. Have a Sparkfun weatherstation arriving this week and plan to combine my LORA knowledge and solar for wireless environment logging. WipperSnapper now in Farenheit too! In case you’ve never been through a hurricane they have huge pressure drops that pop your ears like being on an airplane. Here’s a graphic and that’s all for this week. Everyone stay awesome!

29:46 @foamyguy

  • Testing a refactored version of BME280 library that allowed us to eliminate some duplicated code
  • Investigating some strange status outputs from the Github Actions workflows that generate file structure screenshots
  • Testing a proposed fix for Adafruit Turtle library that allows it to work the same under Blinka_DisplayIO on RasPi, or PC as it does under circuitpython
  • Reviewing some Typing PRs
  • Learning a bit about the basics of minimqtt library to gain enough understanding to review and test a proposed fix for it.

31:15 @jepler

  • Last week:
  • Pico W support became much more solid, including support for socket servers, and all the code made it into 8.0.0-beta.1! Again, thanks to testers but especially Anecdata for running lengthy reliability tests
  • We need more testing, if you have a Pico W please get it out and try the wireless functionality. Let us know on #circuitpython-dev or via issues
  • Implemented black code formatting on the “stubs” in C comments that is our documentation of core modules.
  • Published a second keyboard guide with CircuitPython: the Tandy 1000 keyboard just before the end of the month of SepTandy
  • This week:
  • Working on integrating mbedtls as the ssl library on Pico W. Again, micropython furnishes a great foundation and I hope that after ‘straightforward’ conversion into the common-hal style the basics will start to function. We still have a big question mark around the idea of including a certificate store with CircuitPython, so initially it will probably use ssl but not actually verify the server certificate, which is just the same as no security.
  • The “certificate store” is a list of security certificates that are trusted by browsers and other devices, and which “sign” the certificates used by individual websites. It’s big (hundreds of kB) so simply putting it in the device firmware in the same format that a browser uses is not likely to work out. Espressif has a way of eliminating a large fraction of the data, so I’m hoping that I can re-use their open source code in the context of the Pico W. But until I know the size of mbedtls itself, I don’t know whether it’ll fit within the flash capacity we have available
  • Pico-sdk doesn’t do SSL, and micropython’s SSL works by putting a particular website’s public certificate on the device in a file, so this is trouble if you want a generic firmware that can connect to a wide range of sites, like a standard browser does
  • I’m not an expert in any of this, so corrections of my misperceptions as shown above are welcome

33:45 @makermelissa:

  • Last Week:
  • Worked on wrapping up some more code editor changes
  • Decided to take a break and started working on getting the TensorFlow on Raspberry Pi guide working on Bullseye
  • I got it working on Raspberry Pi OS Desktop, but am now trying to get it running on Raspberry Pi OS Lite
  • I’m having some success, but I suspect picamera2 may be having trouble running on a 240x240 display
  • Reviewed Kattni’s Quad Alphanumeric Backpack guide update
  • This Week:
  • Finish up updating TensorFlow guide
  • Test out 128x64 featherwing wired up to a non-feather board and write up a page
  • Add missing boards to circuitpython.org
  • Hopefully get back to finishing up code.circuitpython.org

34:48 @tekktrik (not present or text only)

  • Last week
  • Streamed for the Community Help Desk on Thursday showing people how to get set up from scratch for Hacktoberfest
  • Re-recorded said tutorial so I could streamline and improve it, and posted the video to the Adafruit YouTube channel
  • Had PR merged that fixed blank keywords being added to pyproject.toml sometimes when using the cookiecutter
  • Addressed the feedback on the GPS library type annotations PR, which merged today
  • Submitted a PR to allow the adafruit_logging library to be more CPython-compliant by not requiring a name for a logger (which gives you the “root” logger)
  • Finished the GitHub Action that compiles MPY files, zips them, and attaches them to releases, which should help people creating CircuitPython projects create those files as they develop their code.
  • This week
  • Catching up on PR reviews
  • Merge in the change to the MQTT library that makes it keyword-only when instancing
  • Continue turning our own CI process into composite actions so adabot isn’t needed to update them all anymore
  • Still hoping to revive the image transfer feature for the Bluefruit Connect library
  • Looking at making a helper library that makes it easy to use pastebin services like PasteBin and GitHub Gist so I’m hoping to get to that in the next few weeks
  • In personal news, moving to a new apartment over the next few weeks so a lot of putting things in a lot of boxes

36:24 In The Weeds

36:49 @tekktrik (not present or text only)

  • The GitHub Action for building MPY files is called using the owner’s name, so I can either transfer it to Adafruit or the CircuitPython GitHub organization. Depending on which, the script would be called using:
  • name: Compile and zip project code uses: adafruit/build-mpy@v1 with: github-token: ${{ secrets.GITHUB_TOKEN }} circuitpy-tag: "7.2.0"

    • name: Compile and zip project code uses: circuitpython/build-mpy@v1 with: github-token: ${{ secrets.GITHUB_TOKEN }} circuitpy-tag: "7.2.0"

      Is one preferable to the other? My vote is for circuitpython because it sounds less like an internal tool, but I’m attached to either.

@kattni - the circuitpython organization exists for a specific purpose (action by a group of non-adafruit people) so putting it in adafruit makes more sense, even if it works on community libraries as well.

38:35 @foamyguy adafruit/Adafruit_CircuitPython_Bundle#404

Should we limit the file structure screenshot generator actions to run only on the Adafruit fork of the relevant repos (Bundle, and LearningSystem)? It seem these cron scheduled workflows are getting executed on all forks (that are up to date enough) causing additional copies of these images to get created and committed into all of the different forks. @jepler, @kattni - let’s do it

41:53 @snkYmkrct (Snakey Maker Cat) - text only

Starting from this bug in the audiomp3 module adafruit/circuitpython#6843, I noticed a lot of other similar issues opened over time. Since this is a usage problem, I think one way to definitively solve it is to turn MP3Decoder into a singleton, and not allow multiple instances of it. Once a MP3Decoder object is created, it could be saved, and reused for every new call to the MP3Decoder constructor. Would this be possible / desirable in this case?

  • 42:34 @jepler: No. While usually it should be used “like a singleton” there are actually use cases for having multiple MP3Decoder objects. From a long ago, and sadly unreleased, project called multimp3: sample1 = audiomp3.MP3Decoder(open("427400__imjeax__forest-ambient-loop.mp3", "rb"))

bird_calls = [ "271150__seth-m__titmouse-call.mp3", "456440__inspectorj__bird-whistling-robin-single-13.mp3", "512780__iwanplays__croworraven2.mp3", "85403__readeonly__canaryartie-3.mp3", ]

sample2 = audiomp3.MP3Decoder(open(bird_calls[0], "rb")) The code goes on to play sample1 in a loop, and then randomly play one of the bird_calls from time to time to create variation.They’re mixed together in realtime with AudioMixer. I think it ran on a pygamer.

  • @djdevon3: multiple mp3s is definitely what audio people will want, and having more than one becomes more feasible as microcontrollers become more capable.
  • @cgrover: Multiple instances for sample mixing is useful for music, too.
  • @snkymkrct: Just add in big red letters then, in all guides that only one instance should be created

47:19 Wrap-Up

Next meeting is Tuesday the 11th of October at the usual time of day.