找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18483|回复: 42
收起左侧

使用stm32和esp8266制作一个网络授时的时钟

  [复制链接]
ID:212149 发表于 2018-3-11 17:52 | 显示全部楼层 |阅读模式
采用stm32f103c8t6制作了一个网络时钟,通过连接esp8266获得网络上的北京时间。这里提供一个数据的接口地址,如果大家有兴趣学习一下的话,可以打开这个地址注册一下申请一个接口:nowapicom/api
这里简要的说一下制作这个网络授时时钟的思路,大概就是先使用串口调试助手调试好esp8266的波特率、工作模式等,然后将其连接入家庭的路由器,或者开启手机热点让esp8266连接进去。我这里设置其波特率为115200,工作模式为AP模式。设置好这些基本的参数之后,就是开启单连接模式,连接入远程的tcp服务器,开启透传模式,发送get+数据商提供的key,获得北京时间的信息,通过串口接收再数据处理获得准确的北京时间。之后通过stm32自带的rtc时钟进行走时,不需要实时接收,只需要在开机的时候接收即可。
网络时钟不带天气预报.jpg

注意:程序中使用了中文的显示,可能oled也和各位的不匹配,如有用到的麻烦自己进行修改调试。同时注意供电的稳定!

stm32单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "oled.h"
  5. #include "key.h"
  6. #include "flash.h"
  7. #include "malloc.h"
  8. #include "usart.h"
  9. #include "text.h"
  10. #include "esp8266.h"
  11. #include "RTC.h"
  12. extern _calendar_obj calendar;
  13. void display_week(void);
  14. int main(void)
  15. {
  16.         delay_init();                     //延时函数初始化         
  17.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
  18.         uart_init(115200);                 //串口初始化为9600               
  19.         OLED_Init();                        //初始化液晶
  20.         LED_Init();         //LED初始化                                                                                                                     
  21.         KEY_Init();                                //按键初始化                                 
  22.         mem_init();                                //初始化内存池           
  23.         OLED_Init();                        //初始化OLED  
  24.         OLED_Clear();
  25.         esp8266_init();
  26.         esp8266_get_shijian();
  27.         esp8266_get_time();
  28.         dispose_time_data();
  29.         RTC_Init();
  30.         while(font_init())                                //字体初始化
  31.         {
  32.                 OLED_ShowString(0,0,"chinese init error!!",16);
  33.         }
  34.         Show_Str(32,0,"年",16,0);
  35.         Show_Str(64,0,"月",16,0);
  36.         Show_Str(96,0,"日",16,0);
  37.         Show_Str(0,2,"日一二三四五六",16,0);
  38.         Show_Str(16,4,":  :",16,0);
  39.         display_week();
  40.         while(1)
  41.         {
  42.                 OLED_ShowNum(0,0,calendar.w_year,4,16);//年
  43.                 OLED_ShowNum(48,0,calendar.w_month,2,16);//月
  44.                 OLED_ShowNum(80,0,calendar.w_date,2,16);//日
  45.                 OLED_ShowNum(0,4,calendar.hour,2,16);//时
  46.                 OLED_ShowNum(24,4,calendar.min,2,16);//分
  47.                 OLED_ShowNum(48,4,calendar.sec,2,16);//秒
  48.                 if((calendar.hour==0)&&(calendar.min==0)&&(calendar.sec==0))
  49.                 {
  50.                         calendar.week+=1;
  51.                         if(calendar.week==8) calendar.week=1;
  52.                         display_week();
  53.                 }
  54.         }
  55. }


  56. void display_week(void)
  57. {
  58.         switch(calendar.week)
  59.                 {
  60.                         case(1):Show_Str(16,2,"一",16,1);break;
  61.                         case(2):Show_Str(32,2,"二",16,1);break;
  62.                         case(3):Show_Str(48,2,"三",16,1);break;
  63.                         case(4):Show_Str(64,2,"四",16,1);break;
  64.                         case(5):Show_Str(80,2,"五",16,1);break;
  65.                         case(6):Show_Str(96,2,"六",16,1);break;
  66.                         case(7):Show_Str(0,2,"日",16,1);break;
  67.                 }
  68. }
复制代码

由于某些原因附件中的程序源码已经删掉部分内容,不能直接使用,仅供学习参考:
代码片段下载: 程序源码.rar (373.47 KB, 下载次数: 512)

评分

参与人数 2黑币 +108 收起 理由
stkh + 8 绝世好帖!
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:501544 发表于 2019-11-17 22:53 | 显示全部楼层
你的这个函数在哪里????esp8266_get_shijian();
回复

使用道具 举报

ID:189862 发表于 2020-8-26 17:07 | 显示全部楼层
esp8266_get_shijian();
没有这个函数文件。
回复

使用道具 举报

ID:272734 发表于 2018-3-27 16:55 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:139071 发表于 2018-4-11 11:24 | 显示全部楼层
不错不错。。
回复

使用道具 举报

ID:311588 发表于 2018-4-19 12:46 | 显示全部楼层
下载学习
回复

使用道具 举报

ID:312383 发表于 2018-5-3 07:32 | 显示全部楼层
下载学习,谢谢分享
回复

使用道具 举报

ID:312383 发表于 2018-5-3 07:33 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:411378 发表于 2018-10-17 21:18 | 显示全部楼层
学习了
回复

使用道具 举报

ID:307643 发表于 2018-10-18 21:14 | 显示全部楼层
网络受时没玩过。接口nowapi
回复

使用道具 举报

ID:411542 发表于 2018-10-24 11:17 | 显示全部楼层
赞!小白正在学习中......
回复

使用道具 举报

ID:420325 发表于 2018-11-4 00:41 | 显示全部楼层
好东西 正在研究这方面 帮大忙了
回复

使用道具 举报

ID:158812 发表于 2018-11-9 10:29 | 显示全部楼层
这只使用ESP8266就 可以解决了,用ESP-12E这样的模块,本身就可以通过I2C驱动OLED 了。
回复

使用道具 举报

ID:430112 发表于 2018-11-20 19:35 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:430197 发表于 2018-11-20 21:06 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:430197 发表于 2018-11-20 21:07 | 显示全部楼层
大佬   膜拜
回复

使用道具 举报

ID:430257 发表于 2018-11-20 22:44 | 显示全部楼层
好东西
回复

使用道具 举报

ID:432865 发表于 2018-11-25 15:33 | 显示全部楼层
学习学习,感谢分享
回复

使用道具 举报

ID:463459 发表于 2019-1-7 10:56 | 显示全部楼层
不错不错
回复

使用道具 举报

ID:345352 发表于 2019-2-7 13:13 来自手机 | 显示全部楼层
还是网络授时比较实际,GPS跟电波在室内都收不到信号
回复

使用道具 举报

ID:474696 发表于 2019-2-8 18:03 | 显示全部楼层
感谢分享!
回复

使用道具 举报

ID:353239 发表于 2019-2-25 10:02 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:305375 发表于 2019-3-17 22:20 | 显示全部楼层

谢谢分享
回复

使用道具 举报

ID:410945 发表于 2019-4-7 09:56 | 显示全部楼层

下载学习,谢谢分享
回复

使用道具 举报

ID:524562 发表于 2019-4-29 16:32 | 显示全部楼层
好帖,学习一下。
回复

使用道具 举报

ID:138008 发表于 2019-5-7 14:36 | 显示全部楼层
厉害,把最重要的源码部分给删去........
回复

使用道具 举报

ID:228360 发表于 2019-7-2 17:25 | 显示全部楼层
谢谢分享,学习学习。
回复

使用道具 举报

ID:582610 发表于 2019-7-11 21:40 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:586417 发表于 2019-7-18 15:57 | 显示全部楼层
很有用“!感谢楼主的无私贡献
回复

使用道具 举报

ID:177900 发表于 2019-8-30 17:07 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:606403 发表于 2019-9-2 16:37 | 显示全部楼层
学到了,谢谢分享
回复

使用道具 举报

ID:476785 发表于 2019-9-3 14:17 | 显示全部楼层
绝世好帖!!非常感谢楼主分享
回复

使用道具 举报

ID:626134 发表于 2019-10-18 14:53 | 显示全部楼层
正是我想找的,参考下代码
回复

使用道具 举报

ID:633992 发表于 2019-11-1 18:48 | 显示全部楼层
不错,很好
回复

使用道具 举报

ID:220020 发表于 2019-11-5 16:09 | 显示全部楼层
有原理图吗
回复

使用道具 举报

ID:119642 发表于 2019-11-16 20:50 | 显示全部楼层
真的很牛啊。板子都自己做了。
回复

使用道具 举报

ID:300101 发表于 2019-11-17 09:10 | 显示全部楼层
牛,很有用!感谢楼主的无私贡献
回复

使用道具 举报

ID:641608 发表于 2019-11-23 16:11 来自手机 | 显示全部楼层
谢谢,学习了
回复

使用道具 举报

ID:119642 发表于 2020-4-1 21:00 | 显示全部楼层
你这个是纯手工啊。电路板都是自蚀的。这个牛了。
回复

使用道具 举报

ID:119642 发表于 2020-4-1 21:00 | 显示全部楼层
这个真是纯手工。电路板都是自己蚀的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表