目录

  • 1. 项目功能简介
  • 2. 硬件准备
  • 3. 源码分析
    • 3.1 NTP时间获取分析
    • 3.2 MAX7219 八位数码管驱动分析
    • 3.3 DS1302 RTC时钟模块驱动分析
    • 3.4 工程源码获取
  • 4. 效果展示
  • 更多资料

1. 项目功能简介

物联网时钟应用以安信可ESP-C3-12F模组为主控模块,外接MAX7219 八位数码管、DS1302 RTC时钟模块、5个功能按键以及两个只是灯组成。设备访问NTP服务器获取本地时间,并存储到DS1302 RTC时钟中,RTC时钟基于当前的时间计时,同时,实时时间通过数码管显示出来。设备可通过按键指示进入各种模式,模式包括:时间自动校准模式、手动校准模式、以及配网模式。
物联网时钟主要由五个功能模块组成:
a. NTP时间获取,用于时间校准
b. RTC实时时钟,用于系统计时
c. 8位数码管显示模块,用于显示当前时间或模式切换
d. 按键,用于工作模式的切换
e. LED灯,用于网络状态指示

2. 硬件准备

硬件名称 数量
ESP-C3-12F模组 1
4位阴极数码管 2
MAX7219驱动芯片 1
DS1302 RTC时钟模块 1
按键 5
LED灯 2
LED灯 2
AMS1117 1
电容、电阻 若干

3. 源码分析

整个设备源码主要分为三大块:NTP时间获取、MAX7219 八位数码管驱动以及DS1302 RTC时钟模块驱动。

3.1 NTP时间获取分析

