One of the features that is missing from the Raspberry Pi Pico is network functionality.
The Pico Wireless Pack from Pimoroni is one solution to the problem.
The Pico Wireless Pack attaches to the back of your Pico and uses an ESP32 chip to let your Pico connect to 2.4GHz wireless networks and transfer data. There’s a microSD card slot for if you want to store lots of data locally as well as a RGB LED (for status updates) and a button (useful for things like enabling/disabling Wi-Fi).
The ESP32 is an interesting choice for this, its a very powerful microcontroller but in this case we are only using the wi-fi functionality and as far as I’m aware the bluetooth functionality is not supported which is a pity.
There is custom micropython firmware that you can upload to your Raspberry Pi Pico and there are some examples, there are also C++ examples.
You can alternatively find other libraries for the ESP32 and SD card from Adafruit in Circuitpython
If you want to use the other pins on your Pico then you will need to use an expander option, there a few available which we will cover in a future article.
Features
- ESP32-WROOM-32E module for wireless connectivity (connected via SPI) (datasheet)
- 1 x tactile button
- RGB LED
- Micro-SD card slot*
- Pre-soldered female headers for attaching your Raspberry Pi Pico
- Fully assembled
- No soldering required (as long as your Pico has header pins attached).
- C++ and MicroPython libraries
Purchase
Code Examples
This code example scans for wireless networks and is available in the github repo
[codesyntax lang=”python”]
import picowireless import time picowireless.init() picowireless.start_scan_networks() while True: networks = picowireless.get_scan_networks() print("Found {} network(s)...".format(networks)) for network in range(networks): ssid = picowireless.get_ssid_networks(network) print("{}: {}".format(network, ssid)) print("\n") time.sleep(10)
[/codesyntax]
Links
C++ examples here
MicroPython examples here
Adafruit’s ESP32SPI and Adafruit_CircuitPython_SD libraries