adafruit-circuitpython-week.../2021/2021-04-19.md
2021-04-19 15:04:10 -05:00

28 KiB
Raw Permalink Blame History

CircuitPython Weekly for April 19th, 2021

Jeff is hosting

Video is available here 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 youd 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 were missing some.

3:22 Community News

CircuitPython now available for 200 boards! 200 boards!

There are now 200 boards that support CircuitPython! The Slide Trinkey - SAMD21 is board number 200. 200 boards!

CircuitPython, available in 15 different languages, is the one of the easiest ways to program microcontrollers. We began with the Circuit Playground Express approximately three years ago, and reached 100 boards in January 2020 with the Open Hardware Summit badge. Now, over a year later, we've reached 200 boards. Chips supported include: Espressif, Microchip SAMDs, Nordic, NXP, RP2040s, ST, and more! Thank you to everyone in our community who has submitted boards to CircuitPython! Check out the full list on CircuitPython.org! Read more - Adafruit Blog. Scott presents for Open Hardware Summit 2021 Interface Design in Open Source Hardware and Software

Scott presents Interface Design in Open Source Hardware and Software for Open Hardware Summit - YouTube. Check out the entire Open Hardware Summit broadcast on YouTube.

River Prarie Troll Project

The River Prairie Troll Project uses CircuitPython, among other things, to create an interactive art installation - YouTube.

Pico 8 Encoders with switches

You can hook up 8 rotary encoders with switches to Raspberry Pi Pico without any extra hardware, supported by CircuitPython - GitHub. Plan CO2

Plan CO2: making a public display of CO2 levels - Makezine. Plotting CO2 with Enviro+ FeatherWing and SCD-30

Enhancing the Pimoroni Enviro+ FeatherWing plotter to plot CO2 ppm from the Adafruit SCD-30 NDIR sensor - YouTube.

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.

6:13 State of CircuitPython, Libraries and Blinka

Overall

  • 54 pull requests merged
    • 30 authors - micglin, tannewt, tyomitch, kevinjwalters, stonehippo, davidleedom, jimbobbennett, caternuson, weblate, jposada202020, dherrada, anecdata, ZodiusInfuser, makermelissa, gamblor21, ladyada, Neradoc, hexthat, hugodahl, jepler, fede2cr, djecken, flavio-fernandes, dhalbert, todbot, FoamyGuy, wtuemura, ScottMonaghan, lesamouraipourpre, bergdahl
    • 14 reviewers - dherrada, anecdata, tannewt, makermelissa, ladyada, jedgarpark, kattni, askpatrickw, dhalbert, FoamyGuy, TheRealFenrir, kmatch98, brentru, caternuson
  • 22 closed issues by 13 people, 27 opened by 23 people

7:32 Core

Overall: Core work is going well. 6.2.0 has been stable and 7.x is well underway. Big changes can happen until we do our first 7.x pre-release. We hit 200 boards and continue to add more. We may want to consider 6.2.1 to backport the new board defs.

10:11 Libraries

Library updates in the last seven days:

Updated Libraries

Overall: Im still super pleased to see the older PRs being picked up. As well, Im very excited about all of the updates being made to the libraries through new PRs. Early hug report to everyone who is submitting PRs to the libraries. As always, if youre waiting on us for something in a current PR, please ping and well try to circle back to it as soon as possible. Otherwise, its worth looking at some of the older PRs and deciding what we want to do with them. (The oldest PR is still active!)

14:46 Blinka

Overall: Not much movement on the Blinka side, but happy to see more contributors.

16:09 Hug reports

@jepler

  • @danh for being a sounding board about some problem I was having on samd51 (I was asking the wrong question though)
  • @paintyourdragon (Phil B) for excellent code to study for the OV7670 camera & samd51 parallel capture interface
  • Github users @JoKalliauer and @howff for recently contributing to a (desktop) Python project of mine
  • @askpatrickw for updating circup so it works with 7.x (you have to install a prerelease version for now)

17:34 @jerryn

  • @kmatch for the memory guide
  • Group Hug

17:49 @Jose David (Text Only)

  • @Kmatch for the second contribution to my Arrow library. And the new Memory Saving learning guide
  • @anecdata for testing my silly solution

18:09 @kattni

  • @neradoc for manually updating the backend of circuitpython.org/downloads to remove the 6.2.0rc link that was still available, and for updating the script that generates all of that to make sure that doesnt happen again in the future.
  • @neradoc for getting module filtering going on the board support matrix
  • @Jose David for the flurry of documentation updates
  • @kmatch for his first guide on CircuitPython memory
  • Everyone who helped us get to 200 boards available on CircuitPython.org
  • The Ingenuity team at NASA for a successful first flight on Mars!

20:11 @kmatch

  • @jposada202020 for the arrow library: https://github.com/jposada202020/CircuitPython_ArrowLine.
  • @kattni and Justin for help creating a learn guide.
  • Thanks to all who contributed memory-saving techniques: @DavidGlaude, @endico, @lesamouraipourpre, and a community member who made a comment on the learn page about SAMD21 boards
  • The authors of the learn guide system for making it so easy to use!
  • @foamyguy for initiating the move of displayio widgets into the github CircuitPython org

22:13 @Mark(Gamblor) [ lurking if I can make it ]

  • Group hug

22:25 @MakerMelissa

  • @kattni for starting the FunHouse product guide
  • @dhalbert for contributing to Blinka
  • Noe for adding the Feather RP2040 to the MatrixPortal library
  • Group Hug

22:49 @tannewt

  • @kmatch for the memory saving guide
  • @ajs256 for suggesting a fix for an error on one of my PRs
  • @tyomitch for the QSTR space saving PR

23:20 @anecdata (lurking)

  • @Neradoc for testing a small PR I didnt have the board for

23:30 @Askpatrickw (missing meeting)

  • @jimbennet for his help on the AzureIoT library, it's always great to see Microsoft contributing!

23:50 @danh

  • @jposada202020 for doing documentation and example cleanup on multiple libraries
  • @neradoc for circuitpython.org improvements and readthedocs support-matrix module filtering

@DaveP (lurking)

24:32 @David.Glaude (lurking)

  • Bill Binko (@ATMakersBill) for progressing on BLE-HID to multiple host.
  • Chris Young and Bill Binko for the “QT Py Hat” and the IOT IR learn guide
  • @Kmatch for the memory saving learn guide and fixing BitmapSaver.
  • @kevinjwalters for more contribution to Enviro+ Featherwing and addition of CO2 data from Sensirion SCD-30.

25:07 @foamyguy

  • @Kmatch for creating a learn guide that covers tips for measuring and saving memory in CircuitPython
  • @lesamouraipourpre for help with sphinx syntax and fixing up a small whitespace issue in the cookie cutter templates
  • @Hugo for wrapping up work on the Vertical Progress Bar and refactor.
  • @jerryn for continuing to dig into the SMTP610 touch driver issue

26:06 @hierophect

  • @danh for help with deep sleep stuff
  • Group hug

26:21 @Hugo

  • @Jose David for walking me through how I would go about adding reviewers to a PR
  • @kmatch and @foamyguy for their testing of the ProgressBar changes over time
  • Group hugs

26:49 Status Updates

27:04 @jepler

  • Last week:
    • Spent some time on I2SOut on imxrt10xx, but never had success; setting it aside for a bit
    • Started on support for OV7670 cameras & parallel capture device on SAMD51. Have already been able to capture an image with CircuitPython
  • This week:
    • There were some things in the I2SOut branch that I should pull out and PR in their own right
    • Polishing a CP library for setting up the OV7670 camera & a core module for parallel image capture. Both are needed before the camera is usable
    • Identify any missing parts to allow the camera image to be fed to a displayio bitmap
    • COVID vaccination later today, my activity this week may be reduced if I have side-effects

29:17 @jerryn

  • Totally baffled by stmpe610 issue with displayio on feather rp2040
    • Plan to move the issue from the stmpe610 library to CP
    • Need to do more testing to narrow the description.
    • See https://github.com/adafruit/Adafruit_CircuitPython_STMPE610/issues/16 for the puzzle.
    • Briefly -- SPI reads fail after every other soft reboot….alternately works and fails. Only happens on RP2040 if displayio is also initialized. Works fine on M4 or STM32F405.
  • Fun -- Congratulations NASA on the first flight of the Ingenuity helicopter on Mars --It was fun to watch the broadcast this morning and great to see how excited the team was over a very simple line plot showing the altitude!

