The exponential growth of wireless communications markets around the world has allowed users from all corners of the globe to share data almost instantaneously. However, managing the collection and transmission of data from multiple devices connected in small, confined networks presents major challenges. The futuristic ideal of having millions of interconnected "things" (inanimate objects, devices, communities, and environments) that have the ability to sense, communicate, network, and produce mass amounts of data that can be utilized in a novel way is known as the Internet of Things (IoT). Automation, environmental analysis, and health and safety awareness are large areas of study that can benefit from IoT networks, but issues with compatibility, versatility, and cost inhibit implementation of such networks.
The purpose of this project is to create an inexpensive, robust, low-power IoT sensor network to serve as an easily implementable model for individuals, communities, and cities. Additionally, the network can serve as a tool within other areas of research for experimentation and QA analysis. The foundation of this system was successfully created using Arduino-based processing in tandem with packet radios that communicate over sub-GHz frequency bands. Ethernet data packet management was done using MQ Telemetry Transport (MQTT) and data visualization was performed with Grafana and MATLAB. This network also utilizes InfluxDB to store and manage data effectively.
The completed network has the following features:
- Modular addition and modification of sensors,
- Low cost ($13.67 for the gateway node and $13.67 for each additional node on the network, with efficient cost scaling),
- Power consumption: 102mA on standby, 205mA sending.
- Packet transmission up to 200 meters.
The following hardware is necessary to set up the network and connect one node:
- (2) Arduino Uno
- (2) Arduino Proto Shield with Mini Breadboard
- (2) RFM69HCW Wireless Transceiver - 915MHz
- (1) 10Kohm through-hole resistors
- (1) DHT11 Temperature-Humidity sensor
- (1) 9V 1A Arduino power supplies
- (2) voltage/logic converters
- Solid core wires
- Solder
- Soldering iron
- Wire strippers
- Arduino/USB cable
- Internet-connected computer
Follow the below schematic to set up your nodes: todo include image.
Below are the steps to initialize the server, gateway and one sensor node.
-
Gateway node setup
Program Radio Gateway Arduino Uno with
DragonHomeNetwork/Arduino/rfm69-network/gateway_uart_mqtt
. This node receives Radio transmissions from every sensor node and forwards them to the mqtt server via USB.Connect the Arduino node to your server.
-
Server setup.
Open
bash
on your server to execute the following commands.Clone the repository:
git clone https://github.com/DrexelSmartHouse/DragonHomeNetwork.git
Install mosquitto and mosquitto-clients, then enable mosquitto daemon:
sudo apt-get install mosquitto mosquitto-clients sudo systemctl enable mosquitto
Install the other dependent software below.
sudo apt-get install python-pip sudo pip install paho-mqtt sudo apt-get install tmux
Make sure that the mqtt server IP is the same as the IP address in
serial-to-mqtt.conf
, which can be accessed by the below instructions:cd /path/to/DataCollectionAndAnalysis vim serial-to-mqtt.conf
Open a tmux session in the cloned
DataCollectionAndAnalysis
directory and run the following scripts.tmux new -s dsh ./rfm69_mqtt_manager.py CTRL+B SHIFT+5 to open a parallel window. ./rfm69-serial-to-mqtt.py
Now you can view sweep and scan events, as well as the sensor data and log messages as they are generated. To leave the server running, type
CTRL+B d
. To bring the session back, typetmux a
. To switch between parallel windows, typeCTRL+B
and use the arrow keys. -
Sensor node setup
Install simple dht library through the Arduino IDE.
In the DragonHomeNetwork/Arduino/rfm69-network/dht11_sensor_node script, change the node_id (line 13) to match the number you wish to give the end node on the network. This variable helps you to identify where data is coming from when there are multiple sensor nodes on the network.
Upload this script to the sensor end node equipped with the DHT11 Temperature and Humidity sensor.
This node can be powered via USB or wall power. Once powered on, it will automatically send data to the server.
The following table documents the cost of the core of the network - the Ethernet and gateway nodes.
Component | Price |
---|---|
Arduino Uno | $3.05 |
Proto Shield with Mini Breadboard | $1.10 |
RFM69HCW Wireless Transciever - 915MHz (4 pack) | $2.15 |
10Kohm Resistor (100-pack) | $0.69 |
9V 1A Arduino Power Supply | $2.08 |
Voltage/logic converter | $0.28 |
Solid core wire | $0.48 |
Total (+ shipping) | $13.67 |
The final table documents how cost scales as n nodes are added to the network.
Nodes | Cost |
---|---|
1 | $13.67 |
10 | $106.28 |
100 | $1210.18 |
500 | $6893.38 |
Not currently released.
The DragonHome Network team: