資料介紹
描述
曾經(jīng)討厭您必須走到恒溫器以查看室溫是否足夠好,或者您必須在手機上做 5 種不同的滑動手勢才能訪問天氣應(yīng)用程序,只是為了了解您是否需要當(dāng)您想外出時,穿夾克還是只穿 T 恤?該解決方案將這些東西統(tǒng)一到一個小而有趣的項目中,您可以在其中一目了然地獲得所需的所有數(shù)據(jù)。
介紹
該時鐘有兩個視圖:“數(shù)字時鐘”和“溫度”視圖,其中顯示 DHT11 傳感器檢索到的當(dāng)前內(nèi)部溫度以及從連接的 IP 地址解析的當(dāng)前位置的天氣(如果存在)。如果時鐘無法解析兩個溫度中的任何一個,它將顯示兩個破折號作為占位符。
該應(yīng)用程序還有一個可選網(wǎng)頁,可以托管在 Apache PHP 服務(wù)器上,并具有個性化選項,例如在屏幕上顯示自定義時間和更改報告天氣的當(dāng)前位置。
該時鐘還利用 PIR 傳感器僅在檢測到運動時在屏幕上顯示數(shù)據(jù),通過延遲例行數(shù)據(jù)檢查直到再次檢測到運動來節(jié)省能源并減少 CPU 使用率。
軟件要求:
- python3 - 通常預(yù)裝在 RPi 上
- 用于 python3 的 Adafruit_DHT - sudo pip3 install Adafruit_Python_DHT
- python3 的 RPi.GPIO - sudo apt install python3-rpi.gpio
- wpa_supplicant - 用于 RPi 上的互聯(lián)網(wǎng)連接
安裝
注意:這里引用的所有管腳都是BOARD型管腳,你可以在任何管腳上連接部件,只要你改變代碼中的管腳號常數(shù),這樣程序就可以工作了。
1.復(fù)制 RPi 上的項目文件,從鏈接的 Github 存儲庫下載,或從文檔末尾的文本框中復(fù)制和粘貼。
2.1。將面包板上的 DHT11 與任何接地引腳(我使用引腳 14)上的 GND、引腳 12 上的信號和引腳 1(3.3V)上的 VCC 連接。我們?yōu)樾枰唠妷旱牟考A袅硗鈨蓚€ 5V 引腳。
2.2. 同樣對于面包板上的 DHT11 傳感器,在 VCC 和 Signal 引腳之間連接一個 5kΩ 或 10kΩ 電阻,因此默認情況下信號電平保持高電平。
3.將 PIR 傳感器與任何接地引腳(我使用引腳 9)上的 GND、引腳 7 上的 Dout 和 5V 電源引腳(我使用引腳 4)上的 VCC 連接。
4.將 16x16 矩陣顯示 VCC 引腳連接到 5V 引腳(我使用引腳 2),GND 到任何接地引腳(我使用 6),然后如下:LAT CLK DI GABCD - 在引腳 32、33、23 上, 21、19、15、13、11。
5.安裝“軟件要求”一節(jié)中提到的所需 Python 包。
6.使用以下命令運行程序:
python3 main_loop.py
可選 - 時鐘定制網(wǎng)頁:
7.使用 PHP 安裝 apache2,
8.從 Github 存儲庫或本文檔末尾的文本框中復(fù)制 Web 文件到 /var/www/html 目錄。
在啟動時運行應(yīng)用程序
使用任何文本編輯器編輯 /etc/rc.local 文件,并在通常由“exit 0”組成的最后一行之前添加以下行,并將
sudo bash -c "python3 //main_loop.py > //watch.log 2>&1" &
“watch.log”文件將存儲程序輸出的所有內(nèi)容。
在我的系統(tǒng)上,由于我將所有程序文件移動到一個名為“watch”的目錄中,因此將是:
sudo bash -c "python3 /home/pi/watch/main_loop.py > /home/pi/watch/watch.log 2>&1" &
代碼說明
每個組件都放置在一個單獨的模塊中以防止混淆,并且代碼幾乎在每一行上都有注釋,因此您可以更好地了解所有內(nèi)容。
第一個也是主要進程是“ main_loop.py ”,它管理所有其他模塊、啟動實例并指定設(shè)置。將顯示在屏幕上的數(shù)據(jù)存儲為低電壓和高電壓值的整數(shù)矩陣,因為屏幕是只有一種顏色的 LED 矩陣,而 LED 只有兩種狀態(tài),開或關(guān)。該模塊還包含用于解析字符以使其不會溢出的代碼,或?qū)ξ礄z索到所請求數(shù)據(jù)的情況進行驗證。在這里,在無限循環(huán)中,有多個檢查 PIR 傳感器是否檢測到運動、環(huán)境變量是否更改、網(wǎng)頁是否更改了所用數(shù)據(jù)的設(shè)置,或者自上次檢查以來經(jīng)過的時間是否足夠長以啟動另一個例程傳感器和 API 的數(shù)據(jù)驗證。
第二個最重要的模塊“ routine.py ”每次在配置設(shè)置發(fā)生更改時由主進程在單獨的線程中調(diào)用,通常由 Apache PHP 服務(wù)器托管的網(wǎng)頁界面更改,或每 5 分鐘更改一次以保持顯示的數(shù)據(jù)更新。它從wttr.in API 中檢索配置中指定位置的天氣數(shù)據(jù),或者如果沒有自定義設(shè)置,則通過當(dāng)前 IP 地址位置檢索數(shù)據(jù)。此外,對于時間同步,它使用來自worldtimeapi.org的數(shù)據(jù). 兩個進程之間的數(shù)據(jù)通過環(huán)境變量發(fā)送,時鐘上顯示的時間存儲為一對系統(tǒng)時間戳-時鐘時間戳,在顯示自定義時間(自定義時間)時更容易計算兩者之間的差異可以在時鐘設(shè)置網(wǎng)頁上設(shè)置)。
“ screen.py ”模塊用于LED矩陣屏的信息顯示,方便信號的發(fā)送,在“draw”函數(shù)中只取一個參數(shù),就是我們要顯示的矩陣。“延遲”函數(shù)最初使用對操作系統(tǒng)的睡眠調(diào)用,但收到的延遲太大(最小約為 8 毫秒),因此我將自己限制為在一段時間循環(huán)中不做任何事情的選項(它CPU 的成本更高,但它是唯一的解決方案,因此我們可以在顯示器上獲得不錯的刷新率)。
“ chars.py ”模塊用于將字符存儲在內(nèi)存中,以便更快地處理并將字符放入視圖矩陣的不同位置。字母以 1 和 0 值的矩陣形式存儲在文件中,文件名就是字符本身。有大小數(shù)字,位于“big_numbers”和“small_numbers”文件夾中。
對 LED 矩陣進行逆向工程
我訂購的 16x16 OKY3525-1 的尺寸是標(biāo)準 8x8 矩陣顯示器的 4 倍,而串行接口則需要更少的引腳來控制整個顯示器。我得到的驚喜是它沒有任何數(shù)據(jù)表、說明或原理圖。因此,為了擴展項目并了解更多內(nèi)容,我嘗試自己獲取原理圖。幸運的是,這 4 個數(shù)字電路上有原始銘文,因此我可以瀏覽原理圖以了解它們?nèi)绾螀f(xié)同工作。我在“參考”部分附上了 2 個數(shù)據(jù)表。
用萬用表和74HC138 datasheet,我發(fā)現(xiàn)用同一型號的兩個電路選線,使用D、C、B和A信號(0x0000-表示第一行,去0x1111-第16行,這是最后一個)。連接到第一個和第二個 74HC138 的 D 引腳選擇其中一個,因此從那里,輸出數(shù)量從 8 個增加到 16 個輸出。同時,另外兩個74HC595電路用DI、CLK、LAT信號在當(dāng)前行進行列選擇,這向我證實了這個顯示器使用了D鎖存型電路(信號發(fā)送和存儲在電路中,直到鎖存信號,當(dāng)它們一次全部顯示出來時)。
我不明白的一件事是他們?yōu)槭裁催x擇將主復(fù)位信號連接到 VCC 并將輸出使能連接到 GND,因為這兩個信號給程序員更多的自由,所以顯示器關(guān)閉了整條線路,并提供了更平滑的轉(zhuǎn)換行顯示之間。
生成的原理圖、時序圖(以獲取有關(guān)如何發(fā)送信號的示例)和用于將正確信號發(fā)送到顯示器的模塊附在下面。我在這個 Github repo 上分別上傳了更詳細的信息。
?
- 樹莓派4b原理圖下載 118次下載
- 樹莓派設(shè)計數(shù)字溫度計免費下載
- 樹莓派3和樹莓派4的原理圖免費下載 89次下載
- 樹莓派3和樹莓派4的原理圖免費下載 222次下載
- 樹莓派 Zero W的電路原理圖免費下載 114次下載
- 樹莓派傳感器的使用教程詳細概述 27次下載
- 使用樹莓派設(shè)計智能小車教程之樹莓派手機PC控制小車的實驗免費下載 22次下載
- 使用樹莓派設(shè)計智能小車教程之如何進行樹莓派模塊安裝資料免費下載 21次下載
- 樹莓派是什么樹莓派基本知識介紹詳細資料說明
- 樹莓派是什么樹莓派的簡單介紹
- 樹莓派是什么樹莓派入門教程資料免費下載
- 樹莓派傳感器教程資料下載 31次下載
- 樹莓派(Raspberry Pi)實戰(zhàn)指南.pdf 123次下載
- 樹莓派3上手 7次下載
- 樹莓派裝機教程 52次下載
- 虹科工業(yè)樹莓派應(yīng)用小技巧 573次閱讀
- dfrobotUSB/TTL樹莓派GPS模塊簡介 3211次閱讀
- dfrobotArduino 樹莓派擴展板簡介 2079次閱讀
- 淺談樹莓派4的性能及配置 3.9w次閱讀
- 淺談香蕉派與樹莓派的不同 2.5w次閱讀
- 樹莓派與nanopi的對比 5.3w次閱讀
- 香橙派和樹莓派對比 5.5w次閱讀
- 樹莓派菜鳥入門攻略 6852次閱讀
- 解答樹莓派如何開啟root賬戶 6378次閱讀
- 樹莓派有什么用_樹莓派能用來做啥_樹莓派新手入門教程 3.3w次閱讀
- 樹莓派安裝系統(tǒng)_樹莓派系統(tǒng)安裝教程 1.3w次閱讀
- 樹莓派用什么語言編程_樹莓派python編程詳解 3.8w次閱讀
- 樹莓派gpio接口及編程方法 6.4w次閱讀
- 樹莓派是什么_樹莓派的發(fā)展歷史及主要參數(shù) 1w次閱讀
- DIY一個樹莓派擴展板 7340次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多