#第八届立创电赛#智能时钟 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

专业版 #第八届立创电赛#智能时钟

简介:采用瑞萨R7FA2E1A72DFL芯片,作为时钟的主控芯片;并设计了DHT11,蜂鸣器,ESP01S电路,以及充放电电路等;可实现时间准确显示,闹钟设定,温湿度显示,联网校时等功能。

开源协议: GPL 3.0

(未经作者授权,禁止转载)

创建时间: 2023-07-04 09:52:21
更新时间: 2023-07-30 22:37:38
描述

 

* 1、项目功能介绍

 

1.时钟显示-----通过按键设置保存后可显示时钟

2.温湿度显示-----电路中设计了DHT11传感器,可实时显示所测环境温度,湿度,每5秒刷新一次数据

3.闹钟设定-----可设定一个任意时间的闹钟,闹钟状态支持开启和关闭

4.联网校时------为了解决走时不准确,以及不想手动调时的问题,在原基础上增加了联网校时(使用esp01s模块),每两分钟更新一次,时间的误差调整在1S之内

5.掉电保存数据-----在掉电之前,每分钟保存一次数据到flash;闹钟在每次设定完成之后都会保存到flash,避免突然断电导致每次上电都需要重新设置闹钟

6.内置电池,可独立工作-----内置500mah电池,可供时钟在外部电源断开后工作一段时间

7.充放电保护电路-----设计了TP4056进行小电流给电池充电,及DW01A和FS8205组成的电池保护电路,保证电池在充放电及工作的过程中不会出现问题

8.电源切换-----由于此时钟一般是由外部电源供电,为了避免外部电源供电和电池供电冲突,因此设计了电源切换电路,保证两者同时存在时,由外部电源供电,没有外部电源时,由电池进行供电

 

 

*2、项目属性


  本项目来源于EDA暑期训练营2023,电路和软件设计参考官方方案,同时融入了自己的想法和设计,项目首次公开

 

 

 

* 3、开源协议


  项目使用GPL3.0协议

 

 

 

 

 

*4、硬件部分

    时钟主控芯片电路,控制时间显示,以及其他功能的进行。


 

      电源切换电路,电路虽然简单,却能起到重要的作用;当VBUS(外部电源)没有供电时,Q2的栅极被下拉电阻拉低,Q2Mos管导通,切换为电池供电;当VBUS(外部电源)供电时,Q2的栅极电平被VBUS拉高,Q2Mos管关闭,切换为VBUS(外部电源)供电。

 

    DHT11温湿度传感器电路图,5V供电,这个上拉电阻用于协助数据传输。因为DHT11的数据口是漏极开路,如果不接上拉电阻,则只能输出低电平和高阻态,不能输出高电平,因此需要外接上拉电阻,否则无法输出1。DHT11的工作电流约为1mA,VCC一般为5V,则电阻R=5V/1mA=5KΩ。一般3.3k~10k都可以。

 

 

      ESP01S电路图,ESP01S和瑞萨单片机的通信方式使用串口通信的方式。这里本来设计的是和串口2通信的,但由于软件上没有调试出来,因此改为和串口9进行通信(串口9)是正常工作的,但是需要注意的是串口9是用来串口烧程序的,如果先焊接了esp01s,就会影响程序烧录,因此需要先用串口烧录好瑞萨芯片的程序,以及esp01s的程序,再焊接esp01s。

 

      蜂鸣器电路电路图,用IO口控制mos管的开管,来控制蜂鸣器发声;这里使用无源蜂鸣器,因此使用IO输出PWM控制蜂鸣器发出声音。

 

 

      3.3V降压电路,用于给esp01s供电,这款LDO具有低压降的特点,输入最低3.6V就可以输出3.3V的电压,刚好适合3.7V锂电池供电的降压电路。

 

 

     功能按键电路,用于修改时钟的设定,以及查看设定等。通过将按键的一端接地,一端接瑞萨芯片的IO口,连接按键的IO口通过软件设置电平上拉;当按键按下时,对应的IO口电平被拉低,芯片可以读到对应IO口的电平并作出相应的工作。

 

      复位,BOOT按键电路,用于串口程序烧录。

 

 

       数码管电路图,直接连接主控芯片IO口,需要注意连接IO的各个数码管引脚字母顺序,以及网络名称,不然写出的程序可能达不到想要的效果。

 

 

       电池充电电路图,TP4056作为经典的充电芯片,还是挺好用的,而且价格便宜。可以通过电阻设置充电电流,充电和满电都有指示灯提示。PROG设置充电电流大小,这里设置的10K,根据手册里公式计算,这里的充电电流大概是120ma。

 

 

     充放电保护电路,DW01A和FS8205搭配,组成电池保护电路,当电压超过4.2V或者低于2.52V时,关闭FS8205mos管,避免电池过冲或者过放。

 

       串口下载接口,用于下载程序。

 

 

 

