Hi٩(๑o๑)۶, 各位深海王国的同志们,早上下午晚上凌晨好呀~辛勤工作的你今天也辛苦啦
(o゜▽゜)o☆ 今天大都督继续为大家带来系列——小学生都能玩的单片机!带你一周内快速走进嵌入式的大门,let’s go!
(9)实战:使用软串口与蓝牙APP串口通讯
通过前面八节的学习,相信大家已经对Arduino是什么、怎么用很熟悉了。那么恭喜你离入门Arduino就差最后一步了。接下来最后两节,我们将实际编写程序与蓝牙APP进行通信并总结一下学习Arduino时常踩的坑,大家再加把劲!
准备工作:
如果大家有兴趣自己做一个蓝牙APP,可以关注一下大都督的另一个系列
【深海王国】小学生都能做的APP?AppInventor、BLE蓝牙、Arduino联合开发你的第一个手机远程控制程序(1)
赶时间的也可以直接在「深海大都督」里回复「蓝牙APP」获取安卓安装包就可以啦。
安卓好蓝牙APP以后,需要打开手机定位和蓝牙,并且记得给权限。然后APP主页面长这样:
然后Arduino的接线如图:
Arduino | BLE蓝牙模块 |
---|---|
2 (RX) | TX |
3 (TX) | RX |
3.3V | 3.3V |
GND | GND |
所用蓝牙为BLE低功耗蓝牙,相关材料购买链接在「深海大都督」里回复「BLE蓝牙」(大都督个人购买,仅供参考,无广)。
Arduino程序:
这些程序作为参考提供给大家,用到的函数都在上节里提到啦,详见(8)软串口与SoftwareSerial库使用
1.将电脑端串口接受到的char字符指令发送给APP
#include <SoftwareSerial.h> //引用库文件
SoftwareSerial Serial1(2, 3); // 定义软串口RX为2, TX为3和软串口对象Serial1void setup(){Serial.begin(9600); //Arduino与电脑通信的波特率Serial1.begin(9600); //Arduino与BLE蓝牙通信的波特率
}void loop(){char data = ' ';if(Serial.available()){ //如果电脑串口接收到数据data = char(Serial.read()); //将电脑端接受到的数据转化为char类型Serial1.print(data); //将电脑接收到的数据发送到蓝牙APP上}
}
运行效果:
通过Arduino IDE的串口监视器发送字符’A’给APP,APP接受。
2.接受蓝牙APP串口发送过来的char字符指令
#include <SoftwareSerial.h> //引用库文件
SoftwareSerial Serial1(2, 3); // 定义软串口RX为2, TX为3和软串口对象Serial1void setup(){Serial.begin(9600); //Arduino与电脑通信的波特率Serial1.begin(9600); //Arduino与BLE蓝牙通信的波特率
}void loop(){char data = ' ';if(Serial1.available()){ //如果蓝牙串口接收到数据data = char(Serial1.read()); //将蓝牙端接受到的数据转化为char类型Serial.print(data); //将接收到的数据发送到电脑上}
}
运行效果:
通过APP发送字符’A’给Arduino,Arduino串口监视器上显示。
3.将电脑端串口接受到的String字符串指令发送给APP
#include <SoftwareSerial.h> //引用库文件
SoftwareSerial Serial1(2, 3); // 定义软串口RX为2, TX为3和软串口对象Serial1void setup(){Serial.begin(9600); //Arduino与电脑通信的波特率Serial1.begin(9600); //Arduino与BLE蓝牙通信的波特率
}void loop(){String data_S = " ";if(Serial.available()){ //如果蓝牙串口接收到数据data_S = char(Serial.read()); //将蓝牙端接受到的数据转化为char类型Serial1.print(data_S); //将接收到的数据发送到电脑上}
}
运行效果:
通过Arduino IDE的串口监视器发送字符串"ABCD"给APP,APP接受。
4.接受蓝牙APP串口发送过来的String字符串指令
#include <SoftwareSerial.h> //引用库文件
SoftwareSerial Serial1(2, 3); // 定义软串口RX为2, TX为3和软串口对象Serial1void setup(){Serial.begin(9600); //Arduino与电脑通信的波特率Serial1.begin(9600); //Arduino与BLE蓝牙通信的波特率
}void loop(){String data_S = " ";while(Serial1.available()){ //如果蓝牙串口接收到数据data_S += char(Serial1.read()); //将蓝牙端接受到的数据转化为char类型,并累加到data_S中Serial.print(data_S); //将接收到的数据发送到电脑上}
}
注:c语言中+=是代表两个变量相加,并将答案记录在左边的变量里。比如x+=y实际代表的表达式为:x=x+y。
运行效果:
通过APP发送字符串"ABCD"给Arduino,Arduino串口监视器上显示。
今天的学习到这里就差不多啦,下节就是本系列的最后一节,大都督会为大家分享一下学习Arduino时常踩的坑,看到这里的你辛苦啦,加油٩(ˊᗜˋ)و✧。
哈哈,让焦虑不再蔓延,信息不再高壁,如果你觉得这篇文章对你有帮助,就来个免费的点赞吧!
(◍˃̶ᗜ˂̶◍)✩我深海大都督正式授予你深海王国公民的身份~
(・ω< )★ 加入深海大家庭,快乐摆烂每一天!