如何用樹莓派通過Python控制室內溫度-並發送郵件到手機(上)

哈!朋友們,歡迎來到LIUSE網絡。

今天這篇文章我們來討論一下關於自動化控制的一些小問題,

目的是通過樹莓派做一個實時監控室內溫度,並將溫度值在一定時間自動推送給你的QQ郵箱,達到實時監控的目的。

如何用樹莓派通過Python控制室內溫度-併發送郵件到手機(上)

當然除此之外,你也可以發揮自己的創意,去檢測其它模擬值,進行自動化檢測,並控制繼電器使其控制其它家用電器的開關。

注:這節課我們分兩篇文章來講解,上篇為監控實時溫度,下篇為進行郵件發送,請大家時刻關注。

所需原料:

  1. 樹莓派一個(Raspberry Pi)

  2. DS18B20模塊

  3. 杜邦線

注:沒有DS18B20模塊的可以自己從帶溫度傳感器的電器中拆一個,再加一個4.7K的電阻也可以達到同樣的效果。

硬件連接:

整體連接:

將DS18B20模塊的VCC連接樹莓派的1號口3.3V,將GND連接樹莓派的6號口GND,DQ或者OUT連接樹莓派的7號口GPIO4.如果你的不是模塊,自己焊接電阻的方法跟下圖一樣即可。

如何用樹莓派通過Python控制室內溫度-併發送郵件到手機(上)

(整體連接圖)

DS18B20與電阻的連接電路:

如何用樹莓派通過Python控制室內溫度-併發送郵件到手機(上)

(DS18B20與電阻圖)

樹莓派管腳對照參考圖:

如何用樹莓派通過Python控制室內溫度-併發送郵件到手機(上)

(引腳圖)

接線完成後,現在還不能開始工作,我們要通過簡單的代碼來實現功能。

代碼部分:

1.確保你的樹莓派長期使用並更新,如果版本過於老,可能會對接下來的操作有影響。所以先升級系統:

apt-get update

apt-get upgrade

2.修改配置文件。官方15年後的樹莓派版本,為了解決GPIO衝突,使用了新的DT策略,我們需要修改config文件添加樹莓派Device Tree設備。

sudo nano /boot/config.txt

然後在最後一行計入下面的代碼Ctrl+x保存退出。

dtoverlay=w1-gpio-pullup,gpiopin=4

如何用樹莓派通過Python控制室內溫度-併發送郵件到手機(上)

注:如果的你的DS18B20連接的管腳不是4號口,那你必須要改為對應口號。

3.確認設備是否運行:

sudo modprobe w1-gpio

sudo modprobe w1-therm

cd /sys/bus/w1/devices/

ls

進入devices目錄後,ls列目錄,會顯示出設備的文件夾(正對應序列號)。

如何用樹莓派通過Python控制室內溫度-併發送郵件到手機(上)

當然,不同的設備,設備號不同這個不需要糾結,操作起來是一樣的。

4.查看當前溫度:

有了設備號之後(也就是那個文件夾名字),我們需要進入用cat命令查看一下w1_slave的溫度值。

cd 20-00000494eb79

cat w1_slave

命令執行後,顯示溫度值:

70 01 4b 46 7f ff 10 10 e1 : crc=e1 YES

70 01 4b 46 7f ff 10 10 e1 t=23000

上面的23000就是當前的溫度值,不過是浮點型的所以我們要除以1000來換算成攝氏度:

23000/1000=23° 即當前溫度為23度。

5.通過python腳本獲取溫度值:

我們通過上面的手工操作可以簡單的看出,要想獲取溫度

  • 打開傳感器文件

  • 遍歷文件內容

  • 找到溫度值

對於找到溫度值t=23000我們可以通過正則表達式來獲取,也可以通過分割字符串來提取,我們先介紹一下通過正則表達式提取的python代碼:

如何用樹莓派通過Python控制室內溫度-併發送郵件到手機(上)

(源碼)

我們可以看到上圖已經註釋的十分詳細了,再不懂的就看下面的注吧。

注:之所以裡面轉換多次是因為通過這個則表達式提取出來的內容為list類型的,而list類型的變量沒有strip()這個方法,所以要將list轉為str類型的這裡用到了join()方法,轉換完成之後通過strip()方法去掉“t=”,但是這時候的值是23000不符合我們的要求所以要除以1000但是現在的類型是str類型要想除以1000必須轉換成整型變量,所以用atoi()這個方法,最後計算出實際的溫度。

運行狀態:

如何用樹莓派通過Python控制室內溫度-併發送郵件到手機(上)

我們再稍加修改,變得人性化一點:

如何用樹莓派通過Python控制室內溫度-併發送郵件到手機(上)

最後的num4變量成功的打印出了23度數值。

然後再簡單的說一下方法2,通過分割字符串方式來獲取值:

如何用樹莓派通過Python控制室內溫度-併發送郵件到手機(上)

(方法2代碼)

雖然上面的方法同樣可以打印出實際溫度,但鄙人不是十分喜歡,還是推薦第一種。

那今天的文章就寫到這,我們明天寫一下如何讓樹莓派通過python將實時溫度通過郵件的方式發到我們的郵箱~

喜歡的同學記得關注哦~


分享到:


相關文章: