nRF24L01可以将多个Arduino、树莓派以及其他的单片机通过2.4GHz无线连接起来,一般都是成对使用(一个作为客户端,一个作为服务端)。例如:负责采集环境(温度、湿度、噪音等)数据的Arduino向树莓派发送数据。
[caption id="attachment_1205" align="alignnone" width="350"]
nRF24L01[/caption] [caption id="attachment_1269" align="alignnone" width="309"]
nRF24L01背面图[/caption]
[codesyntax lang="cpp" lines="normal"]
/*
VCC 3.3V
GND GND
CSN 7
CE 8
MOSI 11
SCK 13
IRQ
MISO 12
from arduino.surenpi.com
created 2015/3/29
*/
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
void setup(){
Serial.begin(9600);
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"serv1");
Mirf.setTADDR((byte *)"clie1");
Mirf.payload = sizeof(char);
Mirf.config();
Serial.println("Listening...");
}
void loop(){
char data;
char words;
if(!Mirf.isSending() && Mirf.dataReady())
{
Mirf.getData((byte *)&data);
words = data;
Mirf.rxFifoEmpty();
Serial.println(words);
}
}
[/codesyntax]
[codesyntax lang="cpp" lines="normal"]
/*
VCC 3.3V
GND GND
CSN 7
CE 8
MOSI 11
SCK 13
IRQ
MISO 12
from arduino.surenpi.com
created 2015/3/29
*/
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
void setup()
{
Serial.begin(9600);
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setTADDR((byte *)"serv1");
Mirf.setRADDR((byte *)"clie1");
Mirf.payload = sizeof(char);
Mirf.config();
Serial.println("Beginning ...");
}
void loop()
{
while(Serial.available() > 0)
{
char words = Serial.read();
Serial.println(words);
Mirf.send((byte*) &words);
while(Mirf.isSending()){}
Serial.println("send over");
}
}
[/codesyntax]
如果发现自己没有库文件的,可以留言跟我索要。 在使用了大概两个小时左右,有发烫的感觉。看来这个芯片不能长期处于工作状态,如果有办法解决的还请您能不吝赐教,留下您的看法,谢谢。
http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01
nRF24L01的具体介绍。