Skocz do zawartości

Pomiary klimatu w domu i wokół.


SOYER

Pomocna odpowiedź

Powoli zaczyna się rodzić mój dzieciak o którym myślałem jak zaczynałem przygodę z arduino.

Arduino, wyswietlacz co najmniej 4x20(może graficzny), 5 pomiarów temperatury( w tym dwa z higrometrem), moduł czasu, czujnik zanieczyszczenia powietrza(ten laserowy na pomiar PM2.5 i PM10), czujnik opadów, czujnik tlenku węgla, fajnie jakby zostały jakieś wolne wejścia "na zapas".

Teraz pytanie o podłączenie ilości kabelków sobie jestem w stanie policzyć, pewnie bez arduino mega sie nie obejdzie, ale wiem, że jest coś takiego jak I2C, ale nie wiem co to i jak to się je, podeślijcie jakiegoś sensownego linka albo napiszcie coś od siebie.

Podobnie ekspandery wejść, podeślijcie jakieś info.

Dzięki bardzo.

Link do komentarza
Share on other sites

https://pl.wikipedia.org/wiki/I%C2%B2C

Najbardziej mnie interesuje ta kontrola klimatu wokół domu. Czy ludzkość umie już robić takie rzeczy?

Jeśli odpowiednio dobierzesz czujniki to z taką "kontrolą" (czytaj: pomiarem) mnóstwa parametrów, wyświetlaniem tego na graficznym LCD, zapamiętywaniem w logu i nawet wysyłaniem przez radio do jakiegoś koncentratora poradzi sobie małe nano.

A ten laserowy do PM1.0/2.5/10 sprawuje się rewelacyjnie. Do tego polecam pomiar CO2. W domu zawczasu widać kiedy trzeba otwierać okna i jak wpływa głupie zagotowanie wody na ppm tego gazu w całym mieszkaniu. Czujnik CO to raczej ochrona przez spalaniem "beztlenowym" w przypadku pieca CO (tego innego CO) w domu. Do tego wilgotność i ew. temperatura w domu wystarcza. Czujnik pyłów oczywiście na zewnątrz. Opady? To chyba kwiatek do kożucha a same czujniki są albo profesjonalnie bardzo drogie albo żałośnie beznadziejne. Ciśnienie jest tanie i działa dobrze, choć mi przydaje się raczej mało.

Link do komentarza
Share on other sites

Dzięki za zainteresowanie. Czujnik CO właśnie dlatego, że w domu jest piec na węgiel i komin przez wszystkie kondygnacje. Rzeczywiście polecasz ten od CO2? Czujnik deszczu na wypadek wywieszonego prania:-). Który od pyłu zawieszonego rzeczywiście testowałeś i możesz polecić. Musi mieć oddzielny pomiar PM 2,5 i PM10...

Link do komentarza
Share on other sites

Mam dokładnie ten:

https://elty.pl/pl/p/PMS5003-czujnik-pylu%2C-jakosci-powietrza-wspolczynnik-PM1.0-PM2.5-PM10/1928

Wszystko robisz przez 3-woltowy UART, choć wymaga zasilania 5V. Wystarczy raz na 5 minut specjalną komendą wybudzić (zdalnie) czujnik, rozpocząć pomiary (wtedy włącza sobie wentylatorek - cichy, ale w pomieszczeniu, w nocy może przeszkadzać), wywalić do kosza pierwszych kilka wyników (bo słup powierza dopiero rusza w kanale pomiarowym), odczytać z 8 następnych, uśrednić i pokazać kolejny punkt na wykresie. Osobne wyniki dla PM 1.0, 2.5 i 10 choć ja używam tylko tych dwóch ostatnich. Jest dobra zbieżność z pobliską stacją monitoringu w Centrum Wawy więc tylko zapłakać (jak bardzo jest źle).

Gdy śpi pobiera jakieś grosze, ale gdy się włączy i mierzy trzeba liczyć powyżej 100mA. To też jest powód do rzadkiego włączania, z resztą atmosfera tak szybko się nie zmienia.

W pustym pokoju, gdy patrzysz na wykres z całego dnia widać kiedy ktoś chodził i robił zamieszanie - wzbija się kurz i masz wyraźną górkę.

