5019| 1
|
[项目] 教你一招分分钟让Micro:bit板通讯距离翻倍(1) |
本帖最后由 Luke 于 2019-11-26 15:49 编辑 教你一招分分钟让micro:bit板通讯距离翻倍(1) 项目目的: 参照中继器的工作原理,远距离传递无线数据。 项目说明: 随着物联网模块的推出,创客们纷纷投身物联网事业,运用互联网完成了许多令人兴奋的项目。其中科学探究还是热度最高的,创客们运用手中的Micro:bit板结合琳琅满目的传感器,收集环境数据、动态参数等,经由物联网模块上传到云端,通过手机APP或者网页获取数据集并制表,这是一个非常标准的物联网科学探究项目流程,有许多创客前辈在论坛中发布过相关帖子写的非常详细,我这里就不加赘述,今天我想说的是在学习物联网途中出现的特殊脑洞,并把它实现的心路历程。 首先,一言不合就上图。这是在Mind+平台上连接Micro;bit板,在上传模式下完成的一个极简版物联网科学探究实验程序。每十秒向云端上传当前环境温度的数据,让出门在外的我也能实时监控家里的温度。 另外为了保证网络通畅,我会把它放在卧室路由器附近,看上去仿佛没啥问题,但如果我想测试客厅的温度呢,如果我想测试室外的温度呢,甚至我想做一个能够随身携带的温度检测仪去楼下(我家12楼)将数据传到网络上,我该怎么做。 中继器这三个字瞬间进入了我的大脑,中继器简而言之就是个信号放大器,通过对数据信号的重新发送或者转发,来扩大网络传输的距离,重新生成信号,即完成了对原信号进行放大和整形。这是我在购物平台搜索无线网络中继器的结果,可选品牌丰富价格低廉。 之前搭建家庭网络的时候,我在信号较弱的位置装了两个无线网络中继器,完成了高速网络的全覆盖。这种方式能否移植到Micro:bit板之间的通讯呢,直觉告诉我是可以的,随即便开始编写程序来验证。 首先我打算用三块板来完成这个项目的验证,一号板负责收集数据(后称数据板),通过无线通讯也就是Radio来向二号板(后称中继板)发送温度数据,经由二号板中继转发至三号板(后称上传板),由它连接网络将数据发送到云端。 然后我就着手开始编写程序,其实刚开始做验证的时候程序部分并不复杂,数据板V1.0的程序是这个样子的。 在程序中打开了Micro:bit板的无线通讯,并设置了一个频道,此外还建立了一个数字变量“temp”,因为在程序测试阶段会让串口输出温度值来监控无线发送的数据,所以需要有一个数字变量temp在每一次循环的过程中去储存传感器反馈的温度值,保证串口输出的数据就是板子通过无线发送的数据。 在中继板V1.0上的程序如图所示,非常简单,功能就是在4号无线频道里获取数据并转发数据,虽然数据板发送的temp是数字,但是通过无线通讯收到的无线数据已经是字符串了,那在中继板这里也没有必要再把字符串转换成数字,直接当字符串去转发就好,因此此处的新建变量“中继数据”为字符型变量,这里设置一个变量也是方便监控数据用的。 上传板V1.0的程序也同样不复杂,在主程序里对Obloq物联网模块进行设置连接线要按照设置的来接。这里需要注意因为我用的是BOSON的Obloq模块,模块上标了RX和TX,但和程序里的RX、TX不同,正确的接法应该是模块上的RX接拓展板上的TX也就是P2,模块上的TX接拓展板上的RX。 还有,我新建了一个数字型变量“temp”,将接收的字符型无线数据转化成整数,再将整数发送至物联网云端,这里本来是担心字符型的数据发送上去无法生成折线图,但之后经过测试,哪怕是字符型的“123”,也能在IoT的网页上被认作数字显示在折线图上。这样第一版的三个程序就写好了上传之后,打开上传板的串口监视器,看到的是这样的画面。 这样的情况我早就预料到了,三块板靠得太近,意味着同样的数据被数据板和中继板各自发送了一遍,导致上传板接收到了两条相同的消息,而当我将三块板分散开做测试的时候,又发现他们彼此的间距很难去把控。其实这是在验证阶段我懒得去解决的问题,解决方案也已经在脑子里浮现,欲知后事如何看后续第二帖。 待解决问题: 当三块板距离不够理想的时候,会导致数据混乱。 样例程序: Microbit中继器 V1.0.zip 快速链接: 教你一招分分钟让Micro:bit板通讯距离翻倍(1) 教你一招分分钟让Micro:bit板通讯距离翻倍(2) 教你一招分分钟让Micro:bit板通讯距离翻倍(3) |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed