回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

App Inventor For M1O 简单

头像 孙洪尧1985 2025.08.16 10 0

        前言:通过手机app控制行空板M10、接收M10的数据如何实现一直困扰着我,直到我看到了计老师【麦壳maikemaker( ID: 819143 )】的文章https://mc.dfrobot.com.cn/thread-321972-1-1.html】,并向计老师请教如何实现。计老师对于未曾谋面的我,牺牲了周末的午休时间,热心的帮助我去解决问题,直到我实现了 App Inventor For K10才结束助力。非常感谢计老师的帮助和支持!

         项目背景:在2022年我最开始开展科创教育的时候,接触的是UNO板,然后搭配物联网模块,再用水泵和土壤湿度传感器,指导学生通过制作了一款可以通过智能手机APP远程遥控水泵、接收土壤湿度数据的绿植智能管家,参加了当年的第九届全国科普创新暨实验作品大赛黑龙江赛区,获得了复赛三等奖。对于我们这所农村学校来说,能获得一个省级的奖项太难得了。那个时候就感觉是App Inventor制作的APP为我这个作品锦上添花了,但是由于学校社团并没有很多手机,没办法开展大规模的相关的作品设计,就搁置了推广APP制作的想法。今年暑假在家研究K10和M10的时候,又萌发了新学期开展APP制作的想法。有想法就要立马去实现,打开了网址(https://code.appinventor.mit.edu/),傻眼了,和2022年不一样了,更不咋会了。立马就想起来向DF求救,在DF创客社区里搜到了计老师关于K10与MQTT的文章。这文章对于我来说,简直就是久旱逢甘霖一般。我立马照着计老师的文章做了起来,但是由于长时间不接触appinventor,很多内容不会了,起初并没有实现,我就试着去联系计老师。没想到计老师很热情的帮助了我,实现了App For K10。我就想趁热打铁,实现App For M10。我来抛砖,制作一个简单的说明文档,然后引出大家的玉。废话少说,直接上步骤!

 

一、准备工作:

(1) 配置网络
首先,先将电脑连入路由器或手机的热点(需使用2.4G Wi-Fi);然后,取一块行空板用USB线连上电脑,并打开浏览器在地址栏输入“10.1.2.3”,进入行空板服务页面。接下来,点击“网络设置”,寻找“连接WiFi”部分,你可以点击“扫描”寻找刚才电脑连接的无线网,点选WiFi名称并输入密码,点击“连接”,等待连接成功。打开mind+,使用IP地址远程连接行空板。一定要保证电脑、行空板和智能手机在同一个热点下。

 

 

微信截图_20250816161842.png

微信图片_20250816161827.jpg

微信截图_20250816162143.png

二、程序设计、

首先,选择右上角的Python模式,再点击左下角的扩展,选择官方库的行空板M10和MQTT加载,再返回到主页面。打开浏览器再网址输入IP地址+:+8080(英文输入法),打开物联网平台,输入siot\dfrobot进入,并设置订阅的主题,我这里设计了两个主题,一个是关于光线强度的,一个是关于发布命令的。

微信截图_20250816162748.png
微信截图_20250816162405.png
微信截图_20250816162331.png
微信截图_20250816162343.png

要注意初始化MQTT设置填写正确,这个涉及到appinventor程序的设计。

三、设计App Inventor。此步骤请访问计老师的文章。https://mc.dfrobot.com.cn/thread-321972-1-1.html,里面有详细的内容。

微信截图_20250816163251.png

程序大家可以参照我提供的截图,然后根据大家的实际情况去设计修改。

材料清单

代码
#  -*- coding: UTF-8 -*-

# MindPlus
# Python
import siot
import time
from unihiker import GUI
from pinpong.board import Board,Pin
from pinpong.extension.unihiker import *

# 事件回调函数
def on_message_callback(client, userdata, msg):
    if (msg.topic == (str("siot/order"))):
        text4.config(text=msg.payload.decode())
        if (msg.payload.decode() == (str("开灯"))):
            p_p23_out.write_digital(1)
        if (msg.payload.decode() == (str("关灯"))):
            p_p23_out.write_digital(0)


siot.init(client_id="6846184947097487",server="192.168.1.36",port=1883,user="siot",password="dfrobot")
u_gui=GUI()
Board().begin()
siot.connect()
siot.loop()
siot.set_callback(on_message_callback)
p_p23_out=Pin(Pin.P23, Pin.OUT)
siot.getsubscribe(topic="siot/order")
siot.getsubscribe(topic="siot/light")
text1=u_gui.draw_text(text="当前光线强度:",x=0,y=0,font_size=20, color="#0000FF")
text2=u_gui.draw_text(text="",x=180,y=0,font_size=20, color="#0000FF")
text3=u_gui.draw_text(text="您的命令:",x=0,y=30,font_size=20, color="#0000FF")
text4=u_gui.draw_text(text="",x=120,y=30,font_size=20, color="#0000FF")
while True:
    siot.publish_save(topic="siot/light", data=light.read())
    text2.config(text=light.read())
    time.sleep(1)

最后还是要感谢计老师,没有计老师的帮助,就不会有这篇稿子的撰写。附件里包含了app for K10和app for M10的资料,欢迎大家自取。感谢DF给我们建立了这么好的交流区。

评论

user-avatar