0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32的WiFi联网自动校准时钟设计

电子电路开发学习 来源:电子电路开发学习 2024-10-15 13:39 次阅读

以下文章来源于电子电路开发学习 ,作者wcc149

项目概述:

之前在uFUN试用群里看到管理员说试用活动快结束了,要抓紧完成评测总结,看大家的评测总结也都写了,我也不能落后啊!正好最近做的扩展板到手了,于是赶紧进行调试,做了一个不用校准的时钟,时钟这种小设计应该说是烂大街了吧!

我一开始学习51的时候做了个可按键校准,带闹钟功能的时钟,学习STM32的时候做。了个可以手机蓝牙APP校准的时钟,现在又用uFUN开发板做了个时钟。不过,时钟这个的英文联网校准的由于之前做过桌面天气预报时钟,如下图所示:

所以,这个联网校准时钟的小项目实现起来还是很顺利的,底板是使用的uFUN开发板,扩展板是自己设计的,使用PCIe的接口和uFUN开发板进行通讯。使用ESP8266 WiFi模块获取北京标准时间,然后对STM32内部的RTC进行校准,再通过OLED显示出来。

我知道,这个小项目无论是PCB的设计,还是控制程序的编写,对于论坛里一些有着多年经验的大佬来说,这个小项目简直不值一提,我只不过是班门弄斧罢了。有不对的地方,欢迎各位大佬拍砖!

扩展板资源简介:

0.96寸OLED屏,IIC接口,128 * 64像素,通过外部电路的修改,可支持8080并口,SPI接口。

W25Q128,SPI接口,可以用来存储字库,配合uFUN开发板的SD卡功能,可以实现字库的更新

AT24C02,EEPROM,IIC接口,掉电不丢失,可以用来保存一些用户数据

SHT20,IIC接口温湿度传感器

5个LED,1个电源指示,4个用户LED,这四个LED都连接到了定时器的通道,可通过PWM占空比控制亮度

1个光敏电阻,把光照强度转换为AD电压值,可以实现根据外界亮度控制OLED屏的亮度。

1个OLED模块接口,可外插IIC接口的OLED模块

蓝牙/ WiFi的模块兼容接口设计,可支持HC-05蓝牙模块,或者是原子的ESP8266模块。

1个DHT11温湿度传感器模块接口

扩展板原理图设计:

wKgZoWcOAFmAMrm8AAGVhg_XgI4296.jpg

电源电路

从uFUN的原理图可以看出,的PCIe扩展口中有5V电源,数字地,模拟3.3V,模拟地,而没有引出数字3.3V电源,为了不干扰模拟3.3V,扩展板的3.3V电源来自5V经过AMS117稳压,AMS117-3.3是一款比较常用的LDO电源芯片,最大可提供1A的输出电流,对于扩展板来说是足够用了。

OLED电路

OLED外围电路,参考中景园官方推荐的电路,使用的是IIC接口,因为之前没用过IIC总线挂载多个从机,为了避免调不通,所以OLED的IIC接口使用了独立的管教,同时上拉4.7K电阻

W25Q128电路

W25Q128是采用的SPI通讯协议,正好扩展接口中有SPI接口,所以就用了STM32的硬件SPI2接口,当然也可以软件模拟。

AT24C02电路

实际上焊接的是ST公司的M24C64,目前读写还没调通,和底板的LIS3DH共用一组IIC总线。

SHT20电路

正好上次做板子,买的SHT20还剩几片,所以在这个扩展板上,也使用了这款传感器,这款数字温湿度传感器体积非常小,只有3 * 3 * 1.1mm,和底板的LIS3DH共用一组IIC总线,后面调试正常,可以获取到温湿度数据。

无线蓝牙兼容接口

偶然发现HC-05和原子的ESP8266模块接口几乎一样,所以这部分设计成了兼容两种模块的接口,如下图所示:

wKgaoWcOAFmAP-8dAAEKlnHK4Pk123.jpg

其他电路

4路LED都连接到了STM32的定时器输出通道,可以用来控制亮度,另外也充分利用了扩展口留出的模拟电源和模拟地,通过简单的分压原理,可以把光照强度转换为AD电压值,还增加了OLED模块接口和DHT11温湿度传感器接口。

扩展板PCB设计

结构的设计

SHT20官方推荐的放置方式是在板子边缘挖个岛出来,然后把传感器放进去,这样能最大程度的减少板子热量的传递,从而提高精度,但是,由于扩展板面积较小,再挖个岛出来,看着太难看了,就没有挖。

wKgZoWcOAFmAdTX3AABAXJPcyFo576.jpg

板子的整体结构图来自于前一段时间,@张进东张工在uFUN试用群里分享的AD版本的PCB图,那个图是这样的:

wKgaoWcOAFmAegjIAAHJ-zluOP8601.jpg

