diff --git a/README.md b/README.md index 0a3e113..7723143 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,58 @@ # pico-thermo ![Woodpecker CI badge](https://builds.metaunix.net/api/badges/90/status.svg) +![shields.io version badge](https://img.shields.io/gitea/v/release/BitGoblin/pico-thermo?gitea_url=https://git.metaunix.net) -MicroPython app to read data from BME280 sensor and send it to Home Assistant +A [MicroPython](https://micropython.org/) app to read data from BME280 sensor and send it to Home Assistant. -## Running +## Hardware -Flash your Raspberry Pi Pico with MicroPython. +The following hardware is what I used for a deployment: -Copy `config.example.py` to `config.py` and edit the settings to match your environment. +* 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 -Copy `main.py` and `config.py` to the root of the filesystem on the Pico. +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. -Connect the BME280 sensor to your Pico and power on. +Support for other hardware types may come in the future, but if there's a specific sensor or board you're interested in, please submit an issue or pull request! -Head on to your Home Assistant instance and enjoy! +### 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 + +These are not necessary to run the app, but can be useful for testing and/or flashing several nodes. + +## Software Deployment + +### Requirements + +* [MicroPython](https://micropython.org/download/) - MicroPython downloads +* [mpremote](https://docs.micropython.org/en/latest/reference/mpremote.html) - MicroPython remote serial tool +* (Linux users) Your user should be a part of the `dialout` group + +### Steps + +1. Connect your BME280 sensor and SSD1306 display to your Pico. + 1. You *may* need a breadboard for this, else you can use splitters. +2. Connect your Pico to your PC via a micro-USB to USB type-A cable. +3. [Flash your Raspberry Pi Pico with MicroPython](https://docs.micropython.org/en/latest/rp2/tutorial/reset.html). + 1. This has been tested with MicroPython 1.29, but other versions should work. +4. Clone this git repository: `git clone https://git.metaunix.net/BitGoblin/pico-time`. +5. `cd` into the repo: `cd pico-time`. +6. Copy `config.example.py` to `config.py` and edit the settings to match your environment. +7. Copy the Python code over to the Pico: + 1. `mpremote cp main.py :main.py` + 2. `mpremote cp config.py :config.py` +8. Reset the Pico: `mpremote reset` + +If it worked you should see the display show a message about connecting to WiFi, then eventually a readout of the current temperature to the SSD1306 display. If it failed, you can monitor the app via `mpremote repl` or using an IDE like [Thonny](https://thonny.org/). ## License