NRF24L01

NRF24L01 Module โมดูลสื่อสารไร้สาย 


โมดูล NRF24L01 เป็นโมดูลนสือสารไร้สาย ที่สามารถเขียนโปรแกรมให้เป็นได้ ทั้งตัวรับและตัวส่ง สามารถใช้กับ Arduino ได้หลายๆ ตัวพร้อมกัน มีความเร็ว 2.4G จึงสื่อสารได้รวดเร็วและไม่ต้องการเสาอากาศที่ยาว มีขนาดเล็กสะดวกในการต่อใช้งาน สามารถประยุกต์ใช้งานได้หลายอย่างเช่น ใช้เป็นอุปกรณ์ส่งข้อมูลของเซนเซอร์อัตโนมัติสำหรับควบคุม อุณหภูมิ ความชื้น การแจ้งเตือนต่าง ๆ ควบคุมและติดตามหุ่นยนต์ Robot Control and Monitoring ได้ในระยะ 15-500 เมตร โมดูลนี้ใช้ชิฟ  nRF24L01+ m ทำงานด้วยความเร็วสูง High-speed SPI interface ใช้พลังงานต่ำ รองรับการทำงานร่วมกับ Arduino และมีเสาอากาศมาให้ในตัว 

ข้อควรระวัง โมดูล NRF24L01 นี้ใช้ไฟเลี้ยง 3.3V ดังนั้นห้ามต่อกับไฟ 5V เด็ดขาด  !!!

ตัวอย่างการใช้งาน  NRF24L01 Module โมดูลสื่อสารไร้สาย NRF24L01 ความถี่ 2.4G ร่วมกับ Arduino
1. ดาวน์โหลดไลบารีโมดูล NRF24L01
2. หลังจากดาวน์โหลดและติดตั้งโมดูล NRF24L01 เรียบร้อยแล้ว ก็มาถึงตัวอย่างโคดและการต่อใช้งาน

3. วิธีต่อขาโมดูล nRF24L01
ต่อขาโมดูล nRF24L01 กับ Arduino uno ดังนี้
Vcc-3.3V
Gnd - Gnd
CSN - 7
CE - 8
MOSI - 11
SCK - 13
MISO - 12

ต่อขาโมดูล nRF24L01 กับ Arduino Mega ดังนี้
Vcc-3.3V
Gnd - Gnd
CSN - 7
CE - 8
MOSI - 51
SCK - 52
MISO - 50

ตัวอย่างนี้จะส่งข้อความคำว่า "Welcome ArduinoAll" ไปยังส่วนของตัวรับ

4. การทำงานจะมี 2 ส่วนคือ ภาคส่ง กับภาครับ
Code NRF24L01 ส่วนของการทำงานภาคส่ง

#include <SPI.h>
#include <nRF24L01p.h>

nRF24L01p transmitter(7,8);//CSN,CE

void setup(){
delay(150);
Serial.begin(115200);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
transmitter.channel(90); // ตั้งช่องความถี่ให้ตรงกัน
transmitter.TXaddress("ALL"); // ตั้งชื่อตำแหน่งให้ตรงกัน ชื่อตั้งได้สูงสุด 5 ตัวอักษร
transmitter.init();
}

String message;

void loop(){
 transmitter.txPL("Welcome ArduinoAll"); // ค่าที่ต้องการส่ง
transmitter.send(FAST); // สั่งให้ส่งออกไป
delay(1000);
}

Code NRF24L01 ส่วนของการทำงานภาครับ

#include <SPI.h>
#include <nRF24L01p.h>

nRF24L01p receiver(7,8);//CSN,CE

void setup(){
delay(150);
Serial.begin(115200);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
receiver.channel(90);  // ตั้งช่องความถี่ให้ตรงกัน
receiver.RXaddress("ALL");  // ตั้งชื่อตำแห่นงให้ตรงกัน ชื่อตั้งได้สูงสุด 5 ตัวอักษร
receiver.init();
}

String message;

void loop(){
if(receiver.available()){
 receiver.read(); // สั่งให้เริ่มอ่าน
receiver.rxPL(message); // สั่งใหอ่านเก็บไว้ที่ตัวแปร
Serial.println(message);
message="";
}
}
 
Code คำสั่งรับ/ส่ง ไม่ยากเลย นอกจากนี้ในไลบารียังมีตัวอย่างการใช้งานอีกหลายแบบให้ได้ลองเล่นกัน

สำหรับกรณีที่ต้องการต้นทุนต่ำ สามารถใช้เพียงแค่ atmega8 + nRF24L01+ ถ่านกระดุม ก็สามารถใช้งานเป็นตัวรับส่งสัญญาณ RF ความถี่ 2.4 GHz ได้แล้ว

- ขอบคุณข้อมูล www.arduinoall.com
- ขอบคุณข้อมูลไลบารีดี ๆ สำหรับ NRF24L01 จากคุณ Keem Coe
ไปที่ลิ้งนี้เลยครับ tmrh20.github.io มีพร้อมให้ download และมี document ให้ด้วย

ความคิดเห็น

บทความที่ได้รับความนิยม