Skocz do zawartości

Nodemcu v3 + czujnik temp/wilg AM2302


Mrpatryk

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);
  }

 

Link do komentarza
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
Link do komentarza
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. 

Link do komentarza
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;".

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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
Link do komentarza
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 ;/ 

Link do komentarza
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

Link do komentarza
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).

Link do komentarza
Share on other sites

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
Link do komentarza
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 .

Link do komentarza
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.

Link do komentarza
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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.