中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警

發布時間:2020-02-24 14:18:01 來源:網絡 閱讀:6226 作者:我的openresty 欄目:系統運維

一、前期準備

?
?
?
達成目標:
?
??利用Rapberry Pi 驅動MQ-2煙霧報警模塊,對信息進行采集和提取。

?
?
1.準備樹莓派(Raspberry Pi)一個
?
2.MQ-2有害氣體檢測模塊
?
3.杜邦線若干
?
4.SD卡一張以及一個讀卡器
?
?
?
?
?

二、各個器件介紹

?
?

1.樹莓派(Raspberry Pi)

?
??Raspberry Pi是一個英國小型組織慈善組織The Raspberry Pi Foundation發行的一款針對電腦業余愛好者,學生,以及小型企業等用戶的迷你電腦,預裝的是Linux操作系統,體積非常小巧,在最新款的Raspberry Pi 3 Model B,搭載了高通的ARMv8的高性能CUP,并且包含1GB RAM,引腳數上升到40個。
?

    較上一代的優點:
              1.首先處理器是新一代四核心Broadcom BCM2837 64位ARMv8 處理器,并且處理器速度最高可達1.2GHz,必要時還可以超頻。</font>
              2.第二是新添加了板載BCM43143 WiFi芯片,無需WiFi網絡適配器。

    Raspberry Pi官網:https://www.raspberrypi.org/ 

?
?

2.MQ-2有害氣體檢測模塊

?
??這是一款廣泛應用于家庭和工廠的氣體泄漏檢測裝置,適用于液化氣、甲烷、丙烷、丁烷、酒精、氫氣、煙霧等有害氣體的檢測。
?

  • 有四個引腳:
    VCC:輸入5V正極電流
    GND:接電源負極
    DO:TTL高低電平輸出端
    AO:模擬電壓輸出端
  • TTL輸出靈敏度調節:
    此電位器只針對TTL,也就是DO輸出靈敏度進行調節。
    順時針調節靈敏度增高,逆時針調節靈敏度降低。
  • 具有以下優點:
    ???廣泛的探測范圍
    ???高靈敏、快速的相應恢復
    ???優異的穩定性、壽命成長
    ???簡單的驅動電路 ???

?
?
?
?
?

三、Raspberry Pi部署操作系統

?
?

1.概述

?
? ?絕大多數開源Linux社區都有樹莓派Arm架構的操作系統,比如基于Debian的Raspbian系統和Ubuntu mate系統,這是兩款對樹莓派支持性最好的系統,并且在國內也有鏡像源,對于一個開發板來說,這是可能是最重要的。
? ?我個人強烈推薦Raspbian系統,它本身的命令其實和服務器端的Debian操作命令相同,但是更大的優點在于:國內有諸多知名大學網站都有Raspbian系統鏡像源,很是方便;因為開始我玩兒的是Centos系列的操作系統,比較熟悉命令以及其他配置方式,并且在Centos的官方網站也有專門為Raspberry Pi開發的基于Arm架構的系統鏡像,但是安裝完你會發現,鏡像源很是不方便 0.0。
?
?

2.部署Raspbian系統

?
? ? 首先,到前面我貼上去的官網上下載系統鏡像文件,點進DOWNLOADS,看到有兩種系統:“NOOBS”和“Raspbian ”,我選擇了Raspbian,,然后會看到兩個版本的鏡像,其中左邊有“DESKTOP”是帶有桌面的操作系統,相反右邊的是最小化安裝的系統鏡像,建議身邊如果能方便的獲取顯示器,來通過HDML接入,那么就選擇有桌面的操作系統,因為我這里主要是完成項目,所以就不選帶桌面系統的鏡像了。
?
?
? ? 官方系統鏡像界面的截圖:
?
基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警
?
?
?

3.燒制系統

?
??下載好之后,通過一個軟件“Win32DiskImager”,來燒錄系統,在Device選擇讀卡器顯示的外部設備,Image File選擇剛剛下載好,并且解壓完成的鏡像文件,然后點擊Write,進行寫入操作,因為我是最小化的鏡像系統,所以只需幾分鐘就完成系統的燒錄,你們稍等片刻,也就完成了。
?
?
??燒錄軟件截圖:
?
基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警
?
?

