- WA9ONY - YouTube - Website - GitHub -
- Adafruit Feather RP2040 Index
- Kite Altimeter -
Adafruit’s Feather and FeatherWing ecosystem is a modular, compact, and extensible platform for embedded systems development. The Feather boards serve as microcontroller development boards, while FeatherWings are add-on boards that expand their functionality.
Adafruit Feather ecosystem is extensive with great
- Broad product line
- Documentation
- Platground
- Live YouTube
- Mon. 11am PST CircuitPython Weekly Meeting
- Community News – Updates from the Python for Microcontrollers newsletter, including industry developments and milestones.
- The State of CircuitPython, Libraries, and Blinka – A quantitative overview of the CircuitPython project, including merged pull requests, issue counts, and contributions.
- Hug Reports – A section where participants acknowledge and appreciate contributions from others in the community.
- Status Updates – Individual reports from community members on what they’ve been working on and their plans for the coming week.
- In the Weeds – A section for in-depth discussions on specific technical topics, challenges, or proposed changes to CircuitPython.
- Tue. 1pm PST JP’s Product Pick of the Week
- Example of using the product & 50% discout during the live video.
- Discord Adafruit # live-broadcast-chat
- Wed. 8:00am PST 3D Hangouts with Noe and Pedro Ruiz
- Wed. 4:30pm PST Live SHOW and TELL
- Wed. 5:00pm PST Live ASK AN ENGINEER
- 0% off! code, check Discord
- Time Travel
- 3D Printing
- Thr. 1pm PST Live JOHN PARK'S WORKSHOP
- Review of JP's Product Pick of the Week
- John Park's CircuitPython Parsec
- Workshop
- Discord Adafruit # live-broadcast-chat
- 10% discount code for the day
- Fri. 2pm PST Live Deep Dive w/Scott
- Fri. 3D Handout with Noe and Pedro Ruiz
- Sat. 8:00am PST FoamyGuy's CircuitPython Stream
- Mon. 11am PST CircuitPython Weekly Meeting
- YouVideos
- Sun. Evening Desk of Ladyada
- Sun. The Great Search
- Tue. 9am PST EYE on NPI
- Tue. NewProducts
- Adafruit Top Secret
- Tutorial:
- CircuitPython
- GitHub software libraries
- Learning system
- Discord group
- The CircuitPython Show
- An independent podcast with the people in and around CircuitPython. Created and hosted by Paul Cutler.
- Blog
- Adafruit Daily newsletter on Wednesday
- Daily tips and tricks from the experts at Adafruit!
- Adafruit newsletters
- Electronics
- Python for Microcontrollers every Monday
- Maker Business
- New Products at Adafruit
- 3D Printing
- Biohacking
- Internet of Things Monthly
- MakeCode
- EYE on NPI
Podcast
1. Adafruit Feather: The Core Boards
Feathers are small, lightweight microcontroller boards designed for prototyping and embedded systems. They share a standard form factor (2.0" x 0.9") and pinout, making them interchangeable.
-
Microcontroller-Based Feathers
- Feature an onboard microcontroller (e.g., ATmega32u4, ESP32, RP2040).
- Designed for general-purpose embedded computing.
-
Wireless Feathers
- Include built-in Wi-Fi, Bluetooth, LoRa, or Cellular connectivity.
- Popular models:
- ESP32-S3 Feather (Wi-Fi + BLE)
- Feather nRF52840 (Bluetooth)
- Feather M0 LoRa (LoRaWAN)
- Feather FONA (Cellular)
-
SAMD, M4, and RP2040 Feathers
- Use more powerful ARM Cortex-M chips or Raspberry Pi’s RP2040.
- Suitable for IoT, robotics, and edge computing.
-
Battery & Low Power Feathers
- All Feather boards support LiPo battery charging via USB.
- Many include deep sleep modes for battery efficiency.
2. Adafruit FeatherWing: Expansion Modules
FeatherWings attach to Feathers and provide additional features. These include displays, sensors, relays, motor drivers, GPS, and communication interfaces.
-
Display & UI
- OLED FeatherWing (128x64 monochrome)
- 7-Segment Display FeatherWing
- TFT FeatherWing (Color LCD)
-
Sensors
- ADXL345 3-axis Accelerometer FeatherWing
- AirLift FeatherWing (Wi-Fi co-processor)
-
Motor & Robotics
- DC Motor FeatherWing (for robotics)
- Stepper Motor FeatherWing
- Servo FeatherWing (16-channel PWM)
-
Storage & Communication
- LoRa Radio FeatherWing
- Ethernet FeatherWing
- CAN Bus FeatherWing
-
Power & Connectivity
- Power Relay FeatherWing
- Ethernet + PoE FeatherWing
- Wireless Charging FeatherWing
- Standardized pinout → Easy swapping of Feathers.
- Compact & portable → Great for IoT and wearable projects.
- Battery support → LiPo charging built-in.
- Modular ecosystem → Stackable FeatherWings.
- IoT Sensor Node: ESP32 Feather + LoRa FeatherWing + GPS.
- Portable Game Console: RP2040 Feather + TFT FeatherWing + Battery.
- Weather Station: Feather M4 + Sensor FeatherWing + Wi-Fi FeatherWing.
Data logger to attached to a kit.
- Log sequence number
- Log elapse time since turn on
- Log temp
- Log voltage
- NeoPixel color flash indicates PWS voltage.
- Log to Data.CSV file
- Flash LED during write to file as proof of life
- Check if Data.CSV file exist.
- Check available memory for Data.CSV file.
- Look into different ways to do time loops
- I2C sensor DPS310
- Sleep mode
- Product ID: 4884
- Old verson Bootsel switch faces up.
- New version Bootsel switch faces out the side and the switch can be used by the user program.
- Desk of Ladyada - RP2040 Feather prepares to take flight!
- Pin layout, SWD pads, NeoPixel swirl test, 8 MB
- Introducing Adafruit Feather RP2040
- What Is Feather?
Adafruit DPS310 Precision Barometric Pressure / Altitude Sensor - STEMMA QT / Qwiic
- Product ID: 4494
Adafruit STEMMA QT / Qwiic JST SH 4-pin Cable
Adafruit Lithium Ion Polymer Battery with Short Cable - 3.7V 420mAh
- CircuitPython
- GitHub Adafruit_CircuitPython_Bundle
- CircuitPython 9.2.4 for Adafruit Feather RP2040 as of Feb. 3, 2025
- Libraries
- Examples code >340 product, >1,400 Circuitpython example files as of February 05, 2025
- Community libraries
- CircuitPython 2025
Adafruit
- CircuitPython Made Easy on Circuit Playground Express and Bluefruit
- John Park's CircuitPython Parsec
YouTube Tutorials and Lessions
-
Circuit Python Tutorials by Prof. John Gallaugher
- Raspberry Pi P500 running Raspberry Pi OS 64-bit
- Help > Bookshelf > Books > Get Started with MicroPython on Raspberry Pi Pico
- Free 139 page book on MicroPython and the Raspberry Pi Pico (RP2040)
- Help > Bookshelf > Books > Get Started with MicroPython on Raspberry Pi Pico
- Mu editor V1.0.3
As of Feb. 4, 2025 OpenAI ChatGPT o3-mini-high is used to:
-
Research hardware operation
-
Research software techniques
-
Create CircuitPython code
-
etc. The world of AI is moving fast and in a few months there will be better AI coding models.
-
OpenAI ChatGPT o3-mini-high
Hello everyone! Today, we’ll be diving into an overview of the I2C (Inter-Integrated Circuit) bus—a fundamental communication protocol used extensively in embedded systems and electronics. Understanding I2C is crucial because it’s one of the most popular ways to connect microcontrollers with sensors, memory devices, and other peripherals in both hobbyist and industrial applications.
I2C Overview:
- Definition: I2C is a synchronous, multi-master, multi-slave, packet-switched, single-ended, serial communication bus.
- Developer: It was originally developed by Philips Semiconductor (now NXP) in the early 1980s.
- Primary Use: It allows multiple integrated circuits to communicate over just two wires, making it an ideal choice for connecting various low-speed peripheral devices to a microcontroller or processor.
Two-Wire Interface:
- SDA (Serial Data Line): This line carries the data.
- SCL (Serial Clock Line): This line carries the clock signal generated by the master device to synchronize data transmission.
Electrical Characteristics:
- Open-Drain Configuration: Both SDA and SCL are typically implemented as open-drain (or open-collector) lines. This means that devices can only pull the line low; when they release it, the line goes high due to external pull-up resistors.
- Pull-Up Resistors: These resistors are essential because they ensure that the lines are at a known high level when no device is pulling them low. The values of these resistors are chosen based on factors like bus capacitance and desired speed.
Master-Slave Architecture:
- Master Device: Initiates communication, generates the clock signal, and controls the data flow.
- Slave Devices: Respond to commands from the master. Each slave has a unique address (typically 7-bit, though 10-bit addressing is also available).
Basic Communication Flow:
- Start Condition: Communication begins when the master pulls SDA low while SCL is high. This signals all devices on the bus to listen.
- Address Frame: The master sends out a unique address (7 or 10 bits) followed by a read/write bit to indicate the direction of data transfer.
- Data Transfer: Data is sent in 8-bit bytes. After each byte, the receiver must send an acknowledgment bit (ACK) by pulling SDA low during the ninth clock pulse.
- Stop Condition: Communication ends when the master releases SDA to high while SCL remains high.
Additional Concepts:
- Repeated Start Condition: Sometimes, the master may need to initiate another communication without releasing the bus. It does so by issuing another start condition instead of a stop condition.
- Clock Stretching: A slave device can hold the clock line low to delay the master if it needs more time to process data. This feature ensures reliable communication even if the slave is momentarily busy.
I2C supports several speed modes:
- Standard Mode: Up to 100 kbit/s
- Fast Mode: Up to 400 kbit/s
- Fast-Mode Plus: Up to 1 Mbit/s
- High-Speed Mode: Up to 3.4 Mbit/s
Each mode has specific requirements for timing and pull-up resistor values to ensure reliable operation.
Advantages:
- Simplicity: Only two wires are required, which minimizes PCB complexity.
- Multi-Device Support: Multiple devices can share the same bus without complex wiring.
- Low Cost: Fewer pins and simpler wiring contribute to cost-effective design.
Common Applications:
- Sensor Networks: Connecting temperature sensors, accelerometers, and other devices.
- EEPROM Access: Reading from and writing to non-volatile memory.
- Display Drivers: Communicating with LCDs or LED displays.
- Embedded System Peripherals: ADCs, DACs, and other modules in microcontroller systems.
Design Tips:
- Choose Appropriate Pull-Up Resistors: The resistor values must be calculated based on bus capacitance and desired speed. Too high a resistance might lead to slow rise times, while too low a resistance could increase power consumption.
- Bus Length and Capacitance: Keep the bus as short as possible to minimize capacitance, which can adversely affect signal integrity.
- Handling Bus Contention: In multi-master systems, be aware of arbitration procedures that help determine which master takes control when two devices attempt to communicate simultaneously.
In upcoming labs, you will have hands-on experiences with I2C communication. Here are a few lab activities you might expect:
-
Lab 1: I2C Bus Setup and Communication
- Objective: Set up a basic I2C bus on a breadboard using a microcontroller.
- Activities: Connect a sensor or an EEPROM via I2C, configure the microcontroller’s I2C peripheral, and implement a simple read/write routine.
-
Lab 2: Analyzing I2C Signals
- Objective: Use an oscilloscope or logic analyzer to observe I2C communication.
- Activities: Capture start/stop conditions, analyze the timing of data and clock signals, and identify ACK/NACK sequences.
-
Lab 3: Multi-Device I2C Bus
- Objective: Interface multiple I2C devices on a single bus and manage address conflicts.
- Activities: Learn about address assignment, implement proper pull-up resistor strategies, and experiment with clock stretching if applicable.
The I2C bus is a powerful and versatile communication protocol that plays a key role in modern electronic systems. By understanding its physical layer, communication protocol, and design considerations, you will be better prepared to implement and troubleshoot I2C in your projects. In our subsequent lectures and labs, we’ll build on this foundation by exploring real-world applications and hands-on circuit design.
Feel free to ask questions if any part of the I2C protocol isn’t clear, or if you’d like more detailed examples of its implementation!
I2C (Inter-Integrated Circuit) bus Adafruit address list.
Adafruit_CircuitPython_DisplayIO_SH1107 0x3C DPS310 Barometric Sensor 0x76 or 0x77 PCF8523 RTC (0x68 only) (https://adafru.it/sd5) https://www.adafruit.com/product/3295
Use circup to easily keep your CircuitPython libraries up to date
Zephyr Zephyr (operating system)
Supported Boards
- RP2040 & RP2350a