Arduino 带蓝牙控制 LED!
组件和用品
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 8 | ||||
![]() |
| × | 1 |
应用和在线服务
![]() |
| |||
![]() |
|
关于这个项目
建立 Arduino 蓝牙连接!
我最近买了一个工具包来制作一个机器人,它带有一个 HC-05。因为我正在制作一个跟随机器人,所以我还不需要这个。但是,我对它还是很好奇,很想使用它——我不希望一个组件只是坐在我的桌子上。因此,我决定使用它来控制 LED,使用与 MIT 应用程序发明者一起开发的移动应用程序。
您可以通过以下链接访问 MIT 应用程序发明者:
https://appinventor.mit.edu/

此外,能够使用移动应用程序打开和关闭 LED 非常好。
要做到这一点,您根本不需要太多的先验知识,而且很容易做到。
MIT App Inventor 由 MIT 创建,以允许轻松创建应用程序。您几乎不需要编程知识就可以做到这一点 - 只需移动一些块即可。
这将起作用的主要方式是当您单击手机上的应用程序上的按钮时。然后有信号通过蓝牙通讯发送给arduino uno,arduino接收到信号。然后,我们可以对 arduino 进行编程以根据此信号进行操作。我们可以使用 MIT App Inventor 来选择发送什么信号。在这种情况下,我选择发送“0”或“1”文本。但是,您可以将其更改为发送任何您喜欢的内容。
蓝牙模块可以通过蓝牙连接,也可以通过串口通讯。因此,RX 和 TX 引脚很重要。如果您不想使用这些引脚,则必须使用软件串行库。本教程不涉及这一点。
因此,做到这一点的主要方法是使用蓝牙模块和 MIT 应用程序发明者。您必须创建一个应用程序才能使用蓝牙控制 LED。我将演示应用程序制作过程。
原理图
首先,连接很重要。蓝牙模块上有 6 个引脚。对于这个项目,我们只需要使用中间的 4 个引脚。

该图像是连接的准确表示。标签位于 HC-05 蓝牙模块的背面。 RX 引脚应连接到 arduino 上的 TX,而 TX 引脚应连接到 arduino 上的 RX。其余部分与普通组件一样:arduino 上的 GND 到 GND 和 VCC 到 5 伏电源。
HC-05-->Arduino
RX-->TX
TX-->RX
地-->地
VCC-->5v
不过,为了安全起见,重要的是首先将 RX 连接到电阻器,然后连接到 Arduino 上的 TX。然后,将 RX 连接到另一个电阻器,然后连接到 GND。
HC-05 的 GND 将连接到该电阻器,然后将转到 Arduino 上的 GND。因此,HC-05 的 RX 和 GND 都连接到 Arduino 的 GND。这将确保组件不会出现故障。
但是,由于我们使用的是分线板(具有内置电压调节器),因此即使您不遵循所描述的原理图,也不会有任何问题。
这被称为分压器电路,它对电压进行分压,其作用类似于电阻器。下图是它的示意图。虽然它也适用于 Arduino Uno,但它使用 Arduino mega 显示。
HC-05-->Arduino
RX-->TX
RX-->地
TX-->RX
地-->地
VCC-->5v

将 LED 的长 LED 连接到 Arduino 上的引脚 5,同时将 LED 的短脚连接到 GND。建议在从引脚 5 连接时使用电阻器,以避免烧坏 LED。 LED 一般只需要 1.7 伏,而不是 5 伏!将引脚 5 连接到面包板,并使用电阻连接到 LED 的长腿。我选择的是pin 5——虽然你可以选择任何pin,但也需要适当的更改代码。
LED-->Arduino Uno
正腿(长腿)-->任何你喜欢的针
负脚(短脚)-->GND

注意:上传代码时,必须确保arduino的TX和RX引脚没有连接线。上传代码后,您可以连接这些电线。 Arduino 使用 TX 和 RX 上传代码,所以那里的另一条线会干扰,并会导致错误。
如果要使用 TX 和 RX 引脚以外的引脚,则必须使用软件串行库。

应用程序
这是您在 MIT 应用程序发明者上需要的块。这相当简单。您需要一个列表选择器、两个按钮和一个蓝牙客户端,可以从“设计”部分轻松选择。
您可以随意命名组件。可以看出,我只是坚持使用简单的名称,例如 Button1 和 Button2。您可以在最右侧的窗格中重命名组件。您可以在最左侧的窗格中选择组件和设计。
中间的两个窗格用于设计和组件列表。可以看出,我采用了非常简单的设计。列表选择器是必不可少的。这就是我命名的“蓝牙”。
我们将进行编码,以便当按下此按钮时,它会显示附近的所有蓝牙设备。可以在列出的中间窗格之一中看到蓝牙客户端。它不在屏幕上,因为用户将无法看到它,但它将跟踪其他蓝牙设备。我用过的“开”和“关”是按钮。

完成设计后,您必须切换到块部分,这可以在页面的右上角完成。然后你只需要拖动块如下!在我们的手机上,在选择列表选择器上的任何内容之前,我们需要手机上所有蓝牙设备的列表。
因此,在选择任何内容之前,我们将 listpicker1 的元素设置为蓝牙客户端可以找到的地址和名称。我们刚刚要求应用程序显示所有蓝牙设备的列表。
然后,在我们选择我们的选择后,我们想要连接到它。然后,根据您单击的按钮,您希望发送“1”或“0”。它可以是您想要的任何字符。然后,根据收到的字符,我们对 Arduino 进行编程以打开或关闭 LED。我已经要求 Button1 发送“1”的文本。这是我的“开”按钮。所以,我会适当地对 Arduino 进行编程。

然后,剩下的就很简单了!您所要做的就是将 MIT 应用程序发明者配套应用程序下载到您的手机上,然后从网站上扫描一个代码,您就可以在手机上安装该应用程序了。
你只需要打开你在网站上制作的应用程序,点击连接,然后选择人工智能伴侣。然后,您只需从手机的 MIT 应用程序扫描二维码,然后您的手机上就会有该应用程序,但只是暂时的。每次要使用它时都必须扫描。它会保持打开状态一段时间,但如果您关闭它或长时间不活动,它将失去连接。
接下来,只需单击列表选择器,然后选择一个蓝牙设备。 HC-05 的密码一般为 1234 或 0000。连接到 HC-05,然后单击“ON”和“OFF”按钮(或您已命名它们),如果您已连接电路正常!
不要忘记对Arduino进行编程!这是最重要的事情。代码在页面的末尾。
一旦你学会了这一点,你就可以使用相同的原理使用蓝牙制作其他令人惊叹的项目!只需记住通过应用程序将文本从模块发送到 Arduino,然后对 Arduino 进行编程以实现某些目标!它就像对按钮编程一样简单——但是您只需要在编程时小心使用带有文本的 'char' 而不是 'int'。我犯了那个错误!接下来我打算做一个蓝牙控制的机器人,你可以用手机控制。
代码
- HC-05 和 Arduino 接口的代码
HC-05 和 Arduino 接口的代码C/C++
这是您必须在 Arduino IDE 中输入的代码。这些评论不是必需的,但我已经进行了大量评论以更好地理解,特别是对于刚开始使用 Arduino 的人。/*通过手机应用程序通过蓝牙控制 LED 的代码。MukeshArvindh 的项目。 MukeshArvindh 编写的代码。*//*如果您要复制和粘贴代码,那么在执行此操作之前不要忘记从您正在使用的草图中删除 void setup() 和 void loop() 函数,因为这些函数已经存在在这个草图中。复制粘贴注释不会导致结果或代码发生任何变化。*//*注意:此代码已多次编译和检查,并已被证明是准确的。该产品也可以按预期工作。*////蓝牙使用串行通信。所以,我们在这个草图中使用了许多串行函数。 const int LED =5;/* 声明 arduino 板的 pin 5 上有一个 LED。我们使用 const,因为我们不会改变它。您不必将其命名为 LED。你甚至可以用你的名字代替。*/char switchstate;/* 声明有一个叫做 switchstate 的变量,它将保存一个字符值。这是由于应用程序的编程,它将向 arduino 发送文本值。如果我们使用'int'而不是'char',代码将无法正常工作。*/void setup() {//这里的代码只运行一次。Serial.begin(9600);/*以一定速率开始串行通信每秒 9600 位。无论如何,这是默认速率。*/pinMode(LED, OUTPUT);//声明LED是输出。}void loop() {//此代码重复。这是我们的主要代码。while(Serial.available()>0){ //仅在Serial.available()>0时才执行的代码 /*Serial.available>0 用于检查是否有任何来自HC的读数-05 蓝牙模块。*/ switchstate =Serial.read();/*我们之前声明的字符现在被赋值——Serial.read() 的值。*///Serial.read()是读取来自 app.Serial.print(switchstate);//这会将值打印到串行监视器上.Serial.print("\n");//这会在每一个新行之后移动到下一行print.delay(15);/* 中断 15 毫秒。延迟适用于人眼,适用于某些计算机的速度,因为某些计算机会在高速时崩溃。*/if(switchstate =='1'){//检查应用程序的值是否为 '1' digitalWrite(5, HIGH); //如果是,将引脚5(LED)上的组件写高。 }else if(switchstate =='0'){//Else, if the vaue from app is '0', digitalWrite(5, LOW);//将引脚5(LED)上的组件写入低电平。}}}预>
示意图
这就是在 HC-05 和 arduino 之间形成电路的方式。

制造工艺