与 M5Stack 和智能手机的双边蓝牙通信

电子说

1.3w人已加入

描述

M5Stack 是与 Arduino 兼容的开源开发套件(参见图 1)。它可用于非常快速地创建应用程序。该套件包括主机、USB type-C 电缆和端口连接电缆。它配备了TFT-LCD,您可以通过它查看文本、绘图和图像。四个侧面都有连接到GPIO端口的连接器,在本项目中不会使用。电源由 AXP192 芯片处理。电池容量为 390 mAh,保证了良好的自主性,尤其是在不使用屏幕时。该设备还具有 SD 卡插槽和小型扬声器。可以在官方网站上找到很多其他信息。

蓝牙通信

图 1:M5Stack 的优雅美学

在正确下载其库后,可以使用 Arduino IDE 对 M5Stack 进行编程。在 Arduino IDE 中安装 ESP32 Boards Manager 后,还必须实现 M5Stack 库。

蓝牙及其应用

蓝牙是在两个设备之间交换数据和信息的最常用技术之一。虽然它的稳定性和节能性并不出色,但如今有很多系统采用它。此方法用于传输文件和信息、视频、图像和音乐,以及管理鼠标和键盘以及一般的短距离广播。

项目目的

本文介绍的项目旨在展示 M5Stack 的巨大可能性及其一般功能。用户可以根据自己的需要进行修改。最重要的方面是充分了解其操作背后的理念,以便能够在其所有组件(包括软件和硬件)中扩展系统。该设备不提供任何外部连接,因为所有功能均由 M5Stack 硬件执行。事实上,草图同时使用按钮、声音和蓝牙,以及彩色屏幕。这是一个简单的清单,突出了这个小物体的巨大潜力,由于有一个小的内部电池,它甚至可以在没有电气连接的情况下工作。该项目的功能如下所示,也可以在图2:

如果 M5Stack 从智能手机接收到“A”代码,它的屏幕就会变白。

如果 M5Stack 从智能手机接收到“B”代码,它的屏幕就会变红。

如果 M5Stack 从智能手机接收到“C”代码,其屏幕将变为绿色。

如果 M5Stack 从智能手机接收到“D”代码,它的屏幕就会变成蓝色。

如果您按下 M5Stack 上的“1”键,智能手机会收到“Key A”消息。

如果您按下 M5Stack 上的“2”键,智能手机会收到“Key B”消息。

如果您按下 M5Stack 上的“3”键,智能手机会收到“Key 3”消息。

从智能手机到 M5Stack,反之亦然,使用 Google Play 商店中的众多应用程序之一发送字符串和信息。通过按下三个键,您可以获得设备本身产生的相同数量的声音。

蓝牙通信

图 2:应用程序功能

草图

源代码非常简短,附在本文后面。它是用 Arduino IDE 编写的,但通过在开头包含“M5Stack.h”文件来使用 M5Stack 库的一些功能。它提供了 M5Stack 的多项功能,例如按键压力管理、声音生成、蓝牙和屏幕着色。整个草图很小,要清晰简单。请记住,setup() 函数在固件执行期间仅重复一次,而 loop() 函数在此草图中每 100 毫秒循环执行一次。已启用行号显示,以便您可以对程序的每一行进行注释,如图 3 所示。现在,让我们检查源程序中最重要的部分:

第 1-2 行:这些行包含库“M5Stack.h”和“BluetoothSerial.h”。它们包含这两个附加元素的函数原型。

第 3 行:它创建了 BluetoothSerial 类型的 SerialBT 对象。它的工作方式与传统的串行连接完全一样,并且非常强大。

第 5 行:新的蓝牙会话立即以设备名称“M5Stack”开始。这显然可以由程序员修改。

第 6-7 行:一个新的 M5Stack 会话立即开始。

第 10 行:检查 BT 线上是否有智能手机发送的数据。

第 11 行:读取 BT 串行线上的字符。

第 12-19 行:接收到的命令类型决定了显示器的照明颜色。

第 21 行:更新按钮状态所需的功能。

第 22–33 行:按下 M5Stack 上的三个按钮之一会导致在 BT 线路上发送一条带有不同声音的特定消息。

蓝牙通信

图 3:顺序行编号便于理解程序。

现在,让我们检查一些相当感兴趣的程序行,以便对设备进行编程:

SerialBT.begin(“M5Stack”):该程序行启动蓝牙通信会话,为 BT 设备命名为“M5Stack”。搜索蓝牙设备时会显示在智能手机上,如图 4所示。

char ch = SerialBT.read():此函数从蓝牙线路读取一个字符。

SerialBT.println(“Key A”):它在蓝牙线路上发送一串字符。

M5.Lcd.fillScreen(GREEN):将 M5STack 的整个屏幕涂成绿色,在这种情况下。

M5.BtnA.isPressed():如果按下 M5Stack 的第一个按钮,则返回“TRUE”的布尔函数。

M5.Speaker.beep():在 M5Stack 上产生一个简单的哔声。

M5.Speaker.tone(1500, 200):产生持续 200 毫秒的 1,500-Hz 音调。

蓝牙通信

图 4:M5Stack 被智能手机识别为蓝牙设备。

要检查 BT 线上是否存在数据,使用以下代码:

if (SerialBT.available ()) {

char ch = SerialBT.read ();

if (ch == 'a' || ch == 'A')

M5.Lcd.fillScreen(白色);

…………..

…………..

}

相反,要检查是否按下了 M5Stack 的三个键之一(BtnA、BtnB 或 BtnC),使用以下代码:

如果(M5.BtnA.isPressed()){

…………..

…………..

}

该程序的其余部分非常简单且非常直观。您只需转录源代码,编译它,然后将其上传到设备。如果没有错误,它将立即开始执行。

智能手机上的蓝牙应用

必须在智能手机上设置并下载应用程序才能使系统正常工作。它管理双边蓝牙通信。当然,您也可以在配备 BT 密钥的 PC 上使用软件。为了测试系统,我们选择了“Serial Terminal via BT (FREE)”应用程序,它非常轻巧且易于使用。它在 Play 商店中可用,并且不会占用大量内存空间。此应用程序的一个特殊功能是它能够说话。事实上,多亏了语音输出功能,这个应用程序会用它的声音扫描它收到的字符串。可以通过设置菜单激活或停用此功能。此应用程序与“Arduino IDE 串行监视器”非常相似,但可以在智能手机上运行。可以在条目中设置行尾字符。当然,

执行

使用新创建的系统非常简单。只需打开设备并加载软件。按钮检测是实时执行的。图 5显示了运行中的设备。要从智能手机发送消息,必须启动“通过 BT(免费)的串行终端”应用程序或其他等效应用程序。因此,输入相关的字符串或字符,然后按 Enter。M5Stack 屏幕将改变颜色。相反,要从 M5Stack 发送命令,只需按下屏幕下方的三个按钮之一。该消息将立即收到并显示在电话应用程序上。

蓝牙通信

图 5:运行中的系统

结论

M5Stack 是一个不错的设备和一个非常强大的开发系统。它基于ESP32,确保安全运行。它已经装在一个优雅的外壳中,这为开发人员节省了大量的设计工作。用户可以根据自己的不同需求修改设备的功能。有很多可能性。例如,您可以将 LED 二极管连接到 ESP32 输出以模拟更重要的负载。

附件

附在这篇文章中,你会发现一个草图。在 Arduino IDE 上安装库后,只需复制、编译并上传到 M5Stack。附件是:

m5stack BT

另请注意,Arduino IDE 将“.ino”源存储在具有相同程序标题的文件夹中。

审核编辑 黄昊宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分