1 way to directly read
https://blog.csdn.net/u010900754/article/details/53078615
Note that when encoding connection, note FIG raspberry send Pin direction, as shown in FIG. I use dht11 three sensor head, so the connection is:
VCC (or positive) --- raspberry pie 3v power supply
GND (ground or negative) gnd Interface --- raspberry pie
DATA (D or out) --- Raspberry Pi GPIO pins
Note that the order of its own sensor interface.
import RPi.GPIO as GPIO import time channel =4 data = [] j = 0 GPIO.setmode(GPIO.BCM) time.sleep(1) GPIO.setup(channel, GPIO.OUT) GPIO.output(channel, GPIO.LOW) time.sleep(0.02) GPIO.output(channel, GPIO.HIGH) GPIO.setup(channel, GPIO.IN) while GPIO.input(channel) == GPIO.LOW: continue while GPIO.input(channel) == GPIO.HIGH: continue while j < 40: k = 0 while GPIO.input(channel) == GPIO.LOW: continue while GPIO.input(channel) == GPIO.HIGH: k += 1 if k > 100: break if k < 8: data.append(0) else: data.append(1) j += 1 print "sensor is working." print data humidity_bit = data[0:8] humidity_point_bit = data[8:16] temperature_bit = data[16:24] temperature_point_bit = data[24:32] check_bit = data[32:40] humidity = 0 humidity_point = 0 temperature = 0 temperature_point = 0 check = 0 for i in range(8): humidity += humidity_bit[i] * 2 ** (7-i) humidity_point += humidity_point_bit[i] * 2 ** (7-i) temperature += temperature_bit[i] * 2 ** (7-i) temperature_point += temperature_point_bit[i] * 2 ** (7-i) check += check_bit[i] * 2 ** (7-i) tmp = humidity + humidity_point + temperature + temperature_point if check == tmp: print "temperature :", temperature, "*C, humidity :", humidity, "%" else: print "wrong" print "temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmp GPIO.cleanup()
It is noted here, encoding and pin No.
(1) encoding: PR library in two ways, one is the other is wiringPi bcm way, the difference of a pin substantially bcm sequence number 0 , 3 ,. . . Gpio with each corresponding pin, and the power supply are not included gnd like, while the power supply is from the beginning wiringPi is 0, then increasing order row. Using python script, only the need for coding can function in setmode inside.
(2) Pin Number: whether the program is used inside bcm No. 4 (i.e., the channel variable), and the connection method note code matches
2 USB indirect way of reading
Temperature and humidity data read DHT11 Arduino
https://marshal.ohtly.com/2017/02/26/arduino-and-dht11
#include <dht.h> dht DHT; #define DHT11_PIN 7 void setup(){ Serial.begin(9600); } void loop() { int chk = DHT.read11(DHT11_PIN); Serial.print("Temperature = "); Serial.println(DHT.temperature); Serial.print("Humidity = "); Serial.println(DHT.humidity); delay(1000); }
Then upload, you can see something like this in the serial monitor:
Temperature = 26.00 Humidity = 32.00 Temperature = 26.00 Humidity = 32.00 Temperature = 26.00