{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# BT无线下载\n", "\n", ">这一page讲述了怎么用BT蓝牙来烧录程序到板子上,,以后再也不用拖着长长的线满地追着机器人跑了" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# HC-05\n", "\n", ">蓝牙模块BT-HC05模块是一款高性能的蓝牙串口模块。 1、可用于各种带蓝牙功能的电脑、蓝牙主机、手机、PDA、PSP等智能终端配对。 2、宽波特率范围4800~1382400,并且模块兼容单片机系统。 3、当主从模式两个蓝牙模块配对成功后,可以简单的,更改为无线的蓝牙,让您设备或者产品更高级,更时尚。 4、您可以很容易的使用提供的蓝牙手机软件\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 蓝牙干啥用?\n", "\n", "**我们得首先明白蓝牙卵用**\n", "\n", "蓝牙模块也称蓝牙串口通讯模块,原来它是和串口通讯有关,串口我们都知道,比如我平时USB-ISP烧写单片机程序,用的就是串口。但这是用导线把单片机和下载模块连接的,而蓝牙模块的作用,正是那一根导线。\n", "\n", "发送方发送的数据并不是直接到接收方,而是先到模块,经过模块的中转,再到接收方。可以看到从发送方到模块这一段,用的是无线蓝牙传输(这正是我们需要的),而从模块到接收方是用有线(其实就是把模块插上去),蓝牙模块充当“传话人”的角色。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 蓝牙串口连接\n", "\n", "![](http://s3.51cto.com/wyfs02/M01/5A/16/wKiom1T1m9jjaNyxAAJSYo9YfPc969.jpg)\n", "蓝牙模块上有五六个串口,其中主要用的是VCC&GND&RX&TX四个,也即是Serial通信的连接串口。我们在连接蓝牙模块和主体板子的时候,我们都要通过连接这四个接口来实现通信,连接方法如下:\n", "![](http://s3.51cto.com/wyfs02/M00/5A/11/wKioL1T1m2iwUZBDAAFEebozxZc035.jpg)\n", "![](http://s3.51cto.com/wyfs02/M00/5A/15/wKiom1T1mlXC9nisAAEnDPt0LV0348.jpg)\n", "![](http://s3.51cto.com/wyfs02/M00/5A/15/wKiom1T1mlXC9nisAAEnDPt0LV0348.jpg)\n", "其中板子和模块之间通讯时,TX&RX一定是交错连接的。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 设置蓝牙模块参数\n", "\n", "**工作状态**\n", "\n", "HC-05有两种工作模式,官方称为命令响应工作模式和自动连接工作模式,我们可以理解为“参数设置模式”和“正常工作模式”。在参数设置模式下,用户可以通过AT指令对蓝牙模块进行常用参数的设置,比如名称、连接密码等。正常工作模式就是按照在用户设置的参数工作,配对、收发数据。\n", "\n", "**在参数设置模式下设置模块参数**\n", "\n", "参数设置模式又是AT模式。\n", "进入AT模式: 对于HC-05设备,其蓝牙模块上有一个按钮。 在上电前按住按钮直到上电,蓝牙模块会进入AT模式,其表现为指示灯慢闪。\n", "进入AT模式后,进行设备属性设置,通过arduino程序操作,如下:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "``` c\n", "#include \n", "\n", "//初始一个软件串口 serial2(BT-Rxd, BT-Txd)\n", "\n", "SoftwareSerial mySerial(10,11);\n", "\n", "void setup() {\n", "\n", " Serial.begin(9600);\n", "\n", " mySerial.begin(115200);//设置AT模式的串口波特率--和板子匹配\n", "\n", "}\n", "\n", "void loop() {\n", "\n", " if(Serial.available())\n", "\n", " mySerial.write(Serial.read());\n", "\n", " if(mySerial.available())\n", "\n", " Serial.write(mySerial.read());\n", "\n", "}\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "随后打开串口监视器,进入NL&CR模式,输入AT,如果返回OK,则说明正确进入AT模式。如下图:\n", "![](https://img-blog.csdn.net/20180517170933880?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTAxMDI3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)\n", "随后使用[AT指令](http://www.pibot.com/pxl/bluetooth/hc-05-cmd-set.pdf)设置其属性参数,这里主要使用的有:\n", "\n", "AT+NAME=name //名字\n", "\n", "AT+PSWD=1111 //密码\n", "\n", "AT+ROLE=0 //0为从动,1为主动\n", "\n", "AT+UART=115200,0,0 //波特率\n", "\n", "传输波特率**需要和你的板子一致**,这样子才能实现笔记本烧录程序时能够通过BT烧入,所以需要查看一下你的板子的通信波特率,arduino的几款是这样子的:\n", ">uno,mega 用的是 115200 \n", "atmega328 用的是 57600 \n", "atmega168,atmega8 用的是 19200" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 电脑蓝牙驱动配置\n", "\n", "好了!正题开始了,其实前面的很重要。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 添加com口\n", "\n", "我们打开‘蓝牙设备管理’设置,win10同志你就点左下角那里,然后右键蓝牙进入设置。下拉点击‘更多蓝牙选项’,然后电机‘com端口’标签,添加一个com端,一路确定就好\n", "![](http://image.geek-workshop.com/forum/201309/17/213053yddd0w9cc55a7bwz.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 烧录程序\n", "\n", "就这么快,这就配置好了。。回到IDE上,选择端口,,啊!在这之前你要先让电脑连接BT哦,连接上了的话,模块频闪会变慢的,,然后你再选择端口,通常你会看见多了两个端口,回到刚才‘COM端口’配置窗口,会显示一个端口为‘传出’另一个为‘传入’,,我们选择传出的那个端口,然后就烧录吧!!!!\n", "\n", "**注意啊!**,,,程序开始下载的时候,需要让板子复位一下,,如下图所示\n", "![](http://image.geek-workshop.com/forum/201309/17/213901o9sg493u5zu7lgz9.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "好了,大功告成!!不过,还是挺麻烦的,烧录的时候还得复位一下,,能不能不复位啊,,有线烧录也不用啊。。我再研究研究" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }