Posts

I2C Pico USB Adapter: Part 3 - I2C

Image
I expected implementing the I2C communication would be very easy. After all, the RP microcontrollers have hardware for this and the SDK has support for it. Alas, I did not take into account some limitations of the hardware and the way i2c-tiny-usb implements its commands.

I2C Pico USB Adapter: Part 2 - USB Communication

Image
The USB standard is complex. Even having studied it hard for my book on the RP2040, I admit I was sometimes confused. This particular application involves some functions of the tinyusb library that are not much discussed in the documentation. USB Control Transfers, Taken from Figure 8-37 of the USB 2.0 specifications

Halloween with MicroPython

Image
This is a quick Halloween project (if you have the parts, they are easy to find).  With a little imagination, you can adapt it to different components or behaviors. The software is written in MicroPython for a RP2040 (or RP2350), you can port it to other boards by replacing the PIO code for the HC-SR04 sensor with normal GPIO operations. A resin skull (bought in a trinket store) is transformed into a spooked object that lights up and makes strange noises, especially when someone nears it.

I2C Pico USB Adapter: Part 1 - Introduction

Image
In this series of posts I will describe my latest project: an I2C to USB adapter that can be constructed with an RP2040 or RP2350 board. The adapter using a XIAO RP2040 connected to a PCF8583 RTC+RAM

I found a crazy bug in the unofficial Arduino support for the RP2040 v 4.01!

This is a strange tale... I've been using  the excellent  Raspberry Pi Pico Arduino Core , managed by Earle F.  Philhower III, from its beginnings. It has been recently updated to support the new Pico2 and RP2350. As part of my preparations for testing the new Pico2 (received it yesterday), I was playing with some old microcontroller benchmarks. When I tried a Whetstone benchmark in the old Pico the program just stopped somewhere in the middle of the calculations, and here starts the tale. double X; // declared here so the multiplication is not removed by optimization void setup() { pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); double T = millis(); X = -1.3 * T; digitalWrite(LED_BUILTIN, HIGH); } void loop() { delay(100); } This code forces the bug!

Some Fun with CircuitPython

Image
CircuitPython Day 2024 will be next Friday (Agoust 16), so here is a simple project! I am using a few modules I got in my drawers: An RP2040 Feather board. This is a nice RP2040 board with 8 MB of Flash and a battery charger (not used in this project). A BMP390 sensor. I chose this particular board because it has a  STEMMA QT connector, just like the Feather board. A 128x64 pixels OLED display, with I2C interface. A 4 by 4 WS2812 RGB LED matrix. This project aims to use the sensor to measure temperature, air pressure, and altitude, show this information in the OLED display and set the RGB LEDs to a color based on the temperature.

The New Raspberry Pi Pico 2, RP2350 and RP2354: a Short Recap

Image
On August 8th, Raspberry announced a new version of the Pi Pico board, the Pi Pico 2, along with a new microcontroller, the RP2350 / RP2354. In this post I will tell the highlights of these new products, along with my comments.