> Easy IoT
查看: 1620|回复: 4

[项目教程] 【micro:bit × OBLOQ挑战赛›】挑战1:microbit + OBLOQ 实现物联网...

[复制链接]
本帖最后由 LYon 于 2018-7-17 23:59 编辑

    本次挑战赛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平台有一个让我非常喜欢的特点是变量和函数都可以使用中文!这是很多其他编程软件做不到的,可以省去很多的注释了,也方便了我这样英文不好的不用再为变量起名而发愁。


360截图20180717230659376.jpg
360截图20180717230738222.jpg

360截图20180717230753888.jpg

360截图20180717230809616.jpg

makecode在线生成的javascript代码,可以在线编译成二进制文件,可以非常方便的直接拷贝到Micro:Bit连接PC后加载出优盘中就完成了程序烧写,然后会Micro:Bit上自动运行程序。
[JavaScript] 纯文本查看 复制代码
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)
    }
})



截图201802282227337578.png

LYon  高级技师
 楼主|

发表于 2018-7-18 01:32:01

本帖最后由 LYon 于 2018-7-18 01:38 编辑

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

微信图片_20180718004440.jpg

微信图片_20180718004457.jpg




     参加这个挑战赛学用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点的时候才交卷发帖。


回复 支持 反对

使用道具 举报

ASH腻  管理员

发表于 2018-7-18 10:32:24

LYon 发表于 2018-7-18 01:32
可以在微信中搜索Easy Iot小程序,绑定帐号后就能在手机上远程发出控制指令和查看模块上传的数据。

哎呀呀 群里面有提示说平台不限 实现效果就可以
怪我没在题目里面标明 不好意思
回复 支持 反对

使用道具 举报

LYon  高级技师
 楼主|

发表于 2018-7-18 12:40:25

ASH腻 发表于 2018-7-18 10:32
哎呀呀 群里面有提示说平台不限 实现效果就可以
怪我没在题目里面标明 不好意思 ...

呵呵,不是你的原因,怪我自己没赶在挑战开始的时间回到家,匆忙中没看清规则和群消息。我老是犯没提前准备充分的毛病,自己虽然都是卖相机的,但以前从来没在网上发过视频,连优酷帐号都是挑战开始后才注册的。:L
回复 支持 反对

使用道具 举报

ASH腻  管理员

发表于 2018-7-19 14:48:59

LYon 发表于 2018-7-18 12:40
呵呵,不是你的原因,怪我自己没赶在挑战开始的时间回到家,匆忙中没看清规则和群消息。我老是犯没提前准 ...

哈哈哈 下一轮准备就充分了 所有流程都跑通了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail