查看“透传点灯实验”的源代码
←
透传点灯实验
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
Microduino-Zigbee透传点灯实验 {| style="width: 800px;" |- | ==目的== 本教程展示了Microduino-Zigbee模块的数据透传。发送端为协调器节点,接收端为路由节点。路由节点的LED灯的亮灭受控于协调器端的开关控制,表征了透传的实现。 ==设备== *'''[[Microduino-Zigbee/zh]]''' *'''[[Microduino-Core/zh]]''' *'''[[Microduino-Core+/zh]]''' *'''[[Microduino-USBTTL/zh]]''' *其他硬件设备 {|class="wikitable" |- |相关硬件||数量||功能 |- |LED灯 ||1个||指示 |- |100欧电阻||1个||LED限流 |- |面包板跳线 ||1盒||电气连接线。 |- |} ==实验说明== *协调器端 Microduino-USBTTL与Microduino-Zigbee与Microduino-Core三个模块直接叠加 **一根导线的一头接GND,另一头甩出。用甩出的一头去触碰D5为灯开指令,触碰D6为灯关指令。 *路由节点 Microduino-USBTTL与Microduino-Zigbee与Microduino-Core三个模块直接叠加 **LED与电阻串接与GND与D13之间,需注意LED极性。 见下图 [[File:ZigbeeBridge.jpg|600px|center|thumb]] ==程序== *协调器端: <source lang="cpp"> //sender coordinator this example #include <SoftwareSerial.h> String myString=""; String IEEEAD=""; #define keyON 5 #define keyOFF 6 SoftwareSerial mySerial(2, 3); // RX, TX void setup() { pinMode(keyON,INPUT_PULLUP); pinMode(keyOFF,INPUT_PULLUP); mySerial.begin(9600); } void loop() { while (mySerial.available() > 0) { myString += char(mySerial.read()); delay(2); } if (myString.length() > 0) { if(myString[0]=='+'&&myString[7]==','&&myString[12]==',') { for(int i=13;i<myString.length();i++) IEEEAD+=myString[i]; myString="+ZBD=" +IEEEAD; while(1) { if(digitalRead(keyON)==0) { delay(50); if(digitalRead(keyON)==0) { mySerial.print(myString); mySerial.println("ON"); delay(300); } } if(digitalRead(keyOFF)==0) { delay(50); if(digitalRead(keyOFF)==0) { mySerial.print(myString); mySerial.println("OFF"); delay(300); } } } } } } </source> *如果协调器端把Microduino-Core换为Microduino-Core+ 程序如下 <source lang="cpp"> //sender coordinator this example String myString=""; String IEEEAD=""; #define keyON 5 #define keyOFF 6 void setup() { pinMode(keyON,INPUT_PULLUP); pinMode(keyOFF,INPUT_PULLUP); Serial1.begin(9600); } void loop() { while (Serial1.available() > 0) { myString += char(Serial1.read()); delay(2); } if (myString.length() > 0) { if(myString[0]=='+'&&myString[7]==','&&myString[12]==',') { for(int i=13;i<myString.length();i++) IEEEAD+=myString[i]; myString="+ZBD=" +IEEEAD; while(1) { if(digitalRead(keyON)==0) { delay(50); if(digitalRead(keyON)==0) { Serial1.print(myString); Serial1.println("ON"); delay(300); } } if(digitalRead(keyOFF)==0) { delay(50); if(digitalRead(keyOFF)==0) { Serial1.print(myString); Serial1.println("OFF"); delay(300); } } } } } } </source> *路由节点端 <source lang="cpp"> // receiver router this example #include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // RX, TX String myString=""; void setup() { pinMode(13,OUTPUT); mySerial.begin(9600); } void loop() { while (mySerial.available() > 0) { myString += char(mySerial.read()); delay(2); } if (myString.length() > 0) { if(myString=="ON") digitalWrite(13,HIGH); if(myString=="OFF") digitalWrite(13,LOW); } myString=""; } </source> ==调试== *叠加Microduino-USBTTL与Microduino-Zigbee与Microduino-Core,烧写协调器端发送程序。 *叠加Microduino-USBTTL与Microduino-Zigbee与Microduino-Core,烧写路由节点接收程序。 *首先给协调器上电,大约5秒钟后给路由节点上电。协调器端导线触碰D5,可观察到路由节点的LED点亮,触碰D6,可观察到灯熄灭。 *如果不能实现灯的亮灭控制,请检查Microduino-Zigbee模块是否已通过AT指令配置合理(节点类型,波特率等)。AT指令设置可在不改动硬件的情况下通过参考[[https://www.microduino.cc/wiki/index.php?title=%E5%A6%82%E4%BD%95%E4%B8%8E%E5%85%B6%E5%AE%83Microduino%E6%A8%A1%E5%9D%97%E8%BF%9E%E6%8E%A5 Microduino- Zigbee 与其它Microduino模块的连接 ]]完成。 *协调器与路由节点离的近时,不加天线也可以完成该实验。 |}
返回至
透传点灯实验
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息