|
很久之前就想做一個(gè)智能電度表,可以通過(guò)網(wǎng)絡(luò)查看實(shí)時(shí)電能參數(shù),以及每天每月的用電情況,但由于沒(méi)有找到合適電能測(cè)量模塊,所以一直沒(méi)能實(shí)現(xiàn);直到偶然中我發(fā)現(xiàn)了Peacefair PZEM 004T 電能模塊,它能較好地測(cè)量電能,價(jià)格也可以接受,所以用它來(lái)實(shí)現(xiàn)是再好不過(guò)了。ESP8266是個(gè)小巧便宜的模塊,內(nèi)置獨(dú)立處理器芯片,具很強(qiáng)的網(wǎng)絡(luò)功能,利用它就能做出可以聯(lián)網(wǎng)的智能設(shè)備,同時(shí)還省去了單片機(jī)。所以借助于ESP8266和PZEM 004T就可以很方便的實(shí)現(xiàn)智能電度表。
首先購(gòu)買(mǎi)NodeMCU開(kāi)發(fā)板,這個(gè)開(kāi)發(fā)板搭載ESP8266模塊,集成了串口下載芯片,是非常理想的實(shí)驗(yàn)平臺(tái),然后刷了NodeMCU固件,打算使用LUA進(jìn)行開(kāi)發(fā)。說(shuō)起來(lái)簡(jiǎn)單做起來(lái)難!程序?qū)戇M(jìn)去后各種問(wèn)題不斷,于是又一個(gè)一個(gè)的想辦法解決,但是我遇到了一個(gè)最終也沒(méi)有解決的問(wèn)題,那就是模塊老是莫名地重啟,串口輸出亂碼,查找了兩天原因未果后(已找到解決方法,將整個(gè)flash擦除再燒寫(xiě)就不會(huì)出現(xiàn)這個(gè)問(wèn)題了),不得不放棄使用NodeMCU固件開(kāi)發(fā)...接下來(lái)?yè)Q為Arduino集成開(kāi)發(fā)環(huán)境進(jìn)行開(kāi)發(fā),但是發(fā)現(xiàn)這樣無(wú)法了解ESP8266的許多細(xì)節(jié)了,并且Flash占用也大,繞了一圈之后,最終選擇了官方SDK開(kāi)發(fā),雖然效率不高,但可以了解ESP8266的工作細(xì)節(jié),使用的也是我熟悉的C語(yǔ)言,程序的運(yùn)行效率也應(yīng)該比其他方式要高。然后就去下載了官方SDK,開(kāi)發(fā)軟件,ESP8266的各種技術(shù)文檔,按照教程一步一步地搭建開(kāi)發(fā)環(huán)境,這些都做完后三天就過(guò)去了。按照最初的設(shè)想,我要使用Web瀏覽器查看系統(tǒng)的各種參數(shù),所以就讓ESP8266做web server;經(jīng)過(guò)近一個(gè)星期的努力,做出了一個(gè)非常簡(jiǎn)單的原型機(jī),由于缺乏html等相關(guān)方面的知識(shí),顯示效果不理想;ESP8266做web server感覺(jué)有些勉強(qiáng),畢竟其數(shù)據(jù)處理能力很有限,所以最終選擇使用Labview做上位機(jī),這樣模塊的數(shù)據(jù)傳輸量降低了不少,同時(shí)方便編程,做出的顯示界面也較為美觀。然后就沿著選定的方案一步一步地去實(shí)現(xiàn)功能,中間各種各樣的坑就不說(shuō)了,經(jīng)過(guò)一個(gè)多月的開(kāi)發(fā),終于實(shí)現(xiàn)了最基本的功能,即查看實(shí)時(shí)電能參數(shù),至于記錄各時(shí)段的電能參數(shù)不太好實(shí)現(xiàn),因?yàn)镋SP8266沒(méi)有獨(dú)立的RTC,而且需要設(shè)計(jì)一個(gè)存儲(chǔ)模型來(lái)存儲(chǔ)電能參數(shù),這還需要不少時(shí)間。同時(shí)已支持一鍵配網(wǎng)功能,使用Esptouch實(shí)現(xiàn),使用超級(jí)方便!
此版本定為V2.0,以后還會(huì)對(duì)其進(jìn)行升級(jí),增加新的功能,比如存儲(chǔ)歷史電量信息,添加繼電器等。
昨天花了幾個(gè)小時(shí)制作實(shí)物,進(jìn)行的還算順利,畢竟硬件連接很簡(jiǎn)單!難就難在軟件開(kāi)發(fā)上。
|
評(píng)分
-
查看全部評(píng)分
|