# CircuitPython Weekly for June 28, 2021

Video is available here [on YouTube](https://youtu.be/ePFOqhkDVLM).


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](https://raw.githubusercontent.com/adafruit/adafruit-circuitpython-weekly-meeting/master/meeting.ical) for use with standard calendar applications and can also be viewed [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 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.
## 3:11 Community News
### 3:17 Circup 0.9.9

Circup 0.9.9 is out which includes support for the new dot mpy format in CircuitPython 7, tab-based auto-complete for library names, and support for the Community Bundle!
Pip install circup today !

### 3:38 Texas Instruments Answers Questions on their New TI-84 Plus CE Python Graphing Calculator Plus an Update: The Calculator uses an ATSAMD21 chip as a CircuitPython Coprocessor

In May of 2021, Adafruit saw that there was a fork of CircuitPython reported to be running on the new TI-84 Plus CE Python Graphing Calculator by Texas Instruments and they had to get one (and did!). Adafruit then reached out to the folks at TI Education / TI Calculators and asked if they could send over some questions to their team(s) and they said YES. See the questions and responses - [Adafruit Blog](https://blog.adafruit.com/2021/06/25/adafruit-interviews-texas-instruments-education-about-python-on-calculators-and-more-ticalculators-ticodes/)

Plus: the calculator is running a fork of CircuitPython on a ATMEL (Microchip) ATSAMD21E18 (the same chip as the Adafruit GEMMA M0, TRINKET M0, and many TRINKEYs) - [Adafruit Blog](https://blog.adafruit.com/2021/06/25/adafruit-interviews-texas-instruments-education-about-python-on-calculators-and-more-ticalculators-ticodes/).

### 4:30 ADABOX 19 is shipping in July - JOIN NOW: [https://adabox.com](https://adabox.com)

The next [ADABOX from Adafruit](https://www.adafruit.com/adabox_get_started) ships in a few days! Curated Adafruit products, unique collectibles, and exclusive discounts. Delivered quarterly. [Subscribe now or give as a gift](https://www.adafruit.com/adabox_get_started)!

### 4:56 keypad: support for vector and matrix key scanning in CircuitPython

Dan Halbert has completed initial work on a comprehensive keypad module for CircuitPython - [GitHub](https://github.com/adafruit/circuitpython/pull/4891) and [Adafruit Blog/YouTube](https://blog.adafruit.com/2021/06/20/circuitpython-speedy-keyswitch-handling/).

The keypad module provides three different ways to scan a set keys, provided by the classes Keys (one key per pin), KeyMatrix (row/column matrix), and ShiftRegisterKeys (external shift registers). Key scanning is done in the background and includes debouncing. Key transition events (pressed or released) are put on a queue, implemented by classes Event and EventQueue.

### 5:46 Microcontroller Shortages Projected into 2022

Shortages of microcontrollers, used to run millions of devices worldwide, are acute and projected to last into next year. Chips from Microchip/Atmel, Nordic, ST and others are affected. Due to timing, the new Raspberry Pi RP2040 and ESP chips from Espressif Systems do not seem as impacted at the moment.

The shortages have led developers to scour the internet for dwindling supplies. For chips that are unobtainable, some products are being redesigned using more easily available microcontrollers, which can be a costly hardware and software process - [CNBC](https://www.cnbc.com/2021/05/12/the-global-chip-shortage-could-last-until-2023-.html), [EE News Europe](https://www.eenewseurope.com/news/all-one-embedded-software-stack-help-chip-shortage), [Seeking Alpha](https://seekingalpha.com/article/4435264-microchip-technology-benefiting-from-strong-microcontroller-demand-and-shortages-mchp), and [Bloomberg](https://www.bloomberg.com/news/articles/2021-06-22/wait-times-for-chips-stretch-further-deepening-shortage).

### 6:38 Camera support coming to CircuitPython on ESP32-S2

Testing the ESP32-S2 Kaluga dev kit v1.3 with the [latest PnR from Jeff](https://github.com/adafruit/circuitpython/pull/4880) to add native camera support to CircuitPython. In only a few lines of code it can initialize a display, read a buffer from the camera, then blit it out to the onboard 240x320 screen. There are now libraries for both OV7670 and the nicer/newer [OV2640](https://github.com/adafruit/Adafruit_CircuitPython_OV2640). Amazing work by the team to get this so smooth! - [Adafruit Blog](https://blog.adafruit.com/2021/06/22/camera-support-coming-to-circuitpython-on-esp32-s2/) and [YouTube](https://youtu.be/3qTod5rLvnw).

### 7:18 An online editor for CircuitPython

YouTube user River Wang [posts](https://youtu.be/Z44PD-ZleAU) about a CircuitPython online IDE, which is web-based, requiring zero software setup. This would be ideal for any computer, but especially for machines where installing additional software is not possible such as at libraries, public spaces, and on school Chromebooks - [Adafruit Blog](https://blog.adafruit.com/2021/06/22/an-online-editor-for-circuitpython-circuitpython/), [GitHub](https://github.com/urfdvw/CircuitPython-online-IDE), [YouTube](https://youtu.be/Z44PD-ZleAU) and [try it out here](https://urfdvw.github.io/CircuitPython-online-IDE/).

### 7:50 CircuitPython Weekly Newsletter

The CircuitPython Weekly Newsletter is a CircuitPython community-run newsletter emailed every Tuesday. The complete [archives are here](https://www.adafruitdaily.com/category/circuitpython/). 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](https://github.com/adafruit/circuitpython-weekly-newsletter/tree/gh-pages/_drafts) and [submit a pull request](https://help.github.com/articles/editing-files-in-your-repository/) with the changes. You may also tag a tweet with #CircuitPython on Twitter, or email cpnews@adafruit.com.

## 8:45 State of CircuitPython, Libraries and Blinka
### 9:00 Overall
* 39 pull requests merged
  * 27 authors - tannewt, Neradoc, hathach, cdmuhlb, askpatrickw, twa127, bergdahl, dhalbert, dgriswo, fede2cr, hexthat, wtuemura, mcauser, makermelissa, cwalther, FoamyGuy, v923z, jepler, DavePutz, kattni, dherrada, lesamouraipourpre, weblate, t-ikegami, hierophect, arofarn, jposada202020
  * 11 reviewers - tannewt, makermelissa, brentru, FoamyGuy, jepler, askpatrickw, lesamouraipourpre, kattni, ladyada, dhalbert, jposada202020
* 29 closed issues by 11 people, 18 opened by 10 people
### 10:08 Core
* 20 pull requests merged
  * 17 authors - tannewt, Neradoc, hathach, askpatrickw, bergdahl, dhalbert, fede2cr, hexthat, wtuemura, cwalther, FoamyGuy, v923z, jepler, DavePutz, weblate, t-ikegami, hierophect
  * 5 reviewers - tannewt, ladyada, dhalbert, jepler, jposada202020
* 19 open pull requests
  * https://github.com/adafruit/circuitpython/pull/3696 (Open 224 days)
  * https://github.com/adafruit/circuitpython/pull/3730 (Open 220 days)
  * https://github.com/adafruit/circuitpython/pull/3941 (Open 172 days)
  * https://github.com/adafruit/circuitpython/pull/3967 (Open 168 days)
  * https://github.com/adafruit/circuitpython/pull/4088 (Open 150 days)
  * https://github.com/adafruit/circuitpython/pull/4131 (Open 143 days)
  * https://github.com/adafruit/circuitpython/pull/4762 (Open 44 days)
  * https://github.com/adafruit/circuitpython/pull/4778 (Open 40 days)
  * https://github.com/adafruit/circuitpython/pull/4793 (Open 38 days)
  * https://github.com/adafruit/circuitpython/pull/4851 (Open 25 days)
  * https://github.com/adafruit/circuitpython/pull/4903 (Open 8 days)
  * https://github.com/adafruit/circuitpython/pull/4907 (Open 5 days)
  * https://github.com/adafruit/circuitpython/pull/4928 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/4925 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/4924 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/4931 (Open 1 days)
  * https://github.com/adafruit/circuitpython/pull/4930 (Open 1 days)
  * https://github.com/adafruit/circuitpython/pull/4936 (Open 0 days)
  * https://github.com/adafruit/circuitpython/pull/4935 (Open 0 days)
* 13 closed issues by 5 people, 14 opened by 7 people
* 465 open issues
  * https://github.com/adafruit/circuitpython/issues
* 5 active milestones
  * 6.x.x - Bug Fixes: 0 open issues
  * 7.0.0: 66 open issues
  * Libraries: 15 open issues
  * Long term: 375 open issues
  * Support: 5 open issues
  * 4 issues not assigned a milestone


* Core download stats available at https://circuitpython.org/stats


Overall: 
### 12:24 Libraries
* 16 pull requests merged
  * 11 authors - mcauser, makermelissa, FoamyGuy, jepler, cdmuhlb, kattni, dherrada, lesamouraipourpre, dgriswo, arofarn, jposada202020
  * 10 reviewers - tannewt, makermelissa, brentru, FoamyGuy, jepler, askpatrickw, lesamouraipourpre, kattni, ladyada, jposada202020
  * Merged pull requests:
    * https://github.com/adafruit/cookiecutter-adafruit-circuitpython/pull/144 (Days open: 14)
    * https://github.com/adafruit/Adafruit_CircuitPython_AdafruitIO/pull/75 (Days open: 11)
    * https://github.com/adafruit/CircuitPython_Community_Bundle/pull/79 (Days open: 11)
    * https://github.com/adafruit/Adafruit_CircuitPython_EPD/pull/53 (Days open: 9)
    * https://github.com/adafruit/Adafruit_CircuitPython_Display_Text/pull/152 (Days open: 8)
    * https://github.com/adafruit/Adafruit_CircuitPython_ST7735R/pull/22 (Days open: 7)
    * https://github.com/adafruit/Adafruit_CircuitPython_IS31FL3731/pull/45 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_ST7735R/pull/24 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_ST7735R/pull/23 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_LC709203F/pull/14 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_LC709203F/pull/13 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_NeoKey/pull/2 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Bundle/pull/324 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Bundle/pull/323 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Bundle/pull/322 (Days open: 1)
    * https://github.com/adafruit/CircuitPython_Community_Bundle/pull/81 (Days open: 1)
* 14 closed issues by 7 people, 3 opened by 3 people
* https://circuitpython.org/contributing
  * 306 open issues
  * 3 good first issues
  * 40 open pull requests (Oldest: 556, Newest: 11)
Library updates in the last seven days:
**New Libraries**
 * [Adafruit_CircuitPython_DisplayIO_SH1106](https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_SH1106)
 * [Adafruit_CircuitPython_OV2640](https://github.com/adafruit/Adafruit_CircuitPython_OV2640)
 * [Adafruit_CircuitPython_NeoKey](https://github.com/adafruit/Adafruit_CircuitPython_NeoKey)
**Updated Libraries**
 * [Adafruit_CircuitPython_OV7670](https://github.com/adafruit/Adafruit_CircuitPython_OV7670)
 * [Adafruit_CircuitPython_Display_Text](https://github.com/adafruit/Adafruit_CircuitPython_Display_Text)
 * [Adafruit_CircuitPython_EPD](https://github.com/adafruit/Adafruit_CircuitPython_EPD)
 * [Adafruit_CircuitPython_IS31FL3731](https://github.com/adafruit/Adafruit_CircuitPython_IS31FL3731)
 * [Adafruit_CircuitPython_ST7735R](https://github.com/adafruit/Adafruit_CircuitPython_ST7735R)
 * [Adafruit_CircuitPython_LC709203F](https://github.com/adafruit/Adafruit_CircuitPython_LC709203F)
 * [Adafruit_Python_PlatformDetect](https://github.com/adafruit/Adafruit_Python_PlatformDetect)
 * [CircuitPython_Community_Bundle](https://github.com/adafruit/CircuitPython_Community_Bundle)


Overall: We’re still working through the current open PRs. We’re down to 40 as of this report, and we’re still looking to get through the rest. We’re keeping up with new ones pretty well, but there are many older ones which still need to be dealt with. If you’re waiting on a reply to a PR, and it’s been more than 1-2 business days, feel free to ping. We may end up closing some of the older ones that haven’t had any progress on them - don’t worry, if it’s something you can get to later, you can open a new PR, or we can reopen current ones. Most of the repos have been moved to `main` - remember if you’re contributing to libraries, ensure your setup is up to date. https://learn.adafruit.com/contribute-to-circuitpython-with-git-and-github/starting-over-fresh


### 15:48 Blinka
* 3 pull requests merged
  * 2 authors - twa127, makermelissa
  * 2 reviewers - dhalbert, makermelissa
* 5 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka/pull/417 (Open 138 days)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/175 (Open 13 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/490 (Open 6 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/491 (Open 3 days)
  * https://github.com/adafruit/Adafruit_Blinka_Displayio/pull/61 (Open 0 days)
* 2 closed issues by 2 people, 1 opened by 1 people
* 58 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* Piwheels Downloads in the last month: 11745
Number of supported boards: 75
## 16:40 Hug reports
17:33 @anneb
* Thanks to everyone sending in projects, news, tips for the Python on Microcontrollers Newsletter. You can do a PR on GitHub or just email it to cpnews@adafruit.com


19:07 @askpatrickw 
* Hug report to @neradoc and @lesamoraipourpre for their awesome work on circup!


19:18 @CGrover (just listening today)
* Group hug


19:23 @Christian Walther (absent – teaching a MicroPython course)
* @hierophect for picking up my languishing pull requests about set_next_code_file and get_prev_traceback. I apologize for going MIA on this – I needed a break at one point, and then the break got longer and longer and I got distracted by other things…


19:50 @danh
* @tannewt for review of keypad module
* @tannewt for initial version of BLE workflow, which opens up many possibilities
* @jepler for reviving msec ticks ideas
* @Great Bim for finding a problem sending large amounts of data over usb_cdc


21:09 @foamyguy
* @lesamouripourpre for helping out with some bundle building issues, as well as finding and proposing fixes for some issues with Blinka Displayio
* @jeff for making more improvements to the stubs building process
* @danh for working on key matrix scanning improvements. Looking forward to playing with Macro Pad once it arrives
* @cwalther @hierophect and anyone else who worked on the set_next_code_file() functionality for supervisor
* Group hug


22:04 @hierophect
* Group hug


22:27 @jepler
* Damien & Jimmo for expressing interest in a PR I was working on
* @Danh for some code reviews on the week-end
* @madbodger and @ladyada for taking a look at a PCB design, offering comments, and also making me think about it again until I spotted more problems.
* @kattni for some private advice helping me create a code of conduct in another community where I hang out
* @dherrada and @kattni for some Adabot sleuthing (again!)
* @christan walther for the initial version of some very interesting additions.  Take breaks without guilt when you need them, we’ll always be here when you are ready to come back.


24:00 @jerryn
* Group hug


24:08 @kattni
* @dherrada for moving a few more repos to `main` default branch and for working on tracking down some issues that came out of those moves
* @sommersoft for submitting a fix for a dependency versioning issue on Adabot
* @Justin for helping out with an Adabot issue and finding what appears to be the fix, even though it was a bit obscure
* @lesamouraipourpre, @Jose David, @askpatrickw, @foamyguy, @deshipu for providing input and suggestions on the cookiecutter PR for the CircuitPython Community Code of Conduct
* @JP for designing the chromakey ring bracket for camera lenses and webcams - it’s a really neat design and works really well!


25:14 @MakerMelissa
* @lesamouraipourpre for the batch of PRs over the weekend
* Group hug


16:59 @tannewt
* Dan for having patience with my reviewing of the key matrix API.
* Microdev for getting the esp-idf 4.3 change finished and anecdata for testing.
* Madbodger for helping folks on discord


## 25:35 Status Updates


28:11 @anneb - newsletter update


29:29 @CGrover (just listening today)
* Still on the path to upgrade old Arduino projects to CircuitPython. Have a working version of Fake TV for Engineers running on the NeoTrinkey as well as on the original MetroM4-based project chassis.
* Trying to come up with a new, more descriptive name for the Oppressive Pacific Northwest Omega Heat Dome. Family-friendly suggestions are welcomed.


30:07 @danh
* keypad module was merged. Now working on a guide to explain the module, with simple examples.
* Fixed various minor and not so minor problems, some of which were new.
* Debugging RP2040 PWM audio.
* Need to make another release soon.
* Need to change usb_hid.Device soon to accommodate devices with multiple report ids. At the very least change the API and restrict the number of report ids to 1 for now.


32:05 @foamyguy
* Last week
   * Completed the guide for Rotary Trinkey brightness crank device that I showed on show & tell.
   * Began work to set up a library bundle repo for the Circuitpython org, learned many things about the building process and git submodules more generally along the way.
   * PR to add SH1106 driver to the library bundle
* This week
   * Finish up the work needed for the circuitpython org bundle and get the existing libraries added to it.
   * Creating new repos for the last few widgets from displayio_layout library in the circuitpython org, including testing around libraries with subfolders instead of only single .py files
   * Test and review some Blinka Displayio issues and fix
   * Trying to learn a bit of geometry to see if we can make an easier way to draw arcs with displayio


33:39 @hierophect
* Last week:
   * Worked on implementing the deep sleep support features for next file
   * Implemented sleep memory on the STM32
   * Tested sleep memory controls on other chips
   * Got started on exception carryover
* This week
   * Finish deep sleep features including RP2040 sleep memory
   * Implement some menu examples for my in-hand boards
   * STM32 RTC implementation.
   * Finish exception storage PR


34:53 @jepler
* Last week:
   * Started text for the OV2640/OV7670 camera guide
   * Designed a keypad PCB and sent for manufacture. This will be used in a project guide, but that’s a ways out. Rev.A had some pretty obvious problems, but I sent it because I was in a hurry.  It can probably be bodged into working. Rev.B hopefully fixes those problems.
   * Put in a couple of timekeeping PRs (different approaches to dealing with time spans on tiny boards that doesn’t require rebooting to keep time.monotonic() “small”)
   * (For myself) Continued working on a Python library for the ES100 WWVB (north american time signal) receiver, it’s pretty solid now and can receive the time almost every minute in usual conditions.
* This week:
   * Camera guide! Work is still needed on text, photos, & some fritzing diagrams
* Soon:
   * Es100: should cookie-cut and put into community bundle
   * Ticks: see if a built in “ticks module” is feasible with the flash space we have
   * Split type objects: once we decide how to move forward, do so (see ITW)
* Fun stuff:
   * Visited Sioux Falls SD, with the high point being Palisades State Park.  It’s a small park but has lovely stone formations. https://media.unpythonic.net/emergent-files/sandbox/PXL_20210625_154442815.PANO~2.jpg


37:48 @jerryn
* Spent last week playing with grandchildren!!
* Next week -- recovering ;-)
   * Hope to dig into an issue with sdio on the stm32.
   * Have not created an issue yet -- need to create a good example.
* The sparrows have hatched! 


38:55 @kattni
* Last week:
   * Published QT Trinkey guide
   * Created the I2C CP template
   * Updated the MCP9808 guide for the STEMMA QT version
   * Finished up the PR to create a CircuitPython Communit.my CoC in cookiecutter
   * Updated the Adafruit Community Code of Conduct with a few things based on that PR, and a suggestion from the @Community Moderators on Discord
   * Added NeoKey library to Bundle
   * Published the NeoKey 1x4 guide.
   * Filed an issue on CircuitPython about renaming _pixelbuf/adafruit_pypixelbuf to make them drop in replacements for each other
* Today so far:
   * Helped track down an issue with Adabot not running the reports after the move to `main`.
   * Went through guide feedback
   * Moved circup to `main`
* This week:
   * MacroPad Time! 
   * MacroPad guide
   * MacroPad CircuitPython Library
* “Fun” and fun! stuff:
   * On day 9 of my 14 day mandatory quarantine
   * Built the chromakey ring for a retroreflective greenscreen setup over the weekend - it’s a super nice little piece of kit!
   * “Out” 1 July - 5 July (see quarantine timing. I’m not _going_ anywhere.)


43:08 @MakerMelissa
* Last Week:
   * Split the WebSerial ESPTool up so that it could be used with different UIs
   * Worked on a JavaScript port of an NVS Partition Generator for WipperSnapper
      * Making good progress. At this point I’m just comparing the bytes and fixing the differences.
* This Week:
   * Finish the NVS Partition Generator
   * Finish a demo UI that makes use of the ESPTool to generate a partition and write it to a chip.
   * Work on a guide I had on pause using Microsoft Lobe
* Fun Stuff:
   * Got a new YouTube video published this past weekend
   * Started on the next one, which will be a multi-part build series


25:50 @tannewt
* BLE File Transfer code is checked in.
* BLE serial code is almost ready for review.
* Next step is to help push one or more apps forwards so people can use it. What platform would be best for folks? iOS? Android? WebBluetooth* ?
* Out 5th-some of 7th next week for a quick ocean getaway.
## 44:44 In The Weeds


45:03 @jepler - there’s a flash-saving PR that gets over 1kB of savings, https://github.com/adafruit/circuitpython/pull/4903  but it is very low level. Damien and Jimmo at MP have expressed interest in the concept, so the ultimate goal is to upstream it. Should we merge it now/soon into CP so that we can enjoy the memory savings, or wait until it “comes around” via an MP merge which would be way after when we want to release 7.0?  If we want to merge now/soon in CP, do we split the type object up in all builds (easiest) or just constrained builds (harder)?
Consensus: Get it ready for CP now/soon so we can have the benefits. Upstreaming would be nice but will take awhile


48:11 @danh - brief discussion of next release: alpha or beta?


52:02 @danh and @kattni - consolidating naming of pypixelbuf and _pixelbuf
* colorwheel() native module.
* A separate python version? Ensure it works the same.
## 1:06:31 Wrap-Up

### NEXT MEETING IS 6 JULY 2021.
