【micro:bit × OBLOQ挑战赛›】挑战1:microbit + OBLOQ 实现物联网...

2018-07-178399
AI 快速预览详细 收起
本文介绍了如何使用micro:bit开发板、Micro:Mate扩展板和Gravity: UART OBLOQ模块实现物联网项目。通过Makecode图形化编程平台进行编程,注册DFRobot的Easy Iot平台获取设备连入权限,实现温度数据上传。需要注意的是,每条消息发布间隔时间要在5秒以上,以避免obloq模块库代码出现异常死锁。


    本次挑战赛DFRobot第一办就给每个参赛者免费赠送了Micro:Mate—最小的micro:bit多功能I/O扩展板Gravity: UART OBLOQ - IoT物联网模块,随着比赛的进行可能会送出更多的硬件,在此深表感谢!
    在硬件连接的时候,要注意是无法通过micro:bit开发板给Micro:Mate扩展板的数字接口部分供电的,最好是Micro:Bit开发板和Micro:Mate扩展板分别用一根USB线连接电脑。OBLOQ模块在连接到Micro:Mate扩展板上时,电源最好接到右边数字口的电源接口上,这样可以直接用右侧的开关来选择工作电压是5V还是3V,也可以把开关打到OFF关闭数字口部分的电源,模拟口的电源输出是固定3V且无法关闭的。
首先要在DFRobot的Easy Iot物联网平台注册一个帐号,注册及使用过程论坛里已经有很多的教程。注册后免费获取10个设备连入权限,目前平台限制每个设备最多只可接收1000条消息,要注意的每条消息的发布间隔时间要在5秒以上,不然obloq模块库代码在运行的时候会出现异常死锁。
    微软Makecode图形化编程平台界面非常友好,直接拖动图形化编程块就可以方便快速地“0”代码编程,在屏幕还提供了Micro:Bit仿真,方便LED显示交互调试及没有开发板的用户。
    Makecode平台有一个让我非常喜欢的特点是变量和函数都可以使用中文!这是很多其他编程软件做不到的,可以省去很多的注释了,也方便了我这样英文不好的不用再为变量起名而发愁。


【micro:bit × OBLOQ挑战赛›】挑战1:microbit + OBLOQ 实现物联网...图1
【micro:bit × OBLOQ挑战赛›】挑战1:microbit + OBLOQ 实现物联网...图2

【micro:bit × OBLOQ挑战赛›】挑战1:microbit + OBLOQ 实现物联网...图3

【micro:bit × OBLOQ挑战赛›】挑战1:microbit + OBLOQ 实现物联网...图4

makecode在线生成的javascript代码,可以在线编译成二进制文件,可以非常方便的直接拷贝到Micro:Bit连接PC后加载出优盘中就完成了程序烧写,然后会Micro:Bit上自动运行程序。
[mw_shl_code=javascript,true]
let 平均温度 = 0
let 温度数据 = 0
let 等待指令状态 = false
Obloq.obloq_mqttCallbackUser( ({ myparam: 远程指令 }) =>  {
    if (远程指令 == "T") {
        执行指令()
    }
})
input.onButtonPressed(Button.A, () => {
    执行指令()
})
function 执行指令()  {
    等待指令状态 = false
    basic.showIcon(IconNames.Surprised)
    basic.pause(1000)
    计算平均温度的函数()
    Obloq.Obloq_sendMessage("" + 平均温度)
    serial.writeLine("AvgTemp:" + 平均温度)
    basic.showString("Avg:" + 平均温度)
    basic.showIcon(IconNames.Happy)
    basic.pause(5000)
    等待指令状态 = true
}
serial.onDataReceived(serial.delimiters(Delimiters.NewLine), () => {
    if (serial.readString() == "T") {
        执行指令()
    }
})
function 计算平均温度的函数()  {
    温度数据 = 0
    for (let i = 0; i < 20; i++) {
        温度数据 = 温度数据 + input.temperature()
        serial.writeLine("" + input.temperature())
        basic.showIcon(IconNames.SmallDiamond)
        basic.showIcon(IconNames.Diamond)
        basic.showIcon(IconNames.SmallDiamond)
        basic.clearScreen()
        basic.pause(100)
    }
    平均温度 = 温度数据 / 20
}
Obloq.Obloq_setup(
"CXWL",
"wwwcxwlcn",
"H1W2nUxv77",
"H1z22LgwXX",
"HJSniPjXQ",
SerialPin.P1,
SerialPin.P2
)
Obloq.Obloq_startConnect()
等待指令状态 = true
basic.forever(() => {
    if (等待指令状态) {
        basic.showIcon(IconNames.SmallHeart)
        basic.showIcon(IconNames.Heart)
    }
})
[/mw_shl_code]


截图201802282227337578.png (232.5 KB, 下载次数: 4219)

STEM教育 · micro:bit + OBLOQ 实现物联网项目_image_3.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
LYon
LYon
作者
可以在微信中搜索Easy Iot小程序,绑定帐号后就能在手机上远程发出控制指令和查看模块上传的数据。


[media=x,500,375]https://v.youku.com/v_show/id_XMzcyOTE3NDg0OA==.html?x&sharefrom=android&sharekey=e4350e45a15b90896731d318f5f73ca08[/media]
参加这个挑战赛学用Micro:Bit编程的过程可谓是一波三折,本来我对Arduino编程稍微熟悉一点,能做做简单的小程序,但看到DF开发的Mind+图形化编程软件新版功能非常强大,支持图形化的Arduino以及MicroPython编程,昨天拿到DF送的Micro:Bit开发板后就开始尝试用Mind+来做OBLOQ模块的MQTT数据发送。但发现Mind+好象不是太稳定,有时打开会丢失通信模块,有时块显示不正常没有文字,甚至有时整个窗口白屏。后来搞了半天才明白丢失通信模块的原因是因为在实时模式和MicroPython编程时,Mind+没有通信等模块的MicroPython代码,所以也就无法选择。而且有些功能模块还是没那么完善,暂时还无法完全实现我的需求,又转过头直接用Arduino直接编程,结果可能是我添加的Arduino开发板和库太多造成的混乱,在编译时提示缺少文件无法通过。于是只能又花了半天时间去学DF的BXY下的MicroPython编程,终于到比赛开始前刚有点眉目,可以成功在EasyIot上发布订阅数据了。没想到最后第一轮挑战内容发布后给出的教程却是微软的Makecode平台,好吧,只能再学学这个再参赛吧,于是直到快到0点的时候才交卷发帖。

Ash1
Ash1回复LYon
哈哈哈 下一轮准备就充分了 所有流程都跑通了
LYon
LYon
作者
回复Ash1
呵呵,不是你的原因,怪我自己没赶在挑战开始的时间回到家,匆忙中没看清规则和群消息。我老是犯没提前准备充分的毛病,自己虽然都是卖相机的,但以前从来没在网上发过视频,连优酷帐号都是挑战开始后才注册的。:L
共3条回复,已加载2条,点击查看更多共3条回复,已加载全部
- 没有更多了 -