发送端

  • 仿真图:



    *仿真图中使用使用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:
  1. /*DHT11*/
  2. #include <dht11.h>
  3. #define DHT11PIN 2
  4. /*NRF24L01*/
  5. #include <SPI.h>
  6. #include <Mirf.h>
  7. #include <nRF24L01.h>
  8. #include <MirfHardwareSpiDriver.h>
  9. dht11 DHT11;
  10. int chk;
  11. float temperature,humidity;
  12. void setup(){
  13. Serial.begin(9600);
  14. /*初始化发送端*/
  15. Mirf.cePin=8;
  16. Mirf.csPin=10;
  17. Mirf.spi = &MirfHardwareSpi;
  18. Mirf.init();
  19. Mirf.setRADDR((byte *)"ABCDE"); //设置自己的地址(发送端地址),使用5个字符
  20. Mirf.payload = sizeof(value);
  21. Mirf.channel = 90; //设置所用信道
  22. Mirf.config();
  23. }
  24. void getdata()//获取传感器数据函数
  25. {
  26. chk = DHT11.read(DHT11PIN);
  27. switch (chk)
  28. {
  29. case DHTLIB_OK:
  30. Serial.println("OK");
  31. break;
  32. case DHTLIB_ERROR_CHECKSUM:
  33. Serial.println("Checksum error");
  34. break;
  35. case DHTLIB_ERROR_TIMEOUT:
  36. Serial.println("Time out error");
  37. break;
  38. default:
  39. Serial.println("Unknown error");
  40. break;
  41. }
  42. humidity=(float)DHT11.humidity;
  43. temperature=(float)DHT11.temperature;
  44. }
  45. void loop(){
  46. getdata();
  47. Mirf.setTADDR((byte *)"FGHIJ"); //设置接收端地址
  48. Mirf.send((float *)&humidity);
  49. while(Mirf.isSending()) delay(1); //直到发送成功,退出循环
  50. Mirf.send((float *)&temperature);
  51. while(Mirf.isSending()) delay(1);
  52. delay(1000);
  53. }

接收端:

接法相同。

  • 接收端程序
  1. #include <SPI.h>
  2. #include <Mirf.h>
  3. #include <nRF24L01.h>
  4. #include <MirfHardwareSpiDriver.h>
  5. float value;
  6. void setup() {
  7. Serial.begin(9600);
  8. Mirf.spi = &MirfHardwareSpi;
  9. Mirf.init();
  10. Mirf.setRADDR((byte *)"FGHIJ"); //设置自己的地址(接收端地址),使用5个字符
  11. Mirf.payload = sizeof(value);
  12. Mirf.channel = 90; //设置使用的信道
  13. Mirf.config();
  14. Serial.println("Listening..."); //开始监听接收到的数据
  15. }
  16. void loop() {
  17. if(Mirf.dataReady()) { //当接收到程序,便从串口输出接收到的数据
  18. Mirf.getData((float *) &value);
  19. Serial.print("Got data: ");
  20. Serial.println(value);
  21. }
  22. }

基于 arduino 的低功耗无线传感结点设计的更多相关文章

  1. CC1150 针对低功耗无线应用设计的高度集成多通道射频发送器

    Low Power Sub-1 GHz RF Transmitter 单片低成本低能耗 RF 发送芯片 应用 极低功率 UHF 无线发送器 315/433/868 和 915MHz ISM/SRD 波 ...

  2. 基于arduino的红外传感系统

    一.作品背景 在这个科技飞速发展的时代,物联网已经成为了我们身边必不可少的技术模块,我这次课程设计做的是一个基于arduino+树莓派+OneNet的红外报警系统,它主要通过识别人或者动物的运动来判断 ...

  3. 无线传感网络协议——Smart Mesh IP

    前言: SmartMesh IP 专为实现 IP 兼容性而设计,并基于 6LoWPAN 和 802.15.4e 标准.SmartMesh IP 产品线实现了网络适应性.可靠性和可扩展性水平,并拥有高级 ...

  4. 基于ESP32的智能家居管理系统的设计与实现

    基于ESP32的智能家居管理系统的设计与实现 ESP32的智能家居管理系统访问链接: https://www.cnblogs.com/easyidea/p/13101165.html 一.需求分析 1 ...

  5. 毕业设计——基于ZigBee的智能窗户控制系统的设计与实现

    题目:基于物联网的智能窗户控制系统的设计与实现 应用场景:突降大雨,家里没有关窗而进水:家中燃气泄漏,不能及时通风,威胁人身安全,存在火灾的隐患:家中窗户没关,让坏人有机可乘.长时间呆在人多.封闭的空 ...

  6. 私有无线传感网 PWSN HLINK

    私有无线传感网,我把其叫做 Personal Wireless Sensor Network.此种网络最另众人所知的就是ZIGBEE了.由于在用户不同的使用场景中,对传感网络有许多不同的要求,例如:通 ...

  7. 基于 Angularjs&Node.js 云编辑器架构设计及开发实践

    基于 Angularjs&Node.js 云编辑器架构设计及开发实践 一.产品背景 二.总体架构 1. 前端架构 a.前端层次 b.核心基础模块设计 c.业务模块设计 2. Node.js端设 ...

  8. 基于特定领域国土GIS应用框架设计及应用

              基于特定领域国土GIS应用框架 设计及应用              何仕国 2012年8月16日   摘要: 本文首先讲述了什么是框架和特定领域框架,以及与国土GIS 这个特定领 ...

  9. 【科研论文】基于文件解析的飞行器模拟系统软件设计(应用W5300)

    摘要: 飞行器模拟系统是复杂飞行器研制和使用过程中的重要设备,它可以用来模拟真实飞行器的输入输出接口,产生与真实系统一致的模拟数据,从而有效避免因使用真实飞行器带来的高风险,极大提高地面测发控系统的研 ...

随机推荐

  1. juqery 点击分页显示,指定一页显示多少个,首次加载显示多少个

    源代码html: //源代码:html <div class="jq22"> <div class="hidden"> <li&g ...

  2. 文件内容统计:对任意给定的.txt文件进行内容的字符数、行数、单词数进行统计

    项目源码地址:https://gitee.com/xjtsh/projects 功能实现: wc.exe -c file.c     //返回文件 file.c 的字符数 wc.exe -w file ...

  3. pytorch-MNIST数据模型测试

    用pytorch搭建一个DNN网络,主要目的是熟悉pytorch的使用 """ test Function """ import torch ...

  4. Eclipse 02: 安装spring tool suite插件

    在实际项目开发时,如果我们创建了一个spring文件,其实也就是个xml文件,如果没有集成spring的开发工具,创建的就是一个单纯的xml文件.安装spring插件以后创建spring配置文件会方便 ...

  5. idea实用插件

    代码规范检测插件: Alibaba Java Coding GuideLines使用@data插件lombok数据库mapper插件mybatisX前端运行vue的插件,装起了后在Terminal上运 ...

  6. mongodb 3.2 分片 + 副本集

    从图中可以看到有四个组件:mongos.config server.shard.replica set. mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加 ...

  7. UIScrollView上面的UIButton点击始终在中间

    -(void)btnClick:(IdleTopChoseBtn *)btn{ btn.selected = YES; _choseBtn.selected = NO; _choseBtn = btn ...

  8. here文档 here doc EOF重定向

    here文档  here doc EOF重定向 http://www.cnblogs.com/xiangzi888/archive/2012/03/24/2415077.html 在shell脚本程序 ...

  9. 去掉Tomcat的管理页面

    一.去掉Tomcat的管理页面 一.方法一:如果要去掉默认该界面,可以重命名tomcat目录下的ROOT,并新建空文件夹命名为ROOT 1.刚打开tomcat,默认访问的是tomcat管理页面,比如X ...

  10. 七、UIViewController导航栏

    概述 上一节我们算是跟UIViewController打了个招呼,同时也表示我们正式介入iOS开发.本节我们将介绍UI界面的一个常用元素:导航栏. iOS为UIViewController提供了内置导 ...