在樹莓派上利用C讀取DHT11溫度傳感器的值並寫入遠端Redis

DHT11是個很常見的溫溼度傳感器, 單片機驅動它的例子有很多, 樹莓派驅動也不少

本文的樣例是拋個方法, 把傳感器採集加上Redis數據存儲,為物聯網數據收集和處理打個基礎, 你可以利用這個方式把樹莓派最大化的利用起來, 並加上雲服務器的支持, 做出你自己特色的東西.

基礎條件

- wiringPi庫

- Redis的C庫(hiredis)

- 已安裝Debian系統的樹莓派

- DHT11傳感器一枚

- Redis服務器(樹莓派本地的也可以)

實現步驟

下文中所述的步驟全部在樹莓派上執行, 你可以SSH連入你的樹莓派操作.

在這些之前, 你要先把你的樹莓派與DHT11連接起來

在樹莓派上利用C讀取DHT11溫度傳感器的值並寫入遠端Redis

DHT11買來回來的模塊是5V供電, 它的DATA腳你可以接在樹莓派的任意一個GPIO引腳上, 本例中我們把它接在GPIO4上(圖中只是示意, 上面的位置並不是GPIO4喔, 另外你買的是完成的模塊的話, 是不需要加那個電阻的).

在樹莓派上利用C讀取DHT11溫度傳感器的值並寫入遠端Redis

第一步: 檢查和準備wiringPi庫

先運行指令檢查一下環境

gpio -v

在樹莓派上利用C讀取DHT11溫度傳感器的值並寫入遠端Redis

gpio readall

在樹莓派上利用C讀取DHT11溫度傳感器的值並寫入遠端Redis

如果沒有安裝過wiringPi庫, 可以按下面步驟進行

sudo apt-get install git-core

git clone git://git.drogon.net/wiringPi

cd wiringPi

git pull origin

cd wiringPi

./build

安裝完成後再用上面的指令檢查, 確認無誤後進行下一步

第二步: 下載編譯Redis的C庫(hiredis)

C操作Redis的庫有很多, 本例中使用的是hiredis, 代碼可以從https://github.com/redis/hiredis下載得到, 具體方法如下

git clonehttps://github.com/redis/hiredis.git

cd hiredis

make

sudo make install

試著編譯一下它送的樣例

gcc -o example example.c -L/usr/local/lib/ -lhiredis

這步可能會發現有類似這樣的錯誤

./example: error while loading shared libraries: libhiredis.so.0.13: cannot open shared object file: No such file or directory

沒碰到的童鞋可以進入第三步, 碰到的也不用緊張, 按下面步驟檢查看看

動態庫的問題,是系統找不到這個動態庫,此時需要:

1、首先檢查一下/etc/ld.so.conf文件中是否包含需要的動態庫的目錄(如/usr/local/lib),如果沒有的話就添加進去;

2、執行sudo /sbin/ldconfig以下,更新一下系統動態庫配置。

一般這樣就可以了

第三步: 編寫代碼

此處關鍵代碼是兩部分

第1部分是怎麼用C連上Redis服務器

下圖中從左至右, 從上至下的紅色箭頭分別表示: Redis服務器地址/端口/登錄密碼

當然如果你的Redis沒有設置密碼驗證, 那校驗身份的這段代碼可以移除掉不要

在樹莓派上利用C讀取DHT11溫度傳感器的值並寫入遠端Redis

把變量寫入到Redis中就比較簡單了, 用這面2句就行:

redisReply *reply = (redisReply*)redisCommand(conn,"set testkey 123");

freeReplyObject(reply);

第2部分是怎麼用C獲取dht11的溫度

在樹莓派上利用C讀取DHT11溫度傳感器的值並寫入遠端Redis

有了上面的代碼, 你就可以把邏輯整合在你的main方法中

第四步: 編譯與運行

編譯: gcc -o dht11_c_redis dht11_c_redis.c -L/usr/local/lib/ -lhiredis -l wiringPi

運行: ./dht11_c_redis

在樹莓派上利用C讀取DHT11溫度傳感器的值並寫入遠端Redis

第五步: 查看成果

在Redis服務器上看看是否收到實時傳上來的溫度

在樹莓派上利用C讀取DHT11溫度傳感器的值並寫入遠端Redis

對上面的步驟理解透徹, 你就可以寫出來自己的代碼

利用這種方法, 你可以在自己定部署一個樹莓派並接上DHT11, 把溫溼度實時上傳到你的服務器上, 再做個酷炫的H5就能實時看到家裡的溫溼度, 也是件挺有意思的事情, 不是麼

附上我臨時做的一個效果, 右下角金色的是剛採集到的溫度

在樹莓派上利用C讀取DHT11溫度傳感器的值並寫入遠端Redis


分享到:


相關文章: