手机连接万物 发表于 2023-11-24 21:32:21

App Inventor 2—掌控板蓝牙通信入门

在《App Inventor 2—零代码开发自己的物联网APP》一文中,我们了解了App Inventor 2是一个创建Android应用程序的可视化编程工具,简称AI2。并且自行创建了一个通过Easy Iot物联网平台与掌控板进行连接和交互的App。但如果在没有物联网平台、互联网和Wifi等条件的情况下,手机又如何与掌控板进行通信呢?最简单的方式就是蓝牙。蓝牙虽然给人印象比较简单,但在物联网编程应用中却并不简单,甚至还有些复杂。至少就本次实验而言,大家有必要从蓝牙的基础知识和分类,还有掌控板蓝牙的特点开始了解,然后一步一步动手创建一个通过蓝牙控制掌控板LED灯,获取掌控板光线数据的App,以达到初步掌握AI2和Mind+掌控板蓝牙编程应用的入门水平。



1.实验目标

(1)了解蓝牙技术的基本概念和分类

(2)了解掌控板蓝牙的类型

(3)了解Mind+掌控板蓝牙扩展库的特点   

(4)了解AI2编程蓝牙连接掌控板的方法

(5)了解AI2制作的App如何通过蓝牙与掌控板交互

2.实验所需资源

硬件:

(1)电脑

(2)手机

(3)掌控板

(4)数据线

本文实验所用的台式电脑为Windows7操作系统,手机为安卓系统,掌控板为V2.0版本,数据线为Type-C接口。

软件:

(1)电脑安装Mind+软件

本文实验所用的Mind+软件版本为V1.8.0 RC1.0

(2)App Inventor 2可视化编程平台

本次实验采用的是App Inventor 2平台的汉化增强版软件WxBit(网址为:https://www.wxbit.com/),本文下面所提到的AI2平台皆指WxBit。学习参考:《App Inventor 2—零代码开发自己的物联网APP》

3.蓝牙技术的基本概念和分类

蓝牙技术是一种无线通信技术,它能够在短距离内实现设备间的数据传输和通信。蓝牙的版本和分类标准很多,在这里我们简单了解一个编程上用到的分类就行。也就是从蓝牙4.0开始,蓝牙分为经典蓝牙(简称BT)和低功耗蓝牙(简称BLE)两种。经典蓝牙和低功耗蓝牙虽然都是蓝牙,但区别很大,两种蓝牙在编程中用到的库和程序也不一样,用低功耗蓝牙的程序连接经典蓝牙可能直接就扫描不到。所以在着手编程前弄清楚手上的设备到底属于哪种类型的蓝牙很重要。   

4.掌控板蓝牙的类型

    从官方资料库得知,掌控板技术规格中的蓝牙协议为“符合蓝牙v4.2 BR/EDR和BLE标准”,也就是说掌控板同时支持经典蓝牙(简称BT)和低功耗蓝牙(简称BLE)。

5.Mind+掌控板蓝牙扩展库的特点

掌控板硬件虽然支持两种蓝牙模式,但还需要有对应的程序才能正常运行。在Mind+官方库中,并没有找到掌控板蓝牙库,通过在用户库中搜索,我们找到了由爱好者制作上传的掌控板蓝牙库。除非你有自己动手制作Mind+扩展库的能力,否则,只能依赖这个现成的“掌控板蓝牙”扩展库来开发掌控板蓝牙应用。   



         



通过查看Mind+扩展库说明,甚至是打开了Gitee的“MpythonBT 掌控板蓝牙”用户库教程,都没有找到这个库确切的说明,从蓝牙类型,到参数的数据类型,都没有说明。最后只能通过下载并分析库相应的代码来了解这个库的用途。通过分析,了解到这是一个支持“经典蓝牙”的扩展库,数据类型为“无符号单字节”类型,直接读取接收到的数据会显示为“ASSIC码值”。   



6.Mind+掌控板蓝牙编程

了解了掌控板蓝牙扩展库的特点,下面就可以进行掌控板部分的编程了。程序很简单,就是根据手机App的指令开关掌控板LED灯,同时将掌控板环境光强度数据映射成0-9的单字节数据传送到手机App。

(1)在Mind+上传模式新建项目并连接掌控板,在主控板扩展库添加“掌控板”、在用户库搜索添加“掌控板蓝牙”扩展库


   

(2)掌控板蓝牙初始化,自定义“LED灯开关”和“光线信息”两个模块,循环执行



(3)将程序上传至掌控板

7.在AI2平台进行App编程

使用谷歌、QQ、Firefox、Safari等非IE浏览器访问WxBit网站,按提示进行注册和登录,推荐使用QQ账号登录。

(1)登录AI2P平台(WxBit),新建一个名为“掌控板蓝牙”的项目,在“组件设计”界面添加以下组件


   



组件属性设置参考:Screen1标题设置为“掌控板蓝牙”;所有可见组件,包括按钮、列表选择框、标签等名称设置为图中组件列表中的名称,字号统一设置为“22”,宽度设置为“F”充满。下面对3个不可见组件用途及设置做详细说明:

蓝牙客户端组件用于经典蓝牙通信,对应掌控板上的经典蓝牙扩展库,此处需要注意它与低功耗蓝牙组件的区别。经尝试,此处使用低功耗蓝牙组件搜索不到掌控板蓝牙。采用默认设置即可。



               

活动启动器组件用于启动一个安装在本设备中的应用的活动对象,也就是调用一个安卓系统的应用功能。相关功能的设置命令,可查询安卓开发文档。此处把活动启动器的动作设置为“android.settings.BLUETOOTH_SETTINGS”,用于调用手机的蓝牙设置和配对功能。



计时器组件用于定时触发接收掌控板光线数据的程序,此处把计时间隔设置为“200”毫秒。



(2)切换到“逻辑设计”界面对组件功能和事件进行编程   

在左侧的“模块”栏中,选中相应的模块就会弹出该模块相关的编程积木,从积木的颜色可以区分不同的用途,把积木按逻辑组合在一起,就形成了一系列功能和事件程序,下面我们按事件进行编程:

打开蓝牙并配对按钮单击事件:该事件用于点击按钮后打开手机的蓝牙设置和配对功能。由于前面已经设置了活动启动器的动作,这里只用直接调用启动活动对象就行。



列表选择框选择蓝牙事件:在第一步将手机与掌控板蓝牙配对后,还需要在本应用程序与对应的蓝牙连接才能通信。本事件通过点击“列表选择框-选择蓝牙”实现选择并连接掌控板蓝牙的操作。根据连接成功与否,做出相应提示。



断开蓝牙按钮单击事件:用于断开蓝牙连接,同时做出状态提示   



定时接收光线强度事件:此处是在判定蓝牙已连接的条件下,通过定时器定时接收掌控板传来的光线信息,用光线等级标签进行显示。根据掌控板发来数据的特点,此处采用无符号字节列表的方式成功获取到了掌控板的数据。



    打开/关闭LED灯按钮单击事件:此处用于单击按钮后向掌控板发送“1”或“2”的指令,对应前面掌控板中的程序,掌控板收到“49”的指令即打开LED灯,否则关闭LED灯。此处的“49”就是“1”的ASSIC码值。



   至此,涉及到该实验的AI2编程已经完成,下面我们进行程序调试。   

(3)手机预览运行AI2程序

AI2支持手机预览并运行程序,我们继续使用之前介绍过的 “WxBit调试助手”来进行程序调试。运行你手机上安装的“WxBit调试助手”,通过WxBit“预览”菜单下的“连接调试助手”扫码连接刚才编辑的程序。然后把你的掌控板通上电,按下面的步骤打开蓝牙配对连接掌控板,测试通过手机上的“LED灯开关”能不能控制掌控板LED灯?“光线等级”标签有没有定时更新数据?



               



         



    至此,一个简单的蓝牙连接并控制掌控板的安卓App制作完成,你也可以利用之前介绍过的方法,把这个App打包安装到你的手机独立运行。详细步骤请参考《App Inventor 2—零代码开发自己的物联网APP》。

8.本实验完整程序和下载地址

掌控板Mind+程序



手机端AI2程序



下载地址:https://gitee.com/inventara/arduino   


JOVI 发表于 2023-11-29 00:02:02

学习
页: [1]
查看完整版本: App Inventor 2—掌控板蓝牙通信入门