Tag Archives: arduino

BlueShield v1.1改进版

蓝牙4.0串口模块BlueShield出新版本了,改动如下

  • 体积更小,18mm x 30mm
  • 天线部分做了露出处理,信号会更好一些
  • RXD/TXD的丝印做了对换,所以这个版本的串口接线方式应该是蓝牙RXD接arduino的TX,蓝牙TXD接arduino的RX
  • 模块采用沉金工艺,更环保,电气性能更佳(当然成本也上涨了。。)
  • 新增了3.3v/5v工作电压的切换跳线,默认是5V版本

模块预览图片如下

b1

b2

淘宝购买链接

Microduino-Shield BT4.0简单测试

Microduino 是 Arduino 的兼容开发板。特点是非常小巧,大概比一元硬币大点,但是又保持了原版arduino可堆叠的特性。 前几天收到了@Microduino 赠送的一片蓝牙4.0扩展板Microduino-Shield BT4.0以及Microduino-core+, 时间不是太充裕,先简单试用一下。

到手的图片如下:

microduino

图中从左到右依次为:

  • FT232R : USB转串口模块
  • Microduino-Core
  • Microduino-Core+ 3.3v版本
  • Shield BT4.0

和手头已有的板摆在一块,看上去很精致哦。附:大图

bt4.0 shield 简介

bt 4.0 shield的规格

  • 采用串口透传通讯形式
  • 3.3V供电
  • 软硬串口可通过跳线设定
  • 蓝牙协议:Bluetooth Specification V4.0 BLE
  • 支持服务:Central & Peripheral UUID FFE0,FFE1

热身: 用core+试运行blink程序

core+这片板的特点是多了一组硬串口,配置也更为强劲,之前只玩过它的简化版。这里先跑一段blink热身。

  • 打开Arduino编辑器, 选择合适的Board,这里我选了Microduino Core+ (Atmega644PA@8M, 3.3V)
  • 开菜单 file->examples->01.basic->blink, 然后Upload,一气呵成
  • 发光二极管+220欧电阻接上

实际运行效果如下

测试bt 4.0 shield

拿到这块板的时候,已经能看到bt4.0 shield相关的wiki介绍了。但是由于缺乏Quickstart之类的上手文档,我花了一番功夫才让这个板实际运作起来。

  • 首先是把板子堆叠起来,很整齐,不用飞线
    堆叠microduino
  • 这块shield默认飞线使用microduino的软串口来传输数据,也就是microduino的D9- RX、D10-TX。我刚开始没有注意到这个,走了不少弯路。下图可以看到这个细节.
    bt 4.0 shield 飞线
  • 烧录串口传输的代码,需要用到软串口, 源码见gists
  • 打开iPod Touch5,装上bluetooth 4.0调试神器LightBlue
  • 打开Lightblue,马上就找到了这块shield,名为HMSoft。连上ffe0 -> ffe1,串口的读取都是靠这一个characteristic搞定

实际操作视频:

一些感受

好的体验:

  • 小巧紧凑的堆叠,很节省空间,做原型是个很好的选择
  • 串口波特率,通信密码可配置,玩法可以丰富一些

建议再补充一些上手的文档,例如arduino的源码以及简单的调试方式,以及串口跳线的细节等等。

利用BlueShield + Microduino通过蓝牙4.0遥控led

这个例子中要演示一下如何利用BlueShield和Arduino一起配合,来达到遥控led小灯的效果。

我们准备直接使用Arduino编辑器自带的例子Examples->Communication->Dimmer,这个例子原本是利用串口输入数字,控制led的亮度。在这个基础上加上BlueShield,遥控就变得简单了。

准备材料

  • microduino一个,这相当于一个缩小版的arduino uno
  • Arduino的蓝牙模块BlueShield一块
  • 发光二极管一个
  • 220欧电阻一个
  • 面包板一块
  • 杜邦线若干

最重要的,你手上要有一个搭载了蓝牙4.0的设备比如iPhone 4S/5,iPad mini/4等等。

开始接线

由于MicroDuino和arduino uno是兼容的,所以图中以uno的图片代替。接线图如下

BlueShield + Arduino接线图

实际接线图

实拍BlueShield

测试

  • 下载软件LightBlue
  • 写入测试程序Dimmer到Arduino
  • 打开LightBlue,连上BlueShield,找到D3E60005-8F36-40D6-B2D5-C5D9F5E81869这个characteristic,输入hex例如ff,这是最亮,01是最暗的情况

演示视频

附上Dimmer的源码

BlueShield发布 — Arduino的蓝牙4.0串口透明传输模块

BlueShield

BlueShield是一块可以用于和Arduino通过蓝牙4.0串口透传的模块。

兼容设备

iPhone 5, iPhone 4S, iPad mini, iPad with Retina display (4th gen), iPad (3rd gen) or iPod touch (5th gen).

需要支持蓝牙4.0的设备方可支持

支持iOS 5.1.1及以上版本

详细说明

  • 工作于5V情况下.
  • 串口的工作波段为9600.
  • 串口每次通讯数据的最大长度为20.
  • RX的characteristic为D3E60004-8F36-40D6-B2D5-C5D9F5E81869
  • TX的characteristic为D3E60005-8F36-40D6-B2D5-C5D9F5E81869

什么是BlueShield?

BlueShield是一块支持蓝牙4.0串口透明传输模块,专为Arduino开发板设计,支持大多数Arduino开发板及衍生版本。

BlueShield能干什么?