我进行了稍微的修改,把安装孔右边多余的部分去掉了,而且为了和底板一致,我把扩展板改成了圆角,但是接口和安装孔的相对位置没动,板子的TOP面:

wKgaoWcOAFmAAI0EAAIChNsdnm0814.jpg

封装的选择

电阻电容封装的选择上,一开始觉得板子空间比较小,怕放不下所有的元器件,几乎所有的电阻和电容都选择了0402封装,同时也出现了一个比较尴尬的事,就是有1种电容和1种电阻,嘉立创SMT的基础库里没有,扩展库里才有,而如果使用扩展库里的元件,需要加每种20元的换料费,所以最终打板多花了40元,这一点也是我没有考虑到的。等投板之后,我又尝试着把所有的电阻电容封装都换成0603的,发现也能放得下。

元件的布局布线

元件布局方面,为了防止元器件放在背面和底板的部分元件冲突,同时也为了满足嘉立创只能单面贴片的工艺要求,我把所有的元件都放在了TOP面,BOTTOM面只放了OLED裸屏的接口,为了方便连接外部的模块,把接口都放在了板子的边缘,LED也放在了板子边缘,由于SHT20是DFN封装,为了方便后面使用风枪进行焊接,周围留出了一点空间。

板子的BOTTOM面:

wKgZoWcOAFmAEy4vAAIUI4IyCPc360.jpg

3D效果显示:

wKgZoWcOAFmAAExtAAHRwv0yFW0324.jpg

wKgaoWcOAFmAac-hAAEhX8_l35E408.jpg

我用的是AD9版本,3D效果渲染的还是挺不错的。

PCB的打样和调试:

不知道今年是不是板材降价了,各大PCB板厂都在降价,去年做毕业设计的板子时还是50元5片1010cm以内,今年就是30元5片1010以内,而且连彩色油墨费都不收了。PCB打样和SMT贴片还是选择了之前用过的嘉立创,5片全贴,一共花了191大洋

生产工艺方面时,由于嘉立创只支持绿油进行SMT,所以只能用看着比较LOW的绿色油墨,其实我更喜欢蓝色油墨,而且和底板很搭!其他的工艺如过孔盖油、有铅喷锡,由于只是样板,就没有选择镀金工艺了,所以金手指成了锡手指,外加倒斜边,倒斜边是金手指板卡常用的一种工艺,是为了能够方便的插到插槽里面。

还要注意非常非常重要的一点:PCB板的厚度,其实这个我一开始设计的时候就考虑过,使用之前做的1.6mm的板子试着往里面插了一下,发现根本插不进,网上也没搜到PCIe的板子应该做多厚,所以就选择了比1.6稍微薄一点的1.2mm厚度。详细的生产工艺:

wKgZoWcOAFmAGxpcAACVBe3--yI440.jpg

PCB生产进度和SMT进度:

wKgZoWcOAFmAMMpfAAEBWI8F4pc863.jpg

由于板子比较简单,从下单到发货大概用了3天的时间吧,实际的样板图片:

wKgaoWcOAFmAb3_3AAGeTBJllS4633.jpg

板子拿回来一插,发现还是稍微厚了点,不能完全插进PCIe座里面,而且底板的铜柱还不能对准扩展板的安装孔。

wKgaoWcOAFmAGfzzAAEYPtyMtrs010.jpg

后来请教了 @张进东 张工,原来只需要1.0mm就够了,斜着插进去往下一压,再用铜柱固定就行。不过我用暴力手段解决了一下,直接用剪刀剪掉了一段金手指,还好金手指上面的铜箔没有掉,这样才勉强能用一个螺丝固定好,安装效果如文章第一张图:

wKgZoWcOAFmALi_uAAHn1wyz6vE562.jpg

就这么不完美的解决了,不过还是有几个管脚接触不良,如DHT11接口的那个引脚,稍微松动一点就不能用,不过已经板载了温湿度传感器,倒也影响不大。然后就试着点亮了OLED屏,先显示个uFUN的LOGO吧:

wKgaoWcOAFmAMlWBAAEN4Zukvwk789.jpg

到这里觉得应该没啥问题了吧,开始调试WiFi接口,使用的是引出的串口3来和WiFi模块进行通讯,由于之前的程序是用的串口2,所以又稍微改了一下,调了半天,还是不通,就把同样的程序下载到其他板子上,没问题啊!难道是接触不好,最后一查,是uFUN的原理图中PB10和PB11的网络标号也反了,导致扩展板的TX和RX反了,这可怎么办呢?

wKgZoWcOAFmAVZQ8AADwv8V0PQ0711.jpg

又舍不得浪费板子啊!所以把原来TX和RX连接的两根线割断,重新飞了两根线,完美解决!这线飞的可没有uFUN开发板上的那根飞线漂亮!

wKgZoWcOAFmAbC-CAAGGWyk8NAw045.jpg

另外,扩展板IIC总线上的24C02读写一直没调通,不知道是物料的问题还是读写时序的问题,而同是IIC总线上的SHT20温湿度传感器就没问题。另外由于本项目中没有用到过多的中文,所以SPI Flash也没用到。

控制程序的设计:

可能是由于字库文件没有进行精简,所以整个程序占用了非常多的空间,总是报内存不足的错误,为了能跑起来,我把单片机型号改成了STM32F103RE系列,由于RE系列比RC系列的存储空间要大的多,并没有报错误,而且程序可以正常运行,虽然都是大容量产品,程序可以兼容,但这是一种非常不推荐的方式。

实现思路:

实现原理就是:STM32驱动ESP8266 GET北京时间的接口,得到一串JSON数据,然后STM32调用cJSON库进行解析,获取到时间信息,然后把这个时间信息写入到RTC寄存器,STM32内部RTC从当前时间开始运行,然后显示到OLED屏上,程序中设置的是每隔10分钟,获取一次时间。北京标准时间的来源使用了K780数据的API接口,地址:

http://api.k780.com:88/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json

这是JSON格式的,数据的解析使用了开源的JSON解析库cJSON,只有两个文件,使用起来还是比较简单的。

主要功能:

STM32 RTC的使用。

OLED的驱动,支持68 ASCII码显示,816 ASCII码显示,16*32数字0-9和冒号:的显示,汉字“周一二三四五六日”的显示。

ESP8266的驱动,和北京标准时间服务器接口建立TCP连接。

cJSON库解析接收的JSON数据,获取北京时间,年月日,时分秒。

关于JSON格式的说明和cJSON库的使用,可以参考我之前写的两篇文章:

使用cJSON库解析JSON

JSON简介

很多API接口的数据格式都是JSON格式的,如我之前做的桌面天气预报时钟,使用的是心知天气的数据源,就是JSON格式,网上也有很多免费的API接口,可以做出很多好玩的东西,就看你的想象力了!

不足之处:

断电不能走时

这算是这个程序最大的一个BUG吧,虽然uFUN开发板有超级电容备用电池接着,但一直没调通断电走时的功能,这种情况带来的一个问题就是,如果不插WiFi模块的情况下重新上电,是不能从上次保存的时间继续运行的。

程序不够精简

为了能让程序运行起来,把单片机改成大容量型号,应该从根本上精简字库,优化程序大小。

GET请求偶尔会失败

偶尔会出现发送GET请求,接收不到数据的情况,可能是内存分配的问题。

总结:

这个小项目总得来说,硬件调试方面比较坎坷,又是飞线,又是割板子的。而软件调试方面,由于之前做过类似的设计,所以还是比较顺利的。由于评测活动的时间关系,本次评测的大作业我只做了这个简单的联网校准时钟。

其实,有了WiFi/蓝牙模块接口和OLED屏,就可以做很多好玩的东西了,比如选择一个开放的云平台,如中移OneNET等等,然后和云台进行一些交互,如采集温湿度上传到云平台做个温湿度远程监测系统,或者是远程控制LED或者蜂鸣器,桌面天气预报等。

下面这几个界面是我去年在学校时,使用中移OneNET云平台做的一些界面:

wKgaoWcOAFqAaur5AAET5M6B3VI366.jpg

wKgaoWcOAFqACJNIAADRhuNA0qk553.jpg

wKgZoWcOAFqAAiQIAADr_-4-OfM594.jpg

对于uFUN开发板的整体评测过程来说,虽然配套的文档存在一些瑕疵,在之前的评测文章中,我也都有提到,但是不影响新手入门STM32,况且论坛里还有那么多的入门教程,也希望我的这些评测文章能对那些刚入门STM32的小伙伴们有一些帮助,少走一些弯路。据说2.0版本的开发板已经在进行紧锣密鼓的开发中了,当然,如果能有幸得到2.0版本开发板的使用机会,我会试着做一些远程控制相关的小项目。期待ing。。。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2262

    文章

    10843

    浏览量

    353473
  • 时钟
    +关注

    关注

    10

    文章

    1696

    浏览量

    131148
  • WIFI
    +关注

    关注

    81

    文章

    5266

    浏览量

    202646
  • 扩展板
    +关注

    关注

    0

    文章

    52

    浏览量

    11343

原文标题:基于STM32的WiFi联网自动校准时钟

