[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:

222

111

Leave a comment

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料