可以让你的iOS设备例如iPhone 5, iPhone 4S等等(兼容设备请参考上文)和Arduino通过蓝牙4.0通讯,将数据通过串口透明传输。

我能用它来和Arduino, iOS设备做些什么?

  • 通过iPhone传输数据Arduino,完成遥控操作
  • 将传感器信息通过串口传给iPhone以备后续操作
  • Arduino通过iOS设备来访问互联网信息
  • 更多用法,依赖你的想象力..

使用教程

接线方式

  • 5V和GND分别和Arduino的5V和GND相连
  • RXD连接Arduino的RX
  • TXD连接Arduino的TX

注意这里由于电路板标识的原因,RX和TX的接线方式一定按照上述说明连接。

快速测试

  • 打开iOS设备的蓝牙,注意BlueShield不会出现在蓝牙设备列表中
  • 在iOS设备上下载LightBlue App,这是一个用于调试蓝牙4.0的应用
  • 将BlueShield按照上文的接线方式和Arduino连线好
  • 打开Arduino的设备电源,并开启Arduino开发软件,打开串口监视窗口(Serial Monitor),波段为9600
  • 打开应用LightBlue,此时应可以看到一个名为BlueShield的蓝牙设备,点击连接
  • 连接uuid为D3E60000-8F36-40D6-B2D5-C5D9F5E81869的服务
  • 在串口监视窗口发送串口数据,会在iOS的RX收到通知
  • 在uuid为D3E60005-8F36-40D6-B2D5-C5D9F5E81869的characteristic写入数据,将会在Arduino的串口监视窗口看到数据

开发示例源码

常见问题排除

为什么我在iOS的蓝牙设备列表看不到BlueShield?

蓝牙4.0设备是不会显示在列表中的

为什么我开启了蓝牙还是无法连接BlueShield?

请尝试关闭 -> 开启蓝牙。

外观以及布局

长宽分别为 38mm x 19mm,很小巧

BlueShield正面

BlueShield背面

如何购买

用arduino和ds18b20获取环境温度

DS18B20是一种数字温度传感器,它的外观就跟普通的直插型三极管一样。我们可以利用它获取环境温度,然后做一点有趣的小东西。见DS18B20数字温度传感器

步骤1:准备材料

  • arduino一块,我手头还是那个arduino mega 2560
  • DS18B20一个
  • 4.7k左右的电阻一个
  • 杜邦线若干
  • 面包板一块

DS18B20的外观

外观

引脚定义:

  1. GND
  2. 数据口
  3. VCC

步骤2:连线

按照下图连线,注意GND和VCC千万别接错了。

连线图

我实际连线的样子。

arduino和温度传感器的连线

步骤3:烧录程序

  • 下载OneWire代码库
  • 将OneWire代码库放到~/Documents/Arduino/libraries目录下
  • 重启arduino
  • 烧录下面程序

代码如下:

点击Upload上传至arduino

步骤4:观察效果

通电之后,就开始在串口里打印环境温度了,1秒一次。见下图,现在环境温度为24度左右,我把手指捏住DS18B20一会,温度升至26度。

温度

最简arduino

最小且最简单的arduino是什么?就是这个小小的attiny85,我在淘宝上拿了几片散的,9元一片。这可比正儿八经的arduino板儿要便宜许多。或者它的兄弟Attiny45, Attiny44也是堪用的,差不多。

直插型的attiny85
attiny85

引脚定义

pin

抛开VCC, GND, RESET几个脚不说,还有5个IO口。

  • 每个IO都可以作为输入或输出
  • 其中Pin0, Pin1可用于PWM输出
  • 另外三个可作为数字输入

为了给attiny85写入程序,我们可以利用手头的的arduino板来做这个事情

步骤1:准备材料

例如现在手上有一块arduino mega 2560.需要准备的材料如下:

  • arduino mega 2560一块
  • attiny85一片
  • 一块面包板
  • 10uF的电解电容一个(防止arduino mega 2560自动复位)
  • 一些杜邦线

步骤2:使用arduino mega 2560作为烧录工具

因为attiny85没有串口,所以需要一个烧录工具ISP (in-system programmer) 。这里利用arduino mega 2560作为ISP.

  1. 将arduino mega 2560连上电脑
  2. 打开arduino软件,我用的是1.0.3
  3. 选择菜单 File> Examples> ArduinoISP
  4. 选择菜单 Tools> Board> Arduino Mega 2560,按实际情况来
  5. 点Upload烧录ArduinoISP

步骤3:安装支持attiny85的插件

  1. 下载ATtiny85插件,github真棒
  2. 检查Sketch目录的位置, 选择菜单 File> Preferences, 我用的是mac,所以sketchbook的路径为 ~/Documents/Arduino
  3. 在sketchbook的目录下新建一个hardware子目录
  4. 将插件的master.zip解压,将其中的attiny目录复制到hardware目录,注意目录层级

以上步骤完成后,重启arduino软件,你会在Tools > Board菜单中看到新增了attiny对应的板子。

步骤4:连接attiny85到arduino mega 2560

引脚对应关系

mega2560  attiny85
D53       pin1
D51       pin5
D50       pin6
D52       pin7
Gnd       Gnd
+5         +5

将10uf的电解电容接在arduino的reset和GND之间,电容的GND对arduino的GND。

attiny85的详细引脚定义

pin

最终接线图

arduino with attiny85

步骤5:烧录程序到attiny85

  • 选择Board > attiny85(internal 1MHZ)
  • 选择file > examples > blink,点击Upload

顺利的话,你就烧录成功了。