tft每日頭條

 > 圖文

 > 51單片機時鐘和stm32時鐘區别

51單片機時鐘和stm32時鐘區别

圖文 更新时间:2024-08-11 13:11:14

本内容來源于@什麼值得買APP|作者:starcly

創作立場聲明:1.PO主不是專業人士,隻有一點點計算機基礎,一些技術操作可能有誤,畢竟張大媽藏龍卧虎,有班門弄斧之嫌望,請不吝指正;2.文中涉及的軟硬件有參考網上多篇帖子,但不是純粹抄襲,衷心感謝原作者;3.我願全部開源與大家分享,但不允許有人将其用于盈利或者非法用途。原創不易,轉發注明,切勿洗稿。

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)1

ESPx_CLOCK

每天能利用的隻有神獸午睡的時間,通過一點點學習,一點點填坑,做了這個“基于ESP8266的網絡點陣時鐘”。現在回頭整理相關資料,盡可能詳細地與大家分享,望輕噴。 資料後附,服務三無,先上效果:

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)2

先來個張大媽

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)3

時間

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)4

日期

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)5

溫度

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)6

環境光線感應

PART_0_神坑警告

在此奉勸蠢蠢欲動的手殘星人,DIY有風險,入坑需謹慎!風險大于等于以下幾點:

  1. 把你帶進坑,我跑了;
  2. 花時間,花錢,費發際線,啥都做不出來;
  3. 需要使用工具,可能會造成意外的人身傷害,如:工具割傷,烙鐵燙傷,焊料中毒等;
  4. 錯誤的設計、操作可能會帶來其他意想不到的後果。

PART_1_思路和設計

沒被勸退的都是條漢子。

一、 思路

我堅信,思路指引方向,我在做這個小玩意兒過程中,一直都是堅持以下幾點原則的:

  1. 容易:易于獲取材料,易于制作,易于成功;
  2. 廉價:盡量不搞高大上,材料選擇盡量便宜的,手頭有的一些元件盡量利用起來;
  3. 實用:做了最終能用、好用。

二、 方案

看了一天,确定了最基本的需求:即能通過SNTP進行網絡校時,顯示在屏幕上,其他一些附帶功能就算送吧,需求勾勒出大概的框圖如下:

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)7

功能框圖

整個系統輸入電源、按鈕信息、光線亮度信息和WiFi,輸出信息到屏幕上和蜂鳴器上。

實際上,由于ESP8266和點陣屏的特性,這個系統并不僅可以用于顯示時間,還能通過WiFi取得想要的各類信息,并顯示出來,如:天氣?股票點數?比特币價格?CPU溫度監控?更進一步可以通過ESP8266芯片和服務器進行交互,把數據傳送到其他終端上。這些都隻要通過修改程序就可以做到。

真,開放題。

三、 設計

接着細化一下,下面列出的是我經過3次嘗試最終确定的方案,前面兩次的坑我已經用腦子裡的水填上了:

  1. 主控制器:用ESP8266模組,價格便宜,性能強悍,直接搞定主控和WiFi兩個問題。現在除了官方給的固件,還能跑Arduino、Lua和MicroPython等框架,我們這次就用Arduino框架;唯一不足就是引腳太少了,但這個不影響我們的項目;
  2. RTC時鐘:DS3231芯片,精度高、内置晶振、簡單好用,除了貴就是棒;
  3. 顯示:直接采用成品MAX7219 8*8點陣模塊,我也考慮過自己做,但是PCB布局很困難,最終還是要兩層結構,那倒不如買成品,省去了很大一堆煩惱;
  4. 電源:MICRO USB 5V輸入,闆上穩壓到3.3V;
  5. 其他:蜂鳴器、光感、按鈕等配套設備。

三代PCB設計同堂,從上往下分别是1、2、3,打碼的地方是嘉立創的客戶編碼,看到一點點進步了沒?

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)8

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)9

三代PCB同堂

我前面趟的坑可以總結出以下幾點經驗:

  1. ESP8266模組同時用作主控和WiFi芯片是OK的,DS3231模組太大大大,要用芯片自己搭建;
  2. 成品顯示模塊是OK的,就是固定孔位有點麻煩,點兩次都不太準。另外顯示模塊直接用5V供電,可以亮一點;
  3. 因為用了點陣模塊和ESP8266,所以整機功耗不低,單節锂電池(嘗試過18650,還是容量型)續航捉雞,意義不大;
  4. 有些LDO(低壓差線性穩壓)是騙子,壓差根本不低;
  5. 配套設備要注意型号尺寸問題,我為此還買了把卡尺量元件大小。

最終我設計的時鐘是這樣的一個結構,由于是後期整理的,我直接上成品圖來示意。

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)10

整體結構1

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)11

整體結構2,分兩層

打了箭頭的都好理解,就紅框部分是空着的,原因有二:一是制造PCB的工廠有優惠,10cm以内才能享受,我現在控制到了9.6cm;二是如果要裝進殼子,這裡可以放一個锂電池充放電模塊。

PART_2_準備工作

赴坑前,必要的材料如下,材料豐儉由人,工具自己用着順手就好:

一、 物料和耗材

物料和耗材主要就是一些電子元件,絕大部分來自X寶,電子元件單價非常便宜,最好還是在一家店買齊,要不運費不劃算:

1.ESP-12F模組,其實就是安信可公司(或其他公司)拿樂鑫公司的ESP8266芯片,進行二次封裝的産品,安信可的會稍貴一點,我買的是DOIT的。關鍵字:ESP-12F。

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)12

DOIT ESP-12F

不是我手抖,便宜貨的工藝就這樣,看見那毛刺了沒……

2.DS3231芯片,美信公司的高精度時鐘芯片,自帶溫度補償,準!關鍵字:DS3231。

3.MAX7219 LED 8*8點陣屏幕模塊,大家都差不多,但是要注意孔位。關鍵字:MAX7219 點陣。

4.SPX3819 LDO穩壓芯片,低壓差線性穩壓芯片(LDO),壓差低,可以用電池供電。關鍵字:SPX3819。

5.MICRO USB母座,就是一個USB插座。關鍵字:MICRO USB母。

6.CR2032電池和電池座,紐扣電池。關鍵字:CR2032、CR2032電池座。

7.撥動開關,這個其實不是必須的,畢竟鐘不太關,有的話燒程序時候方便點。關鍵字:12D07撥動開關。

8.輕觸開關,微動開關。關鍵字:微動開關、輕觸開關 三腳。

9.12085無源蜂鳴器,無源蜂鳴器可以根據PWM頻率發出不同的聲音。關鍵字:無源蜂鳴器。

10.GL5539光敏電阻,會随着光線強弱變化,改變電阻阻值,用來檢測環境亮度。關鍵字:光敏電阻。

11.0805貼片電容、0805貼片電阻、SS14二極管,小小的電容電阻,這個大小還能手工焊接,再小真的難,具體值看原理圖。關鍵字:貼片電阻、貼片電容、0805、SS14。

12.排針、排母,用來做插接件。關鍵字:排針、排母。

13.M3銅柱、螺絲、螺母,五金連接件。關鍵字:銅柱、螺絲、螺母。

14.焊錫及助焊劑,很便宜的耗材,但好一點的焊錫和助焊劑會讓整個焊接過程好辦很多,含鉛焊錫熔點低好用但污染大,無鉛的環保但熔點高難用。關鍵字:焊錫絲、助焊劑。

15.洗闆水,焊接好之後把闆子洗幹淨的有機溶劑,我用了無水酒精。關鍵字:洗闆水。

二、 軟硬件工具

需要用到的工具List:

1.電腦,系統随意,但要确保有USB轉TTL模塊的驅動;

2.USB轉TTL模塊,用于燒錄程序;

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)13

CP2102模塊

3.電烙鐵,焊接工具,我用的是傳說中的“鮑魚白光”;

4.鑷子,焊接輔助工具,畢竟貼片電阻太小了,鑷子幫我們夾住元件;

5.舊牙刷,用來洗焊接好的闆子,刷刷刷。

需要用到的軟件其實就三個:

1.EDA工具使用立創EDA。

這個是國産的、基于HTML的、簡單易用的EDA工具,自帶了非常全面和開放的封裝庫,對小白非!常!友!好!【鬼話警告】。

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)14

立創EDA

由于是基于Web的,不用安裝,隻要浏覽器打開,注冊賬号就行。但是有一點問題:畫布放大到很大時候,拖動會卡,反正我的Surface Pro 6(i5-8350U)是跑不動的,因為我的古董台式機可以跑(i3-530),所以感覺更像是優化問題。

2.編程使用PlatformIO。

照理說Arduino IDE作用一樣,但是我不喜歡……

【吐槽張大媽編輯器,插不進鍊接還甩鍋給網絡】,請自行搜索VSCode。

VSCode是PlatformIO的運行環境;PlatformIO可以在VSCode的插件模塊直接安裝,好用!推薦!

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)15

PIO

我的電腦已經安裝了,“安裝”就變成了 “卸載”,正常情況下點擊“安裝”就行,非常簡單。因為這個插件基于Python,所以安裝時會自動安裝Python,略慢。

3.其他還需要USB轉TTL模塊的驅動。

這個取決于模塊的芯片,推薦CP2102和CH340,其他差的差貴的貴。Windows10環境下,插上系統自動安裝驅動,不愁。

PART_3_構建血肉——硬件

毫無疑問,看到這裡的都已經是勇士了……

一、 PCB

首先你需要一張PCB。整個過程大概就是:畫原理圖——畫/選擇元件封裝——原理圖轉PCB——布線——導出Gerber文件——做成PCB。實際上沒多難,就是鼠标拖一些元件,給他們連上線,這個确實是最簡單的EDA工具了,系統也給了很詳細的操作手冊。

因為是他們自己家的,比X寶便宜點。

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)16

回過來~PCB的原理如下,我大概解釋一下:

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)17

原理圖

  1. 電源是Micro USB接口接入的5V,可以使用手機充電器、充電寶供電,并聯一個排針,用于外接供電,如裝進殼子裡用電池供電。電源經過開關,接入SPX3819 LDO穩壓到3.3V,由于SPX3819壓差足夠低,電池供電也沒啥大問題,這裡需要配套一些電容,具體電路可以參考SPX3819DataSheet給的典型應用電路。
  2. 主控用的是ESP8266,需要一些外圍電路,如:上拉下拉電阻,這個可以參考安信可官方網站給出的DataSheet。
  3. DS3231模塊的外圍電路非常簡單,隻需一個備用電源,我在這裡用了一顆CR2032,通過電池座焊在PCB上。
  4. 光敏電阻通過下面的限流電阻,接入ADC用于感知外界光線亮度變化。
  5. 蜂鳴器這裡使用的是無源蜂鳴器,相對有源蜂鳴器通電就響會麻煩一點,用了一個S8550三極管做開關,為了讓聲音不那麼大,我還是給他接了3.3V電壓驅動,喜歡聲音洪亮的接5V即可。
  6. 輕觸開關接的是GPIO0,這個IO同時是ESP8266的燒錄模式入口,這樣這個開關就可以同時起到運行時切換,啟動時按住燒錄兩種功能。
  7. 剩下三個是排針排母接口,TTL用于燒錄,LED MATRIX引出SPI接口匹配MAX7219點陣屏,OUT是我沒用到的GPIO16接口,我把他單獨引出,還加了GND和VCC,用于擴展一些外設,目前并沒用到。