34:19 @Jose David (Text Only)

  • This week
    • Libraries documentation
    • Earth and Moon Animation In CircuitPython Vectorio
  • Next Week
    • Libraries documentation
    • Analog Clock on CircuitPython

34:50 @kattni

  • Last week:
    • Published another newsletter.
    • Wrote a README for the Project Bundle explaining quickly how to use the project bundle, and passed it onto Justin to make sure it includes a link to the guide it was downloaded from and the date
    • Published the Neo Trinkey guide - including templates! - example
    • Updated the HTU21-F and SHT31-D guides for STEMMA QT revisions
    • Started the FunHouse guide
  • This week:
    • Newsletter!
    • Blog update guides.
    • Look into getting an aggregated list of all CircuitPython libraries including the Adafruit and Community bundles. (Will be talking to Jose David about this on Tuesday)
    • QT Py RP2040 guide
    • Work on template pages that are specific to QT Py RP2040 (and M0)

38:09 @kmatch Last week:

39:39 @MakerMelissa

  • Last Week:
    • Almost finished on FunHouse and Home Assistant Guide, but needed some product guide pages
    • Worked on FunHouse Product guide
    • Learned about making Templates and Template Pages in Adafruit Learn Guides
    • Added a few more boards to circuitpython.org
  • This Week:
    • Finish up both guides
    • Play catch-up on some GitHub issues
    • Get back to updating VS Code Extension possibly

40:20 @Mark(Gamblor) [lurking/may be missing]

  • Need to look at issues/PRs for something else to work on (suggestions welcome)
  • Getting the vaccine Wednesday!

40:49 @tannewt

  • Finished demo code for BLE file transfer protocol. Added offsets and padded values to align.
  • Need to finish struct packing PR
  • Enhance our GitHub Actions for libraries and the core to better highlight errors and help solve them.
  • Start status LED change and will finish early this week.
  • Next step is reviving the core BLE code and updating for the new protocol. Working on merging in MicroPython 1.15. @anecdata (lurking)

43:01 @danh

  • Working on dynamic USB descriptors. Finished Python API for enabling/disabling most devices; HID API not done yet. Rewrote Python descriptor generation script to separate descriptors for reassembly and fixup at run-time, but this is getting out of hand, and I think I will just switch to custom code for each non-HID descriptor.
  • Lots of reviews

44:35 @David.Glaude (lurking)

  • Gave my CPX to a friend after showing off all my gear and telling him about CP
  • Made a list of advice (in French) and learn guide link to get him started with CPX and CP
  • Discussion with Bill Binko on his multi BLE keyboard project

45:09 @foamyguy

  • Last Week
    • Testing out the new Progress Bar style and examples
    • Creating new repos for displayio widgets in the circuitpython org
  • This week
    • Continue with new widget repos. Look into getting PyPi and readthedocs set up (weeds topic)
    • Update learn projects that use Progress Bar to use new import syntax
    • Stream deck enhancements: use icons to change layers. Possibly allow “folders” or a higher level organization unit that contains multiple layers allowing use to move between the layers within the folder.
    • Retest TLC59711 LED multiplexer PR.

47:19 @hierophect

  • Last week:
    • Rewrote the internal structure of the Alarm module so that things are easier to follow and maintain, starting with the ESP32-S2 as an example. Basically making it so the deep and light sleep processes arent overlapping so much when they dont actually share any code.
    • Fixed bug on the ESP32-S2 where returned alarm objects dont match each other
    • Got set up with the RP2040 with the Jlink, gdb debugging, some basic control tests, etc
    • Got started on RP2040 deep sleep functionality, using the RTC and GPIO.
    • Moved to Boston
  • This week:
    • More RP2040 sleep work
    • Other supervisor runtime reason work

