Cum să conectați un senzor de temperatură și umiditate AM2302 la câțiva metri distanță de Raspberry pi? (Raspberry Pi, Senzor, Temperatură)

Elmer a intrebat.

Am un raspberry pi care rulează pipgio și folosesc codul furnizat în secțiunea python pentru a obține citirea temperaturii și umidității de la AM2302 (http://www.adafruit.com/products/393). Dacă conectez: Pi <–> breadboard wires <–> AM2302 va funcționa bine. Cu toate acestea, asta înseamnă că senzorul trebuie să fie la 15 cm distanță de pi. Chiar am nevoie de senzor la aproximativ 3 picioare distanță de pi, astfel încât să fie într-o locație bună pentru a obține temperatura și umiditatea. Așa că l-am conectat așa: Pi <–> fire de placă de pâine <–> fir de alarmă de calibru similar cu firele de placă de pâine <–> AM2302 și primesc doar -999 înapoi. În ambele cazuri, mă conectez la GPIO 17 și folosesc 3,3 volți pentru a alimenta senzorul.

   3.3V ----- Red wire

 Ground ----- Black wire

GPIO 17 ----- Yellow wire

Deci, întrebarea este dublă:

1. Este tipul de cablu de alarmă care cauzează probleme? Dacă da, care este firul recomandat pentru a fi folosit pentru acest scenerio?

2. Folosirea semnalului de 3,3 V pe o distanță mai mare cauzează probleme? Dacă da, pot folosi 5v pentru a rezolva problema? Fișa tehnică (http://www.adafruit.com/datasheets/Digital%20humidity%20and%20temperature%20sensor%20AM2302.pdf) spune că poate accepta 3,3 – 5,5v. Cu toate acestea, scriptul spune că pentru a se conecta la 5v este necesar ceea ce urmează, dar utilizați pe propriul risc. Este acesta cel mai bun mod de conectare prin 5v? Nu înțeleg de ce sunt necesare toate astea dacă senzorul acceptă 5v (doar dacă nu cumva pentru că pi gpio nu are 5v?).

   5V--5K_resistor--+--10K_resistor--Ground

                    |
   DHT22 pin 2 -----+

                    |
   gpio ------------+ 

5 răspunsuri
joan

Aproape sigur va trebui să folosiți 5V pentru orice fel de distanță.

Dintr-un pdf AM2302 (Instrucțiuni speciale ale comunicării cu un singur autobuz)

  1. Circuit tipic de aplicație recomandat în cablul de lungime scurtă de30 de metri pe rezistorul pull-up de 5.1K rezistor pull-up în funcție de situația reală de mai puțin de 30 m
  2. Cu o tensiune de alimentare de 3,3V, lungimea cablului nu trebuie să fie mai mare de100cm. În caz contrar, căderea tensiunii de linie va duce la alimentarea senzorului, ceea ce va duce la erori de măsurare.
  3. Citiți intervalul de timp minim al senzorului pentru 2S; intervalul de citire este mai mic de 2S, poate cauza că temperatura și umiditatea nu sunt permise sau comunicarea nu reușește, etc.
  4. Valorile de temperatură și umiditate sunt citite fiecare rezultatele ultimei măsurători Pentru datele în timp real care au nevoie de citire continuă de două ori, recomandăm citirea repetată a senzorilor, iar fiecare interval de citire a senzorului este mai mare de 2 secunde pentru a obține date precise.

Nu știu dacă vreunul dintre fire trebuie răsucit pentru o performanță optimă. În pdf se spune doar să folosiți un cablu ecranat de înaltă calitate.

Când este alimentat de la 5V, pinul de ieșire va fi la 5V. Divizorul de tensiune este necesar pentru a tăia ieșirea de date de 5V către un Pi gpio sigur 3V3.

Comentarii

  • Mulțumesc! Citesc o dată la fiecare 5 secunde și încă primesc eroarea. Este diagrama prezentată în întrebarea mea modul corect de implementare a divizorului de tensiune? –  > Por Elmer.
  • Da. Măsurați tensiunea la pinul de ieșire dacă puteți. Ar trebui să fie de 3V3. Primiți date? Ați putea folosi piscope pentru a vedea dacă se transmit biți de date. –  > Por joan.
  • OK. Voi verifica cu siguranță piscope! Motivul pentru care întreb despre divizorul de tensiune este pentru că nu are sens cum să îl conectez efectiv. Am pinul raspberry pi de 5V și pinul de 5v de pe senzor, dar pe diagramă văd doar un singur loc pentru 5v. Aceeași problemă pentru masă. –  > Por Elmer.
  • Diagrama nu arată conexiunile pinului 1 (5V) și pinului 4 (masă). –  > Por joan.
  • Deci, în plus față de diagrama divizorului de tensiune, voi avea în continuare 5V — fir roșu și masă — fir negru? Iar cei 5V și Ground menționați în diagrama de divizor de tensiune sunt ambii pini raspberry pi? –  > Por Elmer.
Michał

Am avut o problemă similară. în primul rând, conform sfatului de la Raspberry Pi Tutorial 26 – GPIO DHT22 Senzor digital de temperatură + umiditate GPIO DHT22, , am făcut o buclă pentru a citi până când este diferit de -999:

while ( humidity == "-999.00" ):
        increment += 1
        sleep(sleepTime)
        humidity, temperature = readDHT22()

După două sau trei citiri în cele mai multe cazuri a fost OK. O idee bună ar fi să o prelungiți cu limitarea incrementelor, altfel ar putea continua la nesfârșit.

Apoi, când m-am jucat cu doi senzori pe GPIO-uri diferite, mi-am extins codul cu o funcție la care am trecut obiecte senzor. Problema a dispărut și acum fiecare primă citire este OK. Nu mă întrebați de ce 😉

pi = pigpio.pi()

s1 = DHT22.sensor(pi,4)
s1.trigger()

s2 = DHT22.sensor(pi, 17)
s2.trigger()

sleepTime = 3
increment = 0

def readDHT22(s):
        s.trigger()
        humidity = '%.2f' % (s.humidity())
        temp = '%.2f' % (s.temperature())
        return (humidity, temp)

hum1, temp1 = readDHT22(s1)
hum2, tem2 = readDHT22(s2)

Comentarii

  • Care este diferența dintre biblioteca DHT pigpio și biblioteca Adafruit_DHT ? –  > Por Ciasto piekarz.
Milliways

Nu ar trebui să fie nici o problemă, deși nu știu la ce te referi prin „fir de alarmă”. Eu aș fi folosit o secțiune de cablu panglică și nu m-aș fi deranjat cu o placă de pâine.

Aceasta folosește un 1-wire interfață, care ar trebui să funcționeze pe distanțe rezonabile.

Problema ar putea fi unde este conectat. Spuneți GPIO 17 (nu există un astfel de pin). Vă referiți la pinul fizic 17 al BMC 17 (GPIO 0)?

Eu înțeleg că 1-wire funcționează doar pe pinul fizic 4 (dacă nu cumva compilați propriul modul kernel).

Comentarii

  • Prin fir de alarmă mă refer la firul utilizat pentru un sistem de alarmă pentru casă. Acesta are 4 fire înfășurate într-un înveliș alb. Acest senzor nu utilizează interfața cu 1 fir. Mă refer la numerele pinilor prin numerotarea broadcom, deoarece acesta este modul în care Pigpio îi menționează.elinux.org/… –  > Por Elmer.
BreezyKen

În primul rând pe breadboard obțin o temperatură ușor diferită rulând AM2302 la 3,3 vs 5,0 volți. Folosesc un cip de schimbare de nivel atunci când funcționez pe 5V. Când mutați senzorul de pe placă este imperativ să îl rulați pe 5 volți fie cu un level shifter, fie cu un divizor de tensiune pentru a limita tensiunea pe GPIO Pi la 3v3. AM2302/DHT22 NU este un dispozitiv cu 1 fir. Acesta va funcționa pe orice GPIO. Am rulat până la zece la un moment dat, fiecare conectat la un pin GPIO diferit.Din experiența mea, chiar și rulând senzorul la 5 volți și folosind un fir răsucit ecranat, distanța este limitată la aproximativ 6 metri.Am cumpărat aproximativ 20 de astfel de senzori și calitatea variază foarte mult, în special citirea RH. Cumpărați de la o sursă de renume și cumpărați câteva și comparați-le. Dacă doriți o temperatură precisă, folosiți DS18B20, care este un dispozitiv adevărat cu 1 fir. Divizorul de rezistență 5V — 5K —GPIO— 10K — masă va limita tensiunea pinului GPIO la o valoare sigură. Teoretic, acest lucru este în regulă, dar ignoră impedanța internă a senzorului, iar tensiunea de pe pinul GPIO este mai mare decât cea permisă de 3v3. Un schimbător de nivel este cea mai bună soluție.

yglodt

Am conectat un AM2302 cu aproximativ 20 m de cablu. Este un cablu cu 4 perechi, cu un ecran global. Nu este implicat niciun divizor de tensiune sau rezistență suplimentară.

Este conectat la 3,3V și funcționează (în mare parte) bine:

[email protected]:~# while sleep 5; do ./rht 15; echo ; done
21.60,38.80
21.60,38.90
21.60,38.90
21.60,39.00
21.60,39.00
21.60,39.10
21.60,39.10
21.50,39.10
21.50,39.10                                                                                                                                                                                  
21.50,39.20                                                                                                                                                                                  
21.50,39.20                                                                                                                                                                                  
21.50,39.20                                                                                                                                                                                  
21.50,39.20                                                                                                                                                                                  
21.50,39.30                                                                                                                                                                                  
21.50,39.30                                                                                                                                                                                  
21.50,39.30                                                                                                                                                                                  
21.40,39.30                                                                                                                                                                                  
21.40,39.30                                                                                                                                                                                  
21.40,39.40                                                                                                                                                                                  
21.40,39.40                                                                                                                                                                                  
21.40,39.40                                                                                                                                                                                  
21.40,39.40                                                                                                                                                                                  
21.40,39.50                                                                                                                                                                                  
21.40,39.50                                                                                                                                                                                  
21.40,39.60                                                                                                                                                                                  
21.40,39.70                                                                                                                                                                                  
21.30,39.60
21.30,39.60
21.30,39.70
21.30,39.70
21.30,39.70
21.30,39.70
21.30,39.70
error
21.30,39.80
21.30,39.80
21.30,39.90
error
21.30,40.00
21.20,39.90
21.30,40.00
21.20,39.90
21.20,39.90
21.20,40.00
21.20,40.00
21.20,40.00
21.20,40.00
21.20,40.00