DPIclimate / enviro-node

Agriculture node for SDI-12 (and other) sensors.
https://DPIclimate.github.io/enviro-node
MIT License
4 stars 0 forks source link

Enviro-Node

AboutDocumentationHardwareLicense

Table of Contents
  1. About
  2. Hardware
  3. Firmware
  4. License

About

Enviro-node is a environmental monitoring node. Users can connect a number of sensors to a node. Data captured from these sensors is then sent to a database over MQTT.

Hardware

The hardware was developed using KiCad. Source files can be found here. While sleeping the Enviro-node will consume ~70 µA.

Microcontroller

=> Schematic

The device incorporates a ESP32 microcontroller to handle bluetooth functions and peripherals. The ESP32 has a very low sleep current of ~16 µA making it perfect for low-powered applications.

Debug and USB Interfaces

=> Schematic

Enviro-node features full debug capability when connected to an ESP-Prog (ESP32 debugger/programmer). It is recommended that you use a USB-to-TTL cable during development. This allows you to have the ESP-Prog connected to the Enviro-node while monitoring the ESP32's serial output via the USB-to-TTL connector.

The USB-C interface is only powered up when battery power is available. Do not attempt to power the board with the USB-C interface.

Power Distribution

=> Schematic

Battery

The Enviro-node is powered by two 18650 LiPo cells connected in parallel (4.2 V). A current jumper is available to monitor current and voltage on an external device such as a multi-meter. The batteries feature reverse polarity detection and protection and an inline fuse.

An INA219 IC is connected to the battery to allow for real-time monitoring of battery current and voltage.

Solar

The batteries are recharged through a LT3652IMSE solar charging IC or via a USB-C battery charging IC (MCP73832). The default configuration allows for 12 V solar panels to be connected to the device; however, this can be set via a resistor divider.

The solar input features reverse polarity detection and protection as well as an inline fuse and charging/error indicators.

The charging current of the solar panel is limited to a maximum of 1 A and is monitored through another INA219 IC.

3V3 Interface

Most components on Enviro-node operate using 3.3 V for this a linear regulator is incorporated (XC6215B332MR-G). A power supply switch is connected to the output of this regulator to allow the ESP32 (and peripherals) to be manually turned off or restarted.

12V Interface for SDI-12 Devices

Although many SDI-12 devices will work with 3.3 V, the Enviro-node incorporates a 12 V step-up regulator (MIC2288YD5) to provide a stable 12 V (100 mA) supply. This IC can be toggled in the firmware via a GPIO pin and will be completely shutoff when not in use.

If a SDI-12 sensor requires a constant 12 V supply the current consumption of this step-up regulator is ~2 mA with no load.

Peripherals

=> Schematic

IO Expander

As a full debug interface is supplied and there are several operating interfaces (I2C, SPI, UART) the number of available GPIO pins on the ESP32 is limited. Therefore, an IO-expanded is provided (TCA9534) to control many IC's power consumption including CAT-M1, the SD-Card and 12 V power.

A LED is also connected the IO-expander that the user can configure.

Piezo Buzzer

For audible feedback a piezo buzzer is included and will play success and error tones while the device is being configured and on startup. Under normal conditions the piezo buzzer will be quiet.

Programmable Button

An external programmable button is connected to a GPIO input pin on the ESP32. On startup if this button is held down the device will enter a programmable state whereby BluetoothLE will be enabled and a UART CLI interface will become available. Once the user types "exit\r" the CLI will be exited and normal operations will continue.

SD-Card

Environmental monitoring requires a SD-Card to ensure data is captured even when communications are down. The Enviro-node provides a top entry, Micro-SD card slot that can be disconnected from its power supply via a GPIO pin (see IO-Expander above).

SDI-12

A full SDI-12 interface is provided. No level-shifting is incorporated as the ESP32 can handle 5 V. Users can either use the 12 V output and toggle the output on-and-off or use the 3.3 V output for always on devices.

Digital

A digital pin is provided to the user to count pulses originating from a Tipping Bucket or wind-speed sensor.

CAT-M1

=> Schematic

The Enviro-node uses CAT-M1 to send messages (containing JSON encoded data) over MQTT. For this a SARA-R5 modem is incorporated into the design. This modem communicates with the ESP32 microcontroller over AT-commands via a Serial (UART) interface.

Note A compatible nano-sim card is required for this functionality of the device. For Australian users Telstra has a M2M service or there are other global services such as Hologram.

The modem is directly powered by the 18650 batteries (as the modem can draw ~500 mA) and can be turned off and on via a GPIO pin (see IO-Expander above). A network indicator LED will indicate network registration status.

Firmware

The firmware source code is located in the firmware/wombat directory. It is structured as a platformio project.

Installing platformio and the Wombat board files

The install_pio.sh script will install platformio and copy the Wombat board files into the installation.

After running the script and adding ~/.platformio/penv/bin to the PATH, the firmware can be compiled with the command pio run.

License

This project is MIT licensed, as found in the LICENCE file.