Giter Site home page Giter Site logo

arduino-nrf24l01-thermometer's Introduction

The plan

Create a cheap and low-power Arduino sensor device (currently for measuring the temperature but could be easily adapted to other Arduino sensors) using an NRF24L01+ 2.4Ghz transceiver to send temperature measurements every X minutes.

The idea is to have reliable RF communications, using small packet sizes, low transmission rates, whilst maximising communication range and battery life, by using the Arduino's and the transceiver's "Power-Down" modes.

Requirements

Sensor wiring

Layout

NRF24L01+ Module

  • VCC -> 3v3
  • GND -> GND
  • CSN -> D10
  • CE -> D9
  • MOSI -> D11
  • SCK -> D13
  • IRQ is not required for our use case, it's an interrupt pin that goes LOW whenever a packet arrives, a packet is sent or the maximum retry count for sending a packet is reached. You can find out more about that here
  • MISO -> D12

DS18B20 Thermometer

  • GND -> GND
  • D -> D2
  • VDD -> 3v3

Place a 4.7KΩ resistor between D and VCC.

Master node wiring

Layout

NRF24L01+ Module

  • VCC -> 3v3
  • GND -> GND
  • CSN -> D10
  • CE -> D9
  • MOSI -> D11
  • SCK -> D13
  • IRQ is not used
  • MISO -> D12

Getting it to work

With the Arduino IDE compile and upload sensor.ino to the sensor node, and master.ino to the master node. Leave the master node connected to the computer via USB, and open up the the Arduino IDE Serial console (CTRL+SHIFT+M).

Power up the sensor node a few meters away for testing purposes via USB power or with a direct 5V input on the 5V pin.

Every 8 seconds you should see the temperature (in °C) displayed on the serial monitor of the master node.

Todo

  • Reduce power usage
  • Add GPRS module to the Master node to post temperature to a data logging API
  • Test out other sensors (PIR Sensor, humidity, air pressure, smoke detector...)
  • Add more sensors all communicating with a single master node which bundles up the data and posts it to the API
  • Test battery life using 2 AA batteries and a 5V Step-up module
  • Test maximum range in open area, within a building...

Contributing

Any contribution is welcome, whether it's new ways to keep power usage to a minimum, how to send radio packets in a more reliable manner, how to communicate at an even lower bitrate, how to increase the RF range... Feel free to open up an issue if you have a problem, question, bug or idea.

arduino-nrf24l01-thermometer's People

Contributors

jodjo86 avatar

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.