本帖最后由 heroe1 于 2014-1-15 10:40 编辑
铺垫了好久,废话不多说,开始我的实验。这仍然是我目标的多灯控制实验的初步。因为我用的仍然是Google写好的成品软件,不是自己定制的安卓软件。 同时实现的功能仅仅是手机发送信息给蓝牙模块,然后通过Arduino转发给PC上的Arduino软件的串口监视器。
忽然感觉自己在硬件的这条路上,有两个方面真的要提高了: (1)学习硬件的基础原理知识,能自己用贴片机、空的PCB板子、自己根据需求设计的电路图(我想集成什么模块就集成什么模块,这样我的飞控板就更小更轻了,起飞重量将大大的减小)。 (2)学习硬件的编程,当然这都是用C语言搞定的,但是好多的库文件,真的太好了,假期计划要弄一个相关的手册。 库的连接地址:http://arduino.cc/en/Reference/Libraries,可惜网上下载不到手册版的,就让我来第一个吃螃蟹。 当然飞控的核心仍然是PID算法的设计和滤波的设计。
修改蓝牙模块的参数:
蓝牙的参数包括蓝牙的名称、数据传输的波特率、配对密码等的信息。 先贴代码在解释(代码是网上找的): (1)首先使用的库是SoftwareSerial来虚拟软件的串口用来通信。这个类有自己的不足: (a)如果用软件虚拟多个串口,那么这下软件的串口在某一时刻只有一个可以接收信息。 (b)在串口中有个Read这个动作是通过中断实现的,所以这个虚拟的串口的RXD针脚要支持中断(不是所有的数字或者模拟针脚都支持中断的),所以 在Mega或者Mega 2560 中可以用来做RXD的针脚是:10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69)。 在Leonardo中可以用作RXD的针脚为:8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI)。 TXD不做限制,不涉及中断,但是不能用pin0和pin1。
真正的蓝牙与安卓手机的通信:
太高兴了,查阅了好久,基础的铺垫弄了好久,终于到结束这个专题笔记的时候了。 这里在安卓上安装的用于和蓝牙通信的软件,我用了另一款,不是说Amarino不好,只是我设计的功能用这个更好,反正最后都要自己在安卓上写软件的,测试用什么都一样。这里推荐的软件的名字是:BlueTerm。就不给连接了,去问万能的Google吧。 烧录到Arduino中,把蓝牙模块的四个针脚接好,注意蓝牙的TXD接到pin10,RXD接到pin11,这是在程序里设置好的。 注意数据传输的波特率,如果波特率不匹配就不能同步的接收数据,就会出现乱码。 BlueTerm不支持中文的输入,无所谓了,反正飞控不用中文格式的数据。 用BlueTerm连接蓝牙模块:奇迹出现了,在安卓手机端输入的信息没有任何延迟的出现在了Arduino的串口监视;同样在Arduino的串口监视器中输入的信息直接显示在安卓的手机软件中。窃喜。。。。。。 |