NTP时间的获取,我们通过调用ESP32C3官方SDK中的SNTP函数库的API即可实现NTP时间的获取,具体操作步骤如下:

  1. 初始化sntp:
 sntp_setoperatingmode(SNTP_OPMODE_POLL);sntp_setservername(0, "ntp1.aliyun.com);       //配置访问的NTP服务器sntp_init();
  1. 获取时间戳并解析:
    setenv("TZ", "CST-8", 1);                        //设置中国时区——东八区tzset();time(&now);                                        //读取时间戳SNTP_SET_SYSTEM_TIME(now);localtime_r(&now, &timeinfo);                  ///解析时间戳,获取年月日时分秒周等信息

3.2 MAX7219 八位数码管驱动分析

MAX7219 八位数码管模块由MAX7219芯片以及两个4位阴极数码管组成,其中MAX7219芯片用于驱动并点亮数码管,从而实现实时时间的显示功能。
MAX7219芯片主要通过半双工的SPI总线实现驱动,在本设备中,我们通过模拟SPI总线的方法实现对改芯片的驱动。驱动该芯片主要用到的API有:

  1. 引脚初始化:max7219_spi_gpio_init(void)
 gpio_config_t max7219_io = {.intr_type = GPIO_INTR_DISABLE,.mode = GPIO_MODE_OUTPUT,.pin_bit_mask = MAX7219_PIN_SEL,.pull_down_en = 0,.pull_up_en = 0,};gpio_config(&max7219_io);
  1. 写一个字节数据:** spi_max7129_write_byte(uint8_t data) **
    uint8_t i = 0;gpio_set_level(PIN_NUM_CS, 0);for (;i < 8;i++) {gpio_set_level(PIN_NUM_CLK, 0);gpio_set_level(PIN_NUM_MOSI, data & 0X80);data = data << 1;gpio_set_level(PIN_NUM_CLK, 1);}
  1. 写数据到指定寄存器中:** write_max7129(uint8_t address, uint8_t data) **
    gpio_set_level(PIN_NUM_CS, 0);spi_max7129_write_byte(address);spi_max7129_write_byte(data);gpio_set_level(PIN_NUM_CS, 1);

最后,用户根据max7129的芯片数据手册写数据至对应的配置寄存器中,用于配置数码管的显示亮度等参数以及设置显示内容。这里我们通过配置显示检测寄存器用以检测数码管是否正常工作。
通过数据手册描述(如下图)可得,显示检测我们需要往0x0F寄存器写入0x01数据:

代码实现:

    max7219_spi_gpio_init();write_max7129(0x0f, 0x01);

3.3 DS1302 RTC时钟模块驱动分析

DS1302 RTC时钟模块主要通过同步半双工通讯串口完成驱动,该模块的驱动需要用到一根时钟线(I/O)、一根数据线(SCLK)以及一根控制线。用户根据该模块数据手册中关于驱动的时序图写驱动程序。相关驱动代码如下:

  1. 读、写以及传输接口:
 void DS1302_transferBegin(DS1302_Dev* dev);void DS1302_transferEnd(DS1302_Dev* dev);void DS1302_writeAddrCmd(DS1302_Dev* dev, uint8_t value);void DS1302_writeByte(DS1302_Dev* dev, uint8_t value);uint8_t DS1302_readByte(DS1302_Dev* dev);void DS1302_readBuffer(DS1302_Dev* dev, void* buf, uint8_t len);
  1. 时间获取以及写入接口:
void DS1302_setDateTime(DS1302_Dev* dev, DS1302_DateTime* dateTime);
bool DS1302_getDateTime(DS1302_Dev* dev, DS1302_DateTime* dateTime);
void DS1302_setTime(DS1302_Dev* dev, uint8_t hour, uint8_t minute, uint8_t second);
bool DS1302_getTime(DS1302_Dev* dev, uint8_t* hour, uint8_t* minute, uint8_t* second);
  1. 数据格式转换接口:
uint8_t bcdToDec(uint8_t bcd);
uint8_t decToBcd(uint8_t dec);

3.4 工程源码获取

源码获取链接:https://gitee.com/seahi007/esp-c3_-io-ttimer.git

4. 效果展示

更多资料

以上就是本期分享的内容,目的在于让大家快速适应新品方案的开发,以上提供的驱动源码联系我们可以免费提供

官方官网:https://www.ai-thinker.com
开发资料:https://docs.ai-thinker.com/
官方论坛:http://bbs.ai-thinker.com
公司地址: 深圳市宝安区西乡固戍华丰智慧创新港C栋410

安信可ESP-C3-12F模组应用之物联网时钟相关推荐

  1. 安信可的GPRS+GSM模组A9连接机智云的教程

    安信可的GSM+GPR模组连接机智云搭建教程,官网给的文档也有相应的教程.我这里纯数对于个人连接机智云的过程中做一个记录. 1.首次先准备好好模组+USB转TTL串口工具+安信可官网的串口助手. 2. ...

  2. 安信可PB-01/02蓝牙模组实现远程OTA无线升级功能介绍,剖析整个实现原理和代码介绍。

    文章目录 一.安信可PB-01/02蓝牙模组 OTA简介 二.安信可PB-01/02蓝牙模组 FOTA实现流程 三.通过手机APP 完成安信可PB-01/02蓝牙模组的OTA演示 联系我们 一.安信可 ...

  3. 【AT指令使用】安信可ESP-32-S3/ESP-32-C3系列模组AT固件应用之Web Captive portal功能

    目录 前言 一.Captive portal功能原理 二.操作过程 1.烧录带有Captive portal功能的AT固件 2.模组开启Captive portal功能操作过程 3.手机部分的操作过程 ...

  4. 【离线语音专题①】安信可最新离线语音模组VC系列出厂固件使用教程——SDK开源?

    文章目录 前言 一.使用前准备 1.通讯接口连接 2.开发板硬件说明 3.烧录说明 (1)JTAG烧录接线及烧录介绍 (2)UART串口升级接线及烧录介绍 二.模组出厂固件使用 1.指令词及指令码 2 ...

  5. 【 安信可海思Hi-12F模组】AT指令入门教程 接入鸿蒙智联

    文章目录 一.前言 二.创建产品 三.产品信息配置 3.1 AT+SYSVER 设置产品系统信息 3.2 AT+SYSPRAM 配置产品详细信息 3.3 AT+SYSTOKEN 设置产品 token ...

  6. 安信可PB系列蓝牙模组 APP Ble Mesh组网教程

    文章目录 一.前言 二.硬件准备 三.软件准备 四.AT指令集 五.APP组网示例 六.数据通信 一.前言 本文以PB-02开发板为例,介绍PB系列蓝牙模组通过安卓"PHY Mesh&quo ...

  7. 蜂窝通信模组,是物联网终端的核心组件之一

    无线蜂窝通信模组是什么? 图1 模组在产品生产过程中的位置 无线蜂窝通信模组(以下简称模组)是在电路板上集成基带芯片.存储器.功放器件,并提供标准的接口功能模块,并能使各种终端都可以借助无线模块实现通 ...

  8. 安信可EC系列模组接入OneNET物联网开放平台的多协议接入产品

    目录 前言 一.OneNET的多协议接入的创建 1. 进入到OneNET的首页:OneNET - 中国移动物联网开放平台,并进入到控制台: 2. 切换到旧版控制台:OneNET - 物联网控制台旧版 ...

  9. 阿里云联合8家芯片商推“全平台通信模组”,加速物联网生态建设...

    因为此次合作,其中部分合作伙伴已经收获了一个月新客户同比线下增长500%的惊人成果. 1月28日晚间消息,阿里云宣布联合业内8家芯片模组商推出"全平台通信模组",帮助用户通过该模组 ...

最新文章

  1. u盘安装ubuntu10.04 、11.04 server
  2. RAD Studio (Delphi) Firemonkey 教程
  3. active server pages 错误 asp 0126_微信小程序全栈开发课程【视频版】2.1 小程序前端页面初始配置、ESlint格式错误...
  4. api 二次 开发 禅道_浅谈-软件开发流程
  5. Python2.x 和 Python3.x,如何选择?
  6. 使用Apache HttpComponents访问https接口(及老版本DefaultHttpClient deprecated)
  7. java jvm和android DVM区别
  8. iPhone13全系列参数对比
  9. echars折线图y轴自定义数值会被转换为整数的问题
  10. 面试经历---广州YY(欢聚时代)
  11. Windows 无法使用内置管理员账户打开IE
  12. 用pygame做一个简单的python小游戏---七彩同心圆
  13. Java基础入门:IDEA软件安装和软件初始化设置
  14. 计算机网络路由器作用是什么,路由器的作用是什么?
  15. Jmeter 入门 从0-1 基础篇-实操
  16. 中国AGR硅橡胶线行业产销情况与应用前景预测报告(新版)2022-2027
  17. NVIDIA NX刷机,配置深度学习环境
  18. ucos+ucgui(2)
  19. poj1737 Connected Graph
  20. 电脑ps计算机磨皮,Imagenomic Portraiture

热门文章

  1. @RequestBody
  2. 多线程——主线程和子线程退出关系
  3. Opencv交通标志识别
  4. 亚商投资顾问早餐FM/0213金融资产分类
  5. 7-121 空心菱形
  6. HTML中a标签的使用方法及跳转方式
  7. 小学计算机教学的趣味性,巧用信息技术,构建小学美术趣味课堂
  8. 入职前的背景调查是查什么?求职者应该怎么应对?
  9. 21世纪的你,还有小农思想吗?你真的拥有现代化的思维!
  10. angular启动项目报错:ERROR in The target entry-point “primeng/editor“ has missing dependencies: