Appinventor 单片机 手机蓝牙通信实现
欢迎大家访问我的github:https://github.com/Iamttp 有问题一起讨论呀!
简介
不会java的小白,在使用的单片机的蓝牙功能时难道只能上百度下载别人的蓝牙app软件吗?幸运的是一个基于云端开发app的网站来了。
App Inventor 原是Google实验室(Google Lab)的一个子计划,由一群Google工程师和勇于挑战的Google使用者共同参与设计完成。Google App Inventor是一个完全在线开发的Android编程环境,抛弃复杂的程式代码而使用积木式的堆叠法来完成您的Android程式。除此之外它也正式支持乐高NXT机器人,对于Android初学者或是机器人开发者来说是一大福音。因为对于想要用手机控制机器人的使用者而言,他们不大需要太华丽的界面,只要使用基本元件例如按钮、文字输入输出即可。(百度百科)
因为网上这方面的资料比较少,而自己又在这方面踩了不少坑,所以将单片机、手机常用的app蓝牙通信分享出来,希望一起学习呀!
手机发送数据到单片机实现
首先进入其网站,这需要 _ _ (你懂的),当然也可以用App Inventor广州服务器。这里可以参考其他文章。进入后可以看到Appinventor分为界面设计(Designer)以及代码逻辑块(Blocks),可以在右上角切换中英文。
- 首先是界面设计,不用太华丽,当然也不要像我这样难看。利用左栏的布局(Layout),可以整理按钮(Button)和标签(Label)的位置。如果要使用蓝牙还要在连接(Connectivity)里面加入蓝牙客户端(BluetoothClient)。
- 之后是逻辑块设计,首先是选择蓝牙以及断开蓝牙的列表选择框以及按钮逻辑设计,思路就是在手机app启动时,列表选择框(选择蓝牙)的启用为真,按钮(断开)的启用为假。选择蓝牙时将蓝牙客户端的地址及名称显示出来供用户选择。
这样基本的蓝牙通信界面就出来了(先不要喷呀!)做到这里请先试试效果,程序不可能在你写好每个功能后,一运行,然后简直完美。程序需要逐渐壮大,一个功能一个功能的测试,这应该也是软件工程的一个基本思想。
在整个界面的上面有一个连接(Connect)选项,推荐使用AI伴侣,要求手机下载一个Appinventor的app,然后手机和电脑在同一个局域网下,扫描二维码就可以在线调试看效果了。是不是有点小激动呀!
上面没有错误后只需加入这类的简单代码块就可以控制单片机了(发送数据)。记得配合单片机的串口通信代码(外加蓝牙)。
单片机发送数据到手机实现
但是万一我们需要单片机发送给手机呢?这里我踩了好多坑,网上这方面的教程几乎找不到。这也是这篇文章的重点,首先我们考虑一下如果我们一直执行数据接收,数据一定会乱套的。这样我们需要先用app发送一个数据,然后手机app方面开始执行接收数据程序,单片机则根据接收到的数据发送相应的数据。这样就可以一起配合完成数据通信了,并且不会乱套。
而假如要一直更新某个数据怎么办呢?单片机方面可以在while(1)里面循环判断接收的数据,然后确认是否发送某个变量的值。而手机app则可以通过定时器在间隔指定时间执行指定函数,发送数据(相当于控制码,控制要接收什么数据),然后接收单片机的数据。(没错,我自己也迷糊了,可以看下面的代码块,一目了然)
- 在组件里面加入定时器,然后设置定时间隔单位ms,这样每隔500ms就会执行计时器计时函数块。
2.在代码逻辑块中加入如下图代码块,具体原理上面已经解释。
(
更新1(之前没注意这个问题):
问题:这里因为定时器设置的启用定时(启用定时指一开始就定时,一直定时是指不止定时执行一次),所以会在还没有连接蓝牙客户端时就开始运行上面的代码块。
解决方案:所以需要在”当Screen,初始化“那个代码块下添加设置定时器启用假,相应的在“当列表选择框1选择完成”那个代码快下添加设置定时器启用真。
更新2: 这里省略了全局变量的定义块,大家自己找找这个块吧!然后省略了设置标签值为全局变量的代码块,有了这个就可以显示出全局变量了。
)
3.之后是根据手机app编写单片机的串口通信程序,如果按照上面的代码块,则单片机的程序应该为:
while(1)
{if(接收为1){发送指定变量值;}if(接收为0){发送另一个指定变量值;}
}
到了这步就可以下载试试了。文采不好,有什么问题一起交流。
2020.5.20:
找到之前的一个麦克拉姆轮小车的蓝牙APP程序 (只有发送数据到单片机上的功能):
大家评论我都看了,大部分问题集中在App Inventor的配置与前期使用上,而这篇文章初衷是希望解决单片机发送数据到APP这个关键问题上。
同时因为作者已经很久没有接触App Inventor了,原因详见https://blog.csdn.net/qq_40515692/article/details/100639331,所以也不会再更新App Inventor的入门使用。/ w \
所以希望读者通过评论和网上其他资料解决入门问题。当然如果没有解决,作者还是很欢迎大家继续评论讨论!
常见问题汇总:
1. 打开连接控制端后是一整块黑屏 ?
在手机设置->蓝牙里面,有一个不常用类型设备可以与买来的蓝牙模块配对,密码一般是1234,配好了再重新打开弄好的app就可以与蓝牙连接了。 总之就是需要根据你手机的蓝牙设置匹配一下,这样APP才能够检测到。
实在没有成功,你可以网上随便下一个蓝牙APP,根据你手机的蓝牙设置匹配一下,然后用下的那个APP确认连接(连接成功,蓝牙模块的指示灯闪烁速度会发生变化),确认可以正常连接后(硬件基本没问题),就再自己参考参考别人的教程或上面的教程写appinventor的程序,然后用自己写的APP连接,测试程序。
2. 507 错误?
如果是和HC05通信,HC05没有修改主从模式,应该不会出现这个问题。
出现这个问题,我现在推测的原因是手机-手机,手机-电脑等可能的连接方式时,因为蓝牙连接只能在服务器与客户端之间连接,所以会出现507错误。
3. 一次多个数据的发送接受?
详见评论:
接收单字节无符号数是:比如我下位机发个0x1D7(471),APP就接收个471吗?那我要发好几个数并接收这几个数,是用那个接收无符号字节到列表(字节数)那个控件吗?
经过我的测试接收无符号字节到列表(字节数)可以用来接收下位机发来多个数据,我那个是用多个传感器采集数据正好可以用那个控件。
Appinventor 单片机 手机蓝牙通信实现相关推荐
- 入坑树莓派(2)——树莓派4B与手机蓝牙通信
入坑树莓派(2)--树莓派4B与手机蓝牙通信 1.引言 2.步骤 2.1.蓝牙配对 2.2.蓝牙连接准备 2.3.蓝牙连接 3.参考网址 1.引言 在入坑树莓派(1)中已经搞掂了可视化问题.现在继续开 ...
- 快速实现单片机和手机蓝牙通信
Core和手机通过Ble蓝牙进行通信 重磅更新! 一.实现功能 二.实现机制 三.完整代码 四.演示 重磅更新! shineblink.com 已推出免开发App,开发者无需做任何安卓或IOS开发,即 ...
- App inventor arduino 手机蓝牙通信实现
写下这篇文章是为了记录我学习App inventor及制作蓝牙通信app的过程,接下来我会从零开始一步一步搭建这个app,本篇文章适用于刚刚接触app inventor的人. 第一步,首先点击屏幕右上 ...
- 单片机蓝牙模块与手机蓝牙通信(6)小结
安卓版本不同,代码细节会不同,要耐心根据提示修改调试,必要看看官方文档和百度. 明明已经调试通过,版本不同就报错问题是学习者要克服的心理最大关.前面5篇是按照2022.3月下载版本,API17. 下面 ...
- 掌控板ESP32与手机蓝牙通信mind+ appinventor图形编程
- 树莓派蓝牙与手机APP通信
文章目录 前言 一.树莓派的蓝牙基本配置 二.安装pybluez库 1.安装pybluez的必要编译环境 2.示例传输代码 3.运行文件 4.可能存在的问题 4.1 无法连接蓝牙 4.2 命令端口显示 ...
- HC-05(ZS-040)蓝牙模块使用详情(蓝牙模块配置、手机蓝牙控制单片机、蓝牙与蓝牙之间的通信)含51、32程序
HC-05是一款主从一体化的蓝牙模块,因此其使用起来比较方便,只需要进行简单的配置即可. 本文就手把手的介绍小白入手模块后如何使用. 对于模块使用:1.蓝牙配置→2.手机与蓝牙的传输→3.手机通过蓝牙 ...
- Android Studio制作手机App:通过手机蓝牙(Bluetooth)与STM32上的低功耗蓝牙(HC-42)连接通信,实现手机端对单片机的控制。
背景: 本文的内容是针对单片机蓝牙模块(HC-42)开发的手机App.在这之前,我想先声明一点,手机与手机间的蓝牙连接方式"与"手机与HC间的蓝牙连接方式"是不一样的.原 ...
- android 手机与单片机之间的蓝牙通信
刚好碰到这蓝牙通信方面的项目,上网也看过其他人在蓝牙这方面写的博客,但大多都不全,给一些初触蓝牙的开发者造成一定的麻烦,自己当初也费了不少劲.所以把自己参考网上的一些资料用Android studio ...
最新文章
- 爬虫准备工作1-Java写入字符串到txt文档
- 喜报!清华社《晓肚知肠:肠菌的小心思》荣获“2018年度中国好书”奖
- Linux dmesg命令
- 砥志研思SVM(二) 拉格朗日乘子法与KKT条件
- 如何在DevSecOps道路上快速、安全地抵达终点
- 聚类算法 距离矩阵_谱聚类
- midl会议_2020年医学图像处理领域值得关注的期刊和会议
- 信息学奥赛一本通 1839:【05NOIP提高组】谁拿了最多奖学金 | OpenJudge NOI 1.9 04:谁拿了最多奖学金 | 洛谷 P1051 [NOIP2005 提高组] 谁拿了最多奖学金
- 软考信息安全工程师学习笔记汇总
- 微信封杀下的互联网江湖
- 【免费毕设】ASP.NET+SQL通用作业批改系统设计(源代码+论文)
- 使用Apache + knewcode,用传统C++构建Web网站
- advanced installer 使用常见问题整理
- linux(ubuntu)下安装postgresql+pgAdmin4
- 日本研发5nm取得重大进展,和美国远离EUV,ASML陷入众叛亲离境地
- 红黑树时间复杂度为什么是O(logn)?
- Material UI 带复选框表格获取选中值(索引)
- Centos7 常用的命令
- 如何管理和使用哪些命令操作MySQL数据库?(基本操作,SQL语言,DDL,DML,DQL,DCL,Windows字符和图形界面MySQL安装)
- mstar Android解锁,年轻人的新宠 当贝小投影C2解锁各种观影姿势