为AppInventor添加在线更新功能
在AppInventor应用上通过aix扩展,实现在线检测更新并自动下载安装包并安装的功能。
前言当我们在开发一个APP项目时,总会更新迭代,在新版本中修复以前已知的bug或添加新功能。
但是我们不可能让用户重新下载一次安装包并安装更新,这样会大大降低用户更新的积极性。
这时候我们就需要给我们的APP加上在线检测更新并自动下载安装包并安装的功能。但是AppInventor默认的程序中不支持这项功能。
我们可以通过添加aix扩展的方式,实现这个功能。
所需扩展
Custom_Downloader
KIO4_Install
Dialogs
下载链接见文末
实现过程首先在项目中添加扩展,并将其添加到屏幕上:
进入编程界面,我们需要先检测当前的版本是否为最新版本,这里通过读取TinyWebDB数据库实现:
如果获取到的版本号高于本地App的版本号,则询问用户是否进行更新。
当用户确认更新后,我们调取扩展获得更新安装包的url,再进行下载:
下载的同时,使用进度框显示下载进度:
当下载完成时,调用扩展安装下载路径下的安装包:
接下来需要用户进行同意,同意后即可成功安装更 ...
基于物联网的师生呼叫系统
本文系湛江市第十七中学星火创客团队参赛项目,转载请保留声明!
作品所用到的软件
Mind+
LaserMaker
App Inventor
作品所用到的硬件
掌控板
掌控I/O扩展板
Speech Synthesizer Bee语音合成模块
App所需环境
App Inventor广州服务器
Easy IoT物联网平台
注:本作品使用的MQTT模块在App Inventor平台是没有集成的,需要手动添加扩展才能使用,下载链接见文末。
创作背景在学校的日常生活中我们发现,当老师需要学生执行某些事情,例如需要学生去办公室一趟、让课代表催交作业时,总是需要一个学生充当“传话人”的身份。
因为老师事务繁多,不可能什么事情都亲力亲为,而中小学是不允许学生携带手机进入校园的,老师没有通讯方式可以联系到学生,就会造成老师与学生之间无法联系的情况。
于是我们想到,可以制作一款师生呼叫系统,开发一个教师手机App端与教室端,它们之间通过WiFi+MQTT进行通讯,当老师需要传达指令时,通过手机App发送到教室端显示。
当教室端接收到老师发出的指令后,会通过语音合成模块读出消息, ...
部署Twikoo评论系统及其邮件推送(Vercel)
详细介绍了使用Vercel+MongoDB方案搭建Twikoo评论系统的过程,并实现邮件自动通知回复信息。
配置数据库申请MongoDB账号进入MongoDB注册一个账号。
创建MongoDB数据库申请完毕后进入以下界面,选择最右边的免费共享数据库。
进入创建页面后,其他选项及配置保持默认,区域选择推荐AWS / N. Virginia (us-east-1)区域选择完毕后,拉到页面底部点击Create进入下一步。
配置MongoDB数据库ip设置为0.0.0.0/0即可:
创建数据库用户,请记住这里的password,后面步骤需要使用到。
回到Clusters页面,点击CONNECT
选择第二项:Connect your applicalion进入
进入以下页面,请记录你的数据库连接字符串,并将其中的<password>替换为你创建的数据库用户的密码。这项数据库连接字符串将会在部署twikoo时使用到,请保存备用。
部署到Vercel申请账号申请一个Vercel账号,如已有Vercel账号可跳过这步。
部署仓库点击以下链接将Twikoo一键部署到Vercel:http ...
Day9:智能城市垃圾箱管理平台
介绍了如何通过掌控板将数据上报至阿里云平台,同时支持在阿里云物联网平台上控制掌控板的灯光亮灭与否。
前言关于阿里云物联网平台的注册与使用,我曾写过一篇帖子,这里放出来供大家参考:
掌控板与阿里云IoT通信:控制板载灯亮灭
其中控制板载灯的部分与本文下面的控制灯开关部分原理相同,但是代码做了改进,使得更简洁了。
设置变量我们需要提前在阿里云物联网平台上给产品定义功能:
然后在程序中,将其中的标识符赋值给变量:
连接平台先连接上WiFi,接着连接MQTT:
注意:很多同学都会犯一个错误,设置好MQTT参数后没有发起连接,导致程序无法正常运行。
发送程序每隔半分钟发送一次垃圾箱的实时温湿度到阿里云平台上:
接收程序这段代码的目的是为了能在web平台上控制垃圾箱的灯开关与否。
Web设计UI设计
地图:显示设备位置;
卡片:显示设备当前温湿度;
实时曲线图:显示设备温湿度变化曲线;
仪表盘:显示设备装载率;
开关:控制设备灯的开关与否。
关于配置数据流的教程,见我在前言中提到的帖子:https://mc.dfrobot.com.cn/thread-308336 ...
Day8:一款无线抢答系统的实现过程
基于LoRa+蓝牙+掌控板+AppInventor方案实现的一款无线抢答系统,通过手机App下达答题命令到裁判端,再由裁判端分发命令并捕捉抢答信息。
演示视频详见:《基于LoRa与蓝牙技术的无线抢答器》http://www.bilibili.com/video/BV1jw41197UH
设计思路详见 Day7:一款无线抢答系统的设计思路
目标实现
主持人App端可以通过蓝牙与掌控板通讯;
主持人掌控板端可以通过LoRa发出指令;
两个选手端可以通过LoRa发送消息确定抢答方;
选手端自动判断选手回答正确与否;
选手端自动统计选手得分;
消息定义因为使用了LoRa与蓝牙进行通讯,所以我们需要定义消息,用来判断程序该做什么:
蓝牙接收s(115)开始抢答 发送C
t(116)下一题 发送D
A(65) 发送正确选项 发送A
B(66) 发送正确选项 发送B
LoRa接收1(49)选手回答正确
0(48)选手回答错误
a(97)选手1抢答成功
b(98)选手2抢答成功
主持人App端UI设计
程序编写连接蓝牙其中唯一编号为:00001101-0000-1000-8000-00 ...
Day7:一款无线抢答系统的设计思路
主要探讨了有关设计一款无线抢答器的基本思路,通过不同的通讯方式之间比较出适合本作品的最优方案。实现过程请见:Day8:一个无线抢答系统的实现过程。
基本思路这套系统分为三个端,分别为主持人App端、主持人掌控板端与选手端。
其中主持人App端负责发出正确选项、开始抢答、下一题等指令。
主持人掌控板端负责将主持人App端发出的消息转发给下方的选手端。
选手端负责判断选手的抢答与否,并自动给分。
通讯方式前面谈到,主持人App端需要发送指令给主持人App端并转发给选手端,其中的通讯方式我们有以下几种方案:
方案一所有平台端联网,使用WiFi+MQTT方案:
优点1.连接方便,无需主持人掌控板端转发消息;
2.无需其他模块,使用板载WiFi即可;
3.可连接平台端数量多;
缺点 1.不稳定,延迟受网速影响,无法做到同步抢答;
2.需要网络支持,环境受限;
3.WiFi距离有限;
总结此方案虽然行得通,但是不稳定性太高,容易出现错误,pass.
方案二所有平台端使用掌控板蓝牙:
手机作为客户端只能连接一个蓝牙服务端,而选手端肯定不止一个,pass.
方案三所有平台端使用LoRa通讯:
...
Day6:LoRa模块的使用
本文介绍了LoRa模块的组网通讯方式以及组网跳级,详细说明了LoRa模块间互相通讯的步骤和方法。同时提供了继电器连接的电路图和程序。
模块设置完全对等的透明组网模式设置方法模块类型一致并都为主模块类型,用户接口模式一致并都为透明模式。 在此种组网模式下,每个模块串口接收到数据,都透明的广播发送到其它的模块,模块接收到别的模块发送的数据为纯透明的应用数据。用户设备只能发广播数据,不需要管理其它模块的通讯短地址。
步骤1.按1、2、3顺序读取当前模块的参数配置。2.红色的参数设置成一样,蓝色圈选的信道和网络ID同一小组的设置成一样;绿色圈选的模块地址各人都不一样。3.点写配置。配置成功时软件发送框和接收框会分别显示下图信息↓
测试通讯1、官方配置和测试工具(只能收发16进制):2、可使用Xcom、sscom等串口调试软件,原理与官方工具相同,这里不作演示。
发送程序
接收程序其实就是普通的串口收发程序,与前两天的蓝牙接收程序大同小异。
模块介绍组网跳级介绍
MESH 多径路由MESH 路由协议会综合多种选择算法进行路由的筛选,包括距离矢量、信号质量(链路状态)和节点剩余电量。
1、ME ...
Day5:蓝牙5.0模块与AppInventor通讯
蓝牙5.0模块与AppInventor通讯蓝牙配对过程配对过程详见昨天的教程:Day4:蓝牙4.0与5.0模块的使用
掌控接收代码没什么好说的,就是简单的串口接收程序:
如果手机端发送a,在掌控板端即收到a的ASCII码97,这时开灯;如果手机端发送b,在掌控板端即收到b的ASCII码98,这时关灯。
App发送程序首先打开蓝牙调试器App,查看蓝牙模式的UUID:我们可以获取到以下两个UUID:0000fff0-0000-1000-8000-00805f9b34fb0000fff2-0000-1000-8000-00805f9b34fb(上面软件显示的第二个UUID是错误的)
接着我们去到App Inventor的开发平台 https://app.wxbit.com/
新建一个项目,然后在左边组件面板点击通信连接,然后将BluetoothLE这个组件拖到中间的手机屏幕中,添加这个组件接着我们去到编程界面,将上面找到的UUID相对应填入其中:
服务UUID对应的是软件中的透传服务UUID特征UUID对应的是软件中的透传TX特征的UUID其他部分大同小异,这里不作阐述,只放出完整代码作参 ...
Day4:蓝牙4.0与5.0模块的使用
蓝牙4.0无线通讯模块配对过程1、使用arduino.exe、Mind+或sscom等串口通讯软件打开蓝牙串口,配置成波特率115200,不要输出结束符,然后发送+++进入AT模式。
2、AT+VERSION=? 可以查询下固件版本(非必须步骤)一定要确认下方的结束符发送部分改成了发送“NL和CR”(即自动在命令后加上换行和回车一起发送过去),以下的AT命令部分也都需要确认这个设置。Arduino界面:Mind+界面:3、AT+ROLE=? 查询当前BLE芯片的主从机状态(默认值为ROLE_PERIPHERAL,从机角色)。需要将两块蓝牙修改为一主一从才能互相收发。主模式是ROLE_CENTRAL4、使用AT+ROLE=ROLE_CENTRAL 将一块蓝牙模块设置工作在主机状态下(另一块设置为从机角色)5、再次使用AT+ROLE=?确认修改主机角色成功。6、使用AT+NAME=xxxxxx 修改蓝牙设备名字。
推荐快速设定方法从机设定:AT+SETTING=DEFPERIPHERAL 恢复成从机模式的初始设定AT+NAME=xxxxxx 改成你自定义的名字AT+MAC=? 查询当前B ...
Day3:控制MP3模块
手势音乐盒按钮控制模式
手势控制模式
主程序