码迷,mamicode.com
首页 > 其他好文 > 详细

大创 backup

时间:2018-05-22 22:09:23      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:spin   timeout   ack   send   技术分享   case   got   ready   drive   

发送端

  • 仿真图:
    技术分享图片
    *仿真图中使用使用TMP传感器(LM34)代替实际使用的DHT11传感器。
  • 连接方式:
    • DHT11的正极(VCC)与5V电源接口连接
    • DHT11的负极(GND)与GND连接
    • DHT11的输出口(VOUT)与D2口连接
    • NRF24L01接法:
      技术分享图片
    • VCC接3.3V
    • GND接GND
    • CD接D8
    • CSN接D10
    • MOSI接D11
    • MISO接D12
    • SCK接D13
    • IRQ不接
  • sender.ino:

    /*DHT11*/ 
    #include <dht11.h>
    #define DHT11PIN 2
    /*NRF24L01*/ 
    #include <SPI.h>  
    #include <Mirf.h>  
    #include <nRF24L01.h>  
    #include <MirfHardwareSpiDriver.h>  
    dht11 DHT11;
    int chk;
    float temperature,humidity;
    void setup(){
    Serial.begin(9600);
    /*初始化发送端*/ 
    Mirf.cePin=8;
    Mirf.csPin=10;
    Mirf.spi = &MirfHardwareSpi;  
    Mirf.init();  
    Mirf.setRADDR((byte *)"ABCDE"); //设置自己的地址(发送端地址),使用5个字符  
    Mirf.payload = sizeof(value);  
    Mirf.channel = 90;              //设置所用信道  
    Mirf.config();      
    }
    void getdata()//获取传感器数据函数 
    {
    chk = DHT11.read(DHT11PIN);
    switch (chk)
    {
    case DHTLIB_OK: 
            Serial.println("OK"); 
            break;
    case DHTLIB_ERROR_CHECKSUM: 
            Serial.println("Checksum error"); 
            break;
    case DHTLIB_ERROR_TIMEOUT: 
            Serial.println("Time out error"); 
            break;
    default: 
            Serial.println("Unknown error"); 
            break;
    }
    humidity=(float)DHT11.humidity;
    temperature=(float)DHT11.temperature;
    }
    void loop(){
    getdata();
    Mirf.setTADDR((byte *)"FGHIJ");           //设置接收端地址  
    Mirf.send((float *)&humidity);               
    while(Mirf.isSending()) delay(1);         //直到发送成功,退出循环  
    Mirf.send((float *)&temperature);               
    while(Mirf.isSending()) delay(1); 
    delay(1000);
    }

接收端:

接法相同。

  • 接收端程序

    #include <SPI.h>
    #include <Mirf.h>
    #include <nRF24L01.h>
    #include <MirfHardwareSpiDriver.h>
    float value;
    void setup() {
    Serial.begin(9600);
    Mirf.spi = &MirfHardwareSpi;
    Mirf.init();
    
    Mirf.setRADDR((byte *)"FGHIJ"); //设置自己的地址(接收端地址),使用5个字符
    Mirf.payload = sizeof(value);
    Mirf.channel = 90;   //设置使用的信道
    Mirf.config();
    Serial.println("Listening...");  //开始监听接收到的数据
    }
    void loop() {
    if(Mirf.dataReady()) {  //当接收到程序,便从串口输出接收到的数据
        Mirf.getData((float *) &value);
        Serial.print("Got data: ");
        Serial.println(value);
    }
    }
  • 参考资料:

大创 backup

标签:spin   timeout   ack   send   技术分享   case   got   ready   drive   

原文地址:https://www.cnblogs.com/shy-/p/9073839.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!