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


【前言】

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

就讓我們一步步動手搭建一個屬於自己的“智能家居平台”吧(不要對這個名詞抬杠啦,技術在手,怎么設計實現因人而異),本文只做拋磚引玉,各路大神如果有更好的想法可以各顯神通,當然能在評論區留下更好的想法讓大家共同學習是再好不過啦。

在文章最后附有所有源代碼,有需要的可以自行下載,感謝Star~

【系列目錄】

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

【本節概要】

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

如果我們要自己靈活地配置各種各樣的功能組合,自己操作原始的電子元件或許是更明智的選擇。在我們這個項目中,我們將采用樹莓派+一系列電子元件來構建我們的整個系統。

 樹莓派

樹莓派是什么這里只做簡單介紹,貼個不帶殼子的圖~

 

 加上殼子可以長這樣,當然了殼子是千變萬化的,不可"以貌取派“

Raspberry Pi(中文名為“樹莓派”,簡寫為RPi,(或者RasPi / RPI)   是為學習計算機編程教育而設計),只有信用卡大小的微型電腦,其系統基於Linux。 隨着Windows 10 IoT的發布,我們也將可以用上運行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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM