Skip to content

Instantly share code, notes, and snippets.

@anecdata
anecdata / code.py
Created December 4, 2021 20:41
CircuitPython Battery Fuel Gauge: LC709203F [+ SH1107]
import time
import board
import supervisor
import displayio
import adafruit_displayio_sh1107
from adafruit_lc709203f import LC709203F, PackSize
print("LC709203F Battery Fuel Gauge")
@anecdata
anecdata / code.py
Last active March 2, 2022 00:06
Test code for WIZnet W5100S-EVB-Pico
import board
import busio
import digitalio
import time
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K
import adafruit_wiznet5k.adafruit_wiznet5k_socket as socket
import adafruit_requests as requests
SPI0_SCK = board.GP18
SPI0_TX = board.GP19
@anecdata
anecdata / macos_terminal_repl_tabs.py
Last active January 26, 2022 06:38
macOS Terminal: open new tab for each serial device, connect with tio, rename the tab to the volume name
import discotool
import subprocess
devicesList = discotool.get_identified_devices(drive_info=True)
for device in devicesList:
if device.repl is None: continue
commands = [
# open a new Terminal tab and connect to the device
["osascript", "-e", 'tell application "Terminal" to activate',],
["osascript", "-e", 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down',],
@anecdata
anecdata / ambient.py
Last active January 26, 2022 06:36
CircuitPython Espressif Monitor mode ambient frame count per channel
import time
import wifi
QUEUELEN = 128 # ESP32-S2 (ESP32-S3 can be much longer)
NS_PER_CH = 5_000_000_000 # nanoseconds per channel
def monitor_ambient(channel, duration):
report = {}
monitor = wifi.Monitor()
@anecdata
anecdata / code.py
Last active October 24, 2024 02:34
RGB Matrix (is31fl3741) Wi-Fi Monitor
import random
import time
import board
import busio
import wifi
import adafruit_is31fl3741
from adafruit_is31fl3741.adafruit_rgbmatrixqt import Adafruit_RGBMatrixQT
QUEUELEN = 128 # ESP32-S2 (ESP32-S3 can be much longer)
@anecdata
anecdata / code.py
Last active August 29, 2022 04:28
Simple HTTPS request - CircuitPython on Espressif
import wifi
import socketpool
import ssl
import adafruit_requests
# local
from secrets import secrets
URL = "https://example.com"
@anecdata
anecdata / code.py
Last active February 11, 2022 04:32
HTTPS request via TCP Socket - CircuitPython on Espressif
# initial read only (typically headers)
import wifi
import socketpool
import ssl
import ipaddress
from secrets import secrets
HOST = "example.com"
PATH = "/"
@anecdata
anecdata / code.py
Created March 20, 2022 03:37
UDP Server ESP32SPI read-only (very rudimentary)
import time
import board
import busio
from digitalio import DigitalInOut
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
from adafruit_esp32spi import adafruit_esp32spi
from secrets import secrets
@anecdata
anecdata / wwotg.md
Last active September 3, 2025 20:11
Web Workflow OTG

Using iOS to place files onto a CircuitPython [CP] device has been possible for several years: https://blog.adafruit.com/2019/09/19/program-circuitpython-devices-with-iphone-ios-13/ https://learn.adafruit.com/use-circuitpython-devices-with-iphone-ipad/copy-edit-paste

However, iOS doesn't support USB CDC, so there is no REPL or serial capability.

Goal:

A "traveling light" configuration for setting up and using CircuitPython Web Workflow without a large computer. Basic ingredients would be an iPhone, one or two small CP microcontrollers (QT Py ESP32-S2 for example, but perhaps including a device without native-USB, like ESP32-C3 or ESP32), and assorted accessories.

@anecdata
anecdata / mdns_finder.py
Created August 31, 2022 02:03
CircuitPython mDNS finder for ESP32-S2/S3
import time
import wifi
import ipaddress
import socketpool
import mdns
from secrets import secrets
MDNSFINDTIMEOUT = 5
pool = socketpool.SocketPool(wifi.radio)