Skip to the content
2 layers67.9 × 92.1 mmSensorPod Board, the printed circuit board in 3D

Code and PCB designs for AutoBloomer MQTT sensor modules

Size
67.9 × 92.1 mm
Copper layers
2
Thickness
1.6 mm
Parts
21
Nets
43
Pads
138
Tracks, vias
86, 0
Pours
7
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
13 Mar 2023
Updated
15 Dec 2024

Overview

SensorPod Board is an open-source printed circuit board by plb500, from the plb500/AutoBloomer-SensorModules repository on GitHub. It is a 2-layer board of 67.9 × 92.1 mm with 21 parts on 43 nets, routed with 86 tracks and 0 vias.

It is built around the SCD30 and LM1117-3.3. Its parts include 5 connectors, 3 capacitors, 3 resistors, 3 ICs and 2 diodes. It belongs with the home automation and IoT and sensors and measurement boards and the RP2040 boards of this library.

Main components

2

README

README.md

AutoBloomer Sensor Modules

Full plans and code for a sensor controller capable of publishing multiple sensor data via MQTT

Raspberry Pico source code is here

PCB schematics (KiCad format), plans plus any 3D prints/CNC files for the different hardware platforms are here

A brief overview is on YouTube

Under the hood the sensor modules use Raspberry Pico Ws to communicate with an MQTT broker and transmit data it collates from the following sensors:

  • SCD30 environmental sensor (link)
  • Stemma soil sensor (link)
  • Battery voltage (for Raspberry Pi RTC) (uses an ADC pin on the Pico and custom circuitry on the HIB)
  • Sonar (feed level) sensors (Currently using A02YYUW sonars - link)

I also intend to add EC and/or pH sensors to this to essentially make this a one-stop hydroponics sensor interface.

The module arranges these sensors into sensor "groups", referred to by their index. Each group effectively publishes a set of data from multiple sensors to a single MQTT topic. This allows the Sensor Pod, for example, to accumulate sensor data from both the SCD30 sensor and the Stemma Soil Sensor into a single topic, and also allows the HIB to publish sensor data to multiple topics (i.e. the RTC battery voltage and each individual connected feed sensor all publish to their own individual topics)

Hardware platforms

Currently there are two different hardware platforms defined:

  • Sensor Pod
  • Hardware Interface Board (HIB)

Sensor Pod

The Sensor Pod consists of a single sensor group providing data from the following sensors:

  • Group 0
    • SCD30
      • CO2
      • Humidity
      • Temperature
    • Stemma Soil Sensor
      • Soil moisture

Hardware Interface Board

The HIB consists of two distinct pieces of hardware. One section provides power and hardware control to the Raspberry Pi powering the AutoBloomer controller, along with a RTC module and interfacing to relays. The other section is the sensor module which provides data from feed level sensors along with the current RTC battery module voltage. These are grouped as follows:

  • Group 0
    • RTC battery level
  • Group 1
    • Feed sensor
  • Group 2
    • Feed sensor

Module configuration

Configuration of each module is done in two ways:

Basic module configuration

Basic pod configuration of essential runtime variables (wireless SSID/key, broker address, module location/name etc) is done via serial port connected to the bord's EXT header (3.3v, 57600/8/n/1) and transmitting commands in the format: <COMMAND><SENSOR_GROUP><PARAMETER> (note no space)

  • SSID<< wireless ssid >> - Sets the WiFi SSID
  • PASS<< password >> - Sets WiFi passkey
  • NAME<< module >> - Sets sensor module name
  • BRKR<< address >> - Sets the broker address
  • GRPN<< sensor group index>><< sensor group name >> - Sets the name of the sensor group at the supplied index (this is used for the MQTT topic path)
  • GRPL<><< sensor group location >> - Sets the location of the sensor group at the supplied index (this is used for the MQTT topic path)
Example commands
  • SSIDMyNetwork -> Sets the sensor module to connect to the wireless network with the SSID "MyNetwork"
  • PASSthe_key -> Sets the sensor module to connect to the wireless network using the PSK "the_key"
  • NAMESensorModule -> Sets the Pico's host/MQTT client name to be "SensorModule"
  • BRKRthebroker.local -> Tells the sensor module to connect and publish to the MQTT broker with host name "thebroker.local"
  • BRKR192.168.1.50 -> Tells the sensor module to connect and publish to the MQTT broker at address "192.168.1.50"
  • GRPN0Group1Sensor -> Sets the name of the sensor group at index 0 to "Group1Sensor"
  • GRPL0LeftChamber -> Sets the location of the sensor group at index 0 to "LeftChamber"

Once these have been set the pod will attempt to connect to the configured broker via the supplied wireless network and begin publishing sensor data to the topic:

text
AutoBloomer/<< sensor group location >>/<< sensor group name >>

Runtime sensor calibration

