nRF24L01+ Wireless Temperature Monitoring DS18B20 Arduino UNO
Parts List
- nRF24L01+
- DS18B20 Temperature Sensor
- Arduino UNO
- 4.7k resistor
Library
nRF24L01 Library
RF24 Library
DallasTemperature Library
Wiring
Wire nRF24L01+ to Arduino UNO
GND <–> GND
VCC <–> Arduino 3.3V
CE <–> Arduino pin 9
CSN <–> Arduino pin 10
SCK <–> Arduino pin 13
MOSI <–> Arduino pin 11
MISO <–> Arduino pin 12
Code
Upload Code to TX
#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); RF24 radio(9, 10); const uint64_t pipe = 0xE8E8F0F0E1LL; void setup(void) { Serial.begin(9600); sensors.begin(); radio.begin(); radio.openWritingPipe(pipe); } void loop(void) { sensors.requestTemperatures(); float temperature = sensors.getTempCByIndex(0); radio.write(&temperature, sizeof(float)); delay(1000); }
Upload Code to RX
#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> RF24 radio(9, 10); const uint64_t pipe = 0xE8E8F0F0E1LL; void setup(void) { Serial.begin(9600); radio.begin(); radio.openReadingPipe(1, pipe); radio.startListening(); Serial.begin(9600); Serial.println("Temperature Starting....."); delay(1000); Serial.println("by www.elec-cafe.com"); delay(1000); } void loop(void) { if (radio.available()) { float temperature = 0; if (!radio.read(&temperature, sizeof(float))) { Serial.println("ACK not received by client."); } Serial.print("Temperature : "); Serial.println(temperature); delay(1000); } }
Monitor Temperature
Use Serial monitor on Arduino UNO (RX)