CO2 jest fajne, bo tego nie czujesz nosem a obecność ludzi i gotowanie/wietrzenie bardzo wpływa na poziom tego gazu. Na zewnątrz masz typowo jakieś 450-500ppm, ale w mieszkaniu musisz mieć stale otwarte okno by utrzymywać <600. Zamykasz, siedzisz przy kompie i powoli rośnie. Wydaje się przytulnie i ciepło, ale to CO2 Cię grzeje - jak w łodzi podwodnej. Szczelne okna to maskara, nawet nie wiesz kiedy masz 2000ppm i odechciewa się pracować.. Nie mam doświadczenia z piecem, ale ten to musi wciągać tlen jak smok.

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

Może źle się wyraziłem:-), chodziło mi o to czy do takiego prostego projektu warto dawać taki wyświetlacz czy lepiej zwykły 4x20... zawsze jest sens, bo ładniej będzie wyglądało:-)).

Do niego jakaś fajna obudowa i już cieszy oko... Jak ty to masz wymyślone, może coś podpatrzę? Mam możliwość zrobienia wszystkich czujników po kablu, tylko nie wiem czy jest sens? KAbel niby może mieć max 100m tak? Jak to wygląda w przypadku I2C? Wszystko idzie po 4 żyłach? Może być skrętka, czy coś lepszego lepiej?

Czy lepiej radiowo na nRF24L01?

Link do komentarza
Share on other sites

"..do takiego prostego projektu.."

Wyświetlacz jest ważną częścią projektu. Często od niego zależy wszystko. Trudno więc mówić, że dodajesz go lub nie do projektu, bo to na nim często opiera się pomysł/sposób użytkowania, wybór docelowego użytkownika, pobór mocy więc i czas pracy itd itp. Jeśli chcesz mieć kilka kolorowych wykresów na ekranie i jednym rzutem oka poznać historię ostatnich godzin lub dni to nie masz wyjścia. Jeśli wystarczą Ci cztery liczby pokazujące aktualną sytuację (i ew. przeglądanie historii jakimiś klawiszami), zostań przy znakowym.

Moim zdaniem obecne ceny, dostępność i wybór wyświetlaczy graficznych kompletnie wymiatają wszelkie wyświetlacze znakowe. Już nawet na malutkim, jednokolorowym OLED 96x48 możesz dowolnie zakomponować położenie i wielkość napisów i liczb, użyć różnych krojów pisma (a biblioteki mają ich po 100+ rodzajów, od szeryfowych italików po takie wyglądające jak 7-segmentowy LED) czy zrobić płynne (po pixelu) przejeżdżanie napisów czy obrazków/ikonek. A na większym (np. TFT 320x200) zabawy jest jeszcze więcej, bo dochodzi trzeci wymiar - kolor. Owszem, to wszystko wymaga czasu pracy, umiaru, wielu prób no i jakiegoś poczucia estetyki, ale przecież jest też przyjemne a wyniki całkiem zadowalające. Na małym procku typu mega328 nie zrobisz animacji w 320x200, ale już wykresy stacji pogodowej uaktualniane na bieżąco plus wyniki liczbowe - jak najbardziej. Jak raz zaczniesz, nigdy do znakowych nie wrócisz.

Podłączanie czujników to osobny temat. Jest wiele rodzajów interfejsów cyfrowych. Spróbuj samemu czegoś poszukać i wyczuć do czego są, nie ma sensu powtarzać w kółko tego samego. Generalnie I2C, SPI to raczej między scalakami na jednej płytce. Wszelkie wyjścia poza urządzenie (a już w szczególności poza budynek) muszą być na to przygotowane. Im więcej pieniędzy i energii włożysz w zbudowanie nadajników i odbiorników linii i im lepsze masz same kabelki, tym szybciej i dalej możesz bity przesyłać. Zadawaj bardziej szczegółowe pytania a wcześniej próbuj coś samemu czytać.

Link do komentarza
Share on other sites

Ok, trochę myślałem nad tym wyświetlaczem, najbardziej by mi podpasował (wielkość i cena) ten:

https://elty.pl/pl/p/Nextion-3.2-TFT-480x240-resistive-touch-NX4024T032/1645, ale chyba nie dałbym rady go obsłużyć z moją wiedzą. Na razie stanęło na tym, że to będzie zwykły 4x20 znaków. Jeśli ktoś ma jakieś rady to z góry dziękuję.

Zainteresowałem się takim tematem zauważonym na YT: potencjometr(?) obracając którym jestem w stanie przeskakiwać w menu, a następnie po jego wciśnięciu wchodzę do danej funkcji.

