Witam! Początkowo miałem nie pokazywać swojej konstrukcji gdyż uważałem, że tak naprawdę nie jest to nic odkrywczego w dobie stron Thingspeak czy podobnych, jednakże, uchyliłem rąbek tajemnicy na forum i widzę poparcie dla pomysłu
Ja natomiast postanowiłem stworzyć coś podobnego we własnym zakresie. Warunkiem było nie używanie żadnych zewnętrznych pośredników jak w/w strony.
Początek mojej zabawy z GSM to zakup modemu SIM900 w 2012 roku. Popracowałem nad nim, i tak odłożyłem do szuflady aż do grudnia 2016.
Następnie szybko postarałem się napisać prostą procedurę uruchamiania modemu + inicjalizacja połączenia GPRS i HTTP.
SPRZĘT:
Zastosowany sprzęt to:
*Zasilacz 3.3V od DVD
*Moduł GSM Simcom Sim900
*Karta Plus GSM
*ATMEGA32
*PCF8583 który trochę się marnuje w tym projekcie, ale już pozostał.
*DS18B20
*Oprogramowanie pisane w a jakże! popularnym Bascomie
Tak powstał taki oto moduł na codzień leżący na parapecie.
Najpierw po włączeniu oczywiście sprawdzany jest stan zalogowania modemu do sieci i wykrycia sieci. Gdy to jest, przechodzę dalej do sekwencji poniżej.
Układ jak posiada widać 5 diodek kontrolnych. Każda z nich opisuje po kolei stan logowania się do internetu i gdy któryś etap nie przejdzie, to dioda dalej się nie zaświeci.
Pierwsza od dołu to wybranie GPRS
Druga to wysłanie danych o APN
trzecia to uruchomienie GPRS
czwarta inicjalizacja HTTP
Piąta to sparametryzowanie HTTP
W dalszym etapie wywołuję co 5 minut funkcję wysyłania HTTP i potwierdzam wysłanie. Resetuję zmienną odliczającą czas, i cykl się powtarza.
Termometr GSM to nic innego jak zwykły terminal sieciowy który otwiera połączenie HTTP i na konkretnym adresie dodaje poprzez zapytanie GET stosowne dane do bazy danych. W moim przypadku jest to tylko temperatura. Czas i data są generowane po stronie serwera.
Początkowo godzina i data miały wychodzić w zapytaniu GET z mikroprocesora, ale szybko zdałem sobie sprawę, że to uciążliwe na dłuższą metę. To znaczy, muszę dbać ciągle o to, by PCF odliczał prawidłowy czas. Do tego dochodzi podtrzymanie bateryjne bądź SuperCap. Chciałem uniknąć tego. Nie miałem możliwości nastawy czasu ręcznie z braku LCD, nie chciałem również komplikować sprawy poprzez np. nastawianie czasu SMS bądź synchronizowanie czasu z siecią GSM. Stwierdziłem, że niech serwer "odwala robotę" za mnie i dopisuje czas serwera w momencie nadejścia zapytania i wpisania do bazy. Okazało się, że to dobre rozwiązanie przynajmniej w moim zastosowaniu.
SERWER:
Następnie przyszedł czas na wybór dobrego ale i darmowego hostingu z bazą MySQL i PHP. Praktycznie dziś, każdy serwis to oferuje. Jedynie pod znakiem zapytania pozostaje jakość oferowanej usługi. Czas dostępu do strony na przykład. Zdecydowałem się na serwer elektroda.eu gdyż jako jedyny ani razu mnie nie zawiódł a oferuje bardzo dobre parametry i to za całkowicie darmo
Gdy już miałem opanowane zapisywanie danych na serwer do bazy danych, i baza się uzupełniała a ja tylko wyświetlałem ostatni rekord na WWW. To było za mało jak dla mnie i zapragnąłem coś więcej, mianowicie przydał by się wykres jakiś pomyślałem. Fajnie by było zobaczyć jak temperatura skakała w nocy, i o której były mocne spadki.
Z pomocą przyszedł mi pakiet PHPLOT http://www.phplot.com/ który oferuje bardzo fajne możliwości w kwestii rysowania wykresów i ich konfiguracje. Czy to ma być liniowy, czy kołowy, słupkowy, praktycznie każdy element jest konfigurowalny.
Szybko poszukałem w internecie jak wyświetlić z bazy danych rekordy i przenieść je na wykres. Gdy się to udało, przyszła pora na dorobienie kolejnej ramki na stronie. Tym razem temperatura średnia, najwyższa, i najniższa. Wyliczenie tych 3 danych operuje tylko i wyłącznie na tych punktach które są widoczne na wykresie. Początkowo było liczone z całej bazy danych, ale szybko uznałem, że to bez sensu, bo po co mi wiedzieć, że kiedyś tam było -29°C, lepiej gdy wiem ile było najmniej w obecnym widocznym zakresie pomiarów.
Pomiary odbywają się co 5 minut, o ile Plus nie zawiedzie i czasem zdarzy się, że pakiet nie dojdzie, ale zdarza się to rzadko. Częściej brakuje pomiarów gdyż muszę na chwilę odłączyć sprzęt.
Co w przyszłości?
- Na pewno chciałbym bardziej dopracować sterowanie modemu. Teraz jest to trochę takie jak by wyciosane siekierką
- Na samej stronie WWW wprowadzić filtr zakresu danych. By sobie zobaczyć jak wyglądało to tydzień temu o tej i o tej godzinie.
- Zależało by mi na barometrze. Do tego dodać drugi wykres poniżej z danymi z ciśnienia.
- Dorobiłbym zasilanie bateryjne. Z braku akumulatorków 18650 chwilowo zawiesiłem ten etap.
Prędkość wiatru pominę, mieszkam w takim miejscu, że ciągle wieje u mnie na balkonie i za oknem, nawet jak jest cisza gdzie indziej.
Mam czasem jakiś problem co prawda z DNSami na serwerze, i muszę wchodzić na niego po IP http://91.237.69.70/~program/ ale generalnie działa strona w moim podpisie.
Podsumowując:
Układ spełnia moje oczekiwania. Działa nie przerwanie od 12 grudnia i mam w bazie już ponad 10 tysięcy pomiarów. Często sprawdzam po nocy sobie jak wyglądały spadki. Najczęściej są one w godzinach między 3 a 5 wtedy temperatura dobija najniżej, potem wzrasta lekko i się utrzymuje.
Jestem zadowolony z urządzenia, mimo wszystko mocno nawiązuje do świata IOT jak to stwierdziła pewna osoba na elektrodzie
Gdy będziecie mieli jakieś pytania - piszcie śmiało. Co umiem to odpowiem oczywiście
Pozdrawiam Łukasz
Fajne? Ranking DIY