各位小伙伴好:
最近在学习使用手机发送指令,Arduino通过蓝牙模块接收数据的,对于玩Arduino的小伙伴来说,也许起步都是从避障小车,循迹小车等项目入手,这些项目基本是通过传感器即可实现。但是实现人机交互必然是进阶的必要路径,接下来给大家介绍下这几天的心得吧,希望对大家有所帮助;
实验环境:
(1)Windows10;Windows11在实际操作过程中发现对于USB-TTL的支持有点问题,所以自己的电脑从windows11降级到了Win10;
(2)Arduino Uno开发板;
(3)HC-05蓝牙模块;
(4)Arduino IDE;
(5)App Inventor 2离线版;
(6)杜邦线数条;
本想着是做通过手机控制小车的前进,后退,左转,右转,停止等动作的,首先摸清实现方式,只要原理通了,其他的问题不大;所有目前是通过蓝牙串口通讯的方式向Arduino传输数据,Arduino接收到数据后判断不同的数值来决定执行那些动作,基本想法是这样,我们接着来看吧;
`#include <SoftwareSerial.h>
// Pin10 TXD
// Pin11 RXD
SoftwareSerial BT(10, 11);
int val;void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
Serial.println("BT is ready!");
BT.begin(9600);
}void loop() {
if (BT.available()) {
val = BT.read();
Serial.println(val);
if (val==1) {
digitalWrite(LED_BUILTIN, HIGH);
}
else {
digitalWrite(LED_BUILTIN, LOW);
}
BT.write(val);
}
}`
以上这段是Arduino的代码,主要是定义了TXD和RXD的接口,蓝牙以及串口的通讯码率;此处为9600,当我们从蓝牙的TXD接收到的值为1时,点亮Arduino的板载LED,否则不关闭LED,同时把收到的值传回发送端(RXD),方便调试;
Arduino(左)与HC-05(右)的对接:
(1)5v-----Vcc
(2)GND----GND
(3)TXD----RXD(交叉对接)
(4)RXD----TXD(交叉对接)
(5)EN与STATE不接线(EN:使能接口,主要是用来HC-05模块进入AT模式,即设置模式,使用USB转TTL的时候需要用需要按住EN的按钮接入才行;STATE这个是蓝牙的状态显示,HC-05板子上已经有LED显示状态了);
具体接线大家看上图;
PS:
(1)不建议大家使用蓝牙调试助手,蓝牙调试宝等乱七八糟的调试软件,我踩了很大的坑,花了不少的时间在排错上,这种类似的软件很不稳定,经常异常退出;
(2)如果只是调试的话采用PC的蓝牙配对HC-05,然后用串口工具比较靠谱,调试没问题了后续可以用MIT AI2来自己做个蓝牙客户端;
目前基本功能都是实现了,今天喝了点酒,有空再更新一下吧