Raspberry Pi: Stacja pogodowa

Po raz pierwszy o tym projekcie wspomniałem już ponad rok temu. Niestety, za każdym razem czegoś mi brakowało, aby go dokładniej opisać. A to czasu, a to weny twórczej. Tym razem zebrałem się w sobie i proszę, projekt Raspberry Pi WeatherStation ujrzał wreszcie światło dzienne.

Schemat stacji pogodowej Raspberry Pi

Po pierwsze, stacja nie jest w pełni autonomicznym tworem. Samodzielnie zapisuje i przetwarza tylko temperature i wilgotność względą (z sensora DHT22) oraz ciśnienie atmosferyczne (z czujnik BMP180/BMP085). Reszta danych, takich jak zachmurzenie, wiatr, prognoza pogody jest pobierana z internetu, z serwisu OpenWeatherMap. Aby nie być pasożytem, stacja dzieli się swoimi danymi z tym samym serwisem. W ten sposób pieczemy dwie pieczenie na jednym ogniu: mamy pełne dane pogodowe o swojej lokalizacji i pomagamy innym.

Czytaj dalej

Arduino i Raspberry Pi: komunikacja RF, część I

Home Automation, Internet of Things, technologie ubieralne to modne hasła. Chyba każdy ze znaczących producentów elektroniki chce uszczkąć dla siebie kawałek tego szybko rosnącego tortu. A nam, konsumentom, pozostaje tylko szykować portfele.

W komfortowej sytuacji są osoby ze zmysłem technicznym, hakerzy, potrafiący połączyć dwie rzeczy tak, aby powstała trzecia. Arduino, Raspberry Pi, tania elektronika z Chin. Trochę główkowania, trochę testów, dużo zabawy i mamy nasze własne Internet of Things. Tym wpisem rozpoczynam krótki cykl na temat komunikacji bezprzewodowej pomiędzy mini-komputerami i nie tylko bez używania stosu TCP/IP, WiFi, Ethernetu i tym podobnych. W tym cyklu stawiamy na rozwiązania proste, może nawet prostackie, ale tanie i dające możliwość wykazania się własną pomysłowością.

Bohaterowie

Wszystkie wpisy w tym cyklu będą dotyczyły tanich modułów RF (nadajnik i odbiornik kosztują poniżej 10zł). W tym konkretnym przepadku pary FS1000A (nadajnik) i XY-MK-5V (odbiornik) pracujących w paśmie 433MHz.

FS1000A i XY-MK-5V

Są to ekstremalnie uproszczone nadajnik i odbiornik pracujące jednokierunkowo. To znaczy, z nadajnika możemy coś wysłać, a odbiornikiem odebrać, ale na odwrót już nie. Gdybyśmy chcieli mieć komunikację dwukierunkową, potrzebujemy dwóch nadajników i dwóch odbiorników.

Są to urządzenia tak proste, że zapewniają nam wyłącznie warstwę fizyczną transmisji. Brak kodowania, pakietów, korekty błędów, czegokolwiek. Na wejściu nadajnika pojawia się sygnał: nadawaj, nadajnik zaczyna nadawać sygnał piłokształtny, odbiornik go odbiera i na jego wyjściu pojawia się stan wysoki. Koniec i kropka. Aby przesłać jakiekolwiek informacje potrzebujemy bibliotek zapewniających całą resztę, ale o tym w kolejnej części cyklu.

Czytaj dalej

DIY: ATtiny85 timer dźwiękowy – Pomocnik Scrum Mastera

Najlepsze pomysły na projekty DIY pochodzą z życia. Mieliśmy w firmie drobny problem: nasze SCRUMowe daily meetings potrafiły trochę się przeciągać. Zamiast kilku minut trwały i kwadrans. Stoper? Jakoś tak nie pasuje do idei. Zamiast tego „na szybko” zbudowałem prosty timer pozwalający każdemu członkowi zespołu na powiedzenie co ma do powiedzenia w 40 sekund. Po tym czasie rozlega się sygnał dźwiękowy. Kolejny uczestnik wciska przycisk i jego czas jest liczony od początku.

Licznik ATTiny85

W pierwszej chwili chciałem użyć Arduino, ale to jak strzelanie z armaty do wróbla. Po co komu „potęga” ATmega 328 kiedy będę potrzebował góra dwóch wyjść cyfrowych. Z tego powodu wybór padł na rodzinę AVR ATtiny dużo lepiej dostosowaną do tak prostych zastosowań. Mój układ działa na ATtiny85, ale równie dobrze można użyć ATtiny45 lub ATtiny25. Różnią się tylko ilością pamięci EEPROM, a cały kod zajmuje około 1kB.

ATtiny 85 licznik czasu

Jak widać, schemat jest banalnie prosty a złożenie na płytce prototypowej zajmuje kilka minut. Lista elementów też krótka:

  • ATtiny85/45/25
  • przycisk
  • bateria (3V-5V)
  • opornik 220Om
  • opornik 1kOm
  • dioda LED
  • tranzystor BC547 lub podobny
  • brzęczyk

Gorzej wygląda sprawa z programowaniem. Rozwiązania są dwa: albo używamy specjalizowanego programatora, albo używamy Arduino. Tak tak popularne Arduino można użyć jako programatora dla innym mikrokontrolerów. Co więcej, można użyć oprogramowania Arduino i wykorzystać większość dostępnych bibliotek. Potrzeba będą tylko nowe core-files i trochę przewodów. Dość dobry tutorial znajduje się tutaj, ja tylko polecam użycie tych core-files. Jest z nimi mniej problemów i wygląda na to, że są po prostu lepsze (działa na nich VirtualWire, ale o tym może kiedy indziej).

Program jest na tyle prosty, że nie będę go dokładnie opisywał. Głównym założeniem jest niski pobór energii. Z tego powodu mikrokontroler jest głównie w stanie uśpienia, a którym cały układ pobiera zaledwie około 4 mikro Ampery.

Wbudowany watchdog wybudza układ co 2 sekundy i zapala na chwilę LED. Przy 20 wybudzenia (40 sekund) rozlega się seria dźwięków z buzzera, watchdog jest wyłączany i układ przechodzi w stan permanentnego uśpienia.

Przycisk w który wyposażony jest układ nie robi nic innego, jak reset mikrokontrolera i cała procedura rozpoczyna się od początku.

Pełny kod źródłowy dostępny jest na GitHubie.

Szacunek dla dużych rzeczy

W ostatni weekend zwiedziłem jedno z miejsc, które odwiedzić chciałem od dłuższego czasu. Głównie podczas jazdy samochodem autostradą A2 na wschód. Drogowskaz “Parowozownia Wolsztyn” w okolicy węzła Nowy Tomyśl za każdym razem przykuwał moją uwagą i wzbudzał chęć zjechania z wygodnej, choć zbyt drogiej, autostrady. Niestety, za każdym razem pragmatyzm zwyciężał: trzeba być gdzieś szybko, bo „coś tam”. Weekendowy wyjazd ze starszą córką na chrzciny córki szwagra stworzył okazję, którą trzeba było wykorzystać.

Parowozownia Wolsztyn

Czytaj dalej