DHT11是個很常見的溫溼度傳感器, 單片機驅動它的例子有很多, 樹莓派驅動也不少
本文的樣例是拋個方法, 把傳感器採集加上Redis數據存儲,為物聯網數據收集和處理打個基礎, 你可以利用這個方式把樹莓派最大化的利用起來, 並加上雲服務器的支持, 做出你自己特色的東西.
基礎條件
- wiringPi庫
- Redis的C庫(hiredis)
- 已安裝Debian系統的樹莓派
- DHT11傳感器一枚
- Redis服務器(樹莓派本地的也可以)
實現步驟
下文中所述的步驟全部在樹莓派上執行, 你可以SSH連入你的樹莓派操作.
在這些之前, 你要先把你的樹莓派與DHT11連接起來
![在樹莓派上利用C讀取DHT11溫度傳感器的值並寫入遠端Redis](http://p2.ttnews.xyz/loading.gif)
DHT11買來回來的模塊是5V供電, 它的DATA腳你可以接在樹莓派的任意一個GPIO引腳上, 本例中我們把它接在GPIO4上(圖中只是示意, 上面的位置並不是GPIO4喔, 另外你買的是完成的模塊的話, 是不需要加那個電阻的).
![在樹莓派上利用C讀取DHT11溫度傳感器的值並寫入遠端Redis](http://p2.ttnews.xyz/loading.gif)
第一步: 檢查和準備wiringPi庫
先運行指令檢查一下環境
gpio -v
gpio readall
如果沒有安裝過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沒有設置密碼驗證, 那校驗身份的這段代碼可以移除掉不要
把變量寫入到Redis中就比較簡單了, 用這面2句就行:
redisReply *reply = (redisReply*)redisCommand(conn,"set testkey 123");
freeReplyObject(reply);
第2部分是怎麼用C獲取dht11的溫度
有了上面的代碼, 你就可以把邏輯整合在你的main方法中
第四步: 編譯與運行
編譯: gcc -o dht11_c_redis dht11_c_redis.c -L/usr/local/lib/ -lhiredis -l wiringPi
運行: ./dht11_c_redis
第五步: 查看成果
在Redis服務器上看看是否收到實時傳上來的溫度
對上面的步驟理解透徹, 你就可以寫出來自己的代碼
利用這種方法, 你可以在自己定部署一個樹莓派並接上DHT11, 把溫溼度實時上傳到你的服務器上, 再做個酷炫的H5就能實時看到家裡的溫溼度, 也是件挺有意思的事情, 不是麼
附上我臨時做的一個效果, 右下角金色的是剛採集到的溫度
閱讀更多 物聯創客 的文章