各位小伙伴好:

最近在学习使用手机发送指令,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显示状态了);

android和arduino android和arduino蓝牙实现可视化数据_串口

具体接线大家看上图;

PS:
(1)不建议大家使用蓝牙调试助手,蓝牙调试宝等乱七八糟的调试软件,我踩了很大的坑,花了不少的时间在排错上,这种类似的软件很不稳定,经常异常退出;
(2)如果只是调试的话采用PC的蓝牙配对HC-05,然后用串口工具比较靠谱,调试没问题了后续可以用MIT AI2来自己做个蓝牙客户端;

目前基本功能都是实现了,今天喝了点酒,有空再更新一下吧