Przeszukaj forum
Pokazywanie wyników dla tagów 'DHT22'.
Znaleziono 1 wynik
-
Witam niedawno chwaliłem się tu prototypem ,,Stacji Pogodowej DHT11". Trochę popracowałem nad tym i teraz mogę się pochwalić Stacją pogodową DHT22: Komponenty które tutaj użyłem: Attiny85 - Mikrokontroler a tutaj serce całej stacji pogodowej DHT22 - Czujnik wilgotności i temperatury LCD 2x16 z konwerterem I2C - Wyświetlacz pełniący rolę twarzy stacji Koszyk oraz baterie - Czyli zasilanie całego projektu (3x AA w koszyku) Nie będę powyżej wymieniał takich rzeczy jak płytka uniwersalna, czy szczypce boczne które mi się przydały przy obcinaniu podpór wydruku 😉 Celem całego projektu było ciche i małe urządzenie które można postawić na biurku i obserwować wilgotność i temperaturę. Najcięższą rzeczą w tym wszystkim było zrobienie samej obudowy, robiłem ją w programie TINKERCAD. Najpierw musiałem zrobić wydruki które pomogły mi dopasować otwory do komponentów: Dopiero jak wszystko było dopasowane to zacząłem robić obudowę która finalnie wyszła tak: I wiem, powiedziałem ,,ciche i małe urządzenie" a obudowa nie wyszła jakoś bardzo mała, tylko że zdałem sobie z tego sprawę podczas jej drukowania. 😛 Wszystko mogło by wyjść mniejsze i oszczędniejsze gdyby przełożyć miejsce na koszyk (z tyłu obudowy na jej spód). Wspomniałem o oszczędności bo jak na moje wydruki które miały od 3-10g to ten był dość spory, bo miał ok. 75g. 😕 Okej teraz zajrzyjmy do kodu: #include "DHT.h" #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); DHT dht; byte znak_stopnia[8] = { B00111, B00101, B00111, B00000, B00000, B00000, B00000, B00000 }; byte znak_wilg[8] = { B00000, B00100, B00110, B01110, B11101, B11111, B11111, B01110 }; byte znak_temp[8] = { B00100, B00110, B00100, B00110, B00100, B01110, B01110, B01110 }; int w; int t; int tx; int wx; void setup(){ dht.setup(4); lcd.init(); lcd.backlight(); lcd.setCursor(0,0); lcd.print("Temp ="); lcd.setCursor(0,1); lcd.print("Wilg ="); lcd.createChar(1, znak_temp); lcd.createChar(2, znak_wilg); lcd.setCursor(5,0); lcd.write(1); lcd.setCursor(5,1); lcd.write(2); } void loop(){ if(t < 10 && t > -1){ tx = 10; } if(t > 9){ tx = 11; } if(t < 0 && t > -10){ tx = 11; } if(t < -9){ tx = 12; } w = dht.getHumidity(); t = dht.getTemperature(); lcd.setCursor(9,0); lcd.print(t); lcd.setCursor(9,1); lcd.print(w); lcd.createChar(3, znak_stopnia); lcd.setCursor(tx,0); lcd.write(3); lcd.print("C "); lcd.setCursor(11,1); lcd.print("% "); delay(dht.getMinimumSamplingPeriod()); } Nie ma co tu opisywać każdej linijki, zaznaczę tylko kilka ważnych linijek Poprzednim razem w mojej stacji nie było nic nadzwyczajnego, tutaj postanowiłem dodać znaki które dodają trochę wyglądu (w kodzie: funkcja byte napisana 3 razy) Przydała mi się tu bardzo ta strona: https://maxpromer.github.io/LCD-Character-Creator/ Kilka pętli if pojawiło się w kodzie żeby zapobiec błędom w wyświetlaniu znaków Reszta kodu to funkcje wyświetlające napisy/znaki oraz funkcje pobierania temperatury/wilgotności Podczas drukowania obudowy napotkałem bardzo duży problem, mam na myśli odklejanie się rogów wydruku. To było coś nad czym siedziałem prawie pełne 2 dni, co znacznie opóźniło ukończenie projektu. Problem rozwiązała zmiana temperatury stołu, dowiedziałem się że dla filamentu PLA stół powinien mieć temperaturę ok 55°C gdzie mój do tej pory miał 35°C. Pomogło mi jeszcze wymycie płyty roboczej oraz nałożenie na nią zwykłego kleju biurowego. Finalnie wydruk wyszedł bardzo ładnie: Na koniec zostało mi jeszcze przełożenie komponentów z płytki stykowej na płytkę uniwersalną: I upchanie wszystkiego do obudowy. Według mnie wszystko wyszło bardzo ładnie. Nie jest to finalna wersja stacji, bo ma ona wciąż bardzo dużo błędów. W następnej stacji pogodowej planuję zrobić: Lepiej zorganizować wnętrze. (uporządkować elektronikę w środku) Poprawić zatrzaski. (ciężko otworzyć teraz obudowę przez to że źle zrobiłem zatrzaski) Lepiej wymierzyć otwory na komponenty. (żeby wszystko się trzymało musiałem używać taśmy dwustronnej 😛) Zrobić coś w rodzaju siatki aby czujnik nie był odsłonięty. Zasłonić baterie, ale w taki sposób żeby dało się je w każdej chwili wymienić bez rozbierania obudowy. (bo nie są zasłonięte): To tyle z mojej strony, mam nadzieję że projekt się podobał. Ja z siebie sam jestem bardzo dumny bo jeszcze nigdy nie zrobiłem praktycznego urządzenia w ładnej obudowie. Nie wiem czy na tym forum jest to w zwyczaju, ale na koniec chciałbym podziękować kilku użytkownikom. Bardzo dziękuje użytkownikowi @AntekBezak za pomoc w podłączeniu wszystkiego oraz pomoc w napisaniu kodu. Za pomoc w napisaniu kodu dziękuje jeszcze @ethanak, @_LM_ oraz @KatzePL. Bez was nigdy bym sobie z tym nie poradził! Dziękuje też Tobie za przeczytanie całego DIY. Pozdrawiam!