Sommario:
- Passaggio 1: come funziona I2c
- Passaggio 2: libreria
- Passaggio 3: comportamento
- Passaggio 4: utilizzo di I2c
- Passaggio 5: utilizzo di un filo
- Passaggio 6: lettura implicita
- Passaggio 7: lettura semplice
- Passaggio 8: lettura completa
- Passaggio 9: schema di collegamento
- Passaggio 10: Arduino: OneWire
- Passaggio 11: Arduino: I2c
- Passaggio 12: Esp8266 (D1Mini) OneWire
- Passaggio 13: Esp8266 (D1Mini) I2c
- Passaggio 14: grazie
Video: DHT12 (sensore di umidità e temperatura economico i2c), utilizzo facile e veloce: 14 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Puoi trovare aggiornamenti e altro sul mio sito
Mi piace il sensore che può essere utilizzato con 2 fili (protocollo i2c), ma adoro quello economico.
Questa è una libreria Arduino ed esp8266 per la serie DHT12 di sensori di temperatura/umidità a bassissimo costo (meno di 1$) che funzionano con i2c o connessione a un filo.
Molto utile se vuoi usare esp01 (se usi seriale hai solo 2 pin) per leggere umidità e temperatura e visualizzarla su i2c LCD.
AI letto che a volte sembra che necessiti di calibrazione, ma ho un albero di questo e ottengo un valore molto simile a DHT22. Se hai la calibrazione di questo problema, apri il problema su github e aggiungo l'implementazione.
Passaggio 1: come funziona I2c
I2C funziona con i suoi due fili, SDA (linea dati) e SCL (linea di clock).
Entrambe queste linee sono open-drain, ma sono tirate su con resistori.
Di solito c'è un master e uno o più slave sulla linea, anche se possono esserci più master, ma ne parleremo più avanti.
Sia i master che gli slave possono trasmettere o ricevere dati, quindi un dispositivo può trovarsi in uno di questi quattro stati: trasmissione master, ricezione master, trasmissione slave, ricezione slave.
Passaggio 2: libreria
Puoi trovare la mia libreria qui.
Scaricare
Fare clic sul pulsante DOWNLOAD nell'angolo in alto a destra, rinominare la cartella non compressa DHT12.
Verificare che la cartella DHT contenga DHT12.cpp e DHT12.h.
Posiziona la cartella della libreria DHT nella tua cartella /libraries/.
Potrebbe essere necessario creare la sottocartella delle librerie se è la tua prima libreria.
Riavvia l'IDE.
Passaggio 3: comportamento
Questa libreria cerca di emulare il comportamento dei sensori della libreria DHT standard (e copia molto codice), e aggiungo il codice per gestire anche i2c allo stesso modo.
Il metodo è lo stesso del sensore della libreria DHT, con alcune aggiunte come la funzione del punto di rugiada.
Passaggio 4: utilizzo di I2c
Da utilizzare con i2c (indirizzo predefinito e pin SDA SCL predefinito) il costruttore è:
DHT12 dht12;
e prendi il valore predefinito per il pin SDA SCL.
(È possibile ridefinire con il costruttore specificato per esp8266, necessario per ESP-01). o
DHT12 dht12(uint8_t addressOrPin)
indirizzoOPin -> indirizzo
per cambiare indirizzo.
Passaggio 5: utilizzo di un filo
Per utilizzare un filo:
DHT12 dht12(uint8_t addressOrPin, true)
indirizzoOPin -> pin
valore booleano è la selezione della modalità oneWire o i2c.
Passaggio 6: lettura implicita
Puoi usarlo con "implicit", "simple read" o "fullread": Implicit, solo la prima lettura esegue una lettura vera del sensore, l'altra lettura che diventa in 2sec. interval sono il valore memorizzato della prima lettura.
// La lettura del sensore ha 2 secondi di tempo trascorso, a meno che non si passi il parametro di forza
// Legge la temperatura come Celsius (impostazione predefinita) float t12 = dht12.readTemperature(); // Legge la temperatura come Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Le letture del sensore possono anche essere "vecchie" fino a 2 secondi (è un sensore molto lento) float h12 = dht12.readHumidity(); // Calcola l'indice di calore in Fahrenheit (predefinito) float hif12 = dht12.computeHeatIndex(f12, h12); // Calcola l'indice di calore in Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Calcola il punto di rugiada in Fahrenheit (predefinito) float dpf12 = dht12.dewPoint(f12, h12); // Calcola il punto di rugiada in Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);
Passaggio 7: lettura semplice
Lettura semplice per ottenere uno stato di lettura.
// La lettura del sensore ha 2 secondi di tempo trascorso, a meno che non si passi il parametro di forza
bool chk = dht12.read(); // la lettura vera è ok, problema di lettura falsa
// Legge la temperatura in gradi Celsius (impostazione predefinita)
float t12 = dht12.readTemperature(); // Legge la temperatura come Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Le letture del sensore possono anche essere "vecchie" fino a 2 secondi (è un sensore molto lento) float h12 = dht12.readHumidity(); // Calcola l'indice di calore in Fahrenheit (predefinito) float hif12 = dht12.computeHeatIndex(f12, h12); // Calcola l'indice di calore in Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Calcola il punto di rugiada in Fahrenheit (predefinito) float dpf12 = dht12.dewPoint(f12, h12); // Calcola il punto di rugiada in Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);
Passaggio 8: lettura completa
Lettura completa per ottenere uno stato specificato.
// La lettura del sensore ha 2 secondi di tempo trascorso, a meno che non si passi il parametro di forza
DHT12::ReadStatus chk = dht12.readStatus(); Serial.print(F("\nLeggi sensore: ")); switch (chk) { case DHT12::OK: Serial.println(F("OK")); rottura; case DHT12::ERROR_CHECKSUM: Serial.println(F("errore di checksum")); rottura; case DHT12::ERROR_TIMEOUT: Serial.println(F("Errore di timeout")); rottura; case DHT12::ERROR_TIMEOUT_LOW: Serial.println(F("Errore di timeout su segnale basso, prova a mettere un'alta resistenza di pullup")); rottura; case DHT12::ERROR_TIMEOUT_HIGH: Serial.println(F("Errore di timeout su segnale basso, prova a mettere una resistenza di pullup bassa")); rottura; case DHT12::ERROR_CONNECT: Serial.println(F("Errore di connessione")); rottura; case DHT12::ERROR_ACK_L: Serial.println(F("AckL error")); rottura; case DHT12::ERROR_ACK_H: Serial.println(F("AckH error")); rottura; case DHT12::ERROR_UNKNOWN: Serial.println(F("Errore sconosciuto RILEVATO")); rottura; case DHT12::NONE: Serial.println(F("Nessun risultato")); rottura; default: Serial.println(F("Errore sconosciuto")); rottura; }
// Legge la temperatura in gradi Celsius (impostazione predefinita)
float t12 = dht12.readTemperature(); // Legge la temperatura come Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Le letture del sensore possono anche essere "vecchie" fino a 2 secondi (è un sensore molto lento) float h12 = dht12.readHumidity(); // Calcola l'indice di calore in Fahrenheit (predefinito) float hif12 = dht12.computeHeatIndex(f12, h12); // Calcola l'indice di calore in Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Calcola il punto di rugiada in Fahrenheit (predefinito) float dpf12 = dht12.dewPoint(f12, h12); // Calcola il punto di rugiada in Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);
Passaggio 9: schema di collegamento
Con gli esempi, ci sono lo schema di collegamento, è importante utilizzare la resistenza di pullup corretta.
Grazie a Bobadas, dplasa e adafruit, per condividere il codice in github (dove prendo del codice e delle idee).
Passaggio 10: Arduino: OneWire
Passaggio 11: Arduino: I2c
Passaggio 12: Esp8266 (D1Mini) OneWire
Passaggio 13: Esp8266 (D1Mini) I2c
Passaggio 14: grazie
Parco giochi Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)
Serie di progetti i2c (Collezione):
- Sensore di umidità della temperatura
- Espansore analogico
- Espansore digitale
- Display LCD
Consigliato:
Come utilizzare il sensore di umidità e temperatura DHT12 I2C con Arduino: 7 passaggi
Come utilizzare il sensore di umidità e temperatura DHT12 I2C con Arduino: In questo tutorial impareremo come utilizzare il sensore di umidità e temperatura DHT12 I2C con Arduino e visualizzare i valori sul display OLED. Guarda il video
Creazione-Avviso-Utilizzo-Ubidots-ESP32+Sensore di temperatura e umidità: 9 passaggi
Creazione-Avviso-Utilizzando-Ubidots-ESP32+Sensore di temperatura e umidità: in questo tutorial, misureremo diversi dati di temperatura e umidità utilizzando il sensore di temperatura e umidità. Imparerai anche come inviare questi dati a Ubidots. In modo che tu possa analizzarlo da qualsiasi luogo per diverse applicazioni. Anche creando email
Appendiabiti Echo Dot, facile, veloce ed economico!: 7 passaggi
Appendiabiti Echo Dot, facile, veloce ed economico!: di mrcisaleaffanPubblicato il 26 luglio 2018Se ti piace questo Instructable, votalo nella sezione "Uso improprio creativo" contest.Introduzione: Echo Dot Hanger, facile, veloce ed economicoLo scorso Natale ho ricevuto uno smart speaker Alexa Echo. Sinc
AGGIORNATO!!!! Amplificatore del segnale dell'antenna WIFI economico e facile che è migliore e più veloce di quelli di carta !!!: 9 passaggi
AGGIORNATO!!!! Amplificatore del segnale dell'antenna WIFI economico e facile che è migliore e più veloce di quelli di carta !!!: Una nuova oscillazione su una vecchia idea per migliorare il segnale WIFI
Costruisci una casella di progetto - Veloce, economico e amp; Facile.: 5 passaggi
Costruisci una scatola del progetto: veloce, economico e amp; Facile.: Avevamo bisogno di una scatola di progetto protettiva nel nostro negozio con una finestra frontale in modo da poter tenere d'occhio lo stato dei nostri componenti. Le scatole di progetto che abbiamo trovato online non funzionavano. -Quelli che avevano un prezzo giusto erano troppo piccoli per adattarsi ai nostri componenti