*5、软件部分

      写的头文件,及源程序主要程序在src中


 

    主程序,对各个功能或引脚进行初始化,以及主函数的编写

 

 

 

     串口回调函数,用于串口发送和接收数据

 

      串口对接收到的数据进行处理,由于接收到的数据是ASCLL码,因此不能直接使用,需要进行转化。由于对时间的数据只需要0到9即可,因此只对ASCLL数据中为48到57的数字进行处理,得到需要的数字,其他的字符当做无用字符,等于0,避免干扰串口调节时间。再将数组中数据一一转化为需要的时间数据,便于后面校时。

 

 

串口校正时间,当串口接收数据完成后,判断是否是正确的时间,如果是,则进行校正。

 

 

 

   将数据写入flash,避免数据丢失

 

        在时间设定好后,时钟会一直运行此程序,获取RTC的时间,然后再显示。

 

     闹钟程序,当到达设定的闹钟时间后,闹钟开启时,开始执行此程序,闹钟响起。在for循环里面有一个按键检测语句,如果闹钟响起,则进入for循环,此时按下按键3,就可以关闭闹钟。

 

 

        蜂鸣器程序的编写,由于蜂鸣器是无源蜂鸣器,因此采用PWM驱动,先对PWM进行开启,再配置占空比,就可以进行驱动了,占空比大小决定声音大小,频率决定蜂鸣器音调。

 

 

 

        定时器回调函数,用于数码管的显示,主要是时间显示,以及修改其他设定时的显示等,定时刷新数码管。

 

 

 

      变量声明,方便后面使用,以及外部声明的使用,便于其他源文件里引用。

 

 

      数码管显示库函数,对需要用到的数字和字母写好对应的函数,后面可直接引用对应的函数显示对应的数字或字母。

 

 

 

       flash读取程序,在初始化中引用这个程序,就会在每次上电后,都会对flash里的数据进行读取。

 

 

       flash写入程序,在对应的地址写入对应的数据。

 

 

       对DHT11传感器进行初始化,每次接收数据前,向传感器发送高低电平信号,等待接收来自传感器的数据。

 

 

       DHT11传感器数据读取函数,对从DHT11收到的数据进行处理。

 

 

注:以上是对瑞萨芯片程序的分析,下面是对esp01s模块程序的分析

 

    由于esp01s只用于获取时间,因此程序很简单。使用Arduino进行编写,下图是对一些库文件的引用,以及变量声明

注:const char *ssid     = "   ";引号里填的是需要连接wifi的名称,const char *password = "     ";引号里填的是wifi密码。

 

 

       对串口初始化,以及需要执行的函数进行初始化(执行一次),先开启STA模式,连接需要连接的wifi,等待20S,如果20S未连接上设定的wifi,则开启AP模式,开启热点(智能时钟)供用户配置wifi,配置完成后连接用户配置的wifi

 

 

 

 

      主函数,每两分钟向串口发送一次时间数据;小时,分钟,秒,输出的数据都是两位,便于瑞萨芯片收到数据后进行处理。

 

 

 

 

*6、BOM清单


 

 

 

 

*7、大赛LOGO验证

PCB正面


 

PCB反面

 

 

* 8、演示您的项目并录制成视频上传


    下面已上传演示视频,但由于大小限制,画质经过压缩后上传的,将高清视频放在了B站【基于R7FA2E1A72DFL的数码管智能时钟-哔哩哔哩】

 

 

设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程视频/附件
序号 文件名称 下载次数
1

智能时钟.mp4

134
2

BOM_Board_智能时钟.xlsx

32
3

代码资料.zip

40
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP