[Netduino plus 2 & 3]_在Netduino plus 2/3上使用DHT22
最近一直在研究怎麼讓DHT22在WINDOWS IOT FOR RASPBERRY PI2上運作
也參考了NETDUINO的寫法,但.NET MicroFramework的寫法跟Windows IoT又不一樣…
但拿2個GPIO實作1-wired的方式是讓HOST端發送起始訊號DHT22到轉換成接收DHT22的訊號所經過反應時間能夠縮短,讓與DHT22能夠成功溝通
雖然這不是一開始1-wired的初衷,但因為架構的限制最後有嘗試用這種方式做,在Netduino上是ok的
但在RPI2上面可以成功送出30us的初始訊號,但讀取的timing用了各種方式始終對不上。
但既然有了Netduino plus DHT22的code…就先記錄一下吧。
code是來自http://forums.netduino.com/index.php?/topic/2560-dht1122-sensor-managed-driver/
CW2所提供的SAMPLE,但有一個問題在於它的SAMPLE是基於Netduino一代寫的
但直接拿到Plus 2/3上面運作會timeout
原因在該討論串的第二頁裡面有討論,就是在讀取訊號時,netduino plus需要少讀一個訊號(不知道是bug還是??)
才會運作正常…
所以在他提供的專案中,在DHTSensor.cs裡面的Read()內,將
bitMask = 1L << 41;
改為
bitMask = 1L << 42;
就ok了,另外也要在Program.cs裡面把
var dhtSensor = new Dht22Sensor(Pins.GPIO_PIN_D0, Pins.GPIO_PIN_D1, PullUpResistor.External);
反註解,並把DHT11註解掉。
如果你不想要這麼麻煩也可以抓在這串討論串中第二頁由網友Giuliano改過的project:
http://forums.netduino.com/index.php?app=core&module=attach§ion=attach&attach_id=2636
不過記得運行前要調對你板子上的MF版本,否則會無法Deploy:
Leave a comment
很抱歉,必須登入網站才能發佈留言。