友情提示:680元/半年,儿童学编程,就上码丁实验室。
在社区发过一个OBLOQ-IoT模块+Micro:bit玩物联网浇花,当时用的是一个IOT_TOPIC来实现数据的接收和发送,虽然实现了物联网浇花的功能,但总感觉有点缺憾。
这个贴子进行的是BXY+Obloq-IoT物联网双向数据传输测试。 如果你想对bit+obloq IoT有更多了解,建议look下大圣老师和吕老师进行的一系列尝试,这将有助于理解这个帖子的内容:
IOT平台工作间如下。 App平台如下。 如果你也要用APP显示平台数据并控制设备,可以参考使用手机app与Easy Iot物联网平台进行通讯和用App控制Micro:bit物联网小风扇。 工作了半天IOT平台的数据。
特别提醒:现在IOT功能DF做了点小限制,从服务器接收数据时没有时间间隔的,但是发送数据的话,最快5秒钟发送一条。
所以不要发送太快哦,太快就会接收不到并且有假死的症状了。这时就只能断电后重新给扩展板供电再次接入wifi了。后面DF把服务器带宽这些提升好,还会把这部分功能再升级一下。同时为了保护板子,不建议用bit板上的重启键哦。
上面测试用的程序如下,你可以有用到可以参考。 [Python] 纯文本查看 复制代码
from microbit import * import Obloq SERVER = "iot.dfrobot.com.cn" PORT = "1883" SSID = "*********" PASSWORD = "***********" IOT_ID = "***********" IOT_PWD = "********" IOT_TOPIC1 = "*********" IOT_TOPIC2 = "*********" IOT_TOPIC3 = "*********" uart.init(baudrate=9600, bits=8, parity=None, stop=1, tx=pin2, rx=pin1) def ConnectWifi(): while Obloq.connectWifi(SSID,PASSWORD,10000) != True: display.show(".") display.scroll(Obloq.ifconfig()) #设置MQTT的回调函数 def event(e,param): if e == "MqttConneted":#MQTT连接成功 display.scroll("OK") if e == IOT_TOPIC2:#收到了订阅的topic2的信息 display.scroll(param)#显示订阅topic2信息 if param == "1": pin12.write_digital(1) if param == "0": pin12.write_digital(0) if e == IOT_TOPIC3:#收到了订阅的topic3的信息 display.scroll(param)#显示订阅topic3信息 if param == "1": pin8.write_digital(1) if param == "0": pin8.write_digital(0) if e == "SubOk":#订阅成功 display.scroll("OK") ConnectWifi() #初始化MQTT的配置 Obloq.mqttSet(event,SERVER,PORT) #连接MQTT Obloq.connectMqtt(IOT_ID,IOT_PWD) Obloq.subTopic(IOT_TOPIC2)#订阅Topoic2 Obloq.subTopic(IOT_TOPIC3)#订阅Topoic3 while True: val = pin0.read_analog() sleep(10000) #向服务器的IOT_TOPIC1发送 Obloq.pubLish(IOT_TOPIC1,str(val)) 如果不太明白程序意思,回到上两个帖子再看下呗。 物联网浇花测试例程:p0 土壤温度传感器 对应IOT_TOPIC1,采集数据时间为10秒一次,建议使用时增长一些。p12 舵机,对应IOT_TOPIC2,发送1、0控制舵机动作,合适度数请根据实际情况调整。 [Python] 纯文本查看 复制代码
from microbit import * import Obloq import Servo sv=Servo(pin12) SERVER= "iot.dfrobot.com.cn" PORT= "1883" SSID= "woaixcl" PASSWORD = "xcl13703403503" IOT_ID = "H1-YrdHhvf" IOT_PWD = "SyMYSdB3wz" IOT_TOPIC1 = "SkneZ4pRM" IOT_TOPIC2 = "r1NWwN23z" uart.init(baudrate=9600, bits=8, parity=None, stop=1, tx=pin2, rx=pin1) def ConnectWifi(): while Obloq.connectWifi(SSID,PASSWORD,10000) != True: display.show(".") display.scroll(Obloq.ifconfig()) #设置MQTT的回调函数 def event(e,param): if e == "MqttConneted":#MQTT连接成功 display.scroll("OK") if e == IOT_TOPIC2:#收到了订阅的topic2的信息 display.scroll(param)#显示订阅topic2信息 if param == "1": sv.angle(170) if param == "0": sv.angle(90) if e == "SubOk":#订阅成功 display.scroll("OK") ConnectWifi() #初始化MQTT的配置 Obloq.mqttSet(event,SERVER,PORT) #连接MQTT Obloq.connectMqtt(IOT_ID,IOT_PWD) Obloq.subTopic(IOT_TOPIC2)#订阅Topoic2 while True: val = pin0.read_analog() sleep(10000) #向服务器的IOT_TOPIC1发送 Obloq.pubLish(IOT_TOPIC1,str(val)) 注意1、改成自己的信息。 注意2、修改合适的舵机度数(不建议用两个0,180极值,例如30-150度之间,这样减少舵机抖动。) 如果舵机不能运行,请看是不是少了第4行。 |