开放原子训练营(第四季)TobudOS——点灯大师,远程点灯!
最近参加开放原子训练营(第四季)的活动, 现场入手了个新玩具。铛~ 铛~ 铛~主角出场: EVB_AIoT开发板!
EVB_AIoT开发板,主控STM32H750HBX6,是基于ARM® Cortex®-M7内核的STM32H7系列高性能MCU。
功能 | 参数 |
---|---|
主控 | STM32H750HBX6 |
内存 | 内置1MB RAM+外置32M SDRAM |
存储 | 内置128K Flash+外置64M QSPI+128M SPI Flash |
调试 | 板载ST-Link V2一线式开发(支持拖拽下载、串口调试、仿真下载) |
摄像头 | 支持24P DVP摄像头,最高像素支持到500万像素 |
显示 | 板载HDMI驱动芯片,支持HDMI输出(720P)、支持RGB888接口输出 |
通信 | 支持WAN_Interface、支持PCI-E接口模组 |
更多关于STM32H7系列的资料,请看这里:
https://www.st.com/zh/microcontrollers-microprocessors/stm32h750xb.html
还有这里:
https://www.stmcu.com.cn/Product/pro_detail/STM32H7/product
开发背景
最近迷恋上了“沾花惹草”,用这个板子给家里的花花草草做个盆栽植物滴灌系统也不错哦:可以用手机在全球各个角落随时远程查看家中小花小草们的喜人长势、查看当地的天气情况、花盆里的土壤温湿度,以及远程给小花小草们补给“甘露”、滋养小花小草们的小身心。但是,理想很丰满,往往现实很骨感;千里之行,常常还是得始于足下!
好吧,来,先让我这个“点灯大师”远程用它点亮第一盏小灯吧!
大师掐指一算:远程点亮第一盏小灯,得分为三步。
- 第一步:搭建MQTT
- 第二步:编写程序:点亮小灯
- 第三步:微信小程序:远程操控
好了,下面让我们一步一步来实现吧~~
第一步:搭建MQTT 配置MQTT
搭建MQTT…嗯,好多琐碎要做哎,太麻烦了!算了,偷个懒吧,MQTT不要自己搭建啦,直接选用线上的免费资源吧!比如,腾讯云的物联网开发平台
1. 登录腾讯云
当然,要登录腾讯云,首先我们要有一个腾讯云的账号!个人微信就可以注册哦~
微信注册好账号后,微信扫一扫、手机授权就可以登录了。
腾讯云:https://cloud.tencent.com/
微信扫一扫登录
扫描成功后
手机微信上,点击授权登录
2.进入物联网开发平台
登录腾讯云后,选择进入物联网开发平台。
右上角点击进入“控制台”,搜索“物联网开发平台”,可以快速抵达。
链接地址: https://console.cloud.tencent.com/iotexplorer
注意: 从2023年9月8日起,物联网开发平台公共实例免费设备注册数由50个调整为10个了。 对于已在公共实例创建超过10个设备的用户,可继续使用超出部分设备,但不能再新建设备;若用户业务需要超过10个设备数需求,就需要购买企业实例或购买公共实例激活码了。
3. 新增实例
点击下方的蓝色按钮“新增实例”,新增一个实例。
成功新增实例后,会在“新增实例”按钮下面看到咱们自己新增的实例信息。
点击新增的"公共实例"部分,可以查看所有的项目列表。我这里只有一个我自己之前建立好的自定义项目: AIoT开发板测试。
点击项目名称“AIoT开发板测试”, 可以查看该项目下的所有产品列表。本示例中只有一个产品:“测试demo”.
1). 物模型
物模型json文件:
{
"version": "1.0",
"properties": [
{
"id": "power_switch",
"name": "电灯开关",
"desc": "控制电灯开灭",
"required": true,
"mode": "rw",
"define": {
"type": "bool",
"mapping": {
"0": "关",
"1": "开"
}
}
},
{
"id": "lum",
"name": "光传感器",
"desc": "上报现场光传感器数据",
"mode": "r",
"define": {
"type": "int",
"min": "0",
"max": "9999",
"start": "0",
"step": "5",
"unit": "lm"
},
"required": false
}
],
"events": [],
"actions": [],
"profile": {
"ProductId": "你自己的产品ID",
"CategoryId": "3"
}
}
第2、3的步骤,可以使用默认,点击“下一步”、“下一步”完成。
2). 设备开发
3). 交互开发
4). 设备调试
4. 生成mqtt信息
1) 获取云端设备的信息
新增实例完成后,获取云端设备的产品 ID、设备名称、设备密钥。
2) 下载 python 脚本
3) 生成 mqtt 信息。
用PythonIDE(我这里用的是PyCharm)打开Python脚本mqtt_config_gen.py, 使用 python 脚本会生成 mqtt 用户名 密码等信息,同时还生成 mqtt_config.h、mqtt_connect_demo.c 文件。
这些文件稍后会用到哦~~
mqtt_config.h
mqtt_connect_demo.c
第二步:编写程序:点亮小灯
1. 获取代码
获取EVB_AIoT开发板对应的mqtt代码: mqttclient_iot_explorer
GitHub地址https://github.com/OpenAtomFoundation/TobudOS/blob/master/doc/30.TencentOS_Tiny_EVB_AIoT_QuickStart.md
也可以参考以下资料哦。
开放原子代码仓:https://atomgit.com/OpenAtomFoundation/TobudOS
训练营参考代码:https://atomgit.com/tobudos/DeveloperTrainingCamp2023
诚意满满,附上截图~~
开放原子代码仓
训练营参考代码
训练营实验手册
2. 修改代码
1) 打开项目
用Keil uVision(建议5以上的版本)创建个stm32项目,然后打开下载好的mqtt的项目文件
2) 打开mqttclient_iot_explorer.c
需要修改的文件是mqttclient_iot_explorer.c.
3)修改 mqttclient_task 函数
打开mqttclient_iot_explorer.c后, 根据之前生成的 mqtt 客户端信息,修改 mqttclient_task 函数。
需要修改的内容如下:
- 引入 mqtt_config.h
- 复制 mqtt_connect_demo.c 代码到 mqttclient_task 函数对应部分
3. 编译工程(构建项目)
点击按钮,编译工程(或者构建项目)。
4. 烧录代码
编译工程不报错,就可以连接板子、烧录代码了。
5. 连接腾讯云
返回腾讯云物联网开发平台, 查看设备状态。此时,设备dev01(板载小灯)显示为:“在线”。
设备(板载小灯)连接成功。
第三步:微信小程序:远程操控
要用微信小程序实现Wi-Fi远程操控,又不想自己写微信小程序怎么办?我们可以用“腾讯连连”呀!
1. 打开“腾讯连连”
首先,用手机在微信搜索小程序“腾讯连连”。
2. 添加家庭
进入微信小程序“腾讯连连”后,点击【我的】–>【家庭管理】,添加一个我们自己喜欢的名称即可。这里我取的名字是:Jojo的小窝。
3. 添加设备
返回【首页】,点击底部中间的“加号”图标:添加设备。
添加设备,我们这里用“扫一扫”。扫描线上设备的二维码,进行设备添加。
** 腾讯云-物联网开发平台**
4. Wi-Fi远程操控
设备添加成功后,如图所示,可在“腾讯连连”的微信小程序中看到我们自己的设备(板载小灯)。
点击我的设备,进入开灯、关灯的界面。按钮左右滑动,可以实现远程开灯,关灯。
实验成功:手机通过Wi-Fi远程点亮小灯
点亮小灯、关灭小灯。
(温湿度传感器还没连接,微信小程序下方暂时没有温湿度相关数据。)
参考资料汇总
开发板技术参数
EVB_AIoT开发板技术参数
参考代码
开放原子代码仓:https://atomgit.com/OpenAtomFoundation/TobudOS
训练营参考代码:https://atomgit.com/tobudos/DeveloperTrainingCamp2023
“快来围观,这里有不少给咱们小白们准备的好东东( examples )! ”
针对不同的板子,还有不同的参考代码。我这个“点灯”项目, 这次用的板子是EVB_AIoT, mqtt client的代码参考的是这部分。
SDK文档
腾讯物联网终端操作系统 - 产品文档
https://cloud.tencent.com/document/product/1098/36330