亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

带 DS3231、BME280、BH1750 和 ESP01 的 LED 矩阵 NTP 时钟

组件和用品

Arduino Nano R3
× 1
Maxim Integrated DS3231MPMB1 外设模块
Ebay 上的便宜的,去掉了电阻以防止电池爆炸
× 1
SparkFun 大气传感器突破 - BME280
Ebay 便宜的
× 1
BH1750 光传感器
来自易趣
× 1
Max7219 32x8 LED 矩阵
× 1
电容 10 µF
× 2
乐鑫 ESP8266 ESP-01
如果您想通过 NTP 设置时间,则可选
× 1
LM3940IT3.3
ESP01 的 3.3v LDO 稳压器
× 1
SparkFun Level Shifter Board
ESP01 需要
× 1

关于这个项目

这就是让我进入 Arduino 的原因。我偶然发现了 Nick 的 LED 字钟,我想做那个。

自从下载了他的代码后,我对其进行了修改,以包含额外的传感器和按钮,并添加了一个 ESP01。

BH1750 用于根据光线条件自动调暗显示屏,并且可以在夜间关闭显示屏。 BME280 显示温度、湿度和压力。 ESP01 用于从 pool.ntp.org 获取时间。

额外的按钮可以轻松调整设置。您可以使用按钮调整光传感器设置,以及更改字体和 NTP/DST/UTC 设置。

添加了六种新字体,我使用的字体:http://dotmatrixtool.com/。

我对字时钟进行了相当多的更改,它现在有更多的字,并且已将相当多的内容移至 PROGMEM 以节省 RAM。

Nick 的项目页面:https://123led.wordpress.com/mini-led-clock/

我的代码:https://github.com/Ratti3/miniclock

代码现在已经完成,除了未知的错误和这里和那里的调整之外,我会为它做一个案例。

您需要调整光传感器代码以匹配您的光照条件,我是在靠近窗户的明亮阳光下进行编码的。

ESP01 用于通过 NTP 获取时间,ESP01 在不需要时被编码为睡眠(wifi 关闭),并通过串行唤醒以获取 UNIX 格式的时间。为方便起见,SSID 名称和密码通过 Arduino 代码传递。

此版本还具有 DST/UTC 和 BST 计算。可以通过菜单调整或禁用这些设置。

设置保存到 EEPROM,这意味着如果您关闭电源并重新打开,您通过菜单所做的更改将被保存。

这些是 Github 上的代码文件:

Github 上的代码 [https://github.com/Ratti3/miniclock]:Arduino LEDClock32x8.ino ProgmemData.hArduino ESP-01_NTP.ino LEDClock32x8_ESP01-NTP.ino ProgmemData.h 

当 ESP01 运行时,Arduino Serial 将显示:

Arduino :Sent NTP request to ESP01ESP01 :NTP request received from Arduino[attempt 1 of 3]Connecting to SSID:TheInternets....connectedSSID:TheInternets, IP Address:192.168.0.135Signal Strength (RSSI):-42 dBmSending NTP packet to:195.195.221.100 [attempt 1]Sending NTP packet to:195.195.221.100 [attempt 2]UNIX1562848457Disabling WiFi....ok 

更多图片和说明来...

综合起来:

接线:

DS3231、BH1750 和 BME280:SCL PINS =A5 SDA PINS =A4 VCC =3.3vLED 矩阵:CLK =D11 CS =D10 DIN =D12 VCC =5vSwitches:D2 - Menu D3 - Date / + D4 - Temp / - D5 - 显示选项ESP01 - 可选 D7 - ESP01 的 TX 引脚 D6 - ESP01 的 RX 引脚 

这些是您可以更改的全局变量:

//全局变量(可更改的默认值),[]括号中的数字是该值的EEPROM存储位置//时钟设置//[200]默认强度/亮度(0-15),可以设置通过菜单字节强度 =2;// [201] 默认时钟模式。默认 =0 (basic_mode)byte clock_mode =0; // [206] 定义随机模式 - 每隔几个小时更改一次显示类型。默认 =0 (off)bool random_mode =0; // [207] 定义字体随机模式 - 每隔几个小时更改一次字体。 1 =随机字体 onbool random_font_mode =0; // [208] 定义 12 或 24 小时时间。 0 =24 小时。 1 =12 小时布尔安培 =0; // 灯光设置// [202] 默认显示开/关模式,由光传感器使用。 0 =正常,1 =始终开启,2 - 始终关闭,3 - 5 =由 hours_off_1,2,3byte display_mode =5 定义; // [209] 默认自动光照强度设置bool auto_intensity =1; // 这三个定义小时光传感器可以在足够暗的情况下关闭显示,格式为 24 小时,此例程 // 在 8.00 和这些值之一之间检查字节 hours_off_1 =21;字节hour_off_2 =22; byte hour_off_3 =23;// 字体设置 - 这些是通过设置字体菜单设置的,所有默认值参见 set_font_case() 例程://[203] 默认时钟大字体 stylebyte font_style =2; // [204] 默认时钟大字体偏移调整byte font_offset =1; // [205] 默认时钟大字体列adjustmentbyte font_cols =6; // DST NTP 和UTC 设置// [210] 启用DST 功能,1 =启用,0 =禁用bool dst_mode =1; // [211] 启用NTP功能,1=启用,0=禁用bool ntp_mode =1; // 应用于DS3231之前调整NTP值的秒数,处理ESP01数据字节需要几百毫秒 ntp_adjust =1; // [213] UTC 偏移量调整,hoursint8_t utc_offset =0; // 每天 NTP/DST 同步发生的小时,如果使用 DST 模式应该保留在凌晨 2 点字节 ntp_dst_hour =2; // 重试 NTP 请求的时间 1 =35 秒(ish)总共,值 1 - 9byte ntp_max_retry =3; // 用于计算ntp()在没有收到数据时什么时候退出,值以秒为单位,乘以ntp_max_retrybyte ntp_timeout =45; // 全局常量 - WiFi 的 SSID 和密码,通过 SoftwareSerial 传递给 ESP01 // SSID 和密码的总长度不能超过 72 个字符 // 您的 SSID 名称的长度,例如 SSID =MyWifi, ssid_len =6const byte ssid_len =8; // 您的 SSID 名称,例如 MyWificonst char ssid[] ="YourSSID"; // 你的SSID密码的长度,例如password =password, pass_len =8const byte pass_len =12; // 您的 SSID 密码,例如 passwordconst char pass[] ="YourPassword";  

代码

Ratti3 的 Github
https://github.com/Ratti3/miniclock

示意图

没有 BH1750,它的连接方式与 BME280 相同

制造工艺

  1. 带有伊斯兰祈祷时间的 Arduino 时钟
  2. Arduino 带蓝牙控制 LED!
  3. 模拟式 LED POV 时钟
  4. 热胶 LED 矩阵灯
  5. 使用 Cortana 控制 LED
  6. 单 LED 矩阵 Arduino 翻转时钟
  7. 使用 Arduino Uno 控制 LED 矩阵
  8. 基于 GPS 的廉价而准确的时钟
  9. 带有滚动文本的 Arduino 蓝牙控制矩阵
  10. MAX72XX LED 矩阵显示小行星游戏
  11. 带 Arduino 的数码时钟 |最简单的设计
  12. 带 DS1302 RTC 的简单闹钟