48:48 @Hugo Last week:

  • Another update examples for progress bars
  • Start work on removing the hard-coded “Adafruit” and “CircuitPython” branding from the core CP code and making it configurable to set at build time This week
  • More work on hard-coded branding. Hopefully get a first pass done for review
  • Non-tech
    • Getting 2nd shot Wednesday A.M. So a fun,long drive all the way there and back. In rush hour to boot. Hurray for podcasts!

@Jayguitar (lurking)

51:11 In The Weeds

@askpatrickw (missing meeting) I wont be at the meeting today, but I dont Im required for the community to have this conversation.

Potential first candidate repos for CircuitPython GitHub Organization Other folks, please add the list before the meeting if you like.

  • Awesome-circuitpython
  • Circup
  • Cookiecutter Library Repo … Maybe this is a fork and we modify the Adafruit version so it is more streamlined (it can assume adafruit as the author for example) and then modify the CPorg version so it doesnt have Adafruit as author logic
  • I mentioned “not adafruit.io” IoT libraries: Adafruit_CircuitPython_AzureIoT, Adafruit_CircuitPython_AWS_IOT, Adafruit_CircuitPython_GC_IOT_Core. May not be the correct list, but these look like libraries the community should support directly.
  • Community Bundle
  • Circuitpython-org
  • The Wii accessories (other than the nunchuck)? Scott to check with Phil and Limor about these repos.

55:02 @Hugo

  • The contributing process learn guide for people who want to contribute to core libraries (Adafruit_CircuitPython_* ones) doesnt mention the process for requesting reviews. The process is mentioned in the “Creating and Sharing a CircuitPython Library”, however, that is related to a new library within the “Adafruit” organization.

The difficulty comes from requesting a review, which cant be done without a certain right, role or other permission on the repository (or organization). Without wanting to “@ the wrong people/world”, this seems like it might be a gap in the contributing guide, or perhaps some additional process is needed?

1:05:57 @Jose David (Text Only) @Danh

  • While updating library documentation, a lot of the examples and learning guides use busio.I2C to define I2C, instead of board.I2C(). The problem arises as, if we intend to use board.I2C() as our standard, adding this documentation to the libraries will imply: modify the simpletest code, modify the readme.rst and testing. Also the learning guide will not be the same as the library code, because it still uses busio.I2C. Busio is also mentioned in the adafruit_bus_device.i2c_device and blinka.busio library documentation. 60686e1e30/adafruit_bus_device/i2c_device.py (L19) 16848c1255/src/board.py (L226)

  • Joses Proposal. These peripherals and sensors haven using busio.I2C. (starting 2017 according to the copyright information in some of them),. If there is a new standard way to create the I2C: 1. Introduce the new way with a Cut-In (CircuitPython 7 or a specific date). 2. Document the old libraries with the method used in the simpletest.py code. 3. For the new sensors and peripherals libraries use the “new” standard I2C object creation method if any.

  • @danh: A board singleton for STEMMA/QT-connector I2C bus? board.STEMMA_I2C?

  • What is the meaning of
    This is in https://circuitpython.org/contributing/library-infrastructure-issues, and how to solve this? -

1:11:18 @foamyguy - circuitpython org: what accounts should be used for readthedocs and PyPi?

1:16:57 @simonc * Started reading about data flow analysis techniques, with the goal of applying these to reducing the size of circuit python libraries. * This task grew out of a comment from Kattni about the animations library becoming too big for use on small boards. In general, a circuit python library may have extra code for unneeded functionality; these can be pared-down, depending on what is used, to fit on smaller boards. * Data flow analysis can reveal what code depends on what other code or data. This is useful for a compiler optimization called “dead code elimination” and, more recently, “tree shaking” in javascript. These can be ported to python analysis. * Idea of “labels” was suggested to refer to a sub-part of the library being used, like “animations/mario” or “animations/flamingo”. These can be hand-built and maintained (like code that runs to remove parts of the library), or a front-end for a data flow analyzer; this second kind would reference all the code entry-points needed to use the library sub-part successfully. Everything else would be removed. * Some design work needs to be done to make a usable API for selecting parts of a library--this feature needs more support in circup or another tool, for building and hosting packages for these library sub-parts, or supporting users in making them locally and installing them.

1:41:26 Wrap-Up