把前面的原理圖轉換成PCB,調整位置和封裝,經過布線,就可以畫出PCB來,這個PCB是經過前面兩次失敗的經驗總結起來的成果,凝聚了我海量無知的淚水:

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)18

PCB

一通操作後,可以讓系統導出一個Gerber文件,所謂Gerber文件就是把電路闆的信息,按層打包在一個壓縮包裡,通過一些軟件,可以更加直觀地看到PCB的模樣。

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)19

導出一個Gerber

有了Gerber文件,我們可以制造成PCB了。

2020年了,現在是講究産業鍊的時代,我不建議在家自己腐蝕PCB,因為自己做一不環保,廢水難以處理;二工藝太差,工業生産的品質和工藝是吊打手工操作的。

我的PCB是在嘉立創做的,因為他們家有一個非常強勁的活動:用他們的電腦版下單助手下單,PCB尺寸在10cm*10cm以内,普通工藝,5張闆隻要5元!還順豐包郵!

妙啊~

也正是因為這個原因,你可以看到我做的PCB沒有跟點陣屏幕一樣長,因為我要控制在10cm*10cm以内。【再次吐槽張大媽編輯器,為什麼我word貼進來就變成了250px???】

當然也可以在他們的網站下單,同樣要求,20塊包郵。疫情期間5元特價活動暫停過一段時間,我的PCB就是那會兒20塊做的,你要是查一下以前做個PCB多少錢的話,會覺得20塊并不貴。

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)20

在PC下單助手裡上傳Gerber文件

把前面的Gerber文件,在系統裡面上傳,然後設置一些工藝參數,填上地址,付款,就跟網上買東西一樣方便,然後就休息一兩天,等快遞吧。

二、 焊接組裝

由于我打樣時工廠才剛剛複工,耐心等待……

順豐小哥終于把PCB給我送來了:

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)21

優秀的包裝

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)22

真空包裝,還有幹燥劑

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)23

PCB

放在平時就是5塊錢包郵的,這包裝,這工藝,還是良心吧。拿出來先比劃一下,孔位OK【請無視紙巾】:

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)24

比劃一下

接着電烙鐵操作起來,焊好,我少焊了兩個電容,那個型号一時半會兒沒找到,先空着了,基本不影響使用。焊好用酒精、牙刷洗刷刷:

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)25

焊好、洗好了

正常操作裡面洗闆水更加好用,我沒有,但是有無水酒精,一樣可以洗闆子,注意是無水酒精,醫用酒精酒精含量隻有75%,含水!不能用!

另外強調一下,焊錫和助焊劑的煙霧和洗闆水的揮發性成分都有毒,請在通風的地方操作。細心的可能看出來背景有點不一樣,上圖那是我的鼠标墊,然後焊的時候不小心烙鐵那麼一抖,一個洞……所以看好你們的小手……

Part_4_注入靈魂——程序

壯士!先幹了這碗!

OK~前面已經提到了,我們的時鐘程序是基于Arduino開發的,ESP8266本身官方并沒有支持Arduino,它的Arduino框架是第三方提供的。

一、 編寫和抄襲程序

申明一下:我這裡的代碼有抄各種開源項目的~

先用我們的開發工具——PlatformIO,新建一個項目:

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)26

PIO新建

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)27

PIO新建

點擊Finish之後,PlatformIO會自動安裝對應的闆子、框架,并幫你搭建好Arduino程序的基本框架。

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)28

需要修改的2個文件

隻需要把main.cpp和platformio.ini這兩個文件照抄我提供的程序,更懶一點的話可以複制文件替換掉。因為我的項目文件夾裡面有其他子項目的代碼,我又沒有完全整理好,所以我就不用Git之類的辦法開源給大家了。特别說明下,我這程序比較簡單,就是做了時鐘功能,鬧鐘硬件已經有,軟件沒啟用。

這裡一個問題:由于一些奇奇怪怪的網絡問題, , u8g2這個庫大家是很難直接從PlatformIO下載和安裝好的。沒關系,給他手工操作一波,把庫文件下載解壓,u8g2lib文件夾放到lib文件夾裡面就行了。這裡注意層級,不要多層文件夾嵌套,具體操作README裡面已經寫得很清楚了。

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)29

u8g2lib

好了,程序抄完了,點一下下面那個鈎,編譯代碼,一般情況下會滾一段時間的代碼,最後沒報錯就是一切OK~

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)30

編譯成功

二、 燒錄

把USB轉TTL模塊和時鐘PCB接好:

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)31

接線注意

GND好理解,接地;注意TXD和RXD是交叉連接的,交叉!交叉!交叉!我為了方便,把TTL引腳焊到了背後,這樣在插着屏幕時候也能比較容易插拔線:

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)32

TTL我焊在背後了

接好線後準備動作:

  1. 給闆子插上電源,關閉開關;
  2. 把USB轉TTL模塊插上USB接口;
  3. 左手按住闆子上的輕觸開關,右手點一下上傳。

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)33

上傳固件

這時候系統就開始檢測闆子的連接情況了,注意觀察終端的輸出,看到Connecting........_____.....時候,就是系統在等待連接了,這時候打開闆子的開關(就是上電):

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)34

好了,開始燒代碼了,進度會刷新百分比。看到[SUCCESS]就燒錄完成了。這裡提示一下,有可能沒到100他就失敗了,多半是因為TTL信号完整性的問題,我也碰到過幾次,我猜測有兩個原因,一是我的闆子設計或者焊接有問題;二是usb轉TTL模塊本身或者杜邦線質量問題。多次嘗試吧,沒問題的。

拔掉各種線,關掉闆子電源開關。

然後開機就可以使用了,第一次使用會按程序進入校時:

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)35

出現這個時候就是在等待配網

然後用手機進行配網:

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)36

選擇這個SSID

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)37

這個

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)38

選擇你要連接的WiFi,下面輸入密碼

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)39

這就好了

搞定。

Part_5_其他

一、 缺憾和改進

留下的缺憾還是有好幾個:

1.沒有外殼。

其實做外殼的辦法有好多種,最方便的還是3D打印,有的話打印一個外殼還是不錯的。

2.還是需要外接供電。

這個我預留了接口,目前這個造型下,軟包锂電池和21700锂電池都是不錯的選項,一起把它做進外殼裡面,但是需要外置充放電模塊。

3.PCB還是畫錯了一筆。

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)40

線太粗了

這條導線我畫的太粗了,把USB的兩個腳連起來了——應該是不小心手抖。因為我們USB不傳數據,所以不影響使用,但在某些特殊的數據線下面,可能會無法供電。我分享的PCB已經修複這個問題。

4.程序還是随便寫寫的,鬧鐘硬件已經有,軟件沒啟用。

還好,我還有個寫代碼的朋友【寫代碼的也有朋友?】,他在我的程序上面修修補補,做了鬧鐘、農曆、滾動之類的各種功能。

畢竟他還沒女朋友……就不催他合并代碼了吧。

二、 分享資料

因為我的項目裡面還有其他子項目的資料,我又懶得理,所以我就抽取了有關聯的,還是通過百度網盤吧:(請點擊擴展鍊接前往相關頁面獲取)

提取碼: k8yw

如果資源有問題,請反映給我,謝謝~

我哪天想到了的話,我會把代碼更新下的~

三、 新坑

疫情期間其實主要精力在搞這個,基于ESP32的平衡車……

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)41

原型已經可以站起來了

51單片機時鐘和stm32時鐘區别(ESPx網絡點陣時鐘入坑指南)42

然後自己打闆子

還在調試,現在複工了,坑有空再填。

以上,祝大家身體健康,玩得開心~

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved