极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22566|回复: 8

Aruino蓝牙驱动Led灯

[复制链接]
发表于 2013-12-12 12:38:47 | 显示全部楼层 |阅读模式
本帖最后由 Keke 于 2013-12-12 12:38 编辑

     终于花时间测试了一下蓝牙shield,共享一下测试结果,我使用的是Arduino Uno板子加上蓝牙shield,先上电路图(由于找不到Frizing里面的蓝牙shield,所以用Arduino板子代替,插上shield之后接口还是一样的)。电路目的是使用蓝牙驱动Led灯的亮灭。

实验材料
Arduino兼容版 一块
蓝牙shield板 一块
蓝牙模块 一块
面包板    一块
220欧姆电阻  一块
任意颜色LED    一枚
220欧姆电阻 一个
数据线 两根


实验电路图


电路非常简单,从13号引脚到地线,中间串接220欧姆的保护电阻。

程序代码
  1. char c;
  2. int pin=13;

  3. void setup()
  4. {
  5.   Serial.begin(9600);
  6.   pinMode(pin,OUTPUT);
  7. }

  8. void loop()
  9. {
  10.   c=Serial.read();
  11.   if(c=='1')
  12.   {
  13.     digitalWrite(pin,HIGH);
  14.     Serial.write("ON");

  15.   }else if(c=='0'){
  16.   digitalWrite(pin,LOW);
  17.   Serial.write("OFF");
  18.   }
  19. }
复制代码


其实蓝牙sheild就是把蓝牙模块接到串口上,arduino程序就像是在操作串口。下载程序。切记:下载程序时,将扩展板切换开关拨至 O(外侧)状态,下载完毕时,将扩展板切换开关拨至 C(内侧)状态。因为 arduino 下载程序时会 因为有串口外部设备造成下载失败。这个开关是用来区分Arduino板子是接哪个串口的。

使用iphone或者带ipad从appstore下载软件 LightBlue 蓝牙调试软件,寻找外围设备,发现 HMSoft, 点击进入,然后点击 UUID 0XFFE0,进入,再次点击 0XFFE1。此时连接完毕。

该软件下方有三个按钮:
Read:接收的数据;
Write:iOS 向外发送数据;
Start Notify: 开始监听读写数据。
记住一定要点击Start Notify,否则无法收到蓝牙模块发回的信号。

点击Write,在ASCII栏中写入1或者0,操纵LED灯的亮和灭。由于启动了监听读写数据,蓝牙模块返回的“ON”和“OFF”会自动现实在三个按钮上方的ASCII栏中。

等下上视频。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2013-12-12 13:46:23 | 显示全部楼层
实验视频
回复 支持 反对

使用道具 举报

发表于 2013-12-12 16:03:06 | 显示全部楼层
不错,支持一下。不知道你有没有研究过从Arduino接收传感信号再通过蓝牙发送给手机?我现在玩RFID+蓝牙,需要监控感应区有RFID卡后通过蓝牙发送消息给手机打开相应应用,应用也需要主动与RFID进行通讯,也就是蓝牙串口消息要双向发,这个问题比较难办,目前是手机轮询查找RFID卡,但是有时候轮询的时侯正好用户需要操作RFID卡,两种数据混在一块没法判断。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-13 11:46:10 | 显示全部楼层
jeffliu 发表于 2013-12-12 16:03
不错,支持一下。不知道你有没有研究过从Arduino接收传感信号再通过蓝牙发送给手机?我现在玩RFID+蓝牙,需 ...

在同一个循环里面先后读取蓝牙和RFID 是否可以?或者蓝牙轮询,RFID用中断。
回复 支持 反对

使用道具 举报

发表于 2013-12-13 22:07:15 | 显示全部楼层
Keke 发表于 2013-12-13 11:46
在同一个循环里面先后读取蓝牙和RFID 是否可以?或者蓝牙轮询,RFID用中断。

对中断不了解,根据定义似乎只能对数字或模拟口的电压变化起作用,对RFID模块发出的特定串口信号能触发中断吗?现在我暂时是用轮询的方式来解决,至于信号冲突,我设了个变量isRunning,在执行一个命令之前先把这个变量设为true,执行完成后再设回false,任意命令执行之前先check一下isRunning情况,这样能减少大部分冲突,但是有时候还是会出问题,实在不知道该怎么写好了,唉。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-18 09:57:59 | 显示全部楼层
我没有写过RFID,但只要两个设备都不是阻塞式的,轮询应该是可以搞定的。同一个循环里面依次读取两个设备不就可以了。
回复 支持 反对

使用道具 举报

发表于 2013-12-18 10:32:20 | 显示全部楼层
Keke 发表于 2013-12-18 09:57
我没有写过RFID,但只要两个设备都不是阻塞式的,轮询应该是可以搞定的。同一个循环里面依次读取两个设备不 ...

主要是两个都是串口通讯,比如手机调用蓝牙查找RFID卡的时侯需要发送串口信息是这样的字节数组{0x40,0x07,0x00,0x01,0x00,0x00,0x00,0x0D},RFID卡收到这个以后就开始查卡,查到后会以0x40,0x07,0x00,0x00,0x08,0x04,0x00,0x08,0x04,0x1C,0x4F,0xBE,0xA7,0x2F,0x0D,0x0D这么一长串返回给蓝牙,其中07表示查卡功能,07后面的00表示检索到卡,后面跟的0x1C,0x4F,0xBE,0xA7就是卡号,FF表示未检索到卡,此时后面就没有卡号,长度也发生变化,如果这中间蓝牙又夹杂了读写卡的指令,可能会导致串口输出出现错位而无法识别,看说明是有校验位设计,不过对这个不懂,算了,就那么凑合用吧。

ps:你的蓝牙模块是什么版本的,我买的时侯没注意,买了个2.1的,发现普通9v碳性电池根本带不动,开机一分钟蓝牙底板的灯就黯淡得看不见了,按这个推算,我担心即使用碱性电池也够呛能支撑一天,听说4.0的是低功耗的,不知道你有没有试过效果如何。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-19 15:14:27 | 显示全部楼层
我用的是4.0的,不过没怎么测功耗,应该还好吧
回复 支持 反对

使用道具 举报

发表于 2014-10-24 21:03:10 | 显示全部楼层
怎么控制6路LED?
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-8 22:12 , Processed in 0.047856 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表