LYon 发表于 2018-7-17 23:59:05

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

本帖最后由 LYon 于 2018-7-17 23:59 编辑

    本次挑战赛DFRobot第一办就给每个参赛者免费赠送了Micro:Mate—最小的micro:bit多功能I/O扩展板和Gravity: UART OBLOQ - IoT物联网模块,随着比赛的进行可能会送出更多的硬件,在此深表感谢!硬件:BBC Micro:Bit开发板,DFRobot Micro:Mate—最小的micro:bit多功能I/O扩展板,Gravity: UART OBLOQ - IoT物联网模块编程软件平台:微软makecode图形化编程平台    在硬件连接的时候,要注意是无法通过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平台有一个让我非常喜欢的特点是变量和函数都可以使用中文!这是很多其他编程软件做不到的,可以省去很多的注释了,也方便了我这样英文不好的不用再为变量起名而发愁。







makecode在线生成的javascript代码,可以在线编译成二进制文件,可以非常方便的直接拷贝到Micro:Bit连接PC后加载出优盘中就完成了程序烧写,然后会Micro:Bit上自动运行程序。

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)
    }
})



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

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

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






https://v.youku.com/v_show/id_XMzcyOTE3NDg0OA==.html?x&sharefrom=android&sharekey=e4350e45a15b90896731d318f5f73ca08

   参加这个挑战赛学用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点的时候才交卷发帖。
https://mc.dfrobot.com.cn/data/attachment/album/201709/21/022436b0z7lgksk3i9m9sp.jpg

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
呵呵,不是你的原因,怪我自己没赶在挑战开始的时间回到家,匆忙中没看清规则和群消息。我老是犯没提前准 ...

哈哈哈 下一轮准备就充分了 所有流程都跑通了
页: [1]
查看完整版本: 【micro:bit × OBLOQ挑战赛›】挑战1:microbit + OBLOQ 实现物联网...