目录

一、准备工作

二、APP设计

三、成品演示

四、本次设计中的问题和解决方法


一、准备工作

首先我们要做一个准备工作,因为我们用的是esp32单片机,我们需要下一个开发软件,但且就是用arduino吧,IDE如何下载以及环境如何配置,请看下方链接。https://blog.csdn/solar_Lan/article/details/99176570

首先,我们找到相应的程序,将其编译并上传到esp3单片机中。这样我们就完成了单片机方面的所有准备。然后我们进行APP的编程。其实到了这一步,用手机就可以搜索到单片机的蓝牙了。

二、APP设计

APP的编程较为简单。首先是页面的设计。

包含文本输入框,清空按钮,选择列表框。不可见组件分别是计时器和蓝牙客户端。计时器的功能是为了保证蓝牙在接收和发送的时候保持有序。我们先看蓝牙的连接程序

蓝牙的发送设计较为简单,这里不多解释详情请看下图。

蓝牙的接收稍稍有些复杂。我们需要用来计时器。让蓝牙整源有序的接收数据。相关的内容如下。

这样我们的APP基本就做好了。我们打开手机蓝牙,在电脑端插上esp32单片机,串口随便选择,然后我们打开串口助手。第1步我们需要让手机蓝牙和进行第一次配对,然后我们会写在APP端显示到连接成功,波特率我们都要调整为11520。只有在这个情况下,我们的接收和发送才是正确的和完整的。以下是接收和发送的情况。

三、成品演示

手机APP发送——>单片机接收

这里解释一下,第三幅图,接收显示的是abc123所对应的阿斯特码值,它是十六进制的。

单片机发送——>APP接收(文本格式)

单片机发送——>APP接收(十六进制格式)错误实例

出现这样的问题,是因为APP端发送的不是十六进制数造成的,我们将要发送的数据改为十六进制的再试一下

单片机发送——>APP接收(十六进制格式)正确实例

这不就好起来了吗

四、本次设计中的问题和解决方法


问题1:在从手机端发送数据的时候,单片机接收不到或者是接收到的信息为乱码。
问题2:单片机端发送数据,手机端接收不到或者是接收到的信息为乱码。解决底下两个问题的方法,其实很统一。

第1步我们要放弃51单片机,我要单片机的晶振并不是12赫兹,所以通信起来是存在误差,或者根本不能正常通信。我们将单片机换为esp32这种比较可靠的单片机。第2步,我们要将波特率调成11520,只有在这个速率下,才能实现正常通信​。

如果你在设计的过程中遇到了其他问题,欢迎在下方留言。

更多推荐

手机APP开发之MIT Appinventor详细实战教程(十二),蓝牙与单片机双向交互通信的设计过程,以及设计中遇到的问题和解决方法。数据传输支持十六进制