步骤1:示例构建
如果您只是在这里进行说明,则可以跳过此步骤,但是逐步进行可能会使您更加清楚。。
首先,我是将建立一个示例项目,然后我将尝试解释其工作原理以及如何复制蓝牙通信。我们将构建一个便携式温度传感器,该实时传感器将实时提要发送到您的智能手机。该构建可以在一个锂电池上运行数天,并轻松演示BLE的优势。
您可以将该模块用作杯垫来隔离饮料,并在饮料到达瓶中时立即收到通知。最佳温度。因为如果您要喝40度以上的茶会很麻烦。
您唯一需要的硬件是ESP32开发板和数字温度传感器。我的电路板支持外部电池,因此我使用从旧设备中回收的 3.7v锂电池使该项目可移植。
硬件
温度传感器的连接很简单。红线连接到3.3v,黑线连接到地(gnd),黄线连接到GPIO 2,在我的板上标记为D9。在红色和黄色电线之间连接一个4.7k欧姆的电阻。我没有使用电阻,而是使用了传感器随附的3针可插拔端子。它具有一个内置的上拉电阻。
li-po确实应该使用JST连接器进行连接,但是我不愿意购买它,所以我只是将一些(母对母)跳线插入了连接器中,并焊接了另一对电池端子。这样可以实现可靠的连接和临时的电源开关。
现在,作为项目附件,我正在使用从较大的薄片上切下的聚苯乙烯泡沫塑料磁盘。这使得绝缘体更好。另一个小得多的磁盘卡在顶部,但稍稍偏向侧面。这是为了包裹多余的电线,这样它们就不会在整个地方晃来晃去。大量使用胶水和传感器探针的小孔后,即可开始使用该软件。
软件
如果您尚未安装arduino IDE,请转到此链接下载。默认情况下,arduino软件不附带各种ESP32板的板定义。要让他们访问此链接并以zip格式下载文件。您需要将它们解压缩到以下位置:
C:/Users//Documents/Arduino/hardware/espserrif/ESP32
其中是您PC上的用户名。确保各种文件在ESP32文件夹下可用,并且不在另一个文件夹下。
现在,如果您启动arduino软件并转到 tools-》 boards ,则向下滚动时应会看到各种ESP32主板。
大多数数字温度传感器使用OneWire协议与微控制器通信,因此我们需要获取库。 转到草绘-》包括库-》管理库并搜索 onewire 并安装太多作者的库。您不需要onewire集线器。忽略它。
现在,您可以下载并打开此步骤附带的代码( temperature-example.ino )。
如果您使用的传感器与我不同,则必须相应地更改代码。替换getTemp()下的代码。只需以
Return ;
的形式返回最终温度,其中包含温度的浮点数在哪里。
插入板子,从工具下面选择正确的板子和端口,然后单击上载。
如果代码拒绝上传,请断开传感器的连接并将GPIO 0接地。上传后恢复连接。
您的ESP现在应该向全世界大喊咖啡的温度,但您需要能够理解它的人。
Android应用
对不起,iPhone用户(。..并非如此)。
从此处下载apk并安装。当您启动该应用程序时,您会看到一个非常简单的界面。
如果收到错误消息“不支持广告”,请单击“确定”并忽略它,但是如果收到“不支持BLE”消息,则说明您的手机没有蓝牙4.0或更高版本,并且将无法运行该应用程序。
请确保手机上的蓝牙功能已打开,然后单击“开始扫描”,只要esp处于有效范围内且已开机,则您应该接收到一定温度值。
可能的错误:
-1000 ::这表示您的设备找不到ESP。确保蓝牙已打开,然后尝试重新启动ESP。
SNA ::这意味着您的手机正在从ESP接收数据,但ESP本身在GPIO 2上找不到温度传感器。请确保连接牢固,请查看是否正在使用正确值的电阻。仔细检查电路板原理图,确认您已连接到GPIO 2,而不是连接到标记为D2的引脚。
步骤2:说明
例如名为“气象站”的设备可以在其下进行维护,例如“温度”,“湿度”和“风”。当另一个BLE设备(如您的智能手机)扫描设备时,它将看到气象站,并且在连接到它时,它将能够接收与不同服务相对应的数据流。
目前可供我们使用的库(用于ESP32)使我们能够创建一个信标,其他人可以发现,但仅此而已。我们无法创建服务,也无法连接任何设备。
因此,我如何在不创建服务的情况下发送数据,就是采用一种类似于WiFi协议的技术,称为信标填充。这意味着我将在信标名称本身中包含要发送的数据。这样一来,我就可以播发数据,而无需其他设备连接到信标。
ble.begin(beaconMsg); //beaconMsg is the advertised name
我们正在使用SimpleBLE库来创建一个信标,其名称为ESP格式。其中,“ ESP”始终在名称开头保持不变,并且每隔100毫秒就会由getValue()函数返回的最新数据替换。
float getValue(){return sensorValue;}
Android应用会查找以“ ESP”开头的BLE设备名称,一旦找到,它就会拆分名称并仅从末尾显示数据。
通信只是一种方式,应用程序不会发回任何东西。
步骤3:结论
最终,这种方法不能替代正确实现的BLE库,但它可能足以完成一些项目,直到Arduino完全支持BLE。希望此Instructables对您有所帮助。
一个大的感谢DFRobot.com向我发送了以下产品:
ESP32 FireBeetle Board
FireBeetle Expantion Shield
DS18B20温度传感器
-
BlueTooth
+关注
关注
3文章
213浏览量
61573 -
ESP32
+关注
关注
18文章
971浏览量
17218
发布评论请先 登录
相关推荐
评论