Thumbnail Project multiple Nodes nRF24L01+

Project multiple Nodes nRF24L01+ Wireless DHT11 with Arduino Uno

Penjelasan Singkat

Pada project multiple nodes ini merupakan pengembangan dari tutorial arduino mengakses module wireless nRF24L01+ sebelumnya.

Difungsikan untuk monitoring secara nirkabel yang dapat menjangkau jarak yang ingin dimonitoring tanpa harus menarik kabel yang terlalu panjang (maks. 100m), yang berakibat ke pembacaan sensor yang salah.

Perbedaan yang terdapat project ini dibanding project sebelumnya yaitu pada bagian jumlah TX (transceiver) dan RX (Receiver).

Pada project ini digunakan 2 TX dengan RX (receiver) 1 yang dimana ini dinamakan dengan multiple nodes dan data ditampilkan pada LCD 16×2.

Kebutuhan yang diperlukan nRF24L01+ multiple node

Refrensi pembelajaran tutorial dasar :

  1. Tutorial mengakses DHT11
  2. Tutorial mengakses penampil LCD dengan i2c PCF8574
  3. Tutorial mengakses nRF24L01

Bahan yang perlu dipersiapkan antara lain :

  • Arduino Uno
  • nRF24L01+
  • LCD 16×2
  • Module i2c LCD PCF8574
  • DHT11
  • Modul power supply adjustable + Adaptor 2A 12Vdc
  • Kabel Jumper
  • Komputer + Software IDE Arduino

Kebutuhan Project multiple Nodes nRF24L01+

Skema rangkaian yang perlu dirangkaikan seperti gambar dibawah ini :

Rangkaian Project multiple Nodes nRF24L01+

Keterangan pengkabelan :

Rangkaian TX.1 & TX.2

  • Pin A0 : D0 modul DHT11
  • VCC : VCC 
  • GND : GND
  • VCC : 3.3 Vdc modul nRF24L01+
  • GND : GND
  • Pin 9 : CE
  • Pin 10 : CS
  • Pin 13 : SCK
  • Pin 11 : MOSI
  • Pin 12 : MISO

Rangkaian RX

  • Pin A5 : SCL modul i2cPCF8574
  • Pin A6 : SDA
  • VCC : VCC 
  • GND : GND
  • VCC : 3.3 Vdc modul nRF24L01+
  • GND : GND
  • Pin 9 : CE
  • Pin 10 : CS
  • Pin 13 : SCK
  • Pin 11 : MOSI
  • Pin 12 : MISO

Monitoring Server Room : Temperature & Humidity Via Blynk

Library yang dibutuhkan :

  • DHT11 [ddownload id=”1086″]
  • i2c LCD PCF8574 [ddownload id=”1087″]
  • nRF24L01+ [ddownload id=”1066″]

Peletakan Library pada OS :
1. Mac : (home directory)/Documents/Arduino/libraries
2. PC (Windows) : My Documents -> Arduino -> libraries
3. Linux : (home directory)/sketchbook/libraries

Kode Pemrograman TX.1

/* www.nyebarilmu.com */
//project monitoring suhu dan kelembaban nRF24L01+ multiple Nodes
//©2017

#include <SPI.h>
#include <RF24.h>
#include <nRF24L01.h>
#include <DHT.h>

#define DHTTYPE DHT11   // DHT 11
#define DHTPIN A2     //Pin apa yang digunakan

RF24 radio(9, 10);
const uint64_t pipes[3] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL };

float h,t,f;

DHT dht(DHTPIN, DHTTYPE);

void setup(void) {
Serial.begin(9600);
dht.begin();
radio.begin();
radio.setDataRate(RF24_250KBPS);
radio.openWritingPipe(pipes[1]);
radio.startListening();
}

void loop(void)
{
//Pembacaan untuk data DHT11
h = dht.readHumidity();
//Pembacaan dalam format celcius (c)
t = dht.readTemperature();
//pembacaan dalam format Fahrenheit
f = dht.readTemperature(true);

radio.write(&h, sizeof(h));
radio.write(&t, sizeof(t));
radio.write(&f, sizeof(f));
delay(1000);
}

Kode Pemrograman TX.2

[lockercat]

/* www.nyebarilmu.com */
//project monitoring suhu dan kelembaban nRF24L01 multi-Node
//©2017

#include <SPI.h>
#include <RF24.h>
#include <nRF24L01.h>
#include <DHT.h>

#define DHTTYPE DHT11   // DHT 11
#define DHTPIN A2     //Pin apa yang digunakan

RF24 radio(9, 10);
const uint64_t pipes[3] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL };

float h1,t1,f1;

DHT dht(DHTPIN, DHTTYPE);

void setup(void) {
Serial.begin(9600);
dht.begin();
radio.begin();
radio.setDataRate(RF24_250KBPS);
radio.openWritingPipe(pipes[2]);
radio.startListening();
}

void loop(void)
{
//Pembacaan untuk data DHT11
h1 = dht.readHumidity();
//Pembacaan dalam format celcius (c)
t1 = dht.readTemperature();
//pembacaan dalam format Fahrenheit
f1 = dht.readTemperature(true);

radio.write(&h1, sizeof(h1));
radio.write(&t1, sizeof(t1));
radio.write(&f1, sizeof(f1));
delay(1000);
}

[/lockercat]

Kode program untuk RX

/* www.nyebarilmu.com */
//project monitoring suhu dan kelembaban nRF24L01 multiple Nodes
//©2017

#include <Wire.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <LiquidCrystal_I2C.h>

//alamat 0x27 perlu dipastikan dengan i2c scanner
LiquidCrystal_I2C lcd(0x27,16,2);

RF24 radio(9, 10);
const uint64_t pipes[3] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL };

float h,t,f;
float h1,t1,f1;

void setup(void) {
Serial.begin(9600);
radio.begin();
//Prosedur pemulaian LCD
lcd.init();
//menyalakan backlight LCD
lcd.backlight();

radio.setDataRate(RF24_250KBPS);
radio.openReadingPipe(1, pipes[1]);
radio.openReadingPipe(2, pipes[2]);
radio.startListening();

//Menuliskan pada baris ke-1
lcd.setCursor(00, 00);
lcd.print("www.nyebarilmu.com");
//Menuliskan pada baris ke-2
lcd.setCursor(00, 1);
lcd.print("nRF24L01+ DHT11");

//Menuliskan pada serial monitor
Serial.println("Suhu dan Kelembaban monitoring");
Serial.println("by www.nyebarilmu.com");
delay(2000);
lcd.clear();
}

void loop(void)
{
lcd.clear();
delay(500);
if (radio.available()) {
delay(50);
//pembacaan data kelembaban pada transciever 1
radio.read(&h, sizeof(h));

lcd.setCursor(00, 00);
lcd.print("1:");

lcd.setCursor(2, 00);
lcd.print(h);
lcd.print("  %");

//pembacaan data suhu dalam format celcius pada transciever 1
radio.read(&c, sizeof(c));
lcd.setCursor(5, 0);
lcd.print("/");

lcd.setCursor(7, 0);
lcd.print(c);
lcd.print("  C");

//pembacaan data suhu dalam bentuk fahrenheight pada transciever 1
radio.read(&f, sizeof(f));
lcd.setCursor(10, 00);
lcd.print("/");

lcd.setCursor(12, 00);
lcd.print(f);
lcd.print("  F");

delay(50);

radio.read(&h1, sizeof(h));
lcd.setCursor(00, 1);
lcd.print("2:");

lcd.setCursor(2, 1);
lcd.print(h1);
lcd.print("  %");

radio.read(&c1, sizeof(c));
lcd.setCursor(5, 1);
lcd.print("/");

lcd.setCursor(7, 1);
lcd.print(c1);
lcd.print("  C");

radio.read(&f1, sizeof(f));
lcd.setCursor(10, 1);
lcd.print("/");

lcd.setCursor(12, 1);
lcd.print(f1);
lcd.print("  F");
}
else
{
lcd.println("No radio available");
}

}

Selamat mencoba!

Terimakasih sudah berkunjung, dan semoga bermanfaat. Salam nyebarilmu.com!

>> CMIIW <<

66 Comments

  1. G Prabowo

    selamat siang

    informasi nyebar ilmu memang woke banget bagi kita kita yang baru mengenal arduino
    kalo bisa di bahas dong bikin RC car via nrf24l01 ato cara lainnya..
    terimakasih atas perhatiannya..
    moga ilmu yang disebar jadi barokah untuk semua. amin.

    • oke gan, thanks sudah berkunjung

      hari ini saya mau buat 2 artikel sekaligus

      bisa saya masukan ke daftar list

  2. gan, mau tanya nih
    kebetulan skripsi saya berhubungan dengan pengirman data melalui radio NRF24L01
    tetapi saya menggunakan 4 sensor yang berbeda-beda
    saya sudah mencoba dengan berbagai macam pengiriman, tapi tetap aja penerima tidak bisa menerima data yg sdh dikirim oleh transmitter
    mungkin ngasih saya masukan, sehingga saya bisa menyelesaikan skripsi ini hehehehe
    biar gak jadi mahasiswa abadi

  3. gan, mau tanya nih
    kebetulan skripsi saya berhubungan dengan pengirman data melalui radio NRF24L01
    tetapi saya menggunakan 4 sensor yang berbeda-beda
    saya sudah mencoba dengan berbagai macam pengiriman, tapi tetap aja penerima tidak bisa menerima data yg sdh dikirim oleh transmitter
    mungkin ngasih saya masukan, sehingga saya bisa menyelesaikan skripsi ini hehehehe
    biar gak jadi mahasiswa abadi

    • Sorry gan, baru balas

      Untuk koneksi nodes nrf24l01, apakah sudah dilakukan trial secara sederhana gan?
      2 koneksi tx dan rx

      4 sensor yang berbeda – beda bisa dijabarkan apa saja?
      dan apakah harus terpisah dengan module kontroler,

      • tiko

        gan ane mau nanya, NRF24L01 bisa menerima 3 receiver sekaligus gak y? soale tugas sya berhubungan dengan remote yg bisa menggerakkann 3 cervo sekaligus, agan ada saran yg bisa saya lakukan, soale masih newbie sama nrf2401

        • bisa saja gan, tinggal dimodifikasi programnya dibagian PIPE[3] menjadi 4

          dan alamat 1 device satu lagi

          next saya update artikelnya ini

  4. harboot

    Min contoh program diatas kenapa ada pipe ke 3 ?

  5. harboot

    Min contoh program diatas kenapa ada pipe ke 3 ?

    • pipe 3 itu menunjukan deklarasi alatnya gan,

      jadi 1 receiver, dan 2 transceiver

      seperti itu

      jika ingin menambahkan lagi, itunya perlu diganti dulu

      • tapi saya tidak lihat pipe 3 dipakai di contoh program diatas.. hanya pipe 1 dan 2.

  6. tiko

    gan ane mau nanya, NRF24L01 bisa menerima 3 receiver sekaligus gak y? soale tugas sya berhubungan dengan remote yg bisa menggerakkann 3 cervo sekaligus, agan ada saran yg bisa saya lakukan, soale masih newbie sama nrf2401

    • tiko

      jadi saya bermaksud untuk membuat 1 joystick yang mana bisa menggerakkan 3 cervo sekaligus, trus kalo buat codingnya sendiri referensinya seperti apa ya gan. mohon bantuannya

      • Mungkin yang agan maksud servo ya,

        kalo untuk menggerakan 3 servo bisa saja dilakukan,

        di subscribe dulu saja gan, untuk update artikel terbarunya

  7. tiko

    gan ane mau nanya, NRF24L01 bisa menerima 3 receiver sekaligus gak y? soale tugas sya berhubungan dengan remote yg bisa menggerakkann 3 cervo sekaligus, agan ada saran yg bisa saya lakukan, soale masih newbie sama nrf2401

    • tiko

      jadi saya bermaksud untuk membuat 1 joystick yang mana bisa menggerakkan 3 cervo sekaligus, trus kalo buat codingnya sendiri referensinya seperti apa ya gan. mohon bantuannya

      • Mungkin yang agan maksud servo ya,

        kalo untuk menggerakan 3 servo bisa saja dilakukan,

        di subscribe dulu saja gan, untuk update artikel terbarunya

  8. suhu saya mau tanya,

    const uint64_t pipes[3] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL };

    kode2 diatas fungsinya apa ya? dan ngedapatinnya darimana?

    • 0xF0F0F0F0E1LL didapat dari library yang ane gunain gan.

      0xF0F0F0F0EXLL >> Yang x itu nunjukin jumlah device yang digunakan

  9. suhu saya mau tanya,

    const uint64_t pipes[3] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL };

    kode2 diatas fungsinya apa ya? dan ngedapatinnya darimana?

    • 0xF0F0F0F0E1LL didapat dari library yang ane gunain gan.

      0xF0F0F0F0EXLL >> Yang x itu nunjukin jumlah device yang digunakan

  10. catur

    gan nyarinya alamatnya 0xF0F0F0F0E1LL gimana ya didalam library??
    terus 1 modul apa bisa dibuat receiver sekaligus transmitter

  11. Khajis

    Maaf gan, itu di godung RX didalam void setup kurang printah radio.begin() ;
    Mantap sdh aku coba dan berhasil

  12. Khajis

    Maaf gan, itu di godung RX didalam void setup kurang printah radio.begin() ;
    Mantap sdh aku coba dan berhasil

  13. Khajis

    Maaf gan, itu di koding RX didalam void setup kurang printah radio.begin() ;
    Mantap sdh aku coba dan berhasil

  14. Khajis

    Maaf gan, itu di koding RX didalam void setup kurang printah radio.begin() ;
    Mantap sdh aku coba dan berhasil

  15. frenki

    min boleh minta facebook / no Wa mu yang bisa untuk sharing bersma??

  16. frenki

    min boleh minta facebook / no Wa mu yang bisa untuk sharing bersma??

  17. Tarwiyono Santoso

    min klo mengirim 2 data berbentuk float dari transmiter ke receiver dan di receiver nya berbentuk float juga itu bagaimana ?.

  18. Tarwiyono Santoso

    min klo mengirim 2 data berbentuk float dari transmiter ke receiver dan di receiver nya berbentuk float juga itu bagaimana ?.

  19. Sum

    Maaf gan, saya udh coba program diatas, tapi cuma 1 nilai yg keluar, mohon pencerahan gan,
    Terima kasih

  20. Sum

    Maaf gan, saya udh coba program diatas, tapi cuma 1 nilai yg keluar, mohon pencerahan gan,
    Terima kasih

  21. ane coba dan blum bisa konek, ane ga pake lcd dan sensor, tapi ngirim data integer aja. ada yang bisa bantu ?

  22. ane coba dan blum bisa konek, ane ga pake lcd dan sensor, tapi ngirim data integer aja. ada yang bisa bantu ?

Leave a Reply

Your email address will not be published. Required fields are marked *