回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

「BXY」micro:bit 高中信息技术教程—可以远程遥控的灯 简单

头像 EVE 2021.08.20 1200 0

一、实践情境
在冬天的晚上,我们有时候会因忘记关灯而不得不重新爬出被窝,这为我们带来了许多烦恼。为此,在这节课上,我们将设计一个物联网灯控系统,能够实现远程开关灯。

project-image

二、实践目标

本实践项目运用micro:bit作为智能终端,结合OBLOQ模块来搭建SIoT物联网平台并与之通信,继而结合彩色灯带实现平台发送消息控制灯的亮灭。
三、知识目标

1. 认识OBLOQ模块、彩色灯带灯;2. 理解OBLOQ模块和彩色灯带的使用和接线方法,能根据连线图进行实物连接;3. 掌握搭建SIoT物联网平台并查看消息记录的方法;4. 掌握以micro:bit为智能终端,通过BXY软件编写代码与SIoT物联网平台进行通信的方法;
四、实践准备

硬件清单:

材料清单

软件使用:BXY编程软件、SIoT软件
Tips:SIoT下载地址:https://mindplus.dfrobot.com.cn/siot
根据自己电脑的系统,对应下载SIoT软件压缩包,例如Windows系统下载win32。

注:SIoT使用方法详见附录1


知识链接 SOIT
简介:SIoT是一个为中小学STEM教育定制的跨平台的开源MQTT服务器程序,S指科学(Science)、简单(Simple)的意思。

project-image

物联网
简介:物联网(Internet of Things,缩写IoT)是互联网的一个延伸,互联网的终端是计算机(PC、服务器),而物联网的终端是硬件设备,无论是家电、工业设备、汽车、监测仪器,所有这些终端都可以互联,可以总结为万物互联。

project-image

MQTT
简介:MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。

project-image

OBLOQ - IoT物联网模块
简介:OBLOQ是一款基于ESP8266设计的串口转WIFI物联网模块,用以接收和发送物联网信息。模块尺寸紧凑,价格低,接口简单,即插即用,适用于3.3V~5V的控制系统。OBLOQ模块是设备连接互联网的中间件。形象点说,可以把OBLOQ模块看成一个“网卡”。设备(包含主控)插上这个“网卡”,在Wifi环境下就能和互联网互通数据了。

project-image

全彩灯带
简介:全彩灯带由7个全彩LED组成。两头PH2.0-3P接口,可任意级联,实现可长可短的灯带。采用柔软的FPCB板为基板,可随意对接,弯曲,裁剪及任意固定在凹凸表面。
该灯带仅需一根信号线即可控制所有LED,每一颗LED都是一个独立的像素点,每个像素点都是由R,G,B三基色颜色组成,可实现256级亮度显示,完成16777216种颜色的全真色彩显示,同时像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还内置信号整形电路,有效保证了像素点光的颜色高度一致。

project-image

五、实践过程

在本项目中,我们将利用OBLOQ模块和全彩灯带,分两步设计一个物联网灯控系统系统,实现智能终端与物联网平台进行通信。
1、发送信息至物联网平台2、接收网络平台的信息并控制灯的亮灭
任务1:发送消息至物联网平台

1、硬件搭建

STEP1:将一块micro:bit开发板插入I/O扩展板,注意正反。
STEP2:按下图通过连接线将OBLOQ模块接入扩展板。

project-image


STEP3:通过USB连接线将micro:bit接到计算机。
STEP4:外接电源使用OBLOQ模块时,需要从扩展板外接电源,否则可能无法联网。
2、软件编写

STEP1:软件设置1、创建与保存项目文件(1)启动BXY编程软件,选择主控类型“micro:bit”。 (2)新建项目,保存并命名为“m6.1”。
STEP2:程序编写

代码
from microbit import *
import Obloq                    #导入obloq模块

SERVER = "192.168.9.49"         #修改为服务器地址
PORT = "1883"                   #端口号:1883
SSID = "DFRobot-guest"          #修改为wifi名称,不要使用中文
PASSWORD = "dfrobot@2017"       #修改为wifi密码
IOT_ID = "SIoT"                #iot_id账号
IOT_PWD = "dfrobot"             #iot_pwd密码
IOT_TOPIC1 = "Light/1"          #修改topic名称,命名方式:项目 ID/设备名,不可缺少符号/

#引脚初始化:总线频率,接线
uart.init(baudrate=9600, bits=8, parity=None, stop=1, tx=pin2, rx=pin1)

#设置MQTT的回调函数,连接成功,这个函数会自动运行
def ConnectWifi():
  while Obloq.connectWifi(SSID,PASSWORD,10000) != True:
    display.show(".")
  display.scroll(Obloq.ifconfig())
def event(e,param):
  if e == "MqttConneted":#MQTT连接成功
    display.scroll("OK")   
  if param == "A":
    display.scroll(str("A"))
    pin16.write_digital(1)
ConnectWifi()            #连接WiFi:调用connectWifi函数
#初始化MQTT的配置
Obloq.mqttConfig(event,SERVER,PORT)

#连接MQTT
Obloq.connectMqtt(IOT_ID,IOT_PWD)
Obloq.subscribe(IOT_TOPIC1)
while True:
  sleep(1000)
  #向服务器的IOT_TOPIC1发送hello
  Obloq.publish(IOT_TOPIC1,"hello")

3、运行调试

STEP1:上传程序并观察
程序运行后,当没有连接wifi的时候,OBLOQ指示灯显示红色。

project-image

正在连接wifi时显示蓝色。

project-image

连接到wifi后,OBLOQ指示灯显示绿色。

project-image

在浏览器上打开SIoT网页端,可以看到设备发送的hello.

project-image

任务2:控制灯的亮灭

在上个任务中,我们已经实现了智能终端通过编程向物联网平台实现消息的发送。而信息的交换是双向的。因此,接下来,我们将通过物联网平台发送消息至智能终端,并控制灯的亮灭。
1、硬件搭建

STEP1:按下图在上述连接的基础上将全彩灯带接入扩展板。

project-image

2、软件编写

STEP1:软件设置1、创建与保存项目文件(1)启动BXY编程软件,选择主控类型“micro:bit”。(2)新建项目,保存并命名为“m6.2”。
STEP2:程序编写

代码
from microbit import *
import Obloq
import neopixel

np = neopixel.NeoPixel(pin13, 7)

SERVER = "192.168.9.49"         #修改为服务器地址
PORT = "1883"                   #端口号:1883
SSID = "DFRobot-guest"          #修改为wifi名称,不要使用中文
PASSWORD = "dfrobot@2017"       #修改为wifi密码
IOT_ID = "siot"                 #iot_id账号
IOT_PWD = "dfrobot"             #iot_pwd密码
IOT_TOPIC1 = "Light/1"          #修改topic名称,命名方式:项目 ID/设备名,不可缺少符号/
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 == IOT_TOPIC1:#收到了订阅的topic的信息
        display.scroll(param)
        if param == "ON":
            for pixel_id in range(0, len(np)):
                red = 0
                green = 0
                blue = 100
                np[pixel_id] = (red, green, blue)
                np.show()
        if param == "OFF":
            np.clear()
      
    if e == "MqttConneted":#MQTT连接成功
        display.scroll("OK")
    if e == "SubOk":#订阅成功      
        display.scroll("OK")      
ConnectWifi()

#初始化MQTT的配置
Obloq.mqttConfig(event,SERVER,PORT)

#连接MQTT
Obloq.connectMqtt(IOT_ID,IOT_PWD)
sleep(300)
Obloq.subscribe(IOT_TOPIC1)#订阅Topoic1
sleep(300)
while True:
    pass

3、运行调试

STEP1:上传程序,并观察效果
在SIoT物联网平台上 发送 “ON” 后,灯带亮起,在SIoT 发送 “OFF”后,灯带熄灭
六、延伸拓展

1、灯带可以亮出各种不同的颜色。尝试编写程序,在SIoT平台上发送不同的数字实现亮不同颜色的灯!
2、尝试添加舵机,安装在家中的开关面板上试一试吧!

project-image



附录
附录1:
扩展阅读SIoT使用教程-服务器搭建
在开始编辑控制程序和组装框架之前,我们需要做一些准备工作。
1、首先我们需要下载SIoT软件:下载地址:https://mindplus.dfrobot.com.cn/SIoT根据自己电脑的系统,对应下载SIoT软件压缩包。SIoT是一个绿色软件,将下载的压缩包解压并打开。

project-image

2、我们运行SIoT,打开软件,会弹出一个窗口,如图。我们只需要在使用SIoT的期间保持这个窗口的开启就可以了。

project-image

3、将电脑连接WIFI(提供WIFI的路由器或手机热点可以不连接互联网,因为使用SIoT实现物联网应用时,只需要使用路由器或手机热点建立一个局域网即可)。
4、获取电脑IP,电脑每次连接WIFI,都会生成一个IP地址,每个IP地址对应的电脑都是唯一的。运行SIoT程序后会在电脑上建立一个SIoT服务器,其他设备要访问这个服务器,需要知道这个SIoT服务器所在电脑的IP地址。
1) 同时按下键盘上“WIN”+“R”,弹出如下运行窗口,输入CMD,点击确定。

project-image
project-image

2) 在弹出的窗口中,输入“ipconfig”,点击键盘“回车”,在小黑框中可以看到IPv4,后面的部分就是电脑的IP地址,如下图IP为192.168.7.199。(每次连接不同的WIFI,电脑的IP地址都可能会发生变化,需要通过上述方法重新获取。)

project-image

5、打开SIoT网页端,打开浏览器,在地址栏输入在上步获取的IP地址,在最后加上“:8080”,如192.168.7.199:8080 。

project-image
project-image

6、按下回车,即进去SIoT网页端了。
7、登录SIoT。账号:SIoT 密码:dfrobot (SIoT网页端账号、密码都是统一的)输入账号、密码后,点击“登陆”,登陆后页面如下:到这里,SIoT平台搭建的部分就完成了。

project-image

SIoT物联网相关功能
【SIoT】--- SIoT物联网相关功能SIoT库将提供我们设置SIoT参数,首发消息等功能。要使用此模块首先需要:import SIoT
函数init(CLIENT_ID, SERVER, port=1883, user=IOT_UserName, password=IOT_PassWord)


初始化SIoTSERVER = "192.168.9.107"


设置MQTT服务器IP,这里IP地址需要替换为开启SIoT平台的PC端的IP地址

CLIENT_ID = ""


用户编号,在SIoT上,CLIENT_ID可以留空

IOT_pubTopic = 'xzr/001'


设置项目名称和设备名称,“topic”格式为“项目名称/设备名称”,实例中即xzr项目001设备

IOT_UserName ='SIoT'

IOT_PassWord ='dfrobot'


输入用户名和密码,示例为默认值,一般情况下不用修改connect()
连接服务器

publish(IOT_pubTopic, data)
发送数据

subscribe(IOT_pubTopic, cb)getsubscribe(IOT_pubTopic)
接收数据

set_callback(cb)
设置回调函数

stop()
断开链接

评论

user-avatar