开启新的征程,邀请您见证ST的蜕变

学习微波射频没方向?这些资料不可少!

【备战电赛】先导片-如何补全知识链条


基于WiFi的网络授时时钟设计

  • 基于WiFi的网络授时时钟设计
  • 基于WiFi的网络授时时钟设计
  • 基于WiFi的网络授时时钟设计

基于WiFi的网络授时时钟设计

基于WiFi的网络授时时钟设计

基于WiFi的网络授时时钟设计


本方案采用的是MCU+AT指令的形式开发,MCU是大家比较熟悉的意法半导体公司STM32F103C8T6WiFi模块使用的是安信可ESP-12F,本方案是一个Demo设计,比较简单,仅实现了功能,算是一个抛砖引玉吧!

先上视频演示:https://v.youku.com/v_show/id_XNDE3OTE4MDY4NA==.html?spm=a2hzp.8244740.0.0

WiFi模块资料链接:https://wiki.ai-thinker.com/esp8266

STM32F103C8芯片资料链接:https://www.stmicroelectronics.com.cn/content/st_com/zh/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f1-series/stm32f103/stm32f103c8.html#overview

硬件部分,由时钟电路+WiFi模块+MCU最小系统+OLED显示屏+稳压电路+按键电路组成,这里采用时钟电路是希望模块在断网后还能获取一个比较精准的时间,并且电路设计上增加了储能电容可以在断电一个月后保持时间数据不丢失,当然这里也可以用STM32里面的RTC时钟;OLED显示屏采用的是裸屏设计,使整体电路板一体化效果好些;其他电路都是参考开发板or硬件手册上设计的;硬件设计软件采用的是 Altium Designer (13.0),原理图概略图如下图所示:

实物图如下图所示:(电路板是找厂家打样的,元器件是纯人工手焊)

软件部分,由底层驱动+WiFi联网+调用API接口并解析数据+OLED显示组成;首先分析一波,这里面用到了MCU的USARTI2C*2GPIO*2引脚资源,然后对应去找相关类似的例程,既然已经有轮子了,为何还要花时间去造轮子,当然是直接改例程来的舒服。这里开发方式采用的是库函数开发,用的是STM32的标准库,对应找到了OLED显示屏的驱动资料PCF8563的驱动资料WiFi模组的驱动资料按键输入的驱动资料;将它们整合到一个工程里面,然后更改里面的引脚配置等,就完成了整个设计的底层驱动

WiFi联网,这里WiFi是设置成了STA模式(STA模式是啥,可自行问度娘),然后连接手机开的热点(注意手机必须要能连接上公网,即我们常用的互联网)。具体如何设置可以参考WiFi模块的AT指令集,AT指令集在上面WiFi模块资料里面有。手机开的WiFi热点的账号密码需要事先知道,并写入在程序里面,后续如果需要更改热点的账号密码,就需要更改程序。

天气和时间更新,即调用API接口并解析数据,这里用到了两个API接口,第一个是心知天气天气实况数据获取,因为是免费版所以只能获取到天气现象和气温两项数据;第二个是Nowapi的北京时间数据获取。因为用到的两个API接口是隶属于两个不同的服务器,所以程序上需要进行切换,连完这个服务器后需要断开连另一个服务器,比较麻烦。后面我发现其实Nowapi里面就有天气数据可以获取,完全可以通过只连接这个服务器就实现天气和时间数据的更新。实现方法参考下面的网址,写比较详细。

心知天气https://docs.seniverse.com/api/weather/now.html、服务器IP116.62.81.138(域名api.seniverse.com)、默认端口80

Nowapihttps://www.nowapi.com/api/life.time、服务器IP103.205.4.43(域名api.k780.com)、默认端口80

解析数据用的是比较简单的方法,因为需要解析的数据量不大,所以并没有移植cjson,直接用strtok函数硬解。

OLED显示,OLED显示用的是I2C接口,然后给的例程只有常用的标点符号和26个英文字母的字库,如果需要汉字还需要自己添加字库,一般是用到什么汉字就添加什么汉字的字库,然后用例程里面给的功能函数去实现显示。

显示屏资料http://pan.baidu.com/s/1dFri9Vz

下图是用到的所有.c文件(除库函数之外)

bsp_usart1.c是用来串口调试使用,可以打印在电脑串口调试助手上显示;bsp_SysTick.c是用来生成精准的延时函数,用于I2C通讯等对时序敏感的接口;bsp_esp8266.c里面是对WiFi模块的一些初始化配置和WiFi的功能函数;Common.c里面是一些辅助函数;test.c里面是实现WiFi配网应用和API接口调用及解析;oled.c里面显示屏的初始化配置和显示功能函数;bsp_pcf8563.c里面是时钟芯片的初始化配置和读写时间功能函数;bsp_key.c里面是按键的初始化配置、按键扫描功能函数和静态内容显示函数;bsp_TiMbase.c里面是定时器函数,这里为什么用到定时器,因为一般天气和时间数据刷新的频率不会太快,这里设定的是5分钟更新一次,那么这里就需要用到定时器。