注意:一般情況下Raspbian系統是不帶有SSH遠程連接功能的,因此想要開啟功能,需要進入燒錄好的鏡像系統
文件當中(通過讀卡器),新建一個空白的文本文件,名為“ssh”,不需要改后綴,然后就可以進行下一步了

?
??插上網線,通過路由器可以得知分配給開始Raspbian的IP,然后通過SSH遠程登錄。
?

這里需要注意的是,默認用戶是“pi”,密碼是“raspberry”,SSH遠程連接“ssh pi@192.168.1.1 ”,輸入密碼即可

?
?

??下面是以pi用戶連接樹莓派后的截圖:
?

基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警
?
?
?
?

4.更改默認登錄用戶

?
??一般情況下,我們都是以root用戶的身份去操作系統的,這樣權利更大,也更方便做一些普通用戶很難做到的事情,根據下面:
?
?

  • 首先切換root用戶,激活root用戶的密碼配置選項:

    pi@raspberrypi:~ $ sudo passwd root
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully

    ?

  • 然后解鎖root用戶:

    pi@raspberrypi:~ $ sudo passwd --unlock root
    passwd: password expiry information changed.

    ?

  • 最后切換root用戶:

    pi@raspberrypi:~ $ su root
    Password:

    ?

  • 但是由于Raspbian系統默認是以“pi”用戶登錄樹莓派的,也就是說即使上面激活了root用戶,也無法通過:“ssh root@192.168.1.1”去登陸,因此還需要進行下面操作。

進入文件:
vim /etc/systemd/system/getty.target.wants/getty\@tty1.service

找到: ExecStart=-/sbin/agetty --noclear %I $TERM
改為: ExecStart=-/sbin/agetty --autologin root --noclear %I $TERM

?
?
??下圖為更改配置后的截圖:

?
基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警
?
基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警

?
?
?

5.配置鏡像源

?

??配置鏡像源,是為了方便后面部署各類軟件,解決依賴關系。
好在官方給出了軟件鏡像名單:
?
??http://www.raspbian.org/RaspbianMirrors
?

??這里包括了世界各地的大學或者教育機構網站提供了Raspbian軟件鏡像,極大的方便了喜歡玩轉樹莓派的愛好者,我在其中節選了幾個大學提供的鏡像地址,供大家參考:
?

http://mirror.sysu.edu.cn/raspbian/raspbian 中山大學鏡像源(南方用戶)
http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ 清華大學鏡像源(北方用戶)
http://mirrors.ustc.edu.cn/raspbian/raspbian/ 中科大鏡像源(中部用戶)
http://mirrors.cqu.edu.cn/Raspbian/raspbian/ 重慶大學鏡像(中西部用戶)

?

??因為我離北京比較近,所以選擇了清華的鏡像源,速度快 穩定。
?

  • 進入文件: vim /etc/apt/sources.list

    注釋其他語句,并且,加上下面的語句:
    deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian stretch main contrib non-free rpi

  • 要注意的是 : 配置上的源,后面有個“stretch”字段,它代表的是第九代Debian系統,其他字段的有:第七代系統“wheezy”,第八代系統“Jessie”,因為在Raspberry Pi的官網一般下載的都是最新的系統,并且這一代系統極大的擴展和發揮了Raspberry性能,因此建議安裝這個版本的系統。
    ??通過命令:“lsb_release -a” 可以看到系統的版本,所以務必配置鏡像文件之前,查一下系統版本哦。

?
?
這是我的系統版本:
?
基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警
?
?
?

6.配置無限路由(WiFi)

?
??Raspberry內置WiFi設備,因此只需要在網絡配置文件當中,把WiFi名稱和密碼寫進去,那么每次啟動機器都會去讀取文件,自動連接WiFi。

?

  • 找到文件并寫入: vim /etc/wpa_supplicant/wpa_supplicant.conf

    network={
    ssid="WiFi名稱"
    psk="WiFi密碼"
    }

?
?
?

7.鍵盤布局配置

?
??由于Raspberry原產地為英國,因此鍵盤布局為英式鍵盤,許多鍵位都不一樣,因此需要更改鍵盤布局,首先執行下面兩個操作:
?

  • 首先安裝輸入法配置,才可以更換鍵盤布局:

    apt install fcitx

  • 然后輸入:

    raspi-config

    進入偽圖形化配置界面,選擇配置“keyboard layout”,選擇US鍵盤布局,保存后退出,重啟即可。

?
?
?
?
?

四、部署和應用GPIO庫

?
?
?

1.部署Pip和GPIO

?
??在Raspbian系統當中,為了Raspberry愛好者方便的自定義自己的板子,因此選擇原生支持了當今最主流的編程語言Python,無論是Python2,還是Python3都有安裝,為了方便的安裝GPIO庫,強烈建議先安裝pip工具,這個工具類似于apt和yum,可以自動解決安裝第三方庫時的依賴關系,非常好用。
?
?
??我將在下面使用Python3作為代碼執行的平臺,下面是包含的所有Python工具
?
基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警

?

  • 安裝pip:
    ??apt install pip3

    注意如果出現問題,顯示無法安裝,則使用下面命令:

    apt-get install *pip -y

  • 通過pip安裝GPIO模塊:
    ??pip3 install gpio

  • 驗證GPIO模塊是否安裝成功并導入:
    ??#python3
    ??\>>>import RPi.GPIO as GPIO
    ??\>>>GPIO.setmode(GPIO.BOARD)

*發現上述命令都沒有報錯,并且按下Table鍵,補全所有內置方法

?
?
?
特別注意:為什么不是安裝RPi.GPIO???

        RPi.GPIO庫是我在Raspberry官網上看到的支持I/O狀態讀取的一個庫,但是我按照網上很多博客上查的,執行安裝命令:“pip install RPi.GPIO”,總是報錯,要么就是安裝成功以后會在“import ”這個模塊的時候,出現錯誤,很是費解,以為是版本的問題,發現自己安裝的是最新版本,但總是調不起來這個庫,我因此也沒有什么好的解決方法,偶然發現,直接執行命令,安裝“pip installgpio”貌似是安裝了另一個版本的GPIO庫,并且是可以正常調用的,我在之后在Centos7虛擬機上做了測試,發現也是可以的,那么我就選擇用“gpio”代替“RPi.GPIO”。

?
?

下面為是所有可用方法的截圖:
?
基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警
?
?
?

2.常用的GPIO用法

?
?
下面簡單介紹其中比較常用的GPIO用法:
?

1.導入GPIO模塊
        import RPi.GPIO as GPIO  

?

2.將GPIO引腳設置為BOARD模式
        GPIO.setmode(GPIO.BOARD) 

?

3.設置GPIO引腳通道 作為輸入
        GPIO.setup(pin,GPIO.IN)  

?

4.設置初始化為高電平
        GPIO.setup(pin,GPIO.OUT,initial=GPIO.HIGH) 

?

5.軟件實現上/下拉:
        GPIO.setup(pin,GPIO.IN,pull_up_down=GPIO.PUD_UP)
        GPIO.setup(pin,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)

?

6.邊緣檢測,該函數是對一個引腳進行監聽
        GPIO.add_event_detect(channel, GPIO.RISING) 

?

7.清除所有資源
        GPIO.cleanup()    

?
?
下面給出Raspberry Pi的引腳圖:
?
基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警

?
?
??上面有個地方指出的:“GPIO引腳設置為BOARD模式”,這里還有另一種定義引腳的方式,在RPi.GPIO中,同時支持樹莓派上的兩種GPIO引腳編號。第一種編號是BOARD編號,這和樹莓派電路板上的物理引腳編號相對應。使用這種編號的好處是:硬件將是一直可以使用的,而不用擔心樹莓派的版本問題。在更替版本或者系統的時候,不必重寫代碼。
?
??第二種編號是BCM規則,是更底層的工作方式,它和Broadcom的片上系統中信道編號相對應。在使用一個引腳時,用戶需要查找信道號和物理引腳編號之間的對應規則。對于不同的樹莓派版本,編寫的腳本文件也可能是無法通用的。
例如:上圖當中的“GPIO 16”和“36”號引腳就是指的同一個,而對應的前者就是通過BCM定義的,后者是通過“BOARD”定義的。
?
?
?
?
?

五、應用實踐

?
?
?

1.Raspberry Pi 和 MQ-2之間的連線

