查看: 5176|回复: 0

Arduino+蓝牙模块+安卓手机通信的初步实现(2)

[复制链接]
  • TA的每日心情
    开心
    2014-2-20 10:23
  • 签到天数: 45 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2014-1-15 10:31:52 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 heroe1 于 2014-1-15 10:39 编辑

    摸索了好久,查阅了好久终于可以动手弄了。想了想还是不要着急写具体的实现,还是科普一下基础的UNO的板子的知识。为了方便就弄大神的帖子吧,所以这篇是转文。
    2.jpg

    3.jpg
    蓝牙参数点:
    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手机连接:
    4.jpg

    Arduino 调试源代码:
    5.jpg
    这段代码的解释:
    首先设置串口的传送的速率是9600波特,在loop循环中程序不断的读取串口的信息,就是蓝牙连接的pin0和pin1两个针脚。
    如果蓝牙模块接收到字符A,那么这个字符就通过蓝牙的TXD发送到了Arduino的RX针脚中,程序判断时字符A就向串口的OUTPUT发送一句话。
    但是如果是LEONARDO型号的板子,那么PC~Arduino和蓝牙模块~Arduino这两个串口就会争用,导致不能通信,具体谁占用谁,还得好好的学习电路基础知识,看懂LEONARDO的电路原理图,这个后续。

    将代码复制粘贴到IDE,烧录程序到Arduino:

    6.png
    Arduino蓝牙与Arduino通信的实现
    首先下载Android的蓝牙管理软件 Amarino(我在其它的博文中有介绍),安装上Amarino 后,启动Android的蓝牙,打开Amarino客户端
    7.png
    在右下角Add BT Device中就能找到蓝牙的名字
    8.png
    在点击connect后,会弹出输入PIN的弹框,蓝牙默认PIN为1234,这里就没有截图说明了。
    如图为连接成功后的界面:
    9.png
    点击Monitoring 可以看到蓝牙的连接信息如图
    10.png
    连接成功之后,就是要看数据发送时候正常。这里直接点击send就可以实现发送
    11.png
    参考Arduino代码,当Arduino接收都A符号时,就会在COM输出对应内容,则表明蓝牙通信正常 如图
    12.png


    这是大神的实验过程,不过到我这里就不行了,因为我们的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用电源供电也不能接受数据,这里有点不懂,留作以后讨论。


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-20 03:21 , Processed in 0.114308 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.