作为adruino的自学小白,我喜欢在这博客中学习提升自己。发布该博客可能会用很多前辈的影子。我本身是想把我得学习过程分享给想入门的小白借鉴。

话不多说,材料准备走起。

hc05蓝牙模块一个

l9110s两路电机驱动模块一个或l298n电机模块(两者区别是L298N模块内置5v电压输出口)

两个小型电机

首先是蓝牙模块的配置问题

我使用的电脑调试软件是xcom(如下图)

然后就是用USB转TTL模块蓝牙模块连接

接线是情况VCC-VCC,GND-GND,RXD-TXD,TXD-RXD

之后按住蓝牙模块的复位键将USB转TTL模块插入电脑后松开复位键会看到蓝牙模块的led会间隔2s左右慢闪,这说明蓝牙模块进入AT调试模式。此时将电脑上的串口调试软件的波特率调到38400,停止位1,数据位8,校验位None,打开串口;此时发送AT返回的是ok则证明串口连接成功。

接下来根据AT指令集设置,输入下面指令

AT+ROLE=0           //0表示主模式,1表示从模式,2表示回环模式
AT+NAME="BLUENAME"  //配置蓝牙模块名称,也可以不打引号,返回OK
AT+PSWD=1234        //设置蓝牙配对码
/*这里设置 自动连接工作模式的波特率,也就是通信的当蓝牙接收发送数据模式的波特率
我们现在是AT模式下波特率只能是38400,这个改不了*/
AT+UART=115200,1,0 
AT+RESET            //重启模块,可以看到LED等以0.5s间隔闪烁

模块配置好后用手机连接前要将USB转TTL模块vcc的线接到5v口上才能用手机连接成功。

手机上的蓝牙串口我推荐用spp蓝牙串口。以下是我常用控件,你们自己百度下载

 小车连接图(我用的是L9110s电机驱动模块)

adruino uno 可以用nano板代替毕竟便宜

 注意l9110s模块工作电压在6v到12v之间

adruino uno 和nano板的电源接口是VIN(正极)GND(负极)

其中我发现蓝牙模块与手机连接后频繁开的原因是输入电压太低会导致在发送一个信号(如启动电机,这是本来能维持蓝牙模块的电压输送给电机后会导致蓝牙模块电压过低重启也就是看到的断开连接)

另外程序下载到开发板上时蓝牙模块的RX TX要从板子上拔掉,程序上传成功后在接回;程序上传是板上的vin不能接入电源。

检查接线不要将正负极接反就好了

程序部分

unsigned int Motor_A_1A=10;       //控制A电机的PWM引脚  一定改成自己用的
unsigned int Motor_A_1B=11;
unsigned int Motor_B_2A=5;       //控制A电机的PWM引脚  一定改成自己用的
unsigned int Motor_B_2B=6;
char Motor_Order;                //定义一个字符型变量存储串口输入命令
void setup()
{Serial.begin(115200);            //打开串口,输入你编写的蓝牙模块波特率Serial.println("/*****开始驱动*****/");pinMode(Motor_A_1A,OUTPUT);   //设置两个驱动引脚为输出模式pinMode(Motor_A_1B,OUTPUT);pinMode(Motor_B_2A,OUTPUT);   //设置两个驱动引脚为输出模式pinMode(Motor_B_2B,OUTPUT);
}void loop()
{while(Serial.available()>0)    //检测串口是否有命令{Motor_Order=Serial.read();  //将命令存储在变量中switch(Motor_Order){//发送字符1电机正转case '1' : analogWrite(Motor_A_1A,250); analogWrite(Motor_A_1B,0);analogWrite(Motor_B_2A,250); analogWrite(Motor_B_2B,0);Serial.println("小车前进");break;//发送字符1小车前进case '2' : analogWrite(Motor_A_1A,0); analogWrite(Motor_A_1B,250);analogWrite(Motor_B_2A,0); analogWrite(Motor_B_2B,250);Serial.println("小车后退/");break;//发送2小车后退case '3' : analogWrite(Motor_A_1A,250); analogWrite(Motor_A_1B,0);analogWrite(Motor_B_2A,0); analogWrite(Motor_B_2B,250);Serial.println("小车左转");break;//发送字符3小车左转case '4' : analogWrite(Motor_A_1A,0); analogWrite(Motor_A_1B,250);analogWrite(Motor_B_2A,250); analogWrite(Motor_B_2B,0);Serial.println("小车右转");break;//发送字符4小车右转default  : analogWrite(Motor_A_1A,0); analogWrite(Motor_A_1B,0);analogWrite(Motor_B_2A,0); analogWrite(Motor_B_2B,0);Serial.println("小车停止");break;//发送字符0小车停止}}
}

