本身動手實現智能家居之樹莓派GPIO簡介(Python版)

【前言】

一個熱愛技術的人必定向往有一個科技感十足的環境吧,那何不親自實踐一下屬於技術人的座右銘:「技術改變世界」。html

就讓咱們一步步動手搭建一個屬於本身的「智能家居平臺」吧(不要對這個名詞擡槓啦,技術在手,怎麼設計實現因人而異),本文只作拋磚引玉,各路大神若是有更好的想法能夠各顯神通,固然能在評論區留下更好的想法讓你們共同窗習是再好不過啦。python

在文章最後附有全部源代碼,有須要的能夠自行下載,感謝Star~git

【系列目錄】

  1. 樹莓派GPIO簡介(Python版)
  2. 溫溼度數據採集存儲(DHT11,MySql)
  3. 溫溼度數碼管展現(四位共陽數碼管)
  4. 構建App展現溫溼度報表(ApiCloud,Python Flask)
  5. 普通家用排插集成繼電器手工改造
  6. App遠程控制「自制智能」排插
  7. 使用花生棒內網穿透實現外網訪問
  8. App遠程監控(攝像頭模塊集成)

【本節概要】

要作一些神奇的騷操做,好比環境數據採集,智能控制等,最終仍是要落地到設備上。要和各類各樣的設備打交道,確定是離不開電子元件的。市場上有大量的開箱即用的封裝的很好的硬件,可是都是獨立的或者是集成了某些功能於一身的,並不能本身靈活的進行擴展。程序員

若是咱們要本身靈活地配置各類各樣的功能組合,本身操做原始的電子元件或許是更明智的選擇。在咱們這個項目中,咱們將採用樹莓派+一系列電子元件來構建咱們的整個系統。github

 樹莓派

樹莓派是什麼這裏只作簡單介紹,貼個不帶殼子的圖~npm

 

 加上殼子能夠長這樣,固然了殼子是變幻無窮的,不可"以貌取派「編程

Raspberry Pi(中文名爲「樹莓派」,簡寫爲RPi,(或者RasPi / RPI)   是爲學習計算機編程教育而設計),只有信用卡大小的微型電腦,其系統基於Linux。 隨着Windows 10 IoT的發佈,咱們也將能夠用上運行Windows的樹莓派。windows

說白了就是迷你電腦,固然電腦能幹的事樹莓派均可以幹,瀏覽網頁,看視頻,玩一些對性能要求不高的遊戲都是能夠的。甚至還能夠當服務器,多個樹莓派搭建一個集羣(樹莓派官網就是部署在一堆樹莓派組成的集羣上)。服務器

GPIO

那麼,GPIO又是什麼呢?編程語言

GPIO(英語:General-purpose input/output),通用型之輸入輸出的簡稱。說白了,就是一堆針腳,能夠自由地經過編程手段控制其輸入仍是輸出。

樹莓派自帶了不少針腳,給程序員提供電子元件控制的出入口。以「3代B+」型號樹莓派爲例,自己提供了兩排共40個針腳,從上面不帶殼的樹莓派圖片中能夠看到上面有兩排裸露的針腳。下面是針腳分佈圖:

第三列和第六列(表頭爲功能名)展現了40個針腳的做用,綠色的是開放通用的輸入輸出針腳,黑色的是接地,5V和3.3V高電平輸出,其餘顏色的針腳用在一些特殊場合,好比輸出視頻流什麼的,並不十分經常使用。咱們目前關注 輸出電壓/接地/通用針腳 這幾種。

樹莓派用不一樣的編碼規則給40個針腳起制定了編碼,方便咱們對針腳的輸入輸出進行開發。常見的編碼規則有:BOARD編碼規則,見上圖中的BOARD編碼對應的40個針腳的位置;還有BCM編碼規則,也可根據上圖找到對應針腳。

樹莓派GPIO通常採用 Arduino腳本或者python腳本進行控制,也有少數人使用C或者其餘編程語言,理論上講,越高級的語言API每每封裝的越完善,代碼也越簡潔容易,咱們的系列文章採用python腳本進行開發。

RPi.GPIO 模塊

RPI.GPIO是python下控制GPIO的模塊,能夠經過命令 「npm install RPI.GPIO」 進行安裝。注意:該命令務必在有GPIO的環境下安裝,好比樹莓派設備上能夠順利安裝成功,可是在windows下沒有GPIO設備,所以安裝會出現各類問題,不建議在windos上開發時安裝這個包,咱們能夠直接遠程 PI 邊寫邊執行測試效果。

導入 RPi.GPIO 模塊:

import RPi.GPIO as GPIO

下面是一段簡單的python代碼,用來展現若是使用RPI.GPIO控制樹莓派的針腳

# 設置GPIO佈局編碼,這裏採用BOARD編碼風格,也可使用BCM風格,注意針腳編碼規則是不一樣的
GPIO.setmode(GPIO.BOARD)

# 關閉警告,若是設置某個針腳爲非默認狀態,可能會獲得警告
GPIO.setwarnings(False)

# 設置某個針腳的用途
# 下面例子:設置BOARD編碼風格的12號(對應GPIO.1)針腳爲讀取模式
GPIO.setup(12, GPIO.IN)

# 讀取BOARD-12針腳的電平值
GPIO.input(12)

#設置BOARD編碼風格的12號(對應GPIO.1)針腳爲輸出模式
GPIO.setup(12, GPIO.OUT)

# 輸出BOARD-12針腳爲低電平,這裏GPIO.LOW/0/False,三種參數是等效的
GPIO.output(12,GPIO.LOW)

# 在任何程序結束後,請養成清理用過的資源的好習慣
# 注意:這行代碼會將針腳狀態恢復成默認值,若是要保持狀態,請不要執行該命令
GPIO.cleanup()

上面代碼是最經常使用的控制各個針腳輸入輸出的命令,咱們能夠靈活組合基本命令完成更復雜的功能。

【總結】

本節內容是咱們後續搭建系統的基礎,經過學習樹莓派的GPIO使用,爲咱們後續的溫溼度採集,電路控制等準備了充足的條件。

【源碼地址】

GitHub:https://github.com/sevenTiny/SevenTiny.SmartHome

相關文章
相關標籤/搜索