NRF24L01 请注意 该板只接受1.6~3.3v供电否则会烧毁芯片
发送端代码通过串口发送数据到 arduino
#include "SPI.h" //24L01库文件 #include "Mirf.h" #include "nRF24L01.h" #include "MirfHardwareSpiDriver.h" char words; void setup(){ Serial.begin(9600); Mirf.spi = &MirfHardwareSpi; //加载24L01 SPI Mirf.init(); //开始 Mirf.setTADDR((byte *)"serv1");//发送到"接收地址" Mirf.payload = sizeof(char); Mirf.config(); } void loop(){ while(Serial.available()>0) {words=Serial.read(); Mirf.send((byte *)&words); while(Mirf.isSending()) { } } }
下面的是接收端代码:
#include "SPI.h" //24L01库文件 #include "Mirf.h" #include "nRF24L01.h" #include "MirfHardwareSpiDriver.h" char data; char words'; void setup(){ Serial.begin(9600); Mirf.spi = &MirfHardwareSpi; //加载24L01 SPI Mirf.init(); Mirf.setRADDR((byte *)"serv1"); //接收地址" " Mirf.payload = sizeof(char); //数据类型(整数) Mirf.config(); } void loop(){ if(Mirf.dataReady()) { //如果接收到数据则执行 Mirf.getData((byte *)&data); //接收数据 words=data; Mirf.rxFifoEmpty(); //清理24L01援存?? Serial.print(words); //显示X向 1至1024 }}
有关的线路连接
根据库文件的要求 arduino和无线模块的连线需要改动成如下:
GND--------- GND,
VCC--------- 3.3V,
CE---------8
CSN-------7
SCK-------13
MOSI------11
MISO------12
IRQ不需要用到
相关库文件请到最下发下载
相对来说 443M的模块使用简单 价格上其实是没有什么优势的
发射机 :
Vcc >>>>5V
ATAD>>>D12"" .
Gnd >>> Gnd
接收机:
Vcc>>>>5V
Data>>>D12
Gnd>>>Gnd
相关库文件 VirtualWire_Library
百度盘下载地址 http://pan.baidu.com/s/1i39i33J
发射
#include <VirtualWire.h> //Grove - 315(433) RF link kit Demo v1.0 //by :http://www.seeedstudio.com/ //connect the sent module to D2 to use #include <VirtualWire.h> int RF_TX_PIN = 2; void setup() { vw_set_tx_pin(RF_TX_PIN); // Setup transmit pin vw_setup(2000); // Transmission speed in bits per second. } void loop() { const char *msg = "hello"; vw_send((uint8_t *)msg, strlen(msg)); // 循环发射hello信息 400ms. delay(400); }
接收
//Grove - 315(433) RF link kit Demo v1.0 //by :http://www.seeedstudio.com/ //connect the receive module to D2 to use .. #include <VirtualWire.h> int RF_RX_PIN = 2; void setup() { Serial.begin(9600); Serial.println("setup"); vw_set_rx_pin(RF_RX_PIN); // Setup receive pin. vw_setup(2000); // Transmission speed in bits per second. vw_rx_start(); // Start the PLL receiver. } void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if(vw_get_message(buf, &buflen)) // non-blocking I/O { int i; // Message with a good checksum received, dump HEX Serial.print("Got: "); for(i = 0; i < buflen; ++i) { Serial.print(buf[i], HEX); Serial.print(" "); //Serial.print(buf[i]); } Serial.println(""); } }