Skocz do zawartości

Pierwszy w życiu :) - zabawa ze stacją pogody


Pomocna odpowiedź

Pierwszy raz próbuję zrobić coś, co połączy fizyczne urządzenie i jego programową obsługę. Wymyśliłem sobie coś, co jest dość popularne, ale - oczywiście - w swojej modyfikacji: stację pogody.

Całość opieram na Raspberry Pi Zero i czujniku BME280 produkcji Waveshare (https://botland.com.pl/czujniki-multifunkcyjne/13463-bme280-czujnik-wilgotnosci-temperatury-oraz-cisnienia-i2cspi-33v5v-waveshare-15231.html) i Pythonie (wybory mają swoje uzasadnienie). Komunikację z czujnikiem zrealizowałem na poziomie podstawowym, zatem mogę myśleć o kolejnych krokach i stąd pozwoliłem sobie założyć temat "na pytania". Na razie mam dwa. O sprzęt i o programowanie.

1. Czujnik i Malina będą na zadaszonym tarasie. Przyczepione do słupa, który jest przy ścianie, od północnej strony. Nie będą wystawione na deszcz (zasadniczo) i na bezpośrednie słońce (może słabe, po 17). Wszystko zamierzam umieścić w drewnianym, ponawiercanym pudełeczku, a czujnik za ażurową osłonką. Czy elektronikę należy w jakiś sposób zabezpieczyć dodatkowo? Czytałem o różnych sprejach i żelach na elektronikę na zewnątrz.

2. W jaki sposób w Pythonie można osiągnąć wykonanie instrukcji o każdej pełnej godzinie? O ile godzinowe odstępy można uzyskać nawet prostym time.sleep() (pomijam czas na wykonanie instrukcji, ale to do sprawdzenia), to nie wiem, jak efektywnie rozpocząć odliczanie od równej godziny. Są jakieś miłe biblioteki do tego, czy trzeba warunkami na zasadzie minuty równe zero i sekundy równe zero czy jeszcze jakoś inaczej?

Edytowano przez Leander
Link do komentarza
Share on other sites

Z czego to będzie zasilane? Nie zrozum mnie źle ale malinka do obsługi jednego tylko czujnika to jakby strzelać z armaty do muchy. Co do pytań o elektronikę uważam że jeśli nie będzie na to bezpośrednio lało to zwykła obudowa powinna wystarczyć, nie wiem jak tam sprawy chłodzenia tego komputerka?

Link do komentarza
Share on other sites

2 godziny temu, Leander napisał:

W jaki sposób w Pythonie można osiągnąć wykonanie instrukcji o każdej pełnej godzinie?

Poczytaj o takim czymś jak cron:

man 5 crontab

Przykładowy plik:
 

MAILTO=""
@hourly /usr/bin/python /home/pi/program.py

 

  • Pomogłeś! 1
Link do komentarza
Share on other sites

38 minut temu, _LM_ napisał:

Z czego to będzie zasilane? Nie zrozum mnie źle ale malinka do obsługi jednego tylko czujnika to jakby strzelać z armaty do muchy. Co do pytań o elektronikę uważam że jeśli nie będzie na to bezpośrednio lało to zwykła obudowa powinna wystarczyć, nie wiem jak tam sprawy chłodzenia tego komputerka?

Tak, masz rację - trochę tak jest. Początkowo miałem pomysł, żeby umieścić to na ganku z wyprowadzeniem czujnika za okno i wtedy do maliny byłby dołożony e-papier, jako wyświetlacz różnych rzeczy. Nie chcę jednak zbytnio przewiercać się przez futrynę, stąd pomysł postawienia czujnika i komputera na dworze. Pytanie, czy z ekranem. A na ganku ekran wyświetlający dane trzymane gdzieś w sieci (to taki luźny pomysł na kiedyś).

Jakie rozwiązanie sprzętowe byś proponował do jednego czujnika? Co do zasilania - gniazdko jest w pobliżu :), więc bezpośrednio z sieci mogę. Mogę też dołożyć czujnik stężenia pyłów, żeby coś więcej sczytywać.

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

36 minut temu, Leander napisał:

Jakie rozwiązanie sprzętowe byś proponował do jednego czujnika?

ESP z zasilaniem bateryjnym. Da się ogarnąć pobór prądu w stanie spoczynku na poziomie 15µA. Działam teraz nad takim projektem. 

 

48 minut temu, Leander napisał:

Mogę też dołożyć czujnik stężenia pyłów, żeby coś więcej sczytywać.

No te to już więcej prądu potrzebują wtedy byłoby uzasadnione użycie zasilacza bądź akumulatorków

Link do komentarza
Share on other sites

Dnia 1.04.2021 o 20:03, ethanak napisał:

Poczytaj o takim czymś jak cron:

Poczytałem. Dziękuję. Przydatna rzecz. Łatwo się zorientować, że ekspertem linuxa nie jestem ;). W miarę ogarniam, ale wolałbym coś, co nie wymaga grzebania bezpośrednio w systemie. Co prawda doszedłem jak to wywołać z pythona (czyli wewnątrz programu odwołać się do tabeli crona), ale znalazłem rozwiązanie, które odpowiada temu, co miałem na myśli i co obecnie wydaje mi się znacznie prostsze na tym etapie wiedzy, na którym jestem. Biblioteka schedule się to zwie (https://github.com/dbader/schedule)

Link do komentarza
Share on other sites

1 minutę temu, Leander napisał:

Co prawda doszedłem jak to wywołać z pythona (czyli wewnątrz programu odwołać się do tabeli crona),

Ale po co?

Po prostu z crona wywołujesz co godzinę program, który robi swoje i się kończy. To chyba najprostsze co może być...

Link do komentarza
Share on other sites

(edytowany)

Tak, rozumiem. Ale chciałem też "od drugiej strony". Masz rację, że to proste podejście. Wydaje mi się (może się mylę), że w sytuacji, gdy mam różne zadania w ramach jednego pomysłu (np. co kwadrans odczytaj dane, wrzuć do tabeli, co godzinę policz z nich średnią, a co 24 godziny o 15 wyświetl wykres), fajniej byłoby to zrobić w jednym programie, a nie trzema zadaniami systemowymi. Czy się mylę? 🙂 

Edytowano przez Leander
Link do komentarza
Share on other sites

Właśnie łatwiej jest zrobić trzy programy z których każdy robi jedną, ściśle określoną czynność (i to tylko raz) niż jeden "do wszystkiego". A wspólne kody załatwiasz importując do każdego z nich jeden kod.

Poza tym odpada konieczność sprawdzania czy program się przypadkiem nie wyłożył (pokaż mi bezbłędny program), ewentualnych restartów i tak dalej, jakichś wycieków pamięci i ogólnie całej zabawy z utrzymaniem programu w ruchu przez cały czas (która to zabawa wcale taka zabawna nie jest).

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

Cześć, ja swoją stację pogodową zrobiłem na esp8266 i działa doskonale (mogę podrzucić obszerną dokumentację). Zawsze możesz sobie na nim postawić prostą stronę i dane wyrzucić na zewnątrz 😉 Tanio, prosto i łatwo. Innym tanim, rozwiązaniem są np. dwa Arduino Nano plus nRF24L01. Jeden robi za slave za oknem i zbiera danie, przesyła je do mastera w domku który wyświetla Ci to na np. OLED 1,3 cala i to może działać na baterii długi czas.

Co do zarządzania tak jak napisali powyżej to cron, prosto jasno i bezproblemowo. Tworzysz kilka prosty skryptów i odpalasz je o określonej godzinie. Jednak jak byś się upierał przy samym Pythonie, to jeśli dobrze rozumiem Twój problem, to wystarczy przecież pobrać i przeliczać currenttime. Jednak zdecydowanie, zwłaszcza jeśli robisz to pod linuxem, lepiej użyć kilku skryptów odpalanych o określonych porach. To zawsze działa. Co więcej możesz napisać skrypt który sprawdzi czy odczyty są prawidłowe i czy się wykonały, jeśli nie to np. powiadomić siebie mailem.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dnia 6.05.2021 o 07:02, Shary napisał:

Co do zarządzania tak jak napisali powyżej to cron, prosto jasno i bezproblemowo

Tak. Już się do niego przekonałem. Na razie różne pomysły mi po głowie chodzą, różne rzeczy sobie wymyślam. Pewnie takie rozwiązanie, o jakim mówisz (slave - master), będzie u mnie w sam raz, ale myślę też, czy nie zrobić jakiejś wersji typu smogomierz (lub podobny projekt) na zewnątrz, a w domu wyświetlacz z różnymi funkcjami.

Link do komentarza
Share on other sites

(edytowany)

Żeby nie zakładać nowego tematu, bo zagadnienie zbliżone.

BME280 pracował sobie różnie, sprawdzałem, co mogę, a teraz chciałbym nieco inaczej, czyli jako źródło danych do swoich potrzeb wykorzystać projekt smogomierz.

Całość złożyłem (na razie na biurku) z gotowego zestawu z Botlandu. Gdyby ktoś pytał o konkretne podzespoły: tu jest.

Oprogramowanie wgrałem, ale tu pojawiła się wątpliwość. Mając ESP8266, czujnik cząstek PMS oraz czujnik temperatury BME280 wgrałem plik 

ESP8266_Smogomierz_2.8.1_PMS-SparkFunBME280_build_27.11.2021.bin Innego z PMS i BME nie było, choć to BME nie jest SparkFun. Czy ma to jakieś znaczenie?

Po uruchomieniu itd. dostaję tylko wyniki z czujnika pyłu, a z BME nie. W oknie konfiguracji mam ustawione BME280 i wtedy panel przeglądarkowy podaje pusty ciąg dla temperatury. Gdy zmienię czujnik na SparkFun - podaje też wilgotność i ciśnienie, ale również tylko puste wartości.

PIN-y podpięte są następująco (i tak ustawione w konfiguracji): SLC - D4, SDA - D3, pozostałe (poza zasilaniem i masą) niepodpięte. Jakaś podpowiedź, gdzie szukać rozwiązania?

(zaraz sprawdzę jeszcze stary czujnik, może ten nowy jest uszkodzony?)

[dodane]

Czujnik BME280 od Waveshare działa. Później spróbuję z czymś innym sprawdzić ten czujnik z zestawu. Może jest uszkodzony, a może jakiś konkretny model / konkretna wersja ma problem życiowy.

Edytowano przez Leander
Link do komentarza
Share on other sites

Czujnik z zestawu podpiąłem do Pi Zero. Wcześniej z tym czujnikiem miałem mały programik wykorzystujący bibliotekę RPi.BME280 i bez problemu czytałem parametry. Teraz dostałem błędy komunikacji z urządzeniem (ach, no wiem - nie zapisałem konkretów, przepraszam). Czy możliwe są aż takie różnice w modelach tego samego czujnika, czy raczej jakieś uszkodzenie? Ten problematyczny to taka sztuka, a ten, który działa jest tu.

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

Może ktoś ma doświadczenie ze Smogomierzem. Właściwie codziennie się rozłącza. Zasięg wifi jest dobry, Smogomierz w panelu podaje zwykle 50-80% siły sygnału. Zaników zasilania też nie ma, żeby się resetował. Niespecjalnie mam pomysł, jaki jest powód i jak to rozwiązać.

  • Lubię! 1
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.