Skocz do zawartości
Mrpatryk

Nodemcu v3 + czujnik temp/wilg AM2302

Pomocna odpowiedź

Siemaneczko Podstawowy kod do Am2302 nie smiga na nodemcu v3 juz dostaje bialej gorączki, na arduino uno wszystko smiga nawet bez rezystora ... A nodemcu v3 ma focha i to juz 2 z koleii ...

GND-> GND , 3,3v-3,3v (sprawdzane na osobnym zasilaniu 5v i wspolnej masie) , 2-> D2

#include <cactus_io_AM2302.h>
 
 #define AM2302_PIN 2// what pin on the arduino is the AM2302 data line connected to
  // For details on how to hookup the AM2302 sensor to the Arduino then checkout this page
// http://cactus.io/hookups/sensors/temperature-humidity/am2302/hookup-arduino-to-am2302-temp-humidity-sensor
  // Initialize AM2302 sensor for normal 16mhz Arduino.
  AM2302 dht(AM2302_PIN);
 // Note: If you are using a board with a faster processor than 16MHz then you need
  // to declare an instance of the AM2302 using
  // AM2302 dht(AM2302_DATA_PIN, 30);
 // The additional parameter, in this case here is 30 is used to increase the number of
  // cycles transitioning between bits on the data and clock lines. For the
  // Arduino boards that run at 84MHz the value of 30 should be about right.
  
  void setup(){
 Serial.begin(9600);
  Serial.println("AM2302 Humidity - Temperature Sensor");
Serial.println("RH\tTemp (C)\tTemp (F)\tHeat Index (C)\tHeat Index (F)");
 
  dht.begin();
  }
  
  void loop(){
// Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  dht.readHumidity();
  dht.readTemperature();
  delay(2000);
  // Check if any reads failed and exit early (to try again).
  if (isnan(dht.humidity) || isnan(dht.temperature_C)) {
 Serial.println("AM2302 sensor read failure!");
 return;
 }
 
 Serial.print(dht.humidity); Serial.print(" %\t\t");
 Serial.print(dht.temperature_C); Serial.print(" *C\t");
 Serial.print(dht.temperature_F); Serial.print(" *F\t");
 Serial.print(dht.computeHeatIndex_C()); Serial.print(" *C\t");
 Serial.print(dht.computeHeatIndex_F()); Serial.println(" *F");
  // Wait a few seconds between measurements. The AM2302 should not be read at a higher frequency of
 // about once every 2 seconds. So we add a 3 second delay to cover this.
  delay(3000);
  }

 

Udostępnij ten post


Link to post
Share on other sites

Skąd wziąłeś tę bibliotekę i dlaczego nie używasz normalnej (DHT)? Poza tym nawet nie znając biblioteki a czytając tylko komentarze w kodzie - masz NodeMCU z prockiem 16 MHz?

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Bibliotekę ogarnąłem po wielu próbach nieudanego odpalenia czujnika am2302. Dzisiaj bede to testował. Dziwi mnie to tylko ze kod ktory napisałem z opcja wysyłania na serwer działał do czasu. Potem sie wieszal i musiałem resetowac az nic juz to nie dawalo. Dzisiaj to wytestuje. 

Udostępnij ten post


Link to post
Share on other sites

Bo 2 to nie musi być D2. Jak chcesz użyć D2 to w kodzie użyj D2, jak chcesz użyć wartości liczbowej to wydrukuj sobie Serial.print(D2) i zobacz jaka to liczba, sprawdzisz co się kryje w definicjach danej płytki pod D2. Tak samo możesz w przyszłości sprawdzić numer pinu MOSI, czy SCL. Oczywiście można też w PC dogrzebać się do core i sprawdzić te definicje w pliku. W katalogu variants jest jeden pliczek h i tam taki tekst: "static const uint8_t D2   = 4;".

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Też miałem problem z DHT22 na nodeMCU. Ta sama biblioteka na Mega działała, a na NodeMCU już nie. Pomogła zmiana biblioteki. 

Oczywiście numeracja pinów to często popełniamy błąd... 😉

Edytowano przez SOYER

Udostępnij ten post


Link to post
Share on other sites

Na jaką bilbiotekę zmieniłes i smiga ?? Bo ja juz sie mecze , pokazuje teraz 0.00% i 0.00 'C .. Czujnik niby działa ale nic nie wskazuje ;/ 

Udostępnij ten post


Link to post
Share on other sites

SimpleDHT by Winlin... 

Udostępnij ten post


Link to post
Share on other sites

Coś śmiesznego ! , działa wszystko nagle " z dupy " nic nie zrobiłem i działa ...  Czy ten czujnik jest szalony czy co ?

Udostępnij ten post


Link to post
Share on other sites

Ja mam takie piki w dół po wymianie czujnika na nowy, piwo dla kogoś kto mi to wytłumaczy. Mało tego, wcześniej były zawsze do zera, ale dopisałem isnan-a by ignorował te zera i teraz mam takie coś. To się kupy nie trzyma... 

 

Screenshot_20190526-135132.jpg

Udostępnij ten post


Link to post
Share on other sites

Znaczy jak ignorował... pokaż kod.

Udostępnij ten post


Link to post
Share on other sites

No to świetnie, że działa, nie wiem co prawda jak, bo nie mógł działać bez zmian w kodzie lub podłączeniu -  definicje masz na pin 2, a podpięcie pod D2 gdzie jest to 4 (GPIO4).

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
7 godzin temu, ethanak napisał:

Znaczy jak ignorował... pokaż kod.

DHT dht_zew(DHTPIN2, DHTTYPE2);
   float w = dht_zew.readHumidity();
   float t = dht_zew.readTemperature();
   if (isnan(w) || isnan(t)) {}
   else{
  wilgotnosc_dht_zew = w;
  temperatura_dht_zew = t;

jeszcze jeden screenshot... 

 

Screenshot_20190526-221101.jpg

buziak za diagnozę 😄

Edytowano przez SOYER

Udostępnij ten post


Link to post
Share on other sites

Moja nic nie rozumieć.

Jeśli w lub t są nan, to wartość wilgotnosc_dht_zew jest jaka?

Muszę kawę wypić...

Udostępnij ten post


Link to post
Share on other sites
18 godzin temu, kaczakat napisał:

No to świetnie, że działa, nie wiem co prawda jak, bo nie mógł działać bez zmian w kodzie lub podłączeniu -  definicje masz na pin 2, a podpięcie pod D2 gdzie jest to 4 (GPIO4).

No właśnie ja też jestem zdziwiony, że to zadziałało a przedtem mialem podlaczone pod D0 a działało na D2 ... nie wiem jakim cudem .

Udostępnij ten post


Link to post
Share on other sites

Obawiam się, że ciągle mieszasz myślowo różne systemy walutowe. Jak przy kompilacji wybierzesz płytkę NODE MCU to wpisując jako argument funkcji 2 np. digitalWrite(2) to  sygnał pojawi się na pinie D4, ale ten sam kod skompilowany dla np. WIFIDuino będzie banglował pinem D2. Gdy w wybranej płytce jest Generic to na GPIO2, a użycie oznaczenia D2 wygeneruje błąd kompilacji, bo definicjach pinów nie ma przemapowanych numerów GPIO na piny typu D(numerek). Kiedyś będzie prościej, ale najpierw musisz to załapać. Możesz mieć też jakiś wynalazek, który ma pomieszane oznaczenia na płytce, łatwo to rozgryźć puszczając pętlę migania diodą po kolei na wszystkie dostępne piny.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...