文章出处:【微信号:mcu149,微信公众号:电子电路开发学习】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于at89c51单片机的6位可校准时钟

    本帖最后由 eehome 于 2013-1-5 10:08 编辑 基于at89c51单片机的6位可校准时钟电路proteus
    发表于 11-24 14:39

    CS101校准时为什么要用0.5欧姆

    请问有知道的么?为什么CS101校准时要用0.5欧姆的电阻啊?
    发表于 07-26 22:06

    数码管校准时闪烁案例——附带proteus仿真

    个人网上查找资料,然后自己修改总结的。希望对那些需要的人有所帮助。数码管校准时闪烁案例——附带proteus仿真
    发表于 09-14 22:15

    stm32使用外部精准时钟

    使用外部精准时钟#include "rcc_driver.h"//1.硬件初始化:72MHzvoid rcc_init(void){//0.将RCC设置为缺省状态
    发表于 08-19 06:30

    使用HMI TFT LCD和ESP8266 Wifi模块制作世界时钟的教程

    时区,等待一分钟,时间就会更新。这是巴基斯坦的标准时间。这些是时间;这些是分钟和秒。每 1 分钟后时间与服务器时间同步,因此您将始终获得准确的时间。 如果由于某些问题导致 Wifi 断开连接,世界时钟
    发表于 08-24 07:51

    STM32U5 ADC在校准时挂起的原因?如何解决?

    我有一个 nucleo-U575ZI-Q,可以很好地运行 ADC 的示例。但是,当我尝试使用 STM32CubeMX 制作自己的项目时,代码在 ADC 校准时挂起。我已经检查了十几次设置并将它们与示例进行比较,但找不到任何不同之处。任何见解都会有所帮助。谢谢
    发表于 02-02 06:38

    STM32F2实时时钟RTC

    RTC系统框图和组件 时钟源和分频器 硬件日历和警报 自动唤醒定时器 特色功能 数字粗略校准 参考时钟 外部引脚上的导出和导入功能 输出:警报、定时信号、
    发表于 09-13 07:07

    采用GPS测量监控技术校准高精度晶振时钟的设计方案介绍

    图1是一个应用于通信系统的GPS校准时钟原理结构。本文采用的是10MHz带电压调节的恒温晶振,通过时钟芯片产生61. 44MHz的信号。但仅由晶振和时钟芯片产生的时钟信号的精度不能满足
    的头像 发表于 11-16 08:09 3638次阅读
    采用GPS测量监控技术<b class='flag-5'>校准</b>高精度晶振<b class='flag-5'>时钟</b>的设计方案介绍

    时控开关怎么自动校准时间,具体操作步骤的介绍

    之所以要校准时间,是为了确保定时的准确性,(老式按键式)时控开关进行校时,一般都是手动的,先连按取消/恢复键4次,解锁屏幕。按校时按钮校对小时,校分按钮校对分钟,校星期按钮校对星期(不同品牌
    发表于 10-10 12:01 5953次阅读

    基于STM32 ESP8266的WIFI TFT自动校时天气预报设计

    本设计使用stm32作为主控,采用esp8266作为网络接入模组,可实现自动校准时间以及获取天气信息等功能! 该项目成本低廉,主要功能为自动校时与天气预报,改方案解决了现有电子
    的头像 发表于 12-07 11:09 5154次阅读

    基于STM32WiFi网络授时时钟方案设计

    电路设计上增加了储能电容可以在断电一个月后保持时间数据不丢失;     责任编辑:xj 原文标题:基于STM32WiFi网络授时时钟设计(包含原理图、PCB程序) 文章出处:【微信公众号:电路设计技能】欢迎添加关注!文章转载请
    的头像 发表于 01-27 14:07 4274次阅读
    基于<b class='flag-5'>STM32</b>的<b class='flag-5'>WiFi</b>网络授时<b class='flag-5'>时钟</b>方案设计

    寻找合适的基准时钟分配

    寻找合适的基准时钟分配
    发表于 03-20 17:11 7次下载
    寻找合适的基<b class='flag-5'>准时钟</b>分配

    基于uFUN开发板和扩展板的联网校准时钟

    小设计应该说是烂大街了吧!我一开始学习51的时候做了个可按键校准、带闹钟功能的时钟,学习STM32的时候做了个可以手机蓝牙APP校准时钟
    发表于 12-08 15:06 11次下载
    基于uFUN开发板和扩展板的<b class='flag-5'>联网校准时钟</b>

    为什么仪器校准时总会产生误差?存在哪些影响因素?

    仪器校准是一项繁琐的工作,根据不同的仪器所需要校准的方法和规划也会不同,使用的校准仪器更是各种各样,因此即便是专业的仪器校准机构,在校准时
    的头像 发表于 07-25 14:16 1975次阅读

    怎样才可以让wifi时钟联网

    要让WiFi时钟联网,可以按照以下步骤进行操作: 一、准备工作 确保WiFi环境稳定 :首先,确保你的家庭或工作环境中有稳定的WiFi网络,
    的头像 发表于 09-07 09:23 481次阅读