The Raspberry Pi Pico is missing two key things. The first is a reset button, easily fixed with a DIY hack or you can purchase something more permanent. The second is wireless communications namely Wi-Fi and Bluetooth. Pimoroni’s Pico Wireless is a $17 (£12) add-on pack that works like a HAT or shield and provides Wi-Fi and a Micro SD card reader via the SPI interface.
Pico Wireless Pack
Direct Pricing £12 ($17 USD)
Adding W-iFi to a Pico isn’t too difficult, Adafruit have already proven this via ESP32 powered AirLift FeatherWing which works with the Pico and Adafruit’s own Feather RP2040 board. Cytron’s Maker Pi Pico also supports the ESP8266. But adding Wi-Fi that is compact and easy to use is still the Holy Grail for Pico users, and Pimoroni’s Pico Wireless could see the end of our quest.
Design and Use of the Pimoroni Pico Wireless
The Pico Wireless is a pack, designed to attach to all of the GPIO pins of a Raspberry Pi Pico (and Pimoroni’s Pico Lipo). It does not use all of the GPIO pins, but it does prevent access. As it is designed as a “pack” it matches the footprint of the Raspberry Pi Pico perfectly and when connected we have quite a compact project platform.
The onboard ESP32-WROOM-32E is itself a powerful microcontroller, but for the Pico Wireless, it is demoted to co-processor duty in much the same manner as Adafruit’s AirLift FeatherWing. The ESP32 is capable of Wi-Fi and Bluetooth but in this configuration only Wi-Fi is available, but capable hackers will unlock extra capabilities for sure.
If you need to use some GPIO pins, then you will need a breakout, such as the Pico Omnibus but you will need to ensure that you have no conflicting pins on your connected devices. Power for the Pico Wireless is provided by the Raspberry Pi Pico’s GPIO which makes for a simple and practical means for powering and programming the boards.
The onboard microSD card slot (see best microSD cards) is a push-push mechanism that is ready to fire your micro SD card across the room. A single push button (A) is a useful means for basic input and it is connected to GPIO 16. The only output is an RGB LED, again a useful addition for basic alerts / error handling. The ESP32 and micro SD card reader can be disabled by cutting tracks on the underside of the board; why you would want to do this we do not know but the process can be reversed by soldering a bridge between the tracks.
Hardware is nothing without software and Pico Wireless supports C++ and Pimoroni have their own MicroPython firmware that includes a “picowireless” module developed for use with the board. We tested this option via the example scripts and while they worked well, they were awfully verbose and relied on the user having an understanding of how networking works.
Until an abstracted library is written, or we learn networking, the best means to use the Pico Wireless is Adafruit’s CircuitPython software. We used the same script that powered our Raspberry Pi Pico Wi-Fi project and only needed to change a few lines to tell our Pico where the ESP32 was connected and copy a few libraries to the Pico. We were online in mere moments and receiving weather data from an online API. We adapted the code with an additional library that enabled the onboard micro SD card reader. Inserting a blank FAT32 formatted card and writing a few lines of CircuitPython, we quickly created a new file which held a log of the JSON data returned from the weather API. Data can also be read from SD using CircuitPython and used in your projects. The RGB LED is connected to the ESP32 via three pins (Red = 25, Green = 26, Blue = 27) and to use it we need to use esp.set_analog_write(). For example here are the lines to set the LED to red.
esp.set_analog_write(25, 0) esp.set_analog_write(26, 1) esp.set_analog_write(27, 1)
We can use values between 0 and 1 to control the color of the RGB LED.
Finally we tested the push button, connected to GPIO 12. We pulled GPIO 12 high, and when pressed the button connects the pin to GND, effectively pulling the pin low and triggering an event in our code.
Use Cases for the Pimoroni Pico Wireless
Wi-Fi on the Raspberry Pi Pico opens up a whole new world of Internet of Things (IoT) applications. Pico Wireless enables our humble Raspberry Pi Pico to communicate with devices using typical network protocols and others such as MQTT. The CircuitPython library has support for basic HTTP, creating access points and sockets. In our demo we check the HTTP response from the API and print the value to the REPL, useful for debugging connection issues.
Pico Wireless is ideal for adding to a data monitoring project, collecting data from sensors, storing data to the micro SD card and transmitting the data to a remote machine. If you have the skills then robotics over the Internet are possible using something like Anvil or Flask on another machine as a means to communicate with the Pico.
As a pack, Pico Wireless is super simple to attach to your Pico but you lose the ability to connect other components. This issue can be mitigated by using a breakout board such as the Pico Omnibus or with some clever soldering. Despite this, Pico Wireless is a great piece of kit. Once the MicroPython module goes through a few months of feedback and improvements, it will be much easier to use. Until then, your best bet is to use CircuitPython.
Will stick with a pure ESP32 implementations until (and if) Raspberry add native wifi capability.