2.4 KiB
Pico Weather
Raspberry Pi Pico app to read BME280 sensor data and send it to Home Assistant.
Made in Go with TinyGo.
Hardware
The following hardware is what I used for a deployment:
- Raspberry Pi Pico 2 W: https://www.amazon.com/dp/B0DRJXPPWL
- The W is VERY important, as without networking it can't reach Home Assistant!
- Also a Raspberry Pi Pico W should work too, but I haven't tested it yet
- Waveshare Bosch BME280 sensor: https://www.amazon.com/dp/B07Q47DFXS
- Elegoo SSD1306 LCD: https://www.amazon.com/dp/B0FSRQG23K
Most (or all?) of these components can be swapped for equivalent components. You just need to make sure the code is compatible with whatever board you choose (not likely), is a genuine BME280 sensor, and an SSD1306 display.
Support for other hardware types may come in the future, but if there's a specific sensor or board you're in submit an issue or pull request!
Prototyping
To help with debugging/testing deployments, I also used these components:
- Elegoo 400-pin Breadboard: https://www.amazon.com/dp/B01EV640I6
- Freenove Raspberry Pi Pico Breakout Board: https://www.amazon.com/dp/B0BFB53Y2N
- Elegoo 20cm Jumper Cables 120 count: https://www.amazon.com/dp/B01EV70C78
Software Deployment
Requirements
- TinyGo - TinyGo installation guide
Steps
- Clone this git repository
git clone https://git.metaunix.net/gballan/pico-weather. - Copy
config.go.exampletoconfig.goand modify the values to match your environment. - Hold down the BOOTSEL button on your Raspberry Pi Pico 2W.
- Plug in your Pico to a USB port on your PC.
- Wait 2-3 seconds then release the BOOTSEL button.
- Flash the program to the Pico:
tinygo flash -target=pico2-w .. a. Note: On Pop!_OS I needed to open the file browser and mount the RP2350 partition manually while tinygo was attempting the flash, otherwise it would fail. - Monitor the app:
tinygo monitor.
At this point, you should be able to deploy this. Unplug the Pico, connect your BME280 sensor and power it back on - you should start receiving data in Home Assistant under the name you set with NodeName.
License
This project is made available under the BSD 3-Clause license.