【前言】
一個熱愛技術(shù)的人一定向往有一個科技感十足的環(huán)境吧,那何不親自實(shí)踐一下屬于技術(shù)人的座右銘:“技術(shù)改變世界”巍实。
就讓我們一步步動手搭建一個屬于自己的“智能家居平臺”吧(不要對這個名詞抬杠啦携茂,技術(shù)在手,怎么設(shè)計實(shí)現(xiàn)因人而異),本文只做拋磚引玉情臭,各路大神如果有更好的想法可以各顯神通年鸳,當(dāng)然能在評論區(qū)留下更好的想法讓大家共同學(xué)習(xí)是再好不過啦剃氧。
在文章最后附有所有源代碼,有需要的可以自行下載阻星,感謝Star~
【系列目錄】
- 樹莓派GPIO簡介(Python版)
- 溫濕度數(shù)據(jù)采集存儲(DHT11朋鞍,MySql)
- 溫濕度數(shù)碼管展示(四位共陽數(shù)碼管)
- 構(gòu)建App展示溫濕度報表(ApiCloud已添,Python Flask)
- 普通家用排插集成繼電器手工改造
- App遠(yuǎn)程控制“自制智能”排插
- 使用花生棒內(nèi)網(wǎng)穿透實(shí)現(xiàn)外網(wǎng)訪問
- App遠(yuǎn)程監(jiān)控(攝像頭模塊集成)
【本節(jié)概要】
要做一些神奇的騷操作,比如環(huán)境數(shù)據(jù)采集滥酥,智能控制等更舞,最終還是要落地到設(shè)備上。要和各種各樣的設(shè)備打交道坎吻,肯定是離不開電子元件的缆蝉。市場上有大量的開箱即用的封裝的很好的硬件,但是都是獨(dú)立的或者是集成了某些功能于一身的瘦真,并不能自己靈活的進(jìn)行擴(kuò)展刊头。
如果我們要自己靈活地配置各種各樣的功能組合,自己操作原始的電子元件或許是更明智的選擇诸尽。在我們這個項(xiàng)目中原杂,我們將采用樹莓派+一系列電子元件來構(gòu)建我們的整個系統(tǒng)。
樹莓派
樹莓派是什么這里只做簡單介紹您机,貼個不帶殼子的圖~
加上殼子可以長這樣穿肄,當(dāng)然了殼子是千變?nèi)f化的,不可"以貌取派“
Raspberry Pi(中文名為“樹莓派”,簡寫為RPi际看,(或者RasPi / RPI) 是為學(xué)習(xí)計算機(jī)編程教育而設(shè)計)咸产,只有信用卡大小的微型電腦,其系統(tǒng)基于Linux仲闽。 隨著Windows 10 IoT的發(fā)布脑溢,我們也將可以用上運(yùn)行Windows的樹莓派。
說白了就是迷你電腦赖欣,當(dāng)然電腦能干的事樹莓派都可以干焚志,瀏覽網(wǎng)頁,看視頻畏鼓,玩一些對性能要求不高的游戲都是可以的酱酬。甚至還可以當(dāng)服務(wù)器,多個樹莓派搭建一個集群(樹莓派官網(wǎng)就是部署在一堆樹莓派組成的集群上)云矫。
GPIO
那么膳沽,GPIO又是什么呢?
GPIO(英語:General-purpose input/output)让禀,通用型之輸入輸出的簡稱挑社。說白了,就是一堆針腳巡揍,可以自由地通過編程手段控制其輸入還是輸出痛阻。
樹莓派自帶了很多針腳,給程序員提供電子元件控制的出入口腮敌。以“3代B+”型號樹莓派為例阱当,本身提供了兩排共40個針腳俏扩,從上面不帶殼的樹莓派圖片中可以看到上面有兩排裸露的針腳。下面是針腳分布圖:
第三列和第六列(表頭為功能名)展示了40個針腳的作用弊添,綠色的是開放通用的輸入輸出針腳录淡,黑色的是接地,5V和3.3V高電平輸出油坝,其他顏色的針腳用在一些特殊場合嫉戚,比如輸出視頻流什么的,并不十分常用澈圈。我們目前關(guān)注 輸出電壓/接地/通用針腳 這幾種彬檀。
樹莓派用不同的編碼規(guī)則給40個針腳起制定了編碼,方便我們對針腳的輸入輸出進(jìn)行開發(fā)瞬女。常見的編碼規(guī)則有:BOARD編碼規(guī)則窍帝,見上圖中的BOARD編碼對應(yīng)的40個針腳的位置;還有BCM編碼規(guī)則拆魏,也可根據(jù)上圖找到對應(yīng)針腳盯桦。
樹莓派GPIO一般采用 Arduino腳本或者python腳本進(jìn)行控制慈俯,也有少數(shù)人使用C或者其他編程語言渤刃,理論上講,越高級的語言API往往封裝的越完善贴膘,代碼也越簡潔容易卖子,我們的系列文章采用python腳本進(jìn)行開發(fā)。
RPi.GPIO 模塊
RPI.GPIO是python下控制GPIO的模塊刑峡,可以通過命令 “npm install RPI.GPIO” 進(jìn)行安裝洋闽。注意:該命令務(wù)必在有GPIO的環(huán)境下安裝,比如樹莓派設(shè)備上可以順利安裝成功突梦,但是在windows下沒有GPIO設(shè)備诫舅,因此安裝會出現(xiàn)各種問題,不建議在windos上開發(fā)時安裝這個包宫患,我們可以直接遠(yuǎn)程 PI 邊寫邊執(zhí)行測試效果刊懈。
導(dǎo)入 RPi.GPIO 模塊:
import RPi.GPIO as GPIO
下面是一段簡單的python代碼,用來展示如果使用RPI.GPIO控制樹莓派的針腳
# 設(shè)置GPIO布局編碼娃闲,這里采用BOARD編碼風(fēng)格虚汛,也可以使用BCM風(fēng)格,注意針腳編碼規(guī)則是不同的
GPIO.setmode(GPIO.BOARD)
# 關(guān)閉警告皇帮,如果設(shè)置某個針腳為非默認(rèn)狀態(tài)卷哩,可能會得到警告
GPIO.setwarnings(False)
# 設(shè)置某個針腳的用途
# 下面例子:設(shè)置BOARD編碼風(fēng)格的12號(對應(yīng)GPIO.1)針腳為讀取模式
GPIO.setup(12, GPIO.IN)
# 讀取BOARD-12針腳的電平值
GPIO.input(12)
#設(shè)置BOARD編碼風(fēng)格的12號(對應(yīng)GPIO.1)針腳為輸出模式
GPIO.setup(12, GPIO.OUT)
# 輸出BOARD-12針腳為低電平,這里GPIO.LOW/0/False属拾,三種參數(shù)是等效的
GPIO.output(12,GPIO.LOW)
# 在任何程序結(jié)束后将谊,請養(yǎng)成清理用過的資源的好習(xí)慣
# 注意:這行代碼會將針腳狀態(tài)恢復(fù)成默認(rèn)值冷溶,如果要保持狀態(tài),請不要執(zhí)行該命令
GPIO.cleanup()
上面代碼是最常用的控制各個針腳輸入輸出的命令瓢娜,我們可以靈活組合基本命令完成更復(fù)雜的功能挂洛。
【總結(jié)】
本節(jié)內(nèi)容是我們后續(xù)搭建系統(tǒng)的基礎(chǔ),通過學(xué)習(xí)樹莓派的GPIO使用眠砾,為我們后續(xù)的溫濕度采集虏劲,電路控制等準(zhǔn)備了充足的條件。
【源碼地址】
GitHub:https://github.com/sevenTiny/SevenTiny.SmartHome
20190928 成都