注意:"GET http://api.k780.com/?app=life.time&appkey=41298&sign=eb689df06015c995b73ae1f60c133a77&format=json\n" ,里面的appkey=41298和sign=eb689df06015c995b73ae1f60c133a77,最好更换成自己的appkey和sign(网址上注册账号) "GET https://api.seniverse.com/v3/weather/now.json?key=SO0c3M39I7uTr9XjF&location=guangzhou&language=zh-Hans&unit=c\n",里面的key=SO0c3M39I7uTr9XjF和location=guangzhou,最好换成自己的Key和城市(网址上注册账号)

电路项目的主要芯片及数据手册

电路相关文件

电路图文件
硬件-基于WiFi的网络授时时钟设计V1.0.7z
描述:内有完整的Altium Designer(13.0)工程
源代码
分享到:
收藏 (2)
电子硬件助手小程序 电子硬件助手小程序

电路城电路折扣劵获取途径:

电路城7~10折折扣劵(全场通用):对本电路进行评分获取;

电路城6折折扣劵(限购≤100元电路):申请成为卖家,上传电路,审核成功后获取。

(版权归Senseye所有)

版权声明:电路城所有电路均源于网友上传或网上搜集,供学习和研究使用,其版权归原作者所有,对可以提供充分证据的侵权信息,本站将在确认后24小时内删除。对本电路进行投诉建议,点击投诉本电路反馈给电路城。

使用说明:直接使用附件资料或需要对资料PCB板进行打样的买家,请先核对资料的完整性,如果出现问题,电路城不承担任何经济损失!

换一批 more>>

大家都在看:

继续阅读

  • 易微联(PSF-B01)WiF语音智能插座设计(内含原理图和PCB文件)

    此方案主要展示怎么使用PSF-B01 wifi模块来快速开发一个WiF语音智能插座: 简单连接一个按钮,即可实现让设备进入配对模式与本地开关设备;简单连接一个LED就可以实现Wi-Fi和连接状态展示;简单连接一个继电器就可以实现对插座的控制;提供AC-DC 5V(供继电器)和 3.3V(5V过LDO,供模块) 就可以让整套语音智能插座跑起来~酷宅科技提供公版的APP“易微联”,对于硬件工程师而言,完全零代码开发,只需根据datasheet设计相应的外围硬件电路,即可通过继电器远程控制相应的设备。适合用于各种场景。APP下载:IOS版本搜“eWeLink”,安卓版本搜“易微联”即可下载。技术支持QQ群:869069001技术支持陈工:15817409061(微信同号)
  • Arduino兼容Fi250 WIFI模块电路图及PCB和代码

    该Fi250Wi-Fi 模块Wifi Shield(Fi250)V1.1支持 IEEE 802.11b / g / n 模式,最高速度可达 65Mbit / s,是 Arduino 连接互联网的廉价解决方案。 Wifi Shield(Fi250)V1.1 集成了板载天线。该WIFI模块预留一个 UFL 连接器,您可以使用额外的天线来改善信号范围。主板上有一个按键,只要按一下就可以改变 WiFi Shield 为 AP 模式。该WIFI模块可以和计算机通讯软件通讯,您可以通过 USB-UART 转换器来控制模块。WiFi Shield 包含一个 Micro SD 卡插槽,当 WiFi Shield 作为 TCP,UDP 服务器工作时 SD 卡负责记录数据。规格参数:型号WIZnet FI250工作电压 5V or 3.3V (自动选择)电流300mA (最大)频段2.4GHz IEEE 802.11b/g/n天线板载 PCB 天线 (预留 UFL 接口)存储1MB Flash Memory, 128KB SRAM, 1MB Serial Flash通信接口UART(默认)/SPI(固件升级)尺寸69.0x53.5x23.5 mm实物截图:附件资料截图:
    来自:通信与网络时间:2018-08-07 解决方案 wifi模块 fi250
  • stm8s_esp8266_Smartconfig 代码

    实现stm8s驱动ESP8266wifi模块进行SMARTCONFIG连接,编译环境,IAR,连接方式MCU与esp8266串口连接,CU发送AT指令配置wifi模块,按住按键5秒进入配置模式,LED快闪,手机广播wifi密码,wifi模块接收路由器密码联网,成功后LED熄灭。附件资料截图:
    来自:EDA库与代码时间:2018-07-17 esp8266 wifi模块 stm8s
  • STM32F103C8T6最小系统板PCB工程文件

    STM32F103C8T6单片机最小系统板,板载了基于MCU的最基本电路,如晶振电路、USB电源管理电路和USB接口等。该STM32F103C8T6核心板引出了所有的I/O口资源,带有SWD仿真调试下载接口。附件资料截图:
    来自:MCU开发板时间:2018-06-03 stm32f103c8t6 系统板
  • 超精美机智云 STuino STM32底板全3D封装

    机智云STuino(机智云STM32底板全3D封装),电路板采用全3D封装,包含3D的pcb封装库,记住是用Altium Designer绘画的。附件内容截图:
    来自:MCU开发板时间:2018-05-23 机智云 3d封装 stunio stm32底板
销量
2
查看
141
Senseye

Senseye

见习卖家
嵌入式工程师
参数名 参数值
发布于 2019 年 05 月 16日
Moore8直播课堂