第一次把STM32的数据成功上传到阿里云时,我兴奋地刷新着网页控制台看数据变化。但很快发现这太不方便了——总不能随时随地开电脑吧?于是决定做个手机APP来实时查看数据。MIT App Inventor这个可视化编程工具完美解决了我的需求,不需要懂Java就能开发安卓应用,特别适合物联网爱好者快速实现想法。
你需要准备:
我用的硬件组合是STM32F103C8T6+ESP-01S,成本不到50元。软件方面除了阿里云,主要用两类工具:
注意:所有操作在普通网络环境下即可完成,不需要特殊网络配置
登录阿里云物联网平台,进入之前创建的产品。点击"设备管理"→"添加设备",新建一个名为"app_device"的设备。这个设备将作为手机APP与阿里云通信的桥梁,和STM32设备属于同一产品下。
关键点在于:
在"Topic类列表"中新建两个Topic:
/sys/a1xxxxxx/device1/thing/event/property/post (STM32上传原始数据)/sys/a1xxxxxx/app_device/user/get (APP接收数据)务必将app_device的Topic权限设置为"发布和订阅",否则会导致数据无法接收
进入"云产品流转"→"创建规则",按以下步骤操作:
sql复制SELECT
deviceName() as deviceName,
items.temperature.value as temperature,
items.humidity.value as humidity
FROM
"/sys/a1xxxxxx/device1/thing/event/property/post"
在"转发数据"部分:
/sys/a1xxxxxx/app_device/user/get我在这里踩过坑:第一次忘记启动规则,调试了半天才发现。所以特别提醒大家要确认规则状态是"运行中"。
访问MIT App Inventor官网,新建项目。主要组件包括:
设计技巧:
在"逻辑设计"中拖拽以下模块:
blocks复制当 连接按钮.点击 执行
设置 Web客户端.连接参数
MQTT主机: "a1xxxxxx.iot-as-mqtt.cn-shanghai.aliyuncs.com"
端口: 1883
客户端ID: "a1xxxxxx|securemode=3,signmethod=hmacsha1|"
用户名: "app_device&a1xxxxxx"
密码: "计算得到的加密字符串"
调用 Web客户端.连接
blocks复制当 Web客户端.收到消息 执行
如果 收到消息.Topic = "/sys/a1xxxxxx/app_device/user/get" 则
设置 温度标签.文本 = 连接JSON文本解析(收到消息.消息内容,"temperature")
设置 湿度标签.文本 = 连接JSON文本解析(收到消息.消息内容,"humidity")
实测发现,在4G网络下平均延迟约1.2秒,WiFi环境下可降至800毫秒。对于温湿度监控这类场景完全够用。如果想进一步降低延迟,可以调整阿里云地域选择(就近原则),或者改用TCP直连方式。
完成基础功能后,可以尝试这些进阶玩法:
我在自己的智能花盆项目中就扩展了浇水控制功能。当土壤湿度低于20%时,APP不仅会弹窗提醒,还能一键启动水泵。整个过程从传感器到APP完全自研,这种成就感是现成APP无法比拟的。