本内容來源于@什麼值得買APP|作者:starcly
創作立場聲明:1.PO主不是專業人士,隻有一點點計算機基礎,一些技術操作可能有誤,畢竟張大媽藏龍卧虎,有班門弄斧之嫌望,請不吝指正;2.文中涉及的軟硬件有參考網上多篇帖子,但不是純粹抄襲,衷心感謝原作者;3.我願全部開源與大家分享,但不允許有人将其用于盈利或者非法用途。原創不易,轉發注明,切勿洗稿。
ESPx_CLOCK
每天能利用的隻有神獸午睡的時間,通過一點點學習,一點點填坑,做了這個“基于ESP8266的網絡點陣時鐘”。現在回頭整理相關資料,盡可能詳細地與大家分享,望輕噴。 資料後附,服務三無,先上效果:
先來個張大媽
時間
日期
溫度
環境光線感應
在此奉勸蠢蠢欲動的手殘星人,DIY有風險,入坑需謹慎!風險大于等于以下幾點:
沒被勸退的都是條漢子。
我堅信,思路指引方向,我在做這個小玩意兒過程中,一直都是堅持以下幾點原則的:
看了一天,确定了最基本的需求:即能通過SNTP進行網絡校時,顯示在屏幕上,其他一些附帶功能就算送吧,需求勾勒出大概的框圖如下:
功能框圖
整個系統輸入電源、按鈕信息、光線亮度信息和WiFi,輸出信息到屏幕上和蜂鳴器上。
實際上,由于ESP8266和點陣屏的特性,這個系統并不僅可以用于顯示時間,還能通過WiFi取得想要的各類信息,并顯示出來,如:天氣?股票點數?比特币價格?CPU溫度監控?更進一步可以通過ESP8266芯片和服務器進行交互,把數據傳送到其他終端上。這些都隻要通過修改程序就可以做到。
接着細化一下,下面列出的是我經過3次嘗試最終确定的方案,前面兩次的坑我已經用腦子裡的水填上了:
三代PCB設計同堂,從上往下分别是1、2、3,打碼的地方是嘉立創的客戶編碼,看到一點點進步了沒?
三代PCB同堂
我前面趟的坑可以總結出以下幾點經驗:
最終我設計的時鐘是這樣的一個結構,由于是後期整理的,我直接上成品圖來示意。
整體結構1
整體結構2,分兩層
打了箭頭的都好理解,就紅框部分是空着的,原因有二:一是制造PCB的工廠有優惠,10cm以内才能享受,我現在控制到了9.6cm;二是如果要裝進殼子,這裡可以放一個锂電池充放電模塊。
赴坑前,必要的材料如下,材料豐儉由人,工具自己用着順手就好:
物料和耗材主要就是一些電子元件,絕大部分來自X寶,電子元件單價非常便宜,最好還是在一家店買齊,要不運費不劃算:
1.ESP-12F模組,其實就是安信可公司(或其他公司)拿樂鑫公司的ESP8266芯片,進行二次封裝的産品,安信可的會稍貴一點,我買的是DOIT的。關鍵字:ESP-12F。
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模塊,用于燒錄程序;
CP2102模塊
3.電烙鐵,焊接工具,我用的是傳說中的“鮑魚白光”;
4.鑷子,焊接輔助工具,畢竟貼片電阻太小了,鑷子幫我們夾住元件;
5.舊牙刷,用來洗焊接好的闆子,刷刷刷。
需要用到的軟件其實就三個:
1.EDA工具使用立創EDA。
這個是國産的、基于HTML的、簡單易用的EDA工具,自帶了非常全面和開放的封裝庫,對小白非!常!友!好!【鬼話警告】。
立創EDA
由于是基于Web的,不用安裝,隻要浏覽器打開,注冊賬号就行。但是有一點問題:畫布放大到很大時候,拖動會卡,反正我的Surface Pro 6(i5-8350U)是跑不動的,因為我的古董台式機可以跑(i3-530),所以感覺更像是優化問題。
2.編程使用PlatformIO。
照理說Arduino IDE作用一樣,但是我不喜歡……
【吐槽張大媽編輯器,插不進鍊接還甩鍋給網絡】,請自行搜索VSCode。
VSCode是PlatformIO的運行環境;PlatformIO可以在VSCode的插件模塊直接安裝,好用!推薦!
PIO
我的電腦已經安裝了,“安裝”就變成了 “卸載”,正常情況下點擊“安裝”就行,非常簡單。因為這個插件基于Python,所以安裝時會自動安裝Python,略慢。
3.其他還需要USB轉TTL模塊的驅動。
這個取決于模塊的芯片,推薦CP2102和CH340,其他差的差貴的貴。Windows10環境下,插上系統自動安裝驅動,不愁。
毫無疑問,看到這裡的都已經是勇士了……
首先你需要一張PCB。整個過程大概就是:畫原理圖——畫/選擇元件封裝——原理圖轉PCB——布線——導出Gerber文件——做成PCB。實際上沒多難,就是鼠标拖一些元件,給他們連上線,這個确實是最簡單的EDA工具了,系統也給了很詳細的操作手冊。
因為是他們自己家的,比X寶便宜點。
書
回過來~PCB的原理如下,我大概解釋一下:
原理圖
把前面的原理圖轉換成PCB,調整位置和封裝,經過布線,就可以畫出PCB來,這個PCB是經過前面兩次失敗的經驗總結起來的成果,凝聚了我海量無知的淚水:
PCB
一通操作後,可以讓系統導出一個Gerber文件,所謂Gerber文件就是把電路闆的信息,按層打包在一個壓縮包裡,通過一些軟件,可以更加直觀地看到PCB的模樣。
導出一個Gerber
有了Gerber文件,我們可以制造成PCB了。
2020年了,現在是講究産業鍊的時代,我不建議在家自己腐蝕PCB,因為自己做一不環保,廢水難以處理;二工藝太差,工業生産的品質和工藝是吊打手工操作的。
我的PCB是在嘉立創做的,因為他們家有一個非常強勁的活動:用他們的電腦版下單助手下單,PCB尺寸在10cm*10cm以内,普通工藝,5張闆隻要5元!還順豐包郵!
妙啊~
也正是因為這個原因,你可以看到我做的PCB沒有跟點陣屏幕一樣長,因為我要控制在10cm*10cm以内。【再次吐槽張大媽編輯器,為什麼我word貼進來就變成了250px???】
當然也可以在他們的網站下單,同樣要求,20塊包郵。疫情期間5元特價活動暫停過一段時間,我的PCB就是那會兒20塊做的,你要是查一下以前做個PCB多少錢的話,會覺得20塊并不貴。
在PC下單助手裡上傳Gerber文件
把前面的Gerber文件,在系統裡面上傳,然後設置一些工藝參數,填上地址,付款,就跟網上買東西一樣方便,然後就休息一兩天,等快遞吧。
由于我打樣時工廠才剛剛複工,耐心等待……
順豐小哥終于把PCB給我送來了:
優秀的包裝
真空包裝,還有幹燥劑
PCB
放在平時就是5塊錢包郵的,這包裝,這工藝,還是良心吧。拿出來先比劃一下,孔位OK【請無視紙巾】:
比劃一下
接着電烙鐵操作起來,焊好,我少焊了兩個電容,那個型号一時半會兒沒找到,先空着了,基本不影響使用。焊好用酒精、牙刷洗刷刷:
焊好、洗好了
正常操作裡面洗闆水更加好用,我沒有,但是有無水酒精,一樣可以洗闆子,注意是無水酒精,醫用酒精酒精含量隻有75%,含水!不能用!
另外強調一下,焊錫和助焊劑的煙霧和洗闆水的揮發性成分都有毒,請在通風的地方操作。細心的可能看出來背景有點不一樣,上圖那是我的鼠标墊,然後焊的時候不小心烙鐵那麼一抖,一個洞……所以看好你們的小手……
壯士!先幹了這碗!
OK~前面已經提到了,我們的時鐘程序是基于Arduino開發的,ESP8266本身官方并沒有支持Arduino,它的Arduino框架是第三方提供的。
申明一下:我這裡的代碼有抄各種開源項目的~
先用我們的開發工具——PlatformIO,新建一個項目:
PIO新建
PIO新建
點擊Finish之後,PlatformIO會自動安裝對應的闆子、框架,并幫你搭建好Arduino程序的基本框架。
需要修改的2個文件
隻需要把main.cpp和platformio.ini這兩個文件照抄我提供的程序,更懶一點的話可以複制文件替換掉。因為我的項目文件夾裡面有其他子項目的代碼,我又沒有完全整理好,所以我就不用Git之類的辦法開源給大家了。特别說明下,我這程序比較簡單,就是做了時鐘功能,鬧鐘硬件已經有,軟件沒啟用。
這裡一個問題:由于一些奇奇怪怪的網絡問題, , u8g2這個庫大家是很難直接從PlatformIO下載和安裝好的。沒關系,給他手工操作一波,把庫文件下載解壓,u8g2lib文件夾放到lib文件夾裡面就行了。這裡注意層級,不要多層文件夾嵌套,具體操作README裡面已經寫得很清楚了。
u8g2lib
好了,程序抄完了,點一下下面那個鈎,編譯代碼,一般情況下會滾一段時間的代碼,最後沒報錯就是一切OK~
編譯成功
把USB轉TTL模塊和時鐘PCB接好:
接線注意
GND好理解,接地;注意TXD和RXD是交叉連接的,交叉!交叉!交叉!我為了方便,把TTL引腳焊到了背後,這樣在插着屏幕時候也能比較容易插拔線:
TTL我焊在背後了
接好線後準備動作:
上傳固件
這時候系統就開始檢測闆子的連接情況了,注意觀察終端的輸出,看到Connecting........_____.....時候,就是系統在等待連接了,這時候打開闆子的開關(就是上電):
好了,開始燒代碼了,進度會刷新百分比。看到[SUCCESS]就燒錄完成了。這裡提示一下,有可能沒到100他就失敗了,多半是因為TTL信号完整性的問題,我也碰到過幾次,我猜測有兩個原因,一是我的闆子設計或者焊接有問題;二是usb轉TTL模塊本身或者杜邦線質量問題。多次嘗試吧,沒問題的。
拔掉各種線,關掉闆子電源開關。
然後開機就可以使用了,第一次使用會按程序進入校時:
出現這個時候就是在等待配網
然後用手機進行配網:
選擇這個SSID
這個
選擇你要連接的WiFi,下面輸入密碼
這就好了
留下的缺憾還是有好幾個:
1.沒有外殼。
其實做外殼的辦法有好多種,最方便的還是3D打印,有的話打印一個外殼還是不錯的。
2.還是需要外接供電。
這個我預留了接口,目前這個造型下,軟包锂電池和21700锂電池都是不錯的選項,一起把它做進外殼裡面,但是需要外置充放電模塊。
3.PCB還是畫錯了一筆。
線太粗了
這條導線我畫的太粗了,把USB的兩個腳連起來了——應該是不小心手抖。因為我們USB不傳數據,所以不影響使用,但在某些特殊的數據線下面,可能會無法供電。我分享的PCB已經修複這個問題。
4.程序還是随便寫寫的,鬧鐘硬件已經有,軟件沒啟用。
還好,我還有個寫代碼的朋友【寫代碼的也有朋友?】,他在我的程序上面修修補補,做了鬧鐘、農曆、滾動之類的各種功能。
因為我的項目裡面還有其他子項目的資料,我又懶得理,所以我就抽取了有關聯的,還是通過百度網盤吧:(請點擊擴展鍊接前往相關頁面獲取)
提取碼: k8yw
如果資源有問題,請反映給我,謝謝~
我哪天想到了的話,我會把代碼更新下的~
疫情期間其實主要精力在搞這個,基于ESP32的平衡車……
原型已經可以站起來了
然後自己打闆子
還在調試,現在複工了,坑有空再填。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!