Np. wyświetlam na ekranie po kolei w wierszach temperatury z różnych czujników, kręcąc potencjometrem przesuwam strzałkę w górę i dół, a klikając obok danej pozycji wchodzę "głębiej" i sprawdzam np. temperaturę max. i min.

Pewnie da się takie cóś zrobić na arduino ale nie potrafię znaleźć takiego potencjometru, a może takie coś nazywa się inaczej...

Pozdrawiam

Link do komentarza
Share on other sites

Zastanów się chwilę, to nie może być potencjometr, bo ten ma ograniczony zakres ruchów. Wszystko jedno czy do 180, 270 (typowo) czy nawet do 359°, jeśli w jednym memu będziesz musiał zjechać na sam dół a w następnym znowu i w trzecim znowu, to już zabraknie Ci kąta obrotu. Do tego celu używa się tzw. przetworników obrotowo-impulsowych często nazywanych enkoderami kwadraturowymi bądź po prostu impulsatorami, czyli "gałek" z nieograniczonym obrotem.

Takie coś ma dwa wyjścia, produkujące impulsy. Kręcąc w jedną stronę impulsy z wyjścia A są jakby przed impulsami z wyjścia B a w drugą - odwrotnie, to B pojawiają się pierwsze. Dzięki temu procesor, zliczając te impulsy w liczniku rewersyjnym (dwukierunkowym) wie nie tyko o ile przekręciłeś ośkę, ale także w którą stronę. Zwykle najtańsza chińszczyzna ma jakieś 24 kroki (impulsy) na obrót, ale zdarzają się i wykonania z 1024 imp/obr. Oczywiście w zastosowaniach interfejsu użytkownika te 24 impulsy wystarczają w zupełności. Czasem dostajesz jeszcze "klik" - osobne wyjście sygnalizujące poosiowe wduszenie gałki. Wtedy to już bez żadnego dodatkowego elementu możesz zrobić chodzenie po menu i zatwierdzanie bądź cofanie poleceń:

https://botland.com.pl/enkodery/9533-czujnik-obrotu-impulsator-enkoder-obrotowy-dfrobot-ec11.html?search_query=enkoder&results=203

https://botland.com.pl/enkodery/6908-enkoder-24-impulsy-20mm-ec16-pionowy.html

Na pewno znajdziesz jakąś gotową bibliotekę do obsługi ciągów takich impulsów (tzw. kwadraturowych - poczytaj o tym) i dekodowania pozycji gałki.

  • Lubię! 1
Link do komentarza
Share on other sites

Dzięki, tego szukałem 😃 , zastanawia mnie dlaczego przykłady kodu z tymi enkoderami są na przerwaniach robione...?

Inna sprawa:

https://botland.com.pl/czujniki-pogodowe/4901-bme280-cyfrowy-czujnik-wilgotnosci-temperatury-i-cisnienia-atmosferycznego.html?search_query=bme280&results=4

i

https://nettigo.pl/products/modul-czujnik-cisnienia-wilgotnosci-i-temperatury-bosch-bme280

polityka cenowa sprzedawcy czy inne różnice? Kurczę czuję się zobowiązany wobec Botlandu ale....

Link do komentarza
Share on other sites

Botland ma oryginalny czujnik firmy SparkFun. Nettigo - chiński "odpowiednik".

Ale jeśli już chcesz kupić tańszy, to może warto sprawdzić cenę na aliexpres? Wychodzi 1.05$ (z przesyłką), a 3$ za identyczny z nettigo...

Link do komentarza
Share on other sites

Hej, męczę się z enkoderem, użyłem kodu z neta i przeskakiwanie przy kręceniu działa, ale jak chcę dodać przycisk (wbudowany w enkoder) to ciągle mi wyswietla że wcisnięto.

Kod:

 #define PinA 2  
#define PinB 3  
#define PinP 19
int nacisnieto=0;
unsigned long time = 0; 
long count = 0; 
long num = 0;


void setup()
{
 Serial.begin(9600);

 pinMode(PinA,INPUT); 
 pinMode(PinB,INPUT); 
 pinMode(PinP,INPUT);
 attachInterrupt(0, blinkA, LOW);  
 attachInterrupt(1, blinkB, LOW);  
  attachInterrupt(19, przycisk, LOW); 
 time = millis(); 
}

void loop()
{
przycisk();
if(nacisnieto==1){
 Serial.println("wcisnieto");
 nacisnieto=0;
}

 while (num != count)
 {
   num = count;
   Serial.println(num);
 }
}

void blinkA()
{
 if ((millis() - time) > 3)
       count ++; 
 time = millis();
}

void blinkB()
{
 if ((millis() - time) > 3)  
       count --;
 time = millis();
}
void przycisk(){
 if ((millis() - time) > 3){  
       nacisnieto=1;
 time = millis();
}
}

Enkoder:

https://elty.pl/pl/p/Modul-z-enkoderem%2C-impulsatorem-/1215

Arduino MEGA.

Jeszcze jedno czemu w linijkach:

attachInterrupt(0, blinkA, LOW);  
 attachInterrupt(1, blinkB, LOW);  

podane są numery 0 i 1, a w.g. kursu Arduino należy podać numery pinów arduino obsługujące przerwania.....

Link do komentarza
Share on other sites

Jeszcze jedno czemu w linijkach: [...] podane są numery 0 i 1, a w.g. kursu Arduino należy podać numery pinów arduino obsługujące przerwania.....

W kursie używana jest funkcja pośrednia "digitalPinToInterrupt", dzięki której możemy podawać numer piniu, a nie numer przerwania z dwóch powodów. Po pierwsze jest to znacznie bardziej intuicyjne, a po drugie samo Arduino zaleca właśnie taką składnie:

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);	(recommended)
attachInterrupt(interrupt, ISR, mode);	(not recommended)
attachInterrupt(pin, ISR, mode);	(not recommended Arduino Due, Zero, MKR1000, 101 only)

Więcej na ten temat znajdziesz w dokumentacji: https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/

Jeśli chodzi o przycisk, to jak rozumiesz to poniższe ustawienie przerwania?

attachInterrupt(19, przycisk, LOW); 

Czym jest to 19?

Link do komentarza
Share on other sites

Ostatni przypadek (pin, ISR, wywołanie).

Rozumiem że niepoprawnie i na arduinoMEGA nie zadziała?

Inna sprawa:

moduł przekaźników https://botland.com.pl/przekazniki/2966-modul-przekaznikow-8-kanalow-z-optoizolacja-styki-7a240vac-cewka-5v.html

Domyślam się, że działają tak: jest wysoki stan na pinie arduino przekaźnik włączony, jest LOW- wyłączony, tak?

Jak wygląda sprawa dodatkowego sterowania takim przekaźnikiem np. przez przycisk(zwykły, naścienny). Da się mu podpiąć gdzieś dodatkowe zasilanie 5V podawane z włącznika i jak się to ma wtedy do arduino, bo wtedy na wyjściu na którym ma LOW pojawi mu się 5V z zewnątrz(od włącznika). Choć to powinno być chyba to samo 5V co na arduino bo musi być wspólna masa..tak?

Trzeba by to chyba zrobić inaczej, tzn. jeśli ktoś włączy ręcznie włącznikiem dzwonkowym, poda sygnał do arduino i arduino robi co trzeba, ew. info na LCD. Rzecz do zrobienia na arduino, wtedy do każdego wyjścia sterującego trzeba też wejście z włącznika... Dobrze, że kupiłem MEGA:-)

EDIT

Za Chiny ludowe nie umiem przycisku zrobić na przerwaniu, więc zrobiłem tak:

int nacisnieto=0; 
unsigned long time = 0; 
long count = 0; 
long num = 0; 


void setup() 
{ 
 Serial.begin(9600); 

 pinMode(PinA,INPUT); 
 pinMode(PinB,INPUT); 
 pinMode(PinP,INPUT_PULLUP); 
 attachInterrupt(digitalPinToInterrupt(3), blinkA, LOW);  
 attachInterrupt(digitalPinToInterrupt(2), blinkB, LOW);  
 time = millis(); 
} 

void loop() 
{
przycisk(); 
if(nacisnieto==1){ 
 Serial.println("wcisnieto"); 
 nacisnieto=0; 
} 

 while (num != count) 
 { 
   num = count; 
   Serial.println(num); 
 } 
} 

void blinkA() 
{ 
 if ((millis() - time) > 3) 
       count ++; 
 time = millis(); 
} 

void blinkB() 
{ 
 if ((millis() - time) > 3)  
       count --; 
 time = millis(); 
} 
void przycisk(){ 
 if (digitalRead(18)==LOW){  
   if ((millis() - time) > 500){
       nacisnieto=1; 
time = millis(); 
  } 
 }
}

Sugestie??

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.