/DragonHomeNetwork

Wireless IoT Network with a goal of covering Drexel's campus

Primary LanguageC++

Outdated as of 5/3/19. Will be updated in the near future.

DragonHomeNetwork

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.

Contents

Features

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.

Quick start

Necessary hardware

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

Necessary tools

  • Soldering iron
  • Wire strippers
  • Arduino/USB cable
  • Internet-connected computer

Hardware setup

Follow the below schematic to set up your nodes: todo include image.

Network setup

Below are the steps to initialize the server, gateway and one sensor node.

  1. 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.

  2. 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, type tmux a. To switch between parallel windows, type CTRL+B and use the arrow keys.

  3. 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.

Research Analysis

Cost Scaling

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

Releases

Not currently released.

Contributors

The DragonHome Network team: