61 lines
3.0 KiB
Markdown
61 lines
3.0 KiB
Markdown
# pico-thermo
|
|
|
|

|
|

|
|
|
|
A [MicroPython](https://micropython.org/) app to read data from BME280 sensor and send it to Home Assistant.
|
|
|
|
## 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 interested in, please 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
|
|
|
|
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. Install Python dependencies via mpremote: `xargs mpremote mip install < requirements.txt`.
|
|
7. Copy `config.example.py` to `config.py` and edit the settings to match your environment.
|
|
8. Copy the Python code over to the Pico:
|
|
1. `mpremote cp main.py :main.py`
|
|
2. `mpremote cp config.py :config.py`
|
|
9. 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
|
|
|
|
This project is made available under the BSD 3-Clause license.
|