Communication module
iconner22/env_monitor_nodes
Adruino code and schematics for ad-hoc wireless sensor networks used for environmental monitoring. Project developed for senior year computer engineering capstone project.
Adruino code and schematics for ad-hoc wireless sensor networks used for environmental monitoring. Project developed for senior year computer engineering capstone project.
Sensor module is an open-source printed circuit board by iconner22, from the iconner22/env_monitor_nodes repository on GitHub. It is a 2-layer board of 68.6 × 53.3 mm with 9 parts on 37 nets, routed with 57 tracks and 4 vias.
It is built around the DHT20 and B67345B0001X087. It belongs with the sensors and measurement boards of this library.
This project implements multihop, ad-hoc wireless sensor network (WSN) for environmental monitoring. The system is built around Arduino UNO nodes that communicate using a 915 MHz transciever and a centeral gateway that handles requests and data storage. The gateway node requests temperature and humidity at sent intervals and collects sound data based on a monitored threshold. The network performs a discovery upon initialization which allows for ad-hoc distribution and supports multi-hop communication based on a path supplied by the gateway.
The system is built off of Arduino UNOs and custom PCB shields which integrate the RF transciever and sensors into the microcontroller.
The network is composed of three distinct node roles: sensor nodes, communication nodes, and a gateway node. All nodes share a common hardware and software base, with behavior determined by role-specific logic and sensors.
Sensor nodes:
Communication nodes:
The gateway:
The network operates as a fully ad-hoc, multihop mesh. Nodes do not rely on preconfigured routing tables; instead, routes are dynamically discovered during a network setup (discovery) phase.
The network supports both:
During the discovery process, the gateway node performs Dijkstra’s algorithm using the RSSI as the edge cost, a 32-bit integer is used to represent each node in the network where a 1 signals that it needs to be explored and a 0 signals that it already has been explored. This allows for a compact representation of 32 nodes, and the use of bitwise operations during the discovery process. The gateway node then stores a routing table, and upon request transmits the necessary path to the destination node. For the event based transmissions, each of the nodes stores the best path back to the gateway and transmits over this. The transmissions are handled using a baseline struct which is able to store the required data for each transmission type. The transmission is signified using an enum that specifies the type of tranmission and if it is a request or response.
enum TransmissionType {
DISCOVERY_REQUEST,
GPS_REQUEST,
ENV_SENSOR_REQUEST,
DISCOVERY_RESPONSE,
SOUND_RESPONSE,
GPS_RESPONSE,
ENV_SENSOR_RESPONSE,
DISCOVERY_RESPONSE_FINISHED,
WEIGHT_CALCS
};
/********* Transmission Struct ********/
struct TransmissionData{
int dest;
int curr_num_hops;
int path[MAX_HOPS+1];
float dataOne; // temp, latitude, RSSI
float dataTwo; // humidity, longitude, timing
TransmissionType dataType;
uint32_t nodeClosedOpenEncoding; // 1 = node unvisited, 0 = visited
};This repository includes the PCB design and all of the Arduino code required for the sensor, communication, and gateway nodes. Additional code is needed for the RaspberryPi to communicate with the gateway arduino. This is what handled the discovery process.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | LOGO | LOGO | G***, G*** |
| 1 | Analong Pins | Library:ANALOG_PINS | ANALOG-1 |
| 1 | DHT20 | FINAL_FOOTPRINTS:DHT20-Temp-Humidity | DHT20 |
| 1 | Digital_Bottom | Library:DIGITAL_BOTTOM | DIGITAL-L1 |
| 1 | Digital_Top | Library:DIGITAL_TOP_PINS | DIGITAL-H1 |
| 1 | Power_Pins | Library:POWER_PINS | POWER1 |
| 1 | ~ | FINAL_FOOTPRINTS:SOUND-BOB | SOUND_BOB1 |
| 1 | ~ | FINAL_FOOTPRINTS:RF69_MODULE | RFM69HCW-915MHz |
iconner22/env_monitor_nodes
Adruino code and schematics for ad-hoc wireless sensor networks used for environmental monitoring. Project developed for senior year computer engineering capstone project.



atop8918/DigitalWaters_WD_prototype
Simplified Schematic for prototype release

eshazen/reference_designs
Example projects for educational purposes - no warranty!



Tsquash/AirQualityMonitor
AQM is an ESP32-C6-based, Matter compatible, indoor air-quality monitor. It measures carbon dioxide, temperature, humidity, VOC, and NOx, displays the latest readings on an e-paper display, and publishes its…

It measures 68.6 × 53.3 mm and has 2 copper layers, 1.6 mm thick.
9 parts, built around the DHT20 and B67345B0001X087. 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.
From the iconner22/env_monitor_nodes repository on GitHub, at the commit this page was made from: the board is sensor_pcb/sensor_module.kicad_pcb and its schematic comm_and_gateway_pcb/communication_module.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask iconner22 before reusing the design.