GithubHelp home page GithubHelp logo

oka4henry / farm-data-relay-system Goto Github PK

View Code? Open in Web Editor NEW

This project forked from timmbogner/farm-data-relay-system

0.0 0.0 0.0 573 KB

A system that uses ESP-NOW and other wireless protocols to transport sensor data in remote areas without relying on WiFi.

License: MIT License

C++ 74.31% C 25.69%

farm-data-relay-system's Introduction

Farm Data Relay System

In loving memory of Gay Holman, an extraordinary woman.

The Farm Data Relay System is an easy way to link remote sensors to the internet without the need for WiFi. It is based around the ESP-NOW protocol, which is readily available on ESP32 and ESP8266 microcontroller boards. The system can be used to collect and transmit sensor data in situations where it would be too difficult or energy-consuming to provide full WiFi coverage.

Using an assigned MAC address scheme allows for the whole system to be configured by setting just a handful of values in code. Every ESP-NOW gateway is assigned a single-byte identifier, known as the UNIT_MAC. This along with a set, 5-byte prefix is assigned to the MAC address of the ESP's radio at boot.

Gateways can be configured to send an ESP-NOW transmission either to the serial port using JSON, another ESP-NOW gateway, or broadcast it via LoRa PHY. An incoming transmission from the serial port can also be routed to the same interfaces, with the addition of MQTT.

Getting Started

To use FDRS with Node-Red and MQTT you'll need two ESP devices (gateways) that are connected via UART, plus additional ESP devices with sensors connected. The two gateways are programmed using the instructions found with the Gateway2000 sketch. The sensors can either use the example sketches included, or you can use the “fdrs_sensor.h” file to use FDRS with a sketch you’ve already written. Basic

Sensors

typedef struct DataReading {
  float d;
  uint16_t id;
  uint8_t t;
} DataReading;

Each sensor in the system sends its data over ESP-NOW as a float 'd' inside of a structure called a DataReading. Its global sensor address is represented by an integer 'id', and each type is represented by a single byte 't'. If sensors need to send multiple types of readings (ex: temp and humidity), then they are sent in an array of DataReadings. A single DataReading.id may have multiple readings of different types associated with it.

Thank you

...very much for checking out my project! I truly appreciate everyone across the net who has reached out with assistance and encouragement. If you have any questions, comments, or issues please feel free to contact me at [email protected].

If you have any extra money laying around, you could send it to me via this Paypal link. I'm a farmer by occupation, and donations would help me to spend more time developing farm gadgets over the winter months.

Development of this project would not have been possible without the gracious support of my employer, Sola Gratia Farm of Urbana, IL, USA. Sola Gratia is a community-based farm dedicated to growing high-quality produce and sharing it with those in need. Thank you!

A huge thanks to the ever-instructional Andreas Spiess.

Random Nerd Tutorials is also an indispensable source of ESP knowledge.

farm-data-relay-system's People

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.