Once connected, the pod will also subscribe to a specific MQTT topic to listen for sensor calibration commands. The topic in question is:

text
AutoBloomer/<< sensor group location >>/<< sensor group name >>/control

The payload consists of a single line detailing the type of calibration to be performed. Currently the only sensor capable of (and requiring) calibration is the SCD30 on the Sensor Pod. Calibration commands are one of the following:

  • TEMP (temperature offset)
  • FRC (CO2 field calibration value)

For example, setting a FRC value of 400 (i.e. recalibrating outside) and using mosquitto_pub the command line would look something like this:

text
mosquitto_pub -h broker.address -m "FRC 400" -t "AutoBloomer/SensorLocation/SensorName/control"

For more details on these parameters, see the SCD30 documentation here

Parts

21
QtyValueFootprintReferences
210uFCapacitor_THT:C_Radial_D6.3mm_H5.0mm_P2.50mmC2, C3
24.7kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2
2D_SchottkyDiode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1, D2
11000uFCapacitor_THT:CP_Radial_D12.5mm_P5.00mmC1
110KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3
1DC 5-15vConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ4
1EXTConnector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_VerticalJ1
1EXT I2CConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ2
1LM1117-3.3Package_TO_SOT_THT:TO-220-3_Horizontal_TabDownU3
1Pico WRPi_Pico:RPi_PicoW_SMD_THU1
1Power selectConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ5
1ResetConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ3
1SCD30SCD30:MODULE_SCD30U2
1TP0610LPackage_TO_SOT_THT:TO-92L_InlineQ1

The 17 most common of 21 parts.

More from plb500/AutoBloomer-SensorModules

1
  • 2 layers156.9 × 102.2 mmHardwareInterfaceBoard, the printed circuit board in 3D

    HardwareInterfaceBoard

    plb500/AutoBloomer-SensorModules

    Code and PCB designs for AutoBloomer MQTT sensor modules

    85 parts

Similar boards

  • 2 layers100 × 100 mmAir Quality Sensor, the printed circuit board in 3D

    Air Quality Sensor

    willem-pennings/Air-Quality-Sensor

    Design files for a Home Assistant-compatible air quality sensor/monitor

    17 parts12
  • 2 layers114.2 × 36.8 mmAirbox, the printed circuit board in 3D

    Airbox

    Alacrity-Education/AirBoxV2

    The AirBox V2 Station is an open source air quality monitoring station based on the Sensirion SEN66 sensor. It measures particulate matter, CO2, VOC and NOx, runs on a solar charged lithium cell, and reports over Wi-Fi.

    68 parts6GPL-3.0
  • 2 layers59.2 × 39.4 mmScd30 esp, the printed circuit board in 3D

    Scd30 esp

    Duckle29/InKli

    An ESP32-WROOM32 backpack for an SCD30. Uses a high effeciency Buck converter to try and avoid self heating.

    63 parts1
  • 2 layers120 × 100 mmEnvSensor v2, the printed circuit board in 3D

    EnvSensor v2

    jakubprzybytek/Environmental-Sensors

    162 parts1
  • 2 layers60 × 60 mmMinico2, the printed circuit board in 3D

    Minico2

    artemist/minico2

    A simple CO2 monitor based on the Sensirion SCD-30 and an ESP32. This is intended to have Wi-Fi and Ethernet thought that is not yet implemented

    46 parts
  • 2 layers36 × 57 mmFug, the printed circuit board in 3D

    Fug

    bboe/fug

    Carrier PCB joining a WEMOS D1 Mini (ESP8266) to a Sensirion SCD30 CO2/RH/T sensor. Script-generated KiCad.

    13 partsCC-BY-SA-4.0
  • 4 layers94 × 94 mmWalter feels, the printed circuit board in 3D

    Walter feels

    benmcnelly/walter-hardware

    This repository contains all hardware information about Walter and shields

    154 partsGPL-3.0
  • 4 layers55 × 70 mmEnvsensor, the printed circuit board in 3D

    Envsensor

    bruvv/ENV-sensor-esp32

    Custom ESP32-S3 environmental sensor PCB designed for use with ESPHome and Home Assistant.

    9 partsGPL-3.0

Questions

How big is the SensorPod Board PCB?

It measures 67.9 × 92.1 mm and has 2 copper layers, 1.6 mm thick.

What parts does the SensorPod Board use?

21 parts, built around the SCD30 and LM1117-3.3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the SensorPod Board KiCad files?

From the plb500/AutoBloomer-SensorModules repository on GitHub, at the commit this page was made from: the board is hardware/SensorPod/PCB/SensorPod-Board.kicad_pcb and its schematic hardware/HIB/PCB/HardwareInterfaceBoard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the SensorPod Board design in my own project?

Its repository states no licence, so its author keeps all rights: ask plb500 before reusing the design.