安信可ESP-C3-12F模组应用之物联网时钟
目录
- 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时间的获取,具体操作步骤如下:
- 初始化sntp:
sntp_setoperatingmode(SNTP_OPMODE_POLL);sntp_setservername(0, "ntp1.aliyun.com); //配置访问的NTP服务器sntp_init();
- 获取时间戳并解析:
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有:
- 引脚初始化: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);
- 写一个字节数据:** 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);}
- 写数据到指定寄存器中:** 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)以及一根控制线。用户根据该模块数据手册中关于驱动的时序图写驱动程序。相关驱动代码如下:
- 读、写以及传输接口:
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);
- 时间获取以及写入接口:
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);
- 数据格式转换接口:
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模组应用之物联网时钟相关推荐
- 安信可的GPRS+GSM模组A9连接机智云的教程
安信可的GSM+GPR模组连接机智云搭建教程,官网给的文档也有相应的教程.我这里纯数对于个人连接机智云的过程中做一个记录. 1.首次先准备好好模组+USB转TTL串口工具+安信可官网的串口助手. 2. ...
- 安信可PB-01/02蓝牙模组实现远程OTA无线升级功能介绍,剖析整个实现原理和代码介绍。
文章目录 一.安信可PB-01/02蓝牙模组 OTA简介 二.安信可PB-01/02蓝牙模组 FOTA实现流程 三.通过手机APP 完成安信可PB-01/02蓝牙模组的OTA演示 联系我们 一.安信可 ...
- 【AT指令使用】安信可ESP-32-S3/ESP-32-C3系列模组AT固件应用之Web Captive portal功能
目录 前言 一.Captive portal功能原理 二.操作过程 1.烧录带有Captive portal功能的AT固件 2.模组开启Captive portal功能操作过程 3.手机部分的操作过程 ...
- 【离线语音专题①】安信可最新离线语音模组VC系列出厂固件使用教程——SDK开源?
文章目录 前言 一.使用前准备 1.通讯接口连接 2.开发板硬件说明 3.烧录说明 (1)JTAG烧录接线及烧录介绍 (2)UART串口升级接线及烧录介绍 二.模组出厂固件使用 1.指令词及指令码 2 ...
- 【 安信可海思Hi-12F模组】AT指令入门教程 接入鸿蒙智联
文章目录 一.前言 二.创建产品 三.产品信息配置 3.1 AT+SYSVER 设置产品系统信息 3.2 AT+SYSPRAM 配置产品详细信息 3.3 AT+SYSTOKEN 设置产品 token ...
- 安信可PB系列蓝牙模组 APP Ble Mesh组网教程
文章目录 一.前言 二.硬件准备 三.软件准备 四.AT指令集 五.APP组网示例 六.数据通信 一.前言 本文以PB-02开发板为例,介绍PB系列蓝牙模组通过安卓"PHY Mesh&quo ...
- 蜂窝通信模组,是物联网终端的核心组件之一
无线蜂窝通信模组是什么? 图1 模组在产品生产过程中的位置 无线蜂窝通信模组(以下简称模组)是在电路板上集成基带芯片.存储器.功放器件,并提供标准的接口功能模块,并能使各种终端都可以借助无线模块实现通 ...
- 安信可EC系列模组接入OneNET物联网开放平台的多协议接入产品
目录 前言 一.OneNET的多协议接入的创建 1. 进入到OneNET的首页:OneNET - 中国移动物联网开放平台,并进入到控制台: 2. 切换到旧版控制台:OneNET - 物联网控制台旧版 ...
- 阿里云联合8家芯片商推“全平台通信模组”,加速物联网生态建设...
因为此次合作,其中部分合作伙伴已经收获了一个月新客户同比线下增长500%的惊人成果. 1月28日晚间消息,阿里云宣布联合业内8家芯片模组商推出"全平台通信模组",帮助用户通过该模组 ...
最新文章
- u盘安装ubuntu10.04 、11.04 server
- RAD Studio (Delphi) Firemonkey 教程
- active server pages 错误 asp 0126_微信小程序全栈开发课程【视频版】2.1 小程序前端页面初始配置、ESlint格式错误...
- api 二次 开发 禅道_浅谈-软件开发流程
- Python2.x 和 Python3.x,如何选择?
- 使用Apache HttpComponents访问https接口(及老版本DefaultHttpClient deprecated)
- java jvm和android DVM区别
- iPhone13全系列参数对比
- echars折线图y轴自定义数值会被转换为整数的问题
- 面试经历---广州YY(欢聚时代)
- Windows 无法使用内置管理员账户打开IE
- 用pygame做一个简单的python小游戏---七彩同心圆
- Java基础入门:IDEA软件安装和软件初始化设置
- 计算机网络路由器作用是什么,路由器的作用是什么?
- Jmeter 入门 从0-1 基础篇-实操
- 中国AGR硅橡胶线行业产销情况与应用前景预测报告(新版)2022-2027
- NVIDIA NX刷机,配置深度学习环境
- ucos+ucgui(2)
- poj1737 Connected Graph
- 电脑ps计算机磨皮,Imagenomic Portraiture
热门文章
- @RequestBody
- 多线程——主线程和子线程退出关系
- Opencv交通标志识别
- 亚商投资顾问早餐FM/0213金融资产分类
- 7-121 空心菱形
- HTML中a标签的使用方法及跳转方式
- 小学计算机教学的趣味性,巧用信息技术,构建小学美术趣味课堂
- 入职前的背景调查是查什么?求职者应该怎么应对?
- 21世纪的你,还有小农思想吗?你真的拥有现代化的思维!
- angular启动项目报错:ERROR in The target entry-point “primeng/editor“ has missing dependencies: