1. Introduction

Page is a short presentation on what raspberry pi pico can do. Projects are mostly from here: https://github.com/AdrianCX/

Pico screenshot

This is a very cheap microcontroller with built in wifi, programmable IO (PIO) and GPIO.
This makes it easy and cheap to build internet connected projects as you would with a regular raspberry pi.

2. How do you develop for it

Most common are python with micropython/circuitpython or C/C++ with picoSDK or FreeRTOS

2.1. Micropython

Micropython screenshot

This allows you to code using python, usually with an editor like thonny: Micropython screenshot

You are limited to libraries built in by micropython.
You are also limited by resources of the board to a bigger extent (RAM/CPU)
This in general means no nice things like HTTPS and limits to connections.
Debugger is built in to thonny.

2.2. PicoSDK

If you want your code to run directly on the microcontroller you can use the official SDK to have a quick start.

This is a lot faster and more customizable.
It is also more difficult to debug.

  • You can still use logs. USB Serial is built in, there's also a UART port.
    You can also send logs and simple crash reports via UDP if you look at pico_https.
  • You can use a proper debugger, picoprobe

2.3. FreeRTOS

This is a fully featured OS for microcontrollers: https://www.freertos.org/

3. What can I do with it?

Showing off some fun projects

3.1. Learn to play the piano

Source code: github

Getting user input:

  • main.py loads configuration config.py and sets up wifi via wifi.py

  • main.py serves index.html on any "GET /"

  • Javascript sets up a websocket connection that feeds user input to the microcontroller.

  • User selects a song and speed and presses "play", this is sent via websocket and controller starts showing lights.

Showing a song on led strip:

  • Code takes in converted timing information from text files and displays these based on configuration

  • Example song: bela ciao

  • Converted via a simple python script: converter

  • And displays these on the LED strip via gradients class: gradients.py

  • All driven from main.py

3.2. Control radio devices over 433mhz

This is one of my first projects which started this hobby.
It helped convert remotes into a phone based control.

Source code: pico433mhz

This is an even simpler project:

  • webserver.py handles "/receive" and "/send/{code}" HTTP endpoints to either transmit or decode and return detected codes.

  • rfdevice.py handles radio encoding and decoding. This is code from milaq/rpi-rf adapted for raspberry pi pico.

With this HTTP API it can be integrated into other applications such as my telegram bot that is in last picture above.

3.3. Lightsaber

Steps to build this:

  • glue a ws2803 led strip on a wooden stick.

  • Solder power cables to the led strip.

  • Put the wooden stick with leds in a PVC pipe that is sealed on one end..

  • Go outside, put protection equipment on and mix then pour epoxy into the PVC pipe. (protection is important, epoxy is dangerous)

  • set up raspberry pi pico, battery pack and button as in picture.

  • 3d print a hilt. (openscad is useful to design this)

Unfortunately I lost the hilt 3d model but I can help redo the project if anyone is curious.

3.4. Irrigation system.

This uses the same logic as for RC Cars below.

  • A DRV8833 drives two solenoids.

  • A battery pack powers the device. (4 AA rechargeable batteries)

  • A RTC keeps time for us while in deep sleep.

3.5. hexagon based lights

You can check out how to build this and other hexagonal shaped devices here: github

3.6. RC cars

These are controlled via a joystick over websocket or via game controller via browser game API.
The fun part is that they are simple to make and powered via regular USB power banks

Source code for the first RC robot: crawlspacebot

3.7. DNS Server

Source code: pico_hole

This is a bare raspberry pi pico running a simple C based application that inspects DNS packets and only forwards domains we want.
This was fun to build in order to block ads on a smart TV.

3.8. Connect old alarm remotes to the internet

This takes old alarms that are not internet connected and connects them.
We just tear down the old alarm and connect the raspberry pi pico to the button inputs.
Then we use a web API similar to pico433mhz to make a telegram bot or anything else.

3.9. Portable epoxied alarm remote

More information: reddit

This eventually ended up using MQTT to enable/disable alarm, it would light up red for alarm on, green for alarm off and pink for in-progress.

3.10. HTTPS Server

Getting SSL is a bit difficult within constraints of the pico.
Debugging SSL issues is even more difficult.
A project that attempts to make things easier can be found here: pico_https
Just follow the hello world and ask questions.