本帖最后由 heroe1 于 2014-1-15 10:39 编辑
摸索了好久,查阅了好久终于可以动手弄了。想了想还是不要着急写具体的实现,还是科普一下基础的UNO的板子的知识。为了方便就弄大神的帖子吧,所以这篇是转文。
蓝牙参数点:
1.蓝牙核心模块使用HC-06从模块(HC-05的是主从在一起的,可以设置主从),引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接 2.led指示蓝牙连接状态,闪烁表示没有蓝牙连接,常亮表示蓝牙已连接并打开了端口 3.输入电压3.6~6V,未配对时电流约30mA,配对后约10mA,输入电压禁止超过7V! 4.可以直接连接各种单片机(51,AVR,PIC,ARM,MSP430等),5V单片机也可直接连接 5.在未建立蓝牙连接时支持通过AT指令设置波特率、名称、配对密码,设置的参数掉电保存。蓝牙连接以后自动切换到透传模式 6.体积 3.57cm*1.52cm 7.该蓝牙为从机,从机能与各种带蓝牙功能的电脑、蓝牙主机、大部分带蓝牙的手机、Android、PDA、PSP等智能终端配对,从机之间不能配对
Android与蓝牙模块连接方法:
VCC:接Arduino的5V。
GND:接Arduino的GND。 TXD:发送端,一般表示为自己的发送端,接Arduino的RX。
RXD:接收端,一般表示为自己的接收端,接Arduino的TX。 注释:大神的是UNO型号的板子,这么连是可以的,但是我的是LEONARDO,不能这么玩。
正常通信时候本身的TXD永远接设备的RXD!正常通信时RXD接其他设备的TXD, 自收自发:顾名思义,就是自己接收自己发送的数据,即自身的TXD直接连接到RXD,用来测试本身的发送和接收是否正常,是最快最简单的测试方法,当出现问题时首先做该测试确定是否产品故障。也称回环测试。 线接好后,把Arduino上电后,蓝牙的指示灯是闪烁的,表明没有设备连接上。 如图所示,LED常亮,已经和Android手机连接:
Arduino 调试源代码:
这段代码的解释: 首先设置串口的传送的速率是9600波特,在loop循环中程序不断的读取串口的信息,就是蓝牙连接的pin0和pin1两个针脚。 如果蓝牙模块接收到字符A,那么这个字符就通过蓝牙的TXD发送到了Arduino的RX针脚中,程序判断时字符A就向串口的OUTPUT发送一句话。 但是如果是LEONARDO型号的板子,那么PC~Arduino和蓝牙模块~Arduino这两个串口就会争用,导致不能通信,具体谁占用谁,还得好好的学习电路基础知识,看懂LEONARDO的电路原理图,这个后续。
将代码复制粘贴到IDE,烧录程序到Arduino:
Arduino蓝牙与Arduino通信的实现
首先下载Android的蓝牙管理软件 Amarino(我在其它的博文中有介绍),安装上Amarino 后,启动Android的蓝牙,打开Amarino客户端
在右下角Add BT Device中就能找到蓝牙的名字
在点击connect后,会弹出输入PIN的弹框,蓝牙默认PIN为1234,这里就没有截图说明了。 如图为连接成功后的界面:
点击Monitoring 可以看到蓝牙的连接信息如图
连接成功之后,就是要看数据发送时候正常。这里直接点击send就可以实现发送
参考Arduino代码,当Arduino接收都A符号时,就会在COM输出对应内容,则表明蓝牙通信正常 如图
这是大神的实验过程,不过到我这里就不行了,因为我们的Arduino板子的型号是不同的。
今天终于有了一块UNO的板子了,同时拥有我的LEONARDO,也买了一块电源这样就不用通过USB让PC对板子供电了。 测试的结果是: (1)UNO的板子,由于USB串口是非集成的,如果我占用了pin0和pin1那么在软件烧录的时候就会报错,这也就说明了,pin针脚的优先级高于USB,就是说你占用了pin针脚,那么USB串口就不可用了,所以烧录会报错。我拿掉pin针脚的接线然后就能烧录了。 烧录完成后,不管是USB供电还是电源供电,我在Android软件端的输入口输入A,就能在Android的输出口看到Hello I am amarino,说明这是的串口只有pin针脚在工作,USB串口没有工作。 (2)LEONARDO就是USB串口的优先级很高,占用pin0和pin1后,正常烧录程序,并且pin针脚看似不工作的状态,发送数据任何地方都收不到。断开USB用电源供电也不能接受数据,这里有点不懂,留作以后讨论。
|