adafruit-circuitpython-week.../2021/2021-03-01.md
2021-03-01 12:58:08 -08:00

29 KiB
Raw Permalink Blame History

CircuitPython Weekly for March 1, 2021

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 using the following link: https://raw.githubusercontent.com/adafruit/adafruit-circuitpython-weekly-meeting/master/meeting.ical for use with standard calendar applications or in your browser: https://open-web-calendar.herokuapp.com/calendar.html?url=https://raw.githubusercontent.com/adafruit/adafruit-circuitpython-weekly-meeting/master/meeting.ical

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:07 Community News

3:13 70 Single Board Computers now support CircuitPython!

Blinka brings CircuitPython APIs and CircuitPython libraries to single board computers (SBCs). It is a pip installable Python library that runs in normal "desktop" Python. One can port their microcontroller code to an SBC or visa versa!

Blinka reached a milestone this week - it now supports 70 different single board computers! - CircuitPython.Org.

3:45 CircuitPython Subreddit reaches 2,000 members!

The CircuitPython subreddit on Reddit.com crossed the 2,000 members mark! Thank you to our Reddit readers for choosing to get your Python fix on our subreddit - Blog post.

4:09 Python Developers Survey 2020 Results

The Python Software Foundation are excited to share the results of the fourth official Python Developers Survey conducted with the help of JetBrains. More than 28,000 Python users from almost 200 countries took part in the survey this past October. With the help of the data collected, they are able to present the summarized results, identify the latest trends, and create a Python developer profile. - Python Software Foundation and JetBrains.

4:46 Raspberry Pi turns 9!

The original Raspberry Pi launched on Feburary 29th, 2012, making this low cost single board computer nine years old. It really doesn't seem that long ago. With 38 million units sold, the Raspberry Pi powers a huge community of makers, students and businesses. What started as a small project, meant to increase applications for Cambridge Universitys computer science program, has become a global movement - Tom's Hardware.

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:20 State of CircuitPython, Libraries and Blinka

6:45 Overall

  • 27 pull requests merged
    • 19 authors - askpatrickw, dhalbert, lesamouraipourpre, brentru, jposada202020, makermelissa, microDev1, Neradoc, BiffoBear, deshipu, tannewt, jepler, FoamyGuy, KTibow, adamcandy, hugodahl, anhmiuhv, rrottmann, dherrada
    • 9 reviewers - askpatrickw, dhalbert, brentru, makermelissa, ladyada, tannewt, FoamyGuy, kattni, dherrada
  • 23 closed issues by 14 people, 25 opened by 22 people

7:43 Core

Overall, 6.2 is rapidly approaching, a lot of good stuff for RP2040 and reliability stuff for S2 thats in that. Its likely to be the last subrelease of 6 and well probably switch to developing 7.0 at that point, making those incompatible changes at that time.

9:42 Libraries

We have a situation where pylint was updated, and a previously existing check for duplicate code that wasnt active started working. The way we do examples in our libraries, we have many examples with similar code, because the imports and setup are often the same even though the rest of the code is completely different. We want to have this check active on library code but not example code. We have pylint running in the way we need, but we are waiting for that to be applied to all of the libraries. For those who are submitting PRs that are failing on parts of the code you didnt touch, please dont sweat it. If you feel up to it, we can help you through the steps to make this change so your PR can go through soon, or you can just wait. Let us know. Thanks for all the contributions and progress on the libraries!

14:06 Blinka

15:35 Hug reports

@anecdata (lurking)

@charlesburnaford (lurking) Group hug

19:18 @danh

  • @jun2sak for thoughtful PR and continued work on sleep for nRF52.
  • @tannewt for reviewing my RP2040 DigitalInOut PR multiple times.
  • @hierophect for discussion on ESP32-S2 I2C wifi problems.
  • @jepler for discussion on ideas for speeding up translation builds.

@DaveP (lurking)

20:54 @David.Glaude (lurking, sorry for the long list)

  • @kattni and Carter for the SCD-30 CO2 Sensor guides
  • @tannewt for the audio stuff on RP2040 and helping out on discord
  • Tod Kurt (Twitter: @todbot) for the rotary encoder on QT-Py idea
  • Joey (Twitter: @josecastillo) for making me want to have a Casio F91W
  • Liz Clark (@BlitzCityDIY) for MIDI learn guides (surely one of those will be useful)
  • @gwizz for wanting to start a EN-UK translation
  • @microDev1 for UART on RP2040
  • @kmatch98 for finding a fix for an issue I raised more than a year ago about Adafruit_CircuitPython_BitmapSaver

22:01 @foamyguy

  • @neradoc for helping folks on discord
  • @jpodesta202020 for catching an issue with tilegrid inverting on ESP32S2 devices, and @Danh, @deshipu, @microDev, and @rsbohn12 all for looking into it in various ways, proposing and testing fixes.
  • Anyone who has checked out my weekend streams. Also @hugo and anyone who has offered feedback for improvement on details like broken links and volume levels.

23:06 @hierophect

  • @danh for low power help/discussion
  • @jun2sak for their work on the NRF low power
  • Group hug

23:43 @Hugo

  • @kattni and @askpatrickw for the feedback on the cookiecutter fixes
  • @foamyguy for the discussion about handling “progress” and “value”
  • @Foamyguy, @Jose David and @kmatch98 for the brainstorming chat on alternate handling of tabs in DisplayIO

24:39 @jepler

  • @kattni, @hugo, @dherrada and probably others for jumping to deal with the latest pylint updates
  • @krayola for a pleasant side chat about LEDs and more
  • @Deshipu for speculating about a mystery board (https://www.bunniestudios.com/blog/?p=6062)
  • @makermelissa congrats on getting to the milestone of 70 boards in Blinka!
  • @scott for adopting the new way of tracking participants in the meeting
  • @danh for an informative chat over the weekend about builds & translations

25:44 @jerryn

  • @microDev and @tannewt for all the work on the RP2040 UART

26:03 @kattni

  • @AnneB for working with me on learning how to take over the newsletter
  • @Dylan for working on patching the libraries to get the Pylint update taken care of
  • @Hugo for sorting out getting Pylint to run as we need to on our libs
  • Everyone who has PRs in currently that are failing due to the latest update - thank you for your patience while we sorted out the right solution to the issue!
  • @foamyguy for submitting his stream to the newsletter via PR

26:46 @kmatch98

  • @tannewt, @mark(gamblor) and @danh for help adding a new module to CP
  • @kattni and @Hugo for pylint fixes for “similar lines” error
  • @riskable for sharing a cool magnetic rotary input in discord #showandtell and especially for a detailed explanation on how it works with two hall sensors to get the rotation direction

27:39 @MakerMelissa

  • @ladyada for the crash course on working with linux device drivers
  • Everyone who has submitted new Blinka Boards to get us to 70
  • @ashtronaut for taking the time to help narrow now what was causing the display noise on the BrainCraft HAT
  • @tannewt for reading the Blinka notes
  • Group Hug

28:18 @Mark(gamblor) (likely text only)

  • @tannewt for point out an (obvious) fix I needed for countio and adding initializers to the PIO statemachine
  • Group hug cause Im probably forgetting someone from earlier this week!

28;37 @microDev (missing meeting)

  • @jerryn, @ajs256 and @ladyada for extensive testing of rp2040 uart.
  • @tannewt for reviewing and providing constructive feedback on uart PR.

28:55 @Jose David (lurking, text only)

  • @Everybody: Thank everybody for supporting each other
  • @Hugo, for insightful ideas and willing to do things in the spot like with the type annotations.
  • @tannewt @foamyguy for the learning experience during the streams

16:00 @tannewt

  • Microdev for taking on the 1.14 merge, uart and nvm
  • Foamyguy for the streams
  • Jun2sak for working on nrf52 sleep
  • Omsai for help with ninja build thoughts
  • Endico for helping folks on discord
  • Everyone for being so awesome. Were growing this awesome community thanks to you all

17:37 @TG-Techie (unable to attend, will listen in after)

  • @jerryn for helping debug the lc709203f/nrf52840 issue!!
  • @kmatch98 for the continuing streams
  • Community hug

18:03 @v923z

  • Group hug
  • @danh for bringing up the buffer protocol issue in ulab
  • @jepler for lending a helping hand with the integration of various fixes

29:20 Status Updates

@anecdata (lurking)

@charlesburnaford (lurking)

36:09 @danh

  • Debugging RP2040 I2C issues with a particular sensor, the TCS34725. No obvious reason why its not working: looked at timing, analog waveforms, etc. On some I2C writes, it NACKS instead of ACKing. It does work on bitbangio.I2C.
  • Thought about and wrote up various strawman ideas for speeding up translation builds.
  • Will start on beta.3 release notes.
  • Will be the nth person to work on ESP32-S2 I2C issues.

39:02 @David.Glaude (lurking)

39:45 @foamyguy

  • Last week
    • Review PRs for tab character fix and vertical text in the display_text library. Test tilegrid issue on magtag
    • Began work on Tiled game map imports for CircuitPython
    • Got the bulk of the display_text learn guide out of my head and into the pages. This week will be more passes for editing and other touch up details.
  • This week
    • Help out with pylint PR in the libraries?
    • Final reviews and testing on a few displayio PRs after the pylint change.
    • Look into and document an issue with TileGrid and Palette transparency in my PyGameDisplay library.

41:34 @hierophect

  • Last week:
    • Worked on STM32 low power, though I got a bit interrupted by some personal stuff
    • Broke out the EXTI and RTC modules so those are good to go for RotaryIO and RTC after low power.
    • Sold my first featherwing
  • This week:
    • Running some ESP32-S2 modules under some more extensive tests to try and work out bugs
    • More low power work

43:05 @Hugo

  • Last week
    • [Thought I] Wrapped up Progressbar (minus duplicate code check issue) with last minor changes, samples, documentation and type hints
    • Updated cookiecutter to run pylint checks as part of the pre-commit process
  • This week
    • Fix issue with duplicate where the Pylint update I made has called me out
    • Pick up and look into Magtag boot loop issue (#34)
    • Look at HID issue #53 - Supporting other locales & layouts

@Jayguitar (lurking)

43:58 @jepler

  • Last week:
    • Worked on pio examples & guide
    • Worked on RGBMatrix problems on pico; cracked one problem but maybe one remains
  • This week:
    • More pio, goal to send a guide to be published even if its short
    • More testing of RGBMatrix
    • Start work on rotaryio for rp2/pico
  • Fun stuff:
    • My CircuitPython WWVB receiver works very reliably now, needs a display

46:28 @jerryn

  • Last week
  • Next week
    • Continue migration to RPi 400.
  • Fun
    • Deployed the “birdcam” -- lots of bluebird activity in the yard. The may be looking for nesting places soon. Hope one chooses it.
    • Continued playing with HomeAssistant on RPi 4 -- using local MQTT Broker

52:42 @Jose David M. (Lurking, text only) Last week:

  • PR TAB detection for label and bitmap_label
  • PR for vertical_label
  • PR to sample type annotations This week:
  • Go back to Peripheral for the PICO
  • Open to python requests or others. if you teach me, I am willing to learn

53:09 @kattni

  • Last week:
    • New product info for TPS62827
    • Guide update for BMP388 QT revision
    • Sort out Pylint and pre-commit
    • Start guide for BLM kit
    • Start working on CircuitPython examples for BLM kit
    • More working with Anne on picking up the PoH newsletter
  • This week:
    • Continue BLM guide.
    • Help folx with their PRs regarding the Pylint fix
    • Feather RP2040 guide
    • Continue working with Anne on the newsletter.

@kevin_thomas (lurking, text only)

54:59 @kmatch98 Last week:

  • Updated documentation on GUI Widget and Control classes, incorporated feedback into the PR
  • Explored ability to add class inheritance graphs to Sphinx docs
  • Created a bitmaptools module to hold any bitmap manipulation tools (rotozoom is first function)
  • Updated Bitmap.blit to safely copy a bitmap region into itself (by adapting the redraw directions)
  • Created a scrolling text box widget
  • Encountered a year old issue with adafruit_bitmapsaver and proposed a fix, it highlighted a “feature” in core displayio.fill_area with how it handles pixels that do not reside in a group This week:
  • Update Switch documentation and examples, submit PR
  • Review the latest Progress bar PR
  • Update Dial widget and document features and limitations
  • Finalize structure of Annotation widget
  • Build a wrapper for a scrolling text box with up/down buttons
  • Add a bitmap ”fill_region” into bitmaptools

58:30 @MakerMelissa

  • Last Week:
    • Spent a good chunk of the week hacking on the Mini PiTFT Display Driver so that a single driver would work on each of the 3 ST7789 displays along with rotation and offsets
    • Updated the PiTFT script to be much more flexible with different rotation settings with different displays using the power of Python.
    • Implemented the offset logic into our Arduino library which makes it much cleaner to work with
    • Updated the Raspberry Pi Fan service script to make use of the built-in fan service
    • Update the circuitpython.org website with more blinka boards bringing us up to 70
    • Started diving into the conflict between the BrainCraft Audio driver and the BrainCraft Display
  • This Week:
    • Continue looking into Audio conflicts and hopefully solve it
    • Look into the Memory issues on PortalBase with the MatrixPortal
    • Update libgpiod_pulsein on Blinka to load 32 or 64 bit version depending on Raspberry Pi OS version
    • Add MatrixPortal display rotation option
    • Add MagTag WiFi enable option

1:00:18 @Mark(Gamblor)

  • Last week
    • Fixed/submitted countio for RP2040
  • This week:
    • Will try to get ParallelBus for RP2040 done but life got in my way

29:34 @tannewt

  • Got audiobusio checked in. UART checked in as well.
  • Flash rework (8MB flash for RP2 boards). Handed rotaryio off to @jepler.
  • Out on friday - stream on thursday

30:58 @TG-Techie (unable to attend, will listen in after) Last week:

  • Ramping up for small, first batch, TG-Watch production.
  • Tested new hot plate
  • Posted a “get notification once TG-Watch is on sale” quiz on twitter (; @TG_Techie)
  • Convinced a friend to try circuitpython!! (insert good intentioned villain laughter (please dont actually do that))
  • Integrated optional switching regulator into final rev of TG-Watch
  • Aligned screw holes with the reset button on the watch to remove an entry pointer for water Next week:
  • Test if the lsm6dso library is compatible with the lsm6dsox IC
  • Bring the prototypes up to parody with the rev04 TG-Watch
  • Test gasket maker with grey watch body
  • Some internal restructuring to optimize for memory in the TG-Gui Api

32:06 @v923z

  • Last couple of weeks continued work on microlab:
    • Fixed a number of smaller bugs
    • Added a couple of new functions, sorted out endianness problem
    • Experimented with a new extension module allowing lazy loading vast amounts of data that dont even fit into RAM.
  • Coming weeks:
    • Trying to finish the extension module. Once done, rolling out version 3.0

1:00:41 In The Weeds

1:01:07 @jepler, @danh

  • Goal: reduce CI build times
  • Dont build the “pirate” translation[a]
  • Dont build “almost empty and unmaintained” translations[b]
    • If a translation is seeing real activity, even if it is not substantially complete, we want to build it
    • This list would be hand-maintained
    • This would likely exclude: Hindi (0 translations), Greek (0 translations), Czech (3% translated), Korean (7% translated)
  • @jepler will file a PR so that theres an allow-list of translations to be built, excluding Hindi, Greek, Czech, Korean initially. Well leave pirate for now.
  • @tannewt will write a policy showing new translations where to start, and what the bar is for inclusion

1:15:35 @v923z How does the garbage collector deal with circularly referenced objects?

typedef struct _B_obj_t {
        mp_obj_base_t base;
        void *a;
} B_obj_t;


typedef struct _A_obj_t {
        mp_obj_base_t base;
        B_obj_t *b;
} A_obj_t;


B_obj_t *b = m_new_obj(B_obj_t);
A_obj_t *a = m_new_obj(A_obj_t);
b->a = a;
    @jepler - mark & sweep garbage collection handles circular references without difficulty https://en.wikipedia.org/wiki/Tracing_garbage_collection#Na%C3%AFve_mark-and-sweep

@v923z Is it what is implemented in micro/circuitpython? @danh - yes

1:22:00 @David.Glaude:[c] There are currently 3 boards that want to map RP2040 or PICO to Zero Raspberry Pi:

  1. Do I want to use PICO pin name (current solution) or can the RED Robotics have a board definition? If having a definition, car it be “exactly the same” as on a Pi Zero running Blinka (same physical position = same name).
  2. There is strong possibility that Arturo and Limor will/do not use the same pinout and there might be 3 differents mapping. => How to avoid this so that my example work on those 3 boards without modification?
  3. If (1 or 2) is not possible/desirable, how could I build an intermediate layer between “board.*”? ”import myboard as board” or something like that.

1:27:20 @Hugo

  • About the PyLint update, we may need to have a quick guide on updating the local/PR branch with the check, since the GitHub action will run on the code “as-is”, not “as it would be merged”
    • @kattni This is something well want to work with folks on individually. In terms of a “guide”, we could write something up in a Gist (Markdown) or a Google doc so we have a document to point folx to. Is that something youre interested in doing?
    • @hugo I can certainly write that up for a “Heres how you do it for now” guide-as-a-gist

1:30:57 Wrap-Up