- Modul RF nRF24L01
- Diagram Sirkuit
- Pemrograman Raspberry Pi untuk Mengirim Pesan menggunakan nRF24l01
- Pemrograman Arduino UNO untuk Menerima Pesan menggunakan nRF24l01
Desainer menggunakan banyak sistem komunikasi nirkabel seperti Bluetooth Low Energy (BLE 4.0), Zigbee, ESP8266 Modul Wi-Fi, Modul RF 433MHz, Lora, nRF dll. Dan pemilihan media tergantung pada jenis aplikasi yang digunakan. Semua, satu media nirkabel populer untuk komunikasi jaringan lokal adalah nRF24L01. Modul ini beroperasi pada 2.4GHz (ISM band) dengan baud rate dari 250Kbps hingga 2Mbps yang legal di banyak negara dan dapat digunakan dalam aplikasi industri dan medis. Juga diklaim bahwa dengan antena yang tepat modul ini dapat mengirim dan menerima sinyal hingga jarak 100 meter di antara keduanya. Kami sebelumnya menggunakan nRF24L01 dengan Arduino untuk mengontrol motor servo dan membuat Ruang Obrolan.
Di sini kita akan menggunakan modul RF Transceiver nRF24L01 - 2.4GHz dengan Arduino UNO dan Raspberry Pi untuk membangun komunikasi nirkabel di antara mereka. Raspberry pi akan bertindak sebagai pemancar dan Arduino Uno akan mendengarkan Raspberry Pi dan mencetak pesan yang dikirim oleh Raspberry Pi menggunakan nRF24L01 pada LCD 16x2. nRF24L01 juga memiliki kemampuan BLE bawaan dan juga dapat berkomunikasi tanpa kabel menggunakan BLE.
Tutorial ini dibagi menjadi dua bagian. Bagian pertama akan menyertakan antarmuka nRF24L01 dengan Arduino untuk bertindak sebagai Penerima dan bagian kedua akan mencakup antarmuka nRF24L01 dengan Raspberry Pi untuk bertindak sebagai Transmitter. Kode lengkap untuk kedua bagian dengan video yang berfungsi akan dilampirkan di akhir tutorial ini.
Modul RF nRF24L01
The modul nRF24L01 adalah transceiver modul, yang berarti setiap modul dapat baik mengirim dan menerima data tetapi karena mereka setengah-dupleks mereka baik dapat mengirim atau menerima data pada suatu waktu. Modul ini memiliki IC nRF24L01 generik dari semikonduktor Nordik yang bertanggung jawab untuk transmisi dan penerimaan data. IC berkomunikasi menggunakan protokol SPI dan karenanya dapat dengan mudah dihubungkan dengan mikrokontroler manapun. Ini menjadi jauh lebih mudah dengan Arduino karena perpustakaan sudah tersedia. The pinouts dari modul standar nRF24L01 ditunjukkan di bawah ini
Modul ini memiliki tegangan operasi dari 1.9V hingga 3.6V (biasanya 3.3V) dan mengkonsumsi arus yang sangat sedikit hanya 12mA selama operasi normal yang membuatnya hemat baterai dan karenanya dapat berjalan pada sel koin. Meskipun tegangan operasi 3.3V, sebagian besar pin toleran 5V dan karenanya dapat langsung dihubungkan dengan mikrokontroler 5V seperti Arduino. Keuntungan lain dari penggunaan modul ini adalah, setiap modul memiliki 6 jalur pipa. Artinya, setiap modul dapat berkomunikasi dengan 6 modul lainnya untuk mengirimkan atau menerima data. Ini membuat modul cocok untuk membuat jaringan bintang atau mesh dalam aplikasi IoT. Juga mereka memiliki kisaran alamat yang luas dari 125 ID unik, oleh karena itu di area tertutup kita dapat menggunakan 125 modul ini tanpa saling mengganggu.
Diagram Sirkuit
nRF24L01 dengan Arduino:
Diagram rangkaian untuk menghubungkan nRF24L01 dengan Arduino mudah dan tidak memiliki banyak komponen. The nRF24l01 akan dihubungkan dengan antarmuka SPI dan LCD 16x2 dihubungkan dengan protokol I2C yang hanya menggunakan dua kabel.
nRF24L01 dengan Raspberry Pi:
Diagram rangkaian untuk menghubungkan nRF24L01 dengan Raspberry Pi juga sangat sederhana dan hanya interface SPI yang digunakan untuk menghubungkan Raspberry Pi dan nRF24l01.
Pemrograman Raspberry Pi untuk Mengirim Pesan menggunakan nRF24l01
Pemrograman Raspberry Pi akan dilakukan menggunakan Python3. Anda juga dapat menggunakan C / C ++ sebagai Arduino. Tetapi sudah ada perpustakaan yang tersedia untuk nRF24l01 dalam python yang dapat diunduh dari halaman github. Perhatikan bahwa program python dan pustaka harus berada di folder yang sama atau program python tidak akan dapat menemukan pustaka. Setelah mengunduh perpustakaan, ekstrak saja dan buat folder tempat semua program dan file perpustakaan akan disimpan. Ketika instalasi perpustakaan selesai, mulailah menulis program. Program dimulai dengan penyertaan pustaka yang akan digunakan dalam kode seperti pustaka GPIO impor untuk mengakses GPIO Raspberry Pi dan waktu impor untuk mengakses fungsi terkait waktu. Jika Anda baru mengenal Raspberry Pi, maka kembali untuk memulai dengan Raspberry pi.
impor RPi.GPIO sebagai GPIO waktu impor spidev impor dari lib_nrf24 impor NRF24
Setel mode GPIO di " saluran SOC Broadcom". Ini berarti bahwa Anda mengacu pada pin dengan nomor "saluran SOC Broadcom", ini adalah nomor setelah "GPIO" (misalnya GPIO01, GPIO02…). Ini bukan Nomor Papan.
GPIO.setmode (GPIO.BCM)
Selanjutnya kita akan mengaturnya pada alamat pipa. Alamat ini penting untuk berkomunikasi dengan penerima Arduino. Alamatnya akan ada dalam kode hex.
pipa =,]
Mulailah radio menggunakan GPIO08 sebagai CE dan GPIO25 sebagai pin CSN.
radio.begin (0, 25)
Tetapkan ukuran muatan sebagai 32 bit, alamat saluran sebagai 76, kecepatan data 1 mbps dan tingkat daya minimum.
radio.setPayloadSize (32) radio.setChannel (0x76) radio.setDataRate (NRF24.BR_1MBPS) radio.setPALevel (NRF24.PA_MIN)
Buka pipa untuk mulai menulis data dan mencetak detail dasar nRF24l01.
radio.openWritingPipe (pipa) radio.printDetails ()
Siapkan pesan dalam bentuk string. Pesan ini akan dikirim ke Arduino UNO.
sendMessage = list ("Hi..Arduino UNO") sementara len (sendMessage) <32: sendMessage.append (0)
Mulailah menulis ke radio dan terus menulis string lengkap sampai radio tersedia. Bersamaan dengan itu, catat waktu dan cetak pernyataan debug pengiriman pesan.
sementara True: start = time.time () radio.write (sendMessage) print ("Mengirim pesan: {}". format (sendMessage)) kirim radio.startListening ()
Jika string selesai dan pipa ditutup kemudian cetak pesan debug waktu habis.
while not radio.available (0): time.sleep (1/100) jika time.time () - start> 2: print ("Timed out.") # pesan kesalahan cetak jika radio terputus atau tidak berfungsi lagi putus
Berhenti mendengarkan radio dan tutup komunikasi dan mulai kembali komunikasi setelah 3 detik untuk mengirim pesan lain.
radio.stopListening () # close radio time.sleep (3) # beri jeda 3 detik
Program Raspberry mudah dipahami jika Anda mengetahui dasar-dasar python. Program Python lengkap diberikan di akhir tutorial.
Menjalankan Program Python di Raspberry Pi:
Menjalankan program ini sangat mudah setelah mengikuti langkah-langkah di bawah ini:
- Simpan Program Python dan file Perpustakaan di folder yang sama.
- Nama file program saya untuk Sender adalah nrfsend.py dan juga setiap file ada di folder yang sama
- Buka Terminal Perintah Raspberry Pi. Dan cari file program python dengan menggunakan perintah "cd".
- Kemudian buka folder dan tulis perintah " sudo python3 your_program.py " dan tekan enter. Anda akan dapat melihat detail dasar nRf24 dan radio akan mulai mengirim pesan setelah setiap 3 detik. Debug pesan akan ditampilkan setelah pengiriman selesai dengan semua karakter terkirim.
Sekarang kita akan melihat program yang sama dengan receiver di Arduino UNO.
Pemrograman Arduino UNO untuk Menerima Pesan menggunakan nRF24l01
Memprogram Arduino UNO mirip dengan pemrograman Raspberry Pi. Kami akan mengikuti metode serupa tetapi dengan bahasa dan langkah pemrograman yang berbeda. Langkah-langkahnya akan mencakup bagian membaca nRF24l01. Perpustakaan untuk nRF24l01 untuk Arduino dapat diunduh dari halaman github. Mulailah dengan memasukkan perpustakaan yang diperlukan. Kami menggunakan LCD 16x2 menggunakan I2C Shield jadi termasuk pustaka Wire.h dan juga nRF24l01 dihubungkan dengan SPI jadi sertakan pustaka SPI.
#include
Sertakan perpustakaan RF24 dan LCD untuk mengakses fungsi RF24 dan LCD.
#include
Alamat LCD untuk I2C adalah 27 dan ini adalah LCD 16x2 jadi tuliskan ini ke dalam fungsinya.
LCD LiquidCrystal_I2C (0x27, 16, 2);
RF24 dihubungkan dengan pin SPI standar bersama dengan CE di pin 9 dan CSN di pin 10.
Radio RF24 (9, 10);
Mulai radio, setel level daya dan set saluran ke 76. Juga setel alamat pipa sama dengan Raspberry Pi dan buka pipa untuk membaca.
radio.begin (); radio.setPALevel (RF24_PA_MAX); radio.setChannel (0x76); const uint64_t pipa = 0xE0E0F1F1E0LL; radio.openReadingPipe (1, pipa);
Mulailah komunikasi I2C dan inisialisasi layar LCD.
Wire.begin (); lcd.begin (); lcd.home (); lcd.print ("Siap Menerima");
Mulailah mendengarkan radio untuk pesan masuk dan atur panjang pesan sebagai 32 byte.
radio.startListening (); char acceptMessage = {0}
Jika radio terpasang, mulailah membaca pesan tersebut dan simpan. Cetak pesan ke monitor serial dan juga cetak ke layar sampai pesan berikutnya tiba. Hentikan radio untuk mendengarkan dan coba lagi setelah beberapa saat. Ini dia 10 mikro detik.
if (radio.available ()) { radio.read (acceptMessage, sizeof (acceptMessage)); Serial.println (acceptMessage); Serial.println ("Mematikan radio."); radio.stopListening (); String stringMessage (acceptMessage); lcd.clear (); penundaan (1000); lcd.print (stringMessage); }
Unggah kode lengkap yang diberikan di bagian akhir ke Arduino UNO dan tunggu pesannya diterima.
Ini menyelesaikan tutorial lengkap tentang mengirim pesan menggunakan Raspberry Pi & nRf24l01 dan menerimanya menggunakan Arduino UNO & nRF24l01. Pesan akan dicetak ke LCD 16x2. Alamat pipa sangat penting di Arduino UNO dan Raspberry Pi. Jika Anda menghadapi kesulitan saat melakukan proyek ini, silakan beri komentar di bawah ini atau hubungi forum untuk diskusi lebih lanjut.
Lihat juga video demonstrasi di bawah ini.