KevsRobots Learning Platform
15% Percent Complete
By Kevin McAleer, 7 Minutes
Good news first: you already know the board. Both builds in this course run on the same Heltec WiFi LoRa 32 V3 you used in part one. The new spending is on sensors, and it is small.
Room server: one Heltec WiFi LoRa 32 V3, 868MHz, around £15. It behaves much like the repeater you already built - fixed location, mains power, no phone attached.
Sensor node: one Heltec WiFi LoRa 32 V3, 868MHz, around £15, plus whatever you are measuring.
The same warning applies as in part one: check the frequency variant. The 863-928MHz boards are the ones sold as “868MHz” or “915MHz”. A 433MHz board is the wrong hardware and cannot be fixed in software.
The Heltec V3 is a fine board to learn on, and that is why this course uses it. For a sensor node you leave outdoors for months, it is not the best choice - the ESP32-S3 is thirsty compared to the alternatives.
| Board | Why you would pick it |
|---|---|
| Heltec V3 | Cheap, you already have one, has a screen for debugging |
| Heltec T114 | nRF52840 - dramatically lower idle current, the right answer for solar |
| RAK WisBlock | Modular sensor slots, industrial enclosures, higher cost |
| Seeed Xiao variants | Tiny, low power, good for tucking into small places |
| Seeed T1000-E | A sealed card-sized tracker with sensors built in |
Build it on a V3 first. Get it working on the desk where you can see the screen and reach the USB port. Move it to a T114 once you know what you are doing and where it is going.
This is the part worth reading carefully, because it saves you buying the wrong thing.
MeshCore’s sensor firmware scans the I2C bus at boot and auto-detects what is connected. There is no configuration file, no pin mapping to edit, no sensor to declare. You wire it up, you power on, it appears.
The catch is that it detects a specific list of parts, and support is compiled into each board’s firmware build. Commonly supported I2C sensors include:
| Sensor | Measures | Notes |
|---|---|---|
| BME280 | Temperature, humidity, pressure | The recommended all-rounder, about £5 |
| BME680 | The above plus air quality / IAQ | More expensive, needs the BSEC library |
| BMP280 / BMP085 | Temperature, pressure | No humidity |
| AHT10 / AHT20 | Temperature, humidity | Cheap and cheerful |
| SHTC3 / SHT4x | Temperature, humidity | Better accuracy than AHT |
| LPS22HB | Temperature, pressure | Common on nRF dev boards |
| INA219 / INA226 / INA260 / INA3221 | Voltage, current, power | Battery and solar monitoring |
| MLX90614 | Non-contact infrared temperature | Point it at a thing |
| VL53L0X | Distance (time of flight) | Tank levels, door open or shut |
| RAK12035 | Soil moisture and temperature | For growing things |
| RAK12500 / NMEA | GPS position | Location reporting |
If a sensor is not on that list, it will not just work. A random DHT22 or a one-wire DS18B20 is not I2C and is not auto-detected. That does not make them useless - lesson 13 covers the custom firmware route - but it does mean they are not a five minute job.
Check your board’s build
Sensor support is compiled per board. Before you buy, open the flasher at flasher.meshcore.io, select your board, and look at which firmware variants are offered. If there is no sensor build listed for your hardware, you will be building firmware yourself.
| Item | Qty | Approx cost |
|---|---|---|
| Heltec V3, 868MHz | 1 | £15 |
| 868MHz antenna | 1 | £5 |
| 5V USB mains charger | 1 | £5 |
| Total | ~£25 |
| Item | Qty | Approx cost |
|---|---|---|
| Heltec V3, 868MHz | 1 | £15 |
| 868MHz antenna | 1 | £5 |
| BME280 breakout, I2C | 1 | £5 |
| Dupont jumper wires | 4 | £2 |
| 3.7V LiPo with SH1.25 connector | 1 | £8 |
| Total | ~£35 |
Add an INA219 (£4) if you want battery and solar current, or a VL53L0X (£6) for tank level.
BME280 breakouts are sold everywhere for a couple of pounds, and a meaningful number of the cheapest ones are actually BMP280 - the version without a humidity sensor. The silkscreen sometimes says BME280 even when the chip is a BMP280.
How to tell: both chips have a hole in the metal lid, so presence of a hole proves nothing. The tells are shape and position - a BME280 is a 2.5 x 2.5 mm square package with the hole roughly centred; a BMP280 is a 2.0 x 2.5 mm rectangle with the hole in a corner. If the listing price looks too good, you are probably buying a BMP280.
The certain test: wire it up and see whether humidity appears. The chip IDs differ (0x60 for BME280, 0x58 for BMP280) and the firmware reports what it finds.
Does it matter? If you only care about temperature and pressure, no. If you wanted humidity in the greenhouse, yes.
Also check the breakout is the I2C version - some boards break out SPI only, or need a solder jumper moved to select I2C.
This is the detail that trips people up, so it is worth getting right before you wire anything.
The Heltec V3 has two separate I2C buses in the MeshCore sensor build. The onboard OLED sits on one; your sensor goes on the other.
| Function | Pin |
|---|---|
| Sensor bus SDA | GPIO33 |
| Sensor bus SCL | GPIO34 |
| OLED bus SDA (not for your sensor) | GPIO17 |
| OLED bus SCL (not for your sensor) | GPIO18 |
| OLED reset | GPIO21 |
| Vext control (switches the external 3V3 rail) | GPIO36 |
| Battery voltage ADC | GPIO1 |
Why this matters: wire your BME280 to GPIO17 and GPIO18 - the pins most tutorials mention, because they are the OLED’s - and the sensor firmware will not find it. It is scanning the other bus.
Confirm against your own firmware
These are the sensor-bus pins in the stock Heltec V3 sensor build (
ENV_PIN_SDAandENV_PIN_SCLin the board’splatformio.ini). Different boards use different pins, and builds do change. Ifsensor listcomes up empty on correct wiring, check the variant configuration in the MeshCore repository for your board.
Problem: I bought a sensor and MeshCore does not see it.
Solution: Confirm it is on the supported list, that it is the I2C version, and that it is wired to the right pins.
Why: The firmware only detects the specific parts compiled into that build. Anything else is invisible to it, no matter how well wired.
Problem: My BME280 reports temperature and pressure but no humidity.
Solution: You have a BMP280.
Why: The two chips share a bus address and a footprint. The BMP280 simply has no humidity element, and the firmware reports what the chip offers.
You can use the arrows ← → on your keyboard to navigate between lessons.
Comments