?
??在這里需要知道的是,Python的GPIO庫只能接受引腳的高低電平的變化,因此只需要接線三個引腳就好:5V電源,地線,和DO接口,我選擇以“BOARD”規則定義引腳,也就是36號引腳連接MQ-2的DO口,認真對應上面給出的引腳圖,下面是我接好后的圖:

?
??MQ-2連線:
?
基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警
?
?
??Raspberry連線:
?
基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警
?
?
?

2.模塊測試

?
??接下來開始寫Python代碼,用于測試連線,以及模塊的功能是否完好,根據上面的介紹的簡答的幾個GPIO庫方法,以及簡單的邏輯,寫出如下代碼:
?

#! /usr/bin/env python3
import RPi.GPIO as GPIO # 導入庫,并進行別名的設置
import time

CHANNEL=36 # 確定引腳口。按照真實的位置確定
GPIO.setmode(GPIO.BOARD) # 選擇引腳系統,這里我們選擇了BOARD
GPIO.setup(CHANNEL,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
#初始化引腳,將36號引腳設置為輸入下拉電阻,因為在初始化的時候不確定的的引電平,因此這樣設置是用來保證精準,(但是也可以不寫“pull_up_down=GPIO.PUD_DOWN”)

# 帶有異常處理的主程序
try:
         while True: # 執行一個while死循環
          status=GPIO.input(CHANNEL) # 檢測36號引腳口的輸入高低電平狀態
          #print(status) # 實時打印此時的電平狀態
          if status == True: # 如果為高電平,說明MQ-2正常,并打印“OK”
                        print ( ' 正常 ' )      
           else:    # 如果為低電平,說明MQ-2檢測到有害氣體,并打印“dangerous”
                        print ( ' 檢測到危險氣體 ! ! ! ' )
           time.sleep(0.1) # 睡眠0.1秒,以后再執行while循環
except KeyboardInterrupt: # 異常處理,當檢測按下鍵盤的Ctrl+C,就會退出這個>腳本
            GPIO.cleanup() # 清理運行完成后的殘余

?

  • 開始執行程序:
    ?
    \#chmod +x test.py
    \#./test.py

    ?
    ?
    ??然后會跳出"OK"的字樣,每0.1秒一次,當通過打火機的去伸到MQ-2報警器跟前時,就會彈出一個“DANGEROUS”,說明檢測到有害氣體了,下面放圖,我的實驗結果:
    ?
    基于樹莓派(Raspberry Pi)平臺的MQ-2煙霧報警
    ?
    ?

??說明模塊工作正常,可以檢測有害氣體,并且這個程序也是基本上沒有什么問題的,后面需要停止的話,按下“Ctrl+C”停止腳本運作就好了。
?

注意
??在Python2當中,因為語法的變化,當腳本當中有中文的情況下,在開頭加上“# encoding=utf-8”;并且“print( )”方法是沒有括號的,只有引號,并且異常處理后面可能有語法也不一樣,需要讀者注意因。

?
?
??實際在后面結合Zabbix進行數據的監控和統計,是不需要輸出的,因此這里只是為了效果直觀,而加進去“print( )”語句,為了達到目的,我后面會把它放在Cron計劃任務當中,在一開機的時候,就開始后臺執行這個程序,并且沒有輸出,但是會實時記錄引腳的高低電平。
?
??對于如何獲取到這個值,并以什么方式進行存儲,在后面我會研究,這里可能會遇到Zabbix的二次開發的問題。
?
?
?
?
?
?
?
?
??????????????????? ??????????????????????????--------Zabbix項目部分我會在后面幾個星期做好,未完待續.......

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新兴县| 剑阁县| 龙南县| 平泉县| 新乐市| 林州市| 南昌县| 和平县| 宿迁市| 临汾市| 尉犁县| 重庆市| 奎屯市| 卢氏县| 体育| 乐至县| 邯郸市| 南江县| 涞水县| 漳平市| 合阳县| 大宁县| 陵川县| 沛县| 织金县| 大渡口区| 鞍山市| 文登市| 曲靖市| 宜城市| 内乡县| 光山县| 寿阳县| 大理市| 义马市| 沈阳市| 金昌市| 邮箱| 天门市| 满城县| 平乐县|