Skocz do zawartości

Cała aktywność

Strumień aktualizowany automatycznie     

  1. Dzisiaj
  2. Wczoraj
  3. Dziękuję za pomoc. Osiągnąłem wystarczającą dokładność. Mam ostatnie pytanie w sprawie czujników czy podłączenie ich dwóch pod zasilanie 3.3V w ESP32 nie spali płytki?
  4. Takie coś to Ci raczej nie wyjdzie. Owszem - możesz przeskalować wartość odczytaną z analogRead właśnie za pomocą map, ale z rzeczywistymi procentami nie będzie to miało wiele wspólnego. Podejrzewam że ten "map" to z jakiejś arduinowej aplikacji? No to pomyśl: w Arduino analogRead ma zakres 1024, tutaj 4096. Cztery razy więcej, prawda?. Więc jeśli w Arduino odczytana wartością byłoby 550, to tutaj... no ile? Zgadniesz czy policzysz? A może zajrzysz do opisu funkcjo map na arduino.cc? Bo tak nie rozumiejąć o co chodzi to skończysz ten program za jakieś siedem kilometrów...[1] -- [1] Każda pięciolatka to krok naprzód
  5. Znów był problem z podłączeniem znaczy podłączyłem pod pin 32 oraz zasilanie pod 3,3V masę oczywiście miałem podłączoną. Teraz mam pytanie jak dobrać odpowiedni zakres aby wilgotność była wyświetlana w %? Wiem że służy do tego rozkaz output_value = map(output_value,550,0,0,100) czy jaką maksymalną wartość ma dać 4095?
  6. Skończyłem projekt ścieżek części RF, ze wszystkim zmieściłem się na jednej warstwie Chętnie posłucham uwag, co do efektu Pliki KiCAda trzymam na GitHubie, w developie. @atMegaTona Tak. Sprytne!
  7. Wszystko już gra. Chyba niewyspany byłem... Dzięki za pomoc. 1. W kursie nie było słowa o "masie" . Wiem, że masa to "minus" ale katoda to też "minus" W takim razie "masą" nazywamy punkt na samym końcu wszystkich naszych elementów (czyli masa jest to katoda na baterii aż do pierwszej nóżki po stronie minusa?)
  8. Oczywiście że może być. Tyle że piny w ESP32 nie lubią podłączania do nich 5V.
  9. Może być 5V. Zobacz tu: https://maker.pro/arduino/projects/arduino-soil-moisture-sensor
  10. zajrzałeś do DHT.h? Odpowiedni fragment: class DHT { public: typedef enum { AUTO_DETECT, DHT11, DHT22, AM2302, // Packaged DHT22 RHT03 // Equivalent to DHT22 } DHT_MODEL_t; void setup(uint8_t pin, DHT_MODEL_t model=AUTO_DETECT); Bo czytam opisy i komentarze w bibliotekach. W pliku DHT.cpp masz odpowiedni komentarz: if ( model == AUTO_DETECT) { DHT::model = DHT22; readSensor(); if ( error == ERROR_TIMEOUT ) { DHT::model = DHT11; // Warning: in case we auto detect a DHT11, you should wait at least 1000 msec // before your first read request. Otherwise you will get a time out error. } } Zresztą ten fragment dość dokładnie wyjaśnia dlaczego nie należy korzystać z autodetekcji.
  11. Dzięki wielkie @ethanak i @atMegaTona za pomoc. Wstawiłem przerwę po autodetekcji jak pisałeś @ethanak. Czy mógłbyś jeszcze poswięcić mi jedną odpowiedź na wytłumaczenie dwóch rzeczy: 1) pisałeś że można w dht.setup wywołać typ czujnika - jak to zrobić, w sensie co wpisać dla czujnika DHT11, DHT22 w dht.setup(2,???); 2) skąd wiesz że trzeba odczekać minimum 1 sekundę po autodetekcji Jeżeli nie będzie to problem to byłbym wdzięczny za pomoc.
  12. Dlaczego zasilasz czujnik z 5V zamiast 3.3V? Masę w ogóle podłączyleś? Czy na pewno podłączasz pin do odpowiedniego wyjścia (analog a nie digital)? Po co pinMode jeśli używasz analogRead? Czy wejście w ogóle reaguje na jakieś zmiany napięcia (podłącz tam potencjometr i sprawdź czy reaguje, bo 5V mogło je uwalić). 4095 to znaczy, że na wejściu jest 3.3V albo więcej (zakres analogRead jest od 0 do 4095).
  13. Dzięki za odpowiedz. Dodałem konfiguracje pinu i jeszcze raz wszystko podłączyłem i zadziałał. Teraz mam problem z czujnikiem wilgotność gleby FC-28 który wskazuje wynik 4095 i nie reaguje na wodę. Podłączam do pinu 35 oraz zasilanie 5v. Czy powinnem zastosować jakąś bibliotekę? int sensor_pin = 35; int value ; void setup() { Serial.begin(115200); Serial.println("Reading"); delay(2000); pinMode(sensor_pin, INPUT); } void loop() { value= analogRead(sensor_pin); Serial.print("Moisture : "); Serial.print(value); Serial.println("%"); delay(1000); }
  14. A jeszcze mam takie głupie pytanie. Otóż potrzebuje podłączyć ten moduł ethernet po kablu do portu LAN w PC i drugie urządzenie też po kablu do portu LAN(kamerka IP), natomiast mam tylko jedngo gniazdo w PC. I tu pytanie czy jeśli kupie adapter z usb-> na LAN to będę mógł podłączyć urządzenia zarówno do tego adaptera i gniazda w PC i to zadziała? Czy muszę zastosować dostępne rozgałęziacze ? Dodam, że mam gdzieś w domu taki adapter, ale oczywiście jedno z gniazd nie działa bo nie wykorzystuje pinów 1 2 3 6. Można rozdzielić najwyżej te piny drugim takim adapterem?
  15. A masz ten podciąg do Vcc w ogóle? Ten od DO, być może dht11 ma wewnętrzny a 22 nie. Tak też może być jak@ethanak pisze, trzeba zawsze najpierw przejrzeć chociaż pobieżnie pliki wykorzystywanych bibliotek.
  16. Nie bardzo rozumiem o co Ci tutaj chodzi. To dlaczego używasz biblioteki, której nie potrafisz użyć? Metodę dht.setup możesz wywołać z dwoma parametrami (drugi to typ). zajrzyj proszę na własny dysk i obejrzyj plik DHT.h. autodetekcja jest rozwiązana w bardzo uproszczony sposób (tzn. że jeśli wystąpił timeout to jest to dht11). Dodatkowo jest informacja, że po autodetekcji musisz co najmniej sekundę zaczekać przed następnym odczytem. Jakoś tego w Twoim programie nie widzę (czyli program nie jest poprawny). 10 sekund po starcie to Twój delay.
  17. może spróbuj nim poruszać, raz w jedną raz w drugą stronę.. może w czujniku coś nie łączy. Chińskie guano świat zalewa i tylko czasu szkoda się z tym zmagać godzinami, dniami, latami.. i życie zleci jak z.. strzelił. Powinien działać bez żadnego problemu.
  18. Nie bardzo rozumiem o co Ci tutaj chodzi. Wstawiłem do kodu dht_zew.getStatusString(), i po włączeniu zasilania przez około 10 sekund status jest TIMEOUT, po czym status zmienia się w OK . Zrobiłem to dla DHT22 (zdjecia) oraz dla DHT11 i tutaj przy statusie OK wyświetla prawidłowe wartości.
  19. Pomogła biblioteka TinyGPS++ po pewnych modyfikacjach.
  20. Ja bym mimo wszystko zamiast autodetekcji wymusił model przy inicjalizacji... spróbuj. Poza tym nie sprawdzasz, czy getCośtam() nie zwrócił błędu, może też spróbuj...
  21. Dzięki za zainteresowanie tematem. Daje sobie uciąć rękę że czujnik DHT22 jest sprawny - posiadam dwa takie czujniki, oba sprawne. Odczyt dokonuje co 10 sekund a docelowo będzie jeszcze większy odstęp czasu. Czujniki podłączone do Arduino i wgrany z biblioteki program do testu - czujniki działaj. Wypinamy z Arduino i wpinam w płytkę i nie dzialaj. Nie ma możliwości że są uszkodzone, przejścia na płytce są, zmierzyłem rezystancję między pinem uC a data czujnika i wynosi 0.8 oma. Kod uważam za dobry, bo: 1) jak podłącze DHT11 to działa bez zarzutu - używam biblioteki której autorem jest Mark Ruys; 2)po wgraniu do Arduino(na płytke arduino) i podłączeniu czujnika DHT22 w serial monitorze wyświetla prawidłowe wartości. //Stacja pogodowa(temperatura + wilgotnosc) //Ustawienia wyświetlacza #include <LiquidCrystal.h> const int rs = 8, en =0, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //Utworzenie znaku stopni (wyswietlacz) byte stopnie[8]={ 0b11100, 0b10100, 0b11100, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; //Ustawienia czujnikow DHT #include "DHT.h" #define DHT11_WEW 9 //czujnik wewnetrzny DHT11 (pin9) #define DHT22_ZEW 10 //czujnik zewnetrzny DHT22(pin 10) DHT dht_wew; DHT dht_zew; //Przycisk i zmienne #define przycisk1 1 //przycisk do podswietlania wyswietlacza #define przycisk2 2 //przycisk do zmiany menu wyswietlacza, przycisk do obslugi przerwan #define LED 3 //dioda podswietlenia wyswietlacza #define foto A5 //fotorezystor do automatycznego sterowania podswietleniem int podswietlenie; int wybor=0; //zmienna do sterownia wyswietlaczem //zmienne przetrzymujace max i min temperature na zewnatrz float max_temp; float min_temp; //zmienne przetrzymujace max i min wilgotnosci na zewnatrz int max_wilg; int min_wilg; //zmienne przetrzymujace wartosc wilgotnosci i temperature wewnatrz budynku int wilgotnosc_wew; int temperatura_wew; //zmienne przetrzymujace wartosc wilgotnosci i temperature na zewnatrz int wilgotnosc_zew; float temperatura_zew; void setup() { pinMode(LED,OUTPUT); analogWrite(LED,podswietlenie); lcd.begin(16, 2); lcd.createChar(0,stopnie); dht_wew.setup(DHT11_WEW); dht_zew.setup(DHT22_ZEW); attachInterrupt(digitalPinToInterrupt(przycisk2), menu, LOW); // Przerwanie(reagujące na stan niski) } //sluzace do przelaczania wyswietlanego teksu na wyswietlaczu void menu() //funkcja do przelaczania menu wyswietlacza { if(wybor<3) wybor++; else wybor=0; } void wyswietlacz() //wybor informacji na wyswietlaczu { switch(wybor) { case 0: stan1(); break; case 1: stan2(); break; case 2: stan3(); break; } } void stan1() //funkcja menu glownego, wyswietlanie aktualnych danych { lcd.clear(); lcd.print("WEW: "); lcd.print(wilgotnosc_wew); lcd.print("% "); lcd.print(temperatura_wew); lcd.print((char)0);lcd.print("C"); lcd.setCursor(0,1); lcd.print("ZEW: ");lcd.print(wilgotnosc_zew); lcd.print("% "); lcd.print(temperatura_zew); lcd.print((char)0); lcd.print("C"); } void stan2() //funkcja wyswietlanie max i min temperatury zewnetrznej { lcd.clear(); lcd.print("max temp: "); lcd.print(max_temp); lcd.print((char)0);lcd.print("C"); lcd.setCursor(0,1); lcd.print("min temp: "); lcd.print(min_temp); lcd.print((char)0);lcd.print("C"); } void stan3() //funkcja wyswietlanie max i min wilgotnosci zewnetrznej { lcd.clear(); lcd.print("max wilg: "); lcd.print(max_wilg); lcd.print("%"); lcd.setCursor(0,1); lcd.print("min wilg: "); lcd.print(min_wilg); lcd.print("%"); } void loop() { //Pobieranie informacji o jasnosci oswietlenia (fotorezystor) podswietlenie=analogRead(foto); podswietlenie=map(podswietlenie,0,1023,0,250); analogWrite(LED,podswietlenie); //Reczne podswietlenie wyswietlacza if(digitalRead(przycisk1)==LOW) { podswietlenie=200; analogWrite(LED,podswietlenie); delay(3000); } //Pobranie informacji o wilgotnosci i temperaturze DHT11 wilgotnosc_wew = dht_wew.getHumidity(); temperatura_wew = dht_wew.getTemperature(); //Pobranie informacji o wilgotnosci i temperaturze DHT22 wilgotnosc_zew = dht_zew.getHumidity(); temperatura_zew = dht_zew.getTemperature(); //Zapisywanie max i min temperatury if(temperatura_zew>max_temp) max_temp=temperatura_zew; else if(temperatura_zew<min_temp) min_temp=temperatura_zew; //Zapisywanie max i min wilgotnosci if(wilgotnosc_zew>max_wilg) max_wilg=wilgotnosc_zew; else if(wilgotnosc_zew<min_wilg) min_wilg=wilgotnosc_zew; wyswietlacz(); delay(10000); //przerwa programowa }
  22. Nie masz racji. Absolutnie. To sprzeczne z polityką przymilnego forum (czy jakoś tak) - nie wolno twierdzić że kolega kłamie, ponieważ napisał: Tak że ja nawet nie proszę o pokazanie kodu
  23. Trudno zgadywać co może być przyczyną takiego zachowania czujnika. Oba czujniki mają taki sam pin-out więc nie powinno być problemu przy zamianie o ile nie podłączasz ich odwrotnie. Jedyna różnica poza zakresem pomiarowym to częstotliwość dokonywania pomiarów która dla dht22 wynosi 0.5H czyli pomiaru można dokonywać co 2 sekundy, w przypadku dht11 jest to 1H. Jeśli więc nie ma nigdzie przerwy w połączeniach to wniosek nasuwa się tylko jeden - czujnik jest uszkodzony. Możesz spróbować jeszcze przed podłączeniem zewrzeć ze sobą wszystkie nóżki czujnika np. wtykając go w jedną linię na stykówce - czasami taki zabieg pomaga bo rozładowuje wewnętrzne pojemności. Jeśli to nie pomoże to chyba już nic innego nie pomoże. Dla testów spróbuj pobierać dane wolniej, np. raz na 3s. -------- zrobiłem mały research i znalazłem taki poradnik: http://akademia.nettigo.pl/dht22/ Zwróć uwagę na rezystor podciągający pomiędzy pinem 1 a 2 i sposób pobierania danych. Powodzenia
  24. Witam, poprawiam swój termometr i napotkałem problem przy wymianie zewnętrznego czujnika DHt11 na nowy DHT22. Po podłączeniu czujnika DHT11 wszystko poprawnie pokazuje, natomiast podłączenie czujnika DHT22 pokazuje stałą wartość(przeważnie wilgotność 2-3%, a temperaturę 0 - przy rzeczywistych wartościach 70%, 230C). Czujniki na pewno jest sprawny i program też jest prawidłowy - sprawdzałem i jestem w 100% przekonany. Wygląda na to że na brak pomiarów ma wpływ połączenie czujnika. Czy ktoś mógłby mi doradzić co mógłbym poprawić w połączeniach płytki czy raczej nadaje się do zrobienia na nowo? Długość przewodu do czujnika ma około 60 cm, natomiast dla sprawdzenia wyprowadziłem dodatkowe krótkie przewody i na nich też nie działa odczyt.
  1. Załaduj więcej aktywności
×
×
  • Utwórz nowe...