Git Product home page Git Product logo

dragonhomenetwork's Introduction

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:

dragonhomenetwork's People

Contributors

jcohen98 avatar nfarnesi4 avatar ryanhassing avatar tlechman49 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

nando97

dragonhomenetwork's Issues

Add new gateway command for setting the network ID

The network id currently must be hard-coded into the script. Now that the serial communication with the gateway is handled by a python script, it would be much better if the network ID could be set from the script. This would mean you could set the network ID in a config file on the server.

Make draft of Poster

Create Poster for the Week of Undergraduate Excellence, for DSH, and for other presentations that may come up

Research LoRa Libs

Come up with the library we would like to use for the Adafruit boards and any other coding considerations. Has anyone else may similar libs or networks that we can take a look at?

Cost/cost scaling

Estimate basic build cost and build cost improvement as the network grows.

Sensor Calibration

Calibrate temperature and humidity sensors so that data collection is accurate and precise

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.