Arduino篇—如何使用蓝牙模块

课程目标
了解蓝牙模块及其通信原理学习如何实现手机、arduino及蓝牙模块之间的通信过程实现手机控制小车运动相关知识
**蓝牙:**是一种支持多个设备之间短距离通信(一般10m左右)的无线电技术。蓝牙的特点:
1、蓝牙技术的适用设备多,无需电缆,通过无线使电脑和电信连网进行通信。
2、蓝牙技术的工作频段全球通用,适用于全球范围内用户无界限使用。
3、蓝牙技术的安全性和抗干扰能力强。
4、传输距离较短。
5、通过跳频扩频技术进行传播
**蓝牙串口模块:**蓝牙串口模块是基于spp协议(serial portprofile),能在蓝牙设备之间创建串口进行数据传输的一种设备,广泛应用在具有蓝牙功能的电子设备上。
蓝牙串口模块通信模型:
电路搭建
所需材料
arduinouno * 1
hc-05蓝牙串口模块 * 1
led * 1
杜邦线若干
电路连接
程序编写
练习一:手机控制led亮灭
根据上面的电路接线图,编程实现通过手机发送指令,来控制led的亮和灭。
图形化方式:
代码方式:
/* 项目名称:手机控制led * 项目时间:2022.03.30 * 项目作者:mrx */int ledpin = 7;void setup(){ serial.begin(9600); pinmode(ledpin,output);}void loop(){ while(serial.available()) { char bluetooth=serial.read(); if(bluetooth=='a') { serial.println(turn on); digitalwrite(ledpin,high); } if(bluetooth=='b') { serial.println(turn off); digitalwrite(ledpin,low); } }}手机端设置:
app初始界面:
设置流程:
连接完成后,在命令行进行对应的指令输入,那么就可以发现led能够根据预设的指令进行变化了。
练习二:蓝牙小车
实现通过手机蓝牙输入指令来控制小车进行对应的运动控制。
电路连接:
图形化方式:
代码方式:
/* 项目名称:蓝牙控制小车运动 * 项目时间:2022.03.30 * 项目作者:mrx */int in1 = 2; // in1 connected to pin 4int in2 = 4; int ena = 3; int in3 = 6; // in3 connected to pin 6int in4 = 7; int enb = 5; int value = 255; // the duty cyclevoid forward() { digitalwrite(in1,high); digitalwrite(in2,low); analogwrite(ena,value); digitalwrite(in3,high); digitalwrite(in4,low); analogwrite(enb,value);}void back() { digitalwrite(in1,low); digitalwrite(in2,high); analogwrite(ena,value); digitalwrite(in3,low); digitalwrite(in4,high); analogwrite(enb,value);}void right() { digitalwrite(in1,low); digitalwrite(in2,high); analogwrite(ena,value); digitalwrite(in3,low); digitalwrite(in4,high); analogwrite(enb,0);}void left() { digitalwrite(in1,low); digitalwrite(in2,high); analogwrite(ena,0); digitalwrite(in3,low); digitalwrite(in4,high); analogwrite(enb,value);}void stop() { digitalwrite(in1,low); digitalwrite(in2,low); analogwrite(ena,0); digitalwrite(in3,low); digitalwrite(in4,low); analogwrite(enb,0);}void setup(){ serial.begin(9600); for (int i = 4;i <= 10;i++){ pinmode(i, output); }}void loop(){ while(serial.available()) { char bluetooth=serial.read(); if(bluetooth=='a') { serial.println(forward); forward(); } if(bluetooth=='b') { serial.println(bback); back(); } if(bluetooth=='c') { serial.println(left); left(); } if(bluetooth=='d') { serial.println(right); right(); } if(bluetooth=='e') { serial.println(stop); stop(); } } }手机app设置:

新能源汽车频繁起火,平均每日超7例!原因是什么?
人工智能已可以用于三维医学影像,快速准确的做出医疗诊断
探究应用于电机驱动的隔离运放单端和差分输出对采样性能的影响
如何在DragonBoard 410c平台上移植web服务?
集成电路相关的微电子等专业招生会迎来哪些新变化?
Arduino篇—如何使用蓝牙模块
植物冠层分析仪的功能是什么
Waymo推出全自动驾驶网约车服务
三星“死扛”华为,三星S7 edge降价怒对华为mate9Pro!
科普|传感器在工业自动化发展中的重要性分析
NB-IoT与eMTC和LoRa三者之间谁会获得物联网的拥抱
医疗行业的难题有了新解法
畅谈鼎实创新核心竞争力以及工业网络发展思考等方面
如何将通过命令通道$FCT_CALL写入文件
光电传感器技术和应用
深圳市中心迎来首批RoboTaxi 元戎启行正式开放运营
MWC深度观察:可穿戴设备要“转正”了
长三角高分遥感数据应用服务中心揭牌仪式在上海举行
脉冲发生器的分类及特点
低压灯带恒流驱动ICSM15101T低成本应用方案替换亚成微