久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10382|回復: 14
打印 上一主題 下一主題
收起左側

基于WiFi的網絡授時時鐘(帶實時天氣更新)STM32程序設計

  [復制鏈接]
跳轉到指定樓層
樓主
本方案采用的是MCU+AT指令的形式開發,MCU是大家比較熟悉的意法半導體公司STM32F103C8T6,WiFi模塊使用的是安信可ESP-12F,本方案是一個Demo設計,比較簡單,僅實現了功能,算是一個拋磚引玉吧!

先上視頻演示:https://v.youku.com/v_show/id_XN ... m=a2hzp.8244740.0.0

WiFi模塊資料鏈接:wiki點ai-thinker點com/esp8266

STM32F103C8芯片資料鏈接:https://www.stmicroelectronics.c ... 103c8.html#overview

硬件部分,由時鐘電路+WiFi模塊+MCU最小系統+OLED顯示屏+穩壓電路+按鍵電路組成,這里采用時鐘電路是希望模塊在斷網后還能獲取一個比較精準的時間,并且電路設計上增加了儲能電容可以在斷電一個月后保持時間數據不丟失,當然這里也可以用STM32里面的RTC時鐘;OLED顯示屏采用的是裸屏設計,使整體電路板一體化效果好些;其他電路都是參考開發板or硬件手冊上設計的;硬件設計軟件采用的是 Altium Designer (13.0),原理圖概略圖如下圖所示:




實物圖如下圖所示:(電路板是找廠家打樣的,元器件是純人工手焊)




軟件部分,由底層驅動+WiFi聯網+調用API接口并解析數據+OLED顯示組成;首先分析一波,這里面用到了MCU的USART、I2C*2、GPIO*2引腳資源,然后對應去找相關類似的例程,既然已經有輪子了,為何還要花時間去造輪子,當然是直接改例程來的舒服。這里開發方式采用的是庫函數開發,用的是STM32的標準庫,對應找到了OLED顯示屏的驅動資料、PCF8563的驅動資料、WiFi模組的驅動資料、按鍵輸入的驅動資料;將它們整合到一個工程里面,然后更改里面的引腳配置等,就完成了整個設計的底層驅動。

WiFi聯網,這里WiFi是設置成了STA模式(STA模式是啥,可自行問度娘),然后連接手機開的熱點(注意手機必須要能連接上公網,即我們常用的互聯網)。具體如何設置可以參考WiFi模塊的AT指令集,AT指令集在上面WiFi模塊資料里面有。手機開的WiFi熱點的賬號密碼需要事先知道,并寫入在程序里面,后續如果需要更改熱點的賬號密碼,就需要更改程序。

天氣和時間更新,即調用API接口并解析數據,這里用到了兩個API接口,第一個是心知天氣的天氣實況數據獲取,因為是免費版所以只能獲取到天氣現象和氣溫兩項數據;第二個是Nowapi的北京時間數據獲取。因為用到的兩個API接口是隸屬于兩個不同的服務器,所以程序上需要進行切換,連完這個服務器后需要斷開連另一個服務器,比較麻煩。后面我發現其實Nowapi里面就有天氣數據可以獲取,完全可以通過只連接這個服務器就實現天氣和時間數據的更新。實現方法參考下面的網址,寫比較詳細。

心知天氣:docs點seniverse點com/api/weather/now.html、服務器IP116.62.81.138(域名api.seniverse.com)、默認端口80

Nowapi: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分鐘更新一次,那么這里就需要用到定時器。

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

單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "bsp_usart1.h"
  3. #include "bsp_SysTick.h"
  4. #include "bsp_esp8266.h"
  5. #include "test.h"
  6. #include "oled.h"
  7. #include "bsp_pcf8563.h"
  8. #include "bsp_key.h"
  9. #include "bsp_TiMbase.h"

  10. /**
  11.   * @brief  主函數
  12.   * @param  無
  13.   * @retval 無
  14.   */
  15. int main ( void )
  16. {

  17.         SysTick_Init();                                                                           //配置 SysTick 為 1ms 中斷一次
  18.         Delay_us(100000);                         //延時100ms等待電壓穩定
  19.         /* 初始化 */
  20.        
  21.   USARTx_Config();                                                                          //初始化串口1
  22.         ESP8266_Init();                                                                            //初始化WiFi模塊使用的接口和外設
  23.         Pcf8563_Gpio_Init();                                                                             //時鐘芯片初始化
  24.        
  25.         Pcf8563_SetTime();                        //設置初始時間
  26.        
  27.         Key_GPIO_Config();                                                                        //按鍵初始化
  28.         OLED_Init();                                                                                                                        //初始化OLED  
  29.         OLED_Clear();                                                                                     //清屏

  30.        
  31.         BASIC_TIM_Init();

  32.         WIFI_Config_Show();
  33.        
  34.         printf ( "\r\nWecome!\r\n" );                    //打印測試例程提示信息

  35.   ESP8266_StaTcpClient_UnvarnishTest();     //建立TCP/IP連接
  36.        
  37.   while ( 1 );
  38.        
  39.        
  40. }


  41. /*********************************************END OF FILE**********************/
復制代碼




全部資料51hei下載地址:
硬件-基于WiFi的網絡授時時鐘設計V1.0.7z (10.66 MB, 下載次數: 292)
軟件-基于WiFi的網絡授時時鐘設計V1.0.7z (217.07 KB, 下載次數: 300)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏27 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:601774 發表于 2019-9-11 18:25 | 只看該作者
很棒啊,最近也想弄一個時鐘,到實際弄的時候在請教下,收藏了
回復

使用道具 舉報

板凳
ID:601774 發表于 2019-9-11 18:27 | 只看該作者
RTC那個電池是用法拉電容嗎
回復

使用道具 舉報

地板
ID:601774 發表于 2019-9-11 18:33 | 只看該作者
WIFI能隨意獲取其他網頁的時間嗎,假如用在不是北京時間的地方能自動獲取時間嗎,比如拿去歐洲了,不是第八時區了,是否能自動校時
回復

使用道具 舉報

5#
ID:99570 發表于 2020-1-16 21:29 | 只看該作者
好東西,學習一下。買模塊弄一個試試。
回復

使用道具 舉報

6#
ID:230666 發表于 2020-1-20 13:34 | 只看該作者
下載來學習一下 OLED 屏幕驅動 我的老是亂碼
回復

使用道具 舉報

7#
ID:620291 發表于 2020-3-5 16:40 | 只看該作者
好東西,學習一下。買模塊弄一個試試
回復

使用道具 舉報

8#
ID:119642 發表于 2020-4-7 22:14 | 只看該作者
挺喜歡這個的。非常不錯
回復

使用道具 舉報

9#
ID:388929 發表于 2020-4-8 23:28 | 只看該作者
WIFI模塊好,看到你這成品,我也想搞一個來學一下,謝謝你的分享,謝謝,我先打個MARK,買回來再來看看
回復

使用道具 舉報

10#
ID:451980 發表于 2020-7-16 14:34 | 只看該作者
ygsasd 發表于 2019-9-11 18:27
RTC那個電池是用法拉電容嗎

對的, 實際就是大電容,它能儲存電能,可以提供保存1-2月時間數據不丟失的電能
回復

使用道具 舉報

11#
ID:451980 發表于 2020-7-16 14:35 | 只看該作者
ygsasd 發表于 2019-9-11 18:33
WIFI能隨意獲取其他網頁的時間嗎,假如用在不是北京時間的地方能自動獲取時間嗎,比如拿去歐洲了,不是第八 ...

這個時間是從服務器API接口拿到的,只要API接口支持國外時間輸出,那么就可以獲取到,可能需要改動下代碼
回復

使用道具 舉報

12#
ID:451980 發表于 2020-7-16 14:36 | 只看該作者
zrm0806 發表于 2020-1-20 13:34
下載來學習一下 OLED 屏幕驅動 我的老是亂碼

OLED屏幕可以先用例程驅動試試,不行的話看看是不是I2C沒加上拉電阻,或者是沒有焊接好
回復

使用道具 舉報

13#
ID:300127 發表于 2020-10-19 08:03 | 只看該作者
下載來學習一下,謝謝你的分享
回復

使用道具 舉報

14#
ID:930143 發表于 2021-5-31 18:05 | 只看該作者
除了C語言和python外還需要什么編程語言嗎?需要mqtt協議什么的嗎?
回復

使用道具 舉報

15#
ID:671688 發表于 2023-3-28 18:33 | 只看該作者
好東西,正好需要做網絡授時
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久久久久国产 | 操久久 | 成人免费影院 | 日韩一区二区福利 | 欧美日本高清 | 亚洲高清在线 | 欧美日在线 | 成人一区二区三区在线观看 | 性高湖久久久久久久久3小时 | 国产一区亚洲二区三区 | 国产精品久久久久久久久久 | 亚洲狠狠爱一区二区三区 | 91高清在线 | 精品国产乱码久久久久久牛牛 | 欧美日韩一区二区三区视频 | 国产视频久久久 | 成人三级视频 | 日韩中文字幕av | 欧美日韩亚洲一区 | 99热这里都是精品 | 精品无码久久久久久国产 | 在线观看中文字幕 | 免费国产一区二区 | 午夜久久久 | 国产乱码久久久 | 成人欧美一区二区 | 在线看亚洲 | 欧美精品乱码99久久影院 | 婷婷色国产偷v国产偷v小说 | 成人免费三级电影 | 欧美福利 | 亚洲三区视频 | 日本一区二区视频 | 国产乡下妇女做爰 | 在线观看免费av网 | 日韩欧美国产一区二区 | 成人性视频免费网站 | 99精品电影| 国产精品久久久久久久久久久免费看 | 99在线资源| 久久香蕉网 |