开源LED点阵时钟/zh

来自Microduino Wikipedia
Write_data@qq.com讨论 | 贡献2016年2月22日 (一) 07:31的版本 材料清单
跳转至: 导航搜索
Language English


概述

  • 项目名称:Microduino 双色点阵级联
  • 目的:通过四个Microduino DcolorMatrix级联来实现电子万年历,同时我们在矩阵上安装DHT11传感器,用来检测温湿度。并且通过Android手机来切换显示。
  • 难度:高级
  • 耗时:5小时
  • 制作者:Microduino Studio-YLB

材料清单

  • Microduino设备
模块 数量 功能
Microduino-Core/zh 1 核心板
Microduino-USBTTL/zh 1 下载程序
Microduino-RTC/zh 1 读取时间
Microduino-BT/zh 1 手机与Core通讯
Microduino-Module Dot Matrix/zh 4 显示
  • 其他设备
USB数据线 1 供电,下载
面包板跳线 1 连接电路

文档

IIC驱动库: Adafruit-LED-Backpack-Library:https://github.com/adafruit/Adafruit-LED-Backpack-Library

图形库: Adafruit-GFX-Library:https://github.com/adafruit/Adafruit-GFX-Library


注意:如果需要画图,必须把Adafruit-GFX-Library也拷贝到IDE的libraries里

DHT11库:_07_Microduino_Sensor-IDE/tree/master/arduino-1.0.6-win

RTC库:_06_Microduino_RTC_PCF8563

测试程序:LED_bluetooth_time

调试

硬件搭建:

  • 步骤一:如何级联

Microduino DcolorMatrix采用IIC驱动,由于在I2C总线上的每个设备都必须有一个唯一的地址,因此需要更改,否则你会得到很多奇怪的现象。我们采用HT1633K有3个引脚可以更改地址。分别是A0、A1、A2,默认为0x70。

更改地址: 正面找到三个A0 、 A1、A2焊接跳线。每一个是用于在地址进行硬编码。如果跳线短接焊,即设置地址。 A0设置最低位为1的值, A1设置中间位为2的值和A2设置高位为4的值,最后地址是16进制值为0x70 + A2 + A1 + A0 。因此,例如,如果A 2被短路和A0被短路,该地址是16进制值为0x70 + 4 + 1 = 0X75 。如果只有A1被短路,地址是16进制值为0x70 + 2 =0x72。因此可以设置的地址为0x70 , 0X71 ,0x72 ,0x73 , 0x74 , 0X75 , 0x76 , 0x77。 我们的示例程序的IIC地址分别为:0x70、 0X71 、0x72 、0x73 。

程序实现: 需要在begin()函数里设置四个独特的I2C地址,如”begin(0x70)、begin(0x71)、begin(0x72)、begin(0x73)、”,并且声明四个不同的对象,如“Adafruit_BicolorMatrix matrix1= Adafruit_BicolorMatrix();”。

  • 步骤二:将更改了IIC的地址底板级联,只有按顺序从右往左接插好就行。
  • 步骤三:接上核心模块(Microduino Core+Microduino FT232R+Microduino RTC+Microduino BT)

注意:因为一块控制板最能叠加两块Microduino模块。BT采用软串口9、10,所以需要将9,10级联,玩家可根据情况更改串口。

  • 步骤四:DHT11传感器接法

这里我们将DATA连接到Microduino的D3引脚,在程序中定义为“#define DHT11PIN 3 //DHT11 PIN 3”,玩家也可以自己更改引脚。

  • 叠加点阵,注意点阵方向,有文字的一端朝下(HT16K33芯片在上)。


软件调试: 步骤一:下载使用到的库,将其解压到IDE的libraries文件夹内。

步骤二:下载示例程序并打开,编译通过后选择好板卡直接下载。

如果成功在点阵屏上就可以显示时间了。

步骤三:使用手机切换显示界面(这里面对Android手机,用的是蓝牙2.1设备),客户端在程序文件夹里面:Microduino_Martix.apk

  • 打开手机蓝牙
  • 打开应用程序,搜索蓝牙设备,连接到你的蓝牙设备。连接成功就可以控制,否则进行重新连接。
  • 成功就可以通过button来控制。需要长按按钮,等界面切换就可以松开botton。可以显示日期、星期、温湿度。等界面显示完毕又返回现实时间。
DcolorMatrix ble.jpg
  • 程序实现原理
    • 蓝牙控制原理

通过串口传输数据,手机上按钮只有在按下情况下发送指定字符,如果松开就就发送“0”字符,这样在没有按下情况下,将会一直显示时间。

    • 时钟显示

通过读取RTC时钟,将特定的数值以坐标形式显示出来就行。闪速的秒钟,用过判断秒是否能被2整除,如果能就显示,否者不显示。

    • 滚动图像

通过改变显示坐标的值就可以实现滚动效果。通过vosetlcd(“char”,long,color,time)函数来实现。 “char”:要显示的字符串 long:字符串长度*8 color:字体颜色(LED_RED,LED_GREEN,LED_YEELOW) Time:移动速度

    • 温度通过 lcdtemphun(temp,color1,color2,"o","C");函数来显示

Temp:温度值 color1:温度值颜色 Color2:温度符号颜色

  • 湿度通过 lcdtemphun(hum,color1,color2,"%"," ");函数来显示

Hum:湿度值 color1:湿度值颜色 Color2:湿度符号颜色

结果

通过实验我们实现了电子万年历,检测温湿度并显示。能够较好的用Android手机来切换显示。

通过蓝牙调整时间

如果RTC长时间不供电的话,时间将会出错,但是为了避免每次需要通过下载程序的办法来调整时间,我们采用BT(4.0)结合IOS设备来调节时间。

程序

下载:Microduino_ble_time

注意:你需要将BT模块和Core核心模块叠加在同一个板子上进行调试,因为LED点阵级联的是电源、地、IIC四个引脚,而BT默认的则是软串口(D4、D5),因此需要将BT模块和Core核心模块叠加在一起。

  • 前往Appstore下载Lightblue,使用方法参考:Microduino_BT串口透传数据到IOS设备
  • 发送数据格式为:t:year,month,day,hour,minute,week,注意年份暂时涉及两位就行,比如2014年只要写14就行。
  • 当时间设置完毕,屏幕上会显示“Time is OK”。这时你发现时间就更换好了。

当然你也可以通过Android设备来调试,前提是要4.3以上的系统才能支持BT(4.0)模块,同时你需要下载一个蓝牙串口助手来进行调试。发送数据格式和上面一样。

注意问题

  • IIC地址更换
  • DHT11接线顺序
  • 点阵安装方向
  • 蓝牙串口连接

视频