- 什么是HM10 BLE 4.0模块?
- HM10和其他蓝牙模块之间的区别
- 所需组件
- 电路原理图
- Arduino蓝牙控制器(HM-10模块)Android应用程序
- 使用HM-10蓝牙模块对Arduino UNO进行编程以控制LED
蓝牙是最流行和易于使用的无线技术之一。在过去的几年中,蓝牙标准已经进行了许多升级,以跟上当前的技术与未来的技术并满足用户的需求。从蓝牙版本1.0到蓝牙版本5.0,发生了许多变化,包括更高的数据速率,低功耗的IoT使用能力,更高的安全性等。要学习蓝牙通信,可以使用许多模块来进行。与微控制器接口。这样的蓝牙模块是基于蓝牙4.0的HM10。
什么是HM10 BLE 4.0模块?
HM10是串行BLE模块(低功耗蓝牙),旨在用于低功耗应用,即使使用硬币大小的电池也可以持续使用很长时间。该HM10是蓝牙4.0模块基础上,德州仪器CC2540或CC2541蓝牙低能耗系统的SoC(片上系统)。该模块的固件和设计由济南华贸科技有限公司制作和管理。该模块带有串行/ UART层,使该设备能够与不同的微控制器接口。 HM10是创建简单连接并将其与iBeacon一起使用或用作iBeacon的理想选择。
HM10已成为非常流行的蓝牙4.0 BLE模块。HM10仅是基于Bluetooth 4.0的模块,因此它不会与Bluetooth 2 / 2.1模块(例如HC-05,HC-06和其他蓝牙模块)连接。HM10通过通过串行UART连接发送的AT命令进行控制。HM-10是蓝牙低功耗(BLE)模块,欲了解有关BLE的更多信息,请点击链接。还了解如何将nRF24L01模块用作Arduino的BLE模块。
HM10和其他蓝牙模块之间的区别
HM10具有的主要区别是蓝牙版本。HM10是蓝牙4.0模块,因此它具有所有蓝牙4.0版功能,例如速度,吞吐量和范围。在高达24 Mbps的低能量/低功耗的HM10提供的数据速率。与此相伴的是,HM10在开放空间中提供100米的距离范围。与其他蓝牙模块(例如HC-05,它是基于蓝牙2.0的模块)相比,HM10当然比HC-05更好。与HM10相比,HC-05仅提供3 Mbps,后者要少得多。
蓝牙模块HC-05和HC-06便宜且易于接口,因此在制造商和业余爱好者中仍然很受欢迎。我们还使用HC-05 / 06进行了许多项目,并将它们与许多其他微控制器相连接:
- 蓝牙模块与ESP8266的连接:控制LED
- 将蓝牙HC-05与STM32F103C8蓝色药丸连接:控制LED
- HC-05蓝牙模块与AVR微控制器的接口
- 将蓝牙模块HC-06与PIC微控制器接口
- 使用Arduino和蓝牙的语音控制LED
- 使用Raspberry Pi的声控灯
在此链接中可以找到所有与蓝牙相关的项目。
今天,我们将HM-10 BLE模块与Arduino Uno接口,以使用蓝牙协议无线控制LED。开/关命令将由智能手机发送。
所需组件
硬件:
- Arduino UNO
- HM10蓝牙模块
- 电阻(1kΩ,470Ω)
- 跳线
软件:
- Arduino IDE
- Arduino蓝牙控制器(HM-10模块)Android应用
- Android智能手机
电路原理图
连接Arduino和HM-10蓝牙模块的电路图 非常简单,如下所示。
在开始项目之前,请确保您的HM-10模块是正版HM-10模块。有大量中文克隆的HM-10模块可用。要确定正版HM-10模块和克隆的HM-10模块之间的区别,只需查看HM-10板上存在32KHz的晶体振荡器即可。如果存在晶体振荡器,则它是真正的HM-10模块,您无需更改固件。但是,如果看不到水晶振荡器,则说明它是HM10克隆模块,您需要更改HM-10克隆的固件。。在不更改HM-10固件的情况下,您既不能使用AT命令访问HM-10模块,也无法将其与智能手机配对。在这里,我们还使用了克隆模块,因此在将其与Ardruino连接之前,我们先刷新了其固件。为了更改克隆的HM-10模块的固件,只需按照我们有关如何更改或刷新HM-10的固件的教程即可。
Arduino蓝牙控制器(HM-10模块)Android应用程序
Arduino蓝牙控制器(HM-10模块)是一个Android应用程序,可从Google Play商店免费获得。这个程序为HM-10 BLE模块提供了简单易用的界面。在测试过程中,它能够快速找到HM-10,并立即与HM-10连接。该应用程序具有一些很酷的功能,例如您可以创建按钮并使用自定义名称和功能对其进行自定义。在这里,我们将介绍如何在此蓝牙控制器应用程序中创建两个按钮,以打开和关闭与Arduino连接的LED。
如何设置Arduino蓝牙控制器(HM-10模块)Android应用程序:
- 从Google Play商店下载该应用。
- 该应用程序的主页如下所示,您可以在其中找到以下功能:连接设备,搜索图标,删除图标,设备状态,发送文本,添加模板等。通过单击搜索图标或通过单击开始搜索设备到右上角的三个点,然后选择 连接设备 。
- 屏幕上将显示所有可用的设备。选择正确的HM-10模块。
- 现在,HM-10将成功连接,您将能够在屏幕顶部看到HM-10的状态。
- 现在,您可以通过在文本部分上书写并直接按箭头发送来直接发送文本或字符串,也可以创建自定义模板。
- 创建自定义模板可以节省时间。单击右上角的“ + ”图标并填写详细信息。“名称”是按钮名称,“文本”字段是将发送到HM-10的文本或字符串,“描述”只是按钮如何工作的按钮描述。
- 首先,创建一个用于打开LED的按钮,并为其赋予绿色。按钮将向HM-10发送“ N”字母,这将打开连接到Arduino的LED。 同样,为LED关闭创建一个按钮,并为其赋予红色。。按钮将向HM-10发送“ F”字母,这将关闭连接到Arduino的LED。
- 现在,您可以看到在“文本字段”下方创建的两个按钮。现在,如果您想控制LED,则只需单击按钮。
这样就完成了设置android app来控制HM-10模块的设置。现在,我们将从对Arduino Uno进行编程开始,以从Android App获取字符。
使用HM-10蓝牙模块对Arduino UNO进行编程以控制LED
与往常一样,带有演示视频的完整程序可以在本教程的结尾找到。为该项目编程Arduino UNO不需要太多的工作,也不需要任何库。您可以使用硬件串行和软件串行库。如果您使用的是软件串行,则只需包含软件串行库,否则可以继续进行硬件串行。在此项目中,我们使用SoftwareSerial。因此,首先要包括软件序列库。引脚Rx和Tx连接在Arduino的2和3引脚上。
#包括
这两个变量用于存储从HM10和android应用接收的数据。
字符appData; 字符串inData =“”;
只需以9600波特率启动硬件和软件序列,然后打印一些调试语句即可。LED引脚设置为输出,最初关闭。
Serial.begin(9600); Serial.println(“ HM10序列号从9600开始”); HM10.begin(9600); //将HM10串行设置为9600波特率 pinMode(13,OUTPUT); //板载LED digitalWrite(13,LOW); //关闭LED
开始监听HM10端口并读取字符串,直到HM10可用并发送数据为止。将数据保存在字符串中。
HM10.listen(); // //监听HM10端口, 同时(HM10.available()> 0){//如果HM10发送了某些内容,则读取 appData = HM10.read(); inData = String(appData); //以字符串格式 Serial.write(appData); 保存数据 }
要使用AT命令调试HM10,只需编写以下代码行,它将把字符串发送到HM10。
if(Serial.available()){//读取用户输入(如果有)。 延迟(10); HM10.write(Serial.read()); }
如果接收到的字符串为“ F”,则在串行监视器上打印一条消息,然后关闭指示灯;如果接收到的字符串为“ N”,则在串行监视器上打印一条消息,并以500ms的延迟闪烁消息。
如果(inData ==“ F”){ Serial.println(“ LED OFF”); digitalWrite(13,LOW); //关闭LED 延迟(500); } if(inData ==“ N”){ Serial.println(“ LED ON”); digitalWrite(13,HIGH); //关闭LED 延迟(500); digitalWrite(13,LOW); //关闭LED 延迟(500); }
至此完成了有关如何使用Arduino和BLE HM10 Blutooth 4.0模块控制LED的完整教程。再次记住,如果您有原装的HM10模块,则不需要刷新其固件,可以立即使用它。但是,如果您正在使用克隆的HM-10模块,则请在克隆的HM10 BLE模块上刷新固件。如果您有任何疑问或建议,请在下面发表评论或写信给我们的论坛。