有人可能会说怎么不封装下,额,我懒~~~~~

好吧,下面是我简单函数化了一下

unsigned int Motor_B_2A=5;
unsigned int Motor_B_2B=6;
unsigned int Motor_A_1A=10;       //控制A电机的PWM引脚  一定改成自己用的
unsigned int Motor_A_1B=11;
char Motor_Order;                //定义一个字符型变量存储串口输入命令
void setup()
{Serial.begin(115200);            //打开串口Serial.println("/*****开始驱动*****/");pinMode(Motor_A_1A,OUTPUT);   //设置两个驱动引脚为输出模式pinMode(Motor_A_1B,OUTPUT);pinMode(Motor_B_2A,OUTPUT);   //设置两个驱动引脚为输出模式pinMode(Motor_B_2B,OUTPUT);
}
void forward()
{analogWrite(Motor_A_1A,250); analogWrite(Motor_A_1B,0);analogWrite(Motor_B_2A,250); analogWrite(Motor_B_2B,0);
}void back()
{analogWrite(Motor_A_1A,0); analogWrite(Motor_A_1B,250);analogWrite(Motor_B_2A,0); analogWrite(Motor_B_2B,250);
}void turnleft()
{analogWrite(Motor_A_1A,250);analogWrite(Motor_A_1B,0);analogWrite(Motor_B_2A,0);analogWrite(Motor_B_2B,250);
}void turnright()
{analogWrite(Motor_A_1A,0);analogWrite(Motor_A_1B,250);analogWrite(Motor_B_2A,250);analogWrite(Motor_B_2B,0);
}void pstop()
{analogWrite(Motor_A_1A,0);analogWrite(Motor_A_1B,0);analogWrite(Motor_B_2A,0);analogWrite(Motor_B_2B,0);
}
void loop()
{while(Serial.available()>0)    //检测串口是否有命令{Motor_Order=Serial.read();  //将命令存储在变量中switch(Motor_Order){case '1' :forward();Serial.println("/*****小车前进*****/");break;case '2' : back;Serial.println("/*****小车后退*****/");break;  //car for backcase'3':turnleft;Serial.println("/*****小车向左转*****/");break;case'4':turnright;Serial.println("/*****小车向右转*****/");break;case'0' :pstop;Serial.println("/*****停转****/");break;//发送其他字符电机停转}}
}

本篇是小白我的学习过程笔记,轻点喷

adruino uno 蓝牙小车制作及蓝牙连接频繁断开原因相关推荐

  1. STM32蓝牙小车制作全过程---刚入门的小白也能会

    首先我本人也是学stm32满打满算也才半个学期的小白,经过半学期的学习总感觉理论啥的虚了点,所以就打算搞辆蓝牙小车来练练手,这就有了现在的这篇文章,来分享一下制作小车时的一些问题和经验希望能帮助到更多 ...

  2. ESP Wi-Fi 连接异常断开原因排查分析

    此篇博客用来分析 ESP Wi-Fi 连接异常断开的现象. 1 Wi-Fi 连接的过程 以下是一段 Wi-Fi 顺利连接过程的 log.其中可以清晰的看出 state 的转移(init-> au ...

  3. html5 网络断开,网络连接频繁断开是怎么回事

    当我们上网的时候,如果发现系统桌面右下角的网络连接图标频繁提示"网络连接已断开",或者是一会儿打红叉,一会儿又没红叉?这时候很多朋友会认为是网线出了问题,当然网线头做的不工整,会导 ...

  4. APP Invertor 制作BLE蓝牙APP 控制esp32蓝牙小车

    APP Invertor蓝牙小车制作 1.插件下载 1.1.导入插件 2.APP界面展示 2.1 .可视化编程 3.esp32 蓝牙代码 4.实测效果 4.1 APP控制端 4.2 蓝牙接收端   经 ...

  5. 2个红外传感器循迹原理_8个蓝牙小车的设计方案

    蓝牙技术是一种无线数据和语音通信开放的全球规范,它是基于低成本的近距离无线连接,为固定和移动设备建立通信环境的一种特殊的近距离无线技术连接.当蓝牙邂逅智能车会摩擦出怎样的作品呢,整理了8个蓝牙小车的设 ...

  6. 蓝牙小车(可调速版)

    系列文章目录 一.小车1.0--基本蓝牙小车(仅蓝牙遥控小车运动方向,本篇) 二.小车2.0--蓝牙小车PLUS(可以蓝牙控制方向+蓝牙直接调节车速) 三.小车3.0--避障小车(超声波+舵机云台) ...

  7. 蓝牙小车(基于stm32f103c8t6/HAL库/CubeMX/超详细,包含代码讲解和原理图)

    系列文章目录链接 一.小车1.0--基本蓝牙小车(仅蓝牙遥控小车运动方向,本篇) 二.小车2.0--蓝牙小车PLUS(可以蓝牙控制方向+蓝牙直接调节车速) 三.小车3.0--避障小车(超声波+舵机云台 ...

  8. 【问题解决】ESP32烧录固件重启后,串口无法连接电脑,反复连接和断开

    开发板:ESP32-DevKitC or NodeMCU 模组:ESP-WROOM-32 问题: 烧录 Hello World 工程的固件运行正常 烧录带WIFI的 station 工程的固件重启后, ...

  9. 基于51单片机制作的蓝牙小车

    基于51单片机制作的蓝牙小车 这是本人(小菜鸡一枚)于大一寒假所做的小玩意,以展现我这几月所学,这也是我发的第一篇博客,准确来说这可能是我搞51单片机的巅峰所做了,因为部长说以后要学stm32开发板了 ...

最新文章

  1. Nginx详解五:Nginx基础篇之HTTP请求
  2. 分布式系统——网络监视系统zabbix3.4.2,以及向zabbix中添加被监视主机(一)
  3. 指哪分哪:交互式分割近期发展
  4. 这份代码是不是应该有BUG!!
  5. github大学课程_GitHub基础教程:如何使用GitHub课程
  6. 关于lock_guard使用细节
  7. nginx 代理到其他端口_「从单体架构到分布式架构」请求增多,单点变集群(2):Nginx...
  8. oracle 表复制 long,关于oracle的数据库的数据Long和Number的转化字段
  9. leetcode 904 水果成篮
  10. 如何在Windows7系统下进行C盘的扩容
  11. 直通车执行营销方式方法
  12. 解决VS Code 运行 “conda : The term ‘conda‘ is not recognized as the name of a cmdlet, function, script “
  13. win10支持8t 硬盘_最快最简单!Win10 正式版硬盘安装方法详解
  14. 对比俩个List之间的差异
  15. Wrong JPEG library version :library is 80,caller expects 62
  16. Linux中time()函数用法
  17. Python、C语言技能树测评
  18. java对象转xml文件
  19. 腾讯云申请免费SSL证书
  20. web前端期末大作业:基于HTML+CSS+JavaScript制作鲜花礼品在线购物网站设计(19页)

热门文章

  1. 希沃课件同步显示服务器异常,希沃白板文件误删怎么找回来 恢复课件的方法...
  2. 联想E431笔记本wifi驱动安装
  3. matlab角接触球轴承和圆锥滚子轴承轴承寿命校核
  4. 亚马逊联盟和亚马逊影响者到底有什么区别?
  5. Android内存泄漏查找和解决adb shell dumpsys meminfo packagement
  6. Ubuntu 上VS Code更新后 Remote-SSH 无法连接服务器:failed to install the vs code server!
  7. 【MATLAB常用函数总结】生成随机数-poissrnd函数
  8. 超融合,在春天绽放!
  9. 51单片机 独立按键控制LED 实现的三人表决器
  10. Vue(组件间通信:props、自定义事件、全局事件总线、消息订阅与发布)