ArduinoMonitor – internetowy odczyt danych z czujników

ArduinoMonitor – internetowy odczyt danych z czujników

Aplikacja została przeniesiona na nowy serwer oraz został zmieniony/poprawiony sposób komunikacji z serwerem. Stworzona została biblioteka ArduinoMonitor.

Witam wszystkich majsterkowiczów. Chce się podzielić z Wami moim  projektem ArduinoMonitor. Jest to aplikacja internetowa która pozwala na odczyt danych z czujników podłączonych do Arduino z każdego miejsca za pomocą przeglądarki internetowej, dodatkowo pomiary są magazynowane w bazie danych i przedstawiane w postaci wykresów.

Dla kogo ?

Na stronie majsterkowo.pl można znaleźć dużo ciekawych artykułów przedstawiających od A do Z w jaki sposób odczytać dane przez internet z naszego Arduino. Jednak większość ma jedną wadę , wymagają serwera (np. Raspberry pi, Hostingu WWW) który będzie pośredniczył w przesyłaniu danych. W aplikacji internetowej ArduinoMonitor dane są przesyłane bezpośrednio z Arduino na serwer aplikacji, które możemy odczytać logując się na swojego konto.

Plusy
– Nie potrzebujemy Serwera.
– Dane można odczytać z każdego miejsca gdzie posiadamy dostęp do internetu.
– Dane z czujników przedstawiane są w postaci wykresów.
– Podgląd w czasie rzeczywistym statusu urządzenia (włączone, wyłączone) oraz danych z czujników(nie musimy odświeżać strony, jeżeli Arduino wyśle dane z czujników, to odświeżą się one automatycznie).
Minusy
– Cena, wymaga Arduino + Ethernet Shield lub inne urządzenia zgodne z bilblioteką Arduino Ethernet.
– Podgląd danych z czujników odbywa się w czasie rzeczywistym jednak dane do wykresów zapisywane są co 5 minut (tworzona jest średnia wszystkich pomiarów z ostatnich 5 minut).
– Możliwość podglądu danych z ostatnich 48 godzin (planuje wydłużenie tego czasu).

Co nam będzie potrzebne?
– Arduino Uno + Ethernet Shield
– Czujnik np. Czujnik temperatury DS18B20
– Płytka stykowa
– Przewody połączeniowe męsko-męskie do płytek stykowych
Dodatkowo jeżeli będziemy chcieli wytrawić podstawkę do czujnika DS18B20 będziemy potrzebować:
– Lutownicy
– Rezystor 4.7k SMD 1206
– Wszystkie narzędzia potrzebne do wytrawienia płytki metodą termotransferu, która została opisana przez użytkownika Kreator w artykule  Wytrawianie płytek PCB – Termotransfer

1. Rejestracja, dodanie urządzenia, dodanie czujnika 

Aby móc skorzystać z ArduinoMonitor-a musimy dokonać prostej rejestracji pod adresem http://www.arduinomonitor.com/#!/auth/register

Po dokonaniu rejestracji zostaniemy automatycznie zalogowani i będzie można przejść do zakładki Moje Urządzenia.
Jeżeli po rejestracji nie jest widoczny apiKey, należy odświeżyć stronę.
1

Dodajemy nasze urządzenie klikając przycisk “Dodaj urządzenie”, wpisujemy dowolną nazwę i klikamy “Dodaj”
2

 

Po dodaniu urządzenia, będziemy mogli dodać czujnik przez kliknięcie przycisku “Dodaj czujnik”

3

Wpisujemy nazwę czujnika i klikamy “Dodaj”
4

Po dodaniu czujnika ukaże nam się Panel w którym będziemy mogli monitorować nasze urządzenie.

5

 

2. Konfiguracja Arduino

Do podłączenia czujnika  DS18B20 możemy wykorzystując płytkę stykową lub wytrawioną podstawkę do czujnika:
Płytka stykowa
schemat_bb

Podstawka
Projekt w Eagle: DS18B20
Untitled Sketch 4_bb

sdasdasd

Kod Arduino

Wymagane biblioteki:

– ArduinoMonitor (Pobierz)
– Arduino JSON library https://github.com/bblanchon/ArduinoJson
– Arduino Library for Dallas Temperature ICs https://github.com/milesburton/Arduino-Temperature-Control-Library
– OneWire http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip

Biblioteki należy pobrać i wypakować do folderu C:\Users\[UserName]\Documents\Arduino\libraries

Biblioteki są zgodne z Arduino IDE 1.5 http://www.arduino.cc/en/Main/OldSoftwareReleases

W kodzie będziemy musieli podać nasz klucz (apiKey), identyfikator urządzenia (device) oraz czujnika (sensor)
api

Kod

Przykład działania:
8

Projekt cały czas jest testowany i rozwijany, jeżeli zauważy ktoś błędy w działaniu proszę o wiadomość na adres arduinomonitorcom@gmail.com


Ocena: 4.85/5 (głosów: 41)

Podobne posty

29 komentarzy do “ArduinoMonitor – internetowy odczyt danych z czujników

  • Widzę że daje to radę Kwesta jest taka że dajesz możliwość rejestracji innych użytkowników a powiedź mi zapis z sensorów jest do pliku czy mysql bo przy 100 użytkownikach podłączonych zacznie ci zwalniać wydajność serwera

    Odpowiedz
    • Baza danych to MongoDB, połączenie Arduino <-> Serwer obsługiwane jest przez Node.js + WebSocket który wysyła dane do bazy raz na 5 minut, natomiast cała strona została stworzona w frameworku MEAN.IO. Odczyt danych z czujników nie jest z bazy danych tylko dzięki Socket.IO, jeżeli użytkownik jest dostępny do dane są bezpośrednio do niego wysyłane. Jedynie odczyt danych do wykresów jest za pośrednictwem bazy danych, ale tutaj też pracuję nad optymalizacją aby użytkownik nie pobierał zbędnie co chwile tych samych danych.

      Odpowiedz
    • Dzięki za poparcie :)
      Aktualnie jestem w trakcie testów przesyłania danych bezpośrednio po TCP zamiast websocket(też wykorzystuje TCP). Nowe rozwiązania będzie wspierać nie tylko Ethernet Shield ale także ENC28J60, ESP8266 oraz każde inne urządzenie mogące przesyłać dane po TCP. Dlatego zastanawiam się nad zmianą nazwy.

      Odpowiedz
  • Witam
    Pytanie mam: zassałem najnowszą wersję Arduino 1.6.4 pod Windows 7, dodałem biblioteki z linków i kompilator zawiesza się na etapie kompilacji. Tzn pisze: “kompilowanie szkicu”, jest ikona klepsydry i nic więcej. Czy winę ponoszą biblioteki współpracujące tylko z wersją 1.0.6?

    Odpowiedz
    • Dobra. Ściągnąłem wersję 1.0.6 i się skompilowało. Zauważyłem natomiast problem. Zamieszczony kod na żywca wkleiłem do siebie, zarejestrowałem się na podanej stronce i zamieniłem ApiKey, Device i Sensor na moje. Ale mój sensor jest ciągle Offline i nie ma żadnego pomiaru.

      Odpowiedz
    • Ostatnia już rzecz, bo i tak brak odzewu…
      Sama aplikacja wydaje się być w porządku, bo mój monitor portu szeregowego pokazuje temperaturę, która delikatnie się zmienia [o parę setnych w górę i w dół]:) Natomiast ten sam monitor obwieszcza jednocześnie: “HTTP/1.1 400 Bad Request” – moja przeglądarka wywala błąd po ok. 2 minutach, a w programie jest przecież delay(3000). Wygląda na to, że “arduinomonitor.com:1338/” jest w tej chwili niedostępna:(

      Odpowiedz
      • Mam dokładnie to samo co kolega powyżej, strona przez jakiś czas w ogóle była niedostępna a teraz arduino nie może umieścić pomiarów na stronie www.

        Odpowiedz
  • Przepraszam wszystkich za problem z dostępnością strony ale nie potwierdziłem swojego adresu email podczas rejestracji domeny i została ona zablokowana. Skończyłem pracę nad poprawionym serwerem i biblioteką do Arduino. Ogólnie został zmieniony sposób komunikacji oraz zostały wprowadzone mechanizmy ponownego połączenia z serwerem w przypadku braku internetu. Dodatkowo serwer będzie wysyłał do urządzenia Arduino informacje o błędach np. jeżeli podamy zły klucz. Niestety wraz ze zmianą poprzednia metoda wysyłania danych na serwer przestanie działać. W najbliższym czasie postaram się przygotować także bibliotekę pod urządzenia ENC28J60, ESP8266.

    Odpowiedz
  • Cześć. Zastanawiam się nad wykonaniem podobnego projektu. Nie mam niestety Ethernet shielldu ale mam moduł wifi. Czy można przesyłać to przez moduł do rutera i dalej w sieć?

    Odpowiedz
    • Witam
      Jestem początkujący i mam problem z odpaleniem tego projektu u siebie.
      Mam problem z bibliotekami
      ArduinoMonitor – pobrałem z linku i wrzuciłem do library ale nie widzi jej
      ArduinoJson
      czy ktoś może udzielić jakiejś porady?

      Co to jest #include “SPI.h” i czy trzeba coś wykonać przy tym?

      Odpowiedz
  • Dzisiaj dopiero trafiłem na ten temat. Ale tłumaczenie autora że nie potrzeba serwera do dzaiłania tego pomiaru, w tym artykule to jakiś śmiech na sali wielki LOL ! Jak nie potrzeba, jak człowieku ty go udostępniasz użytkownikom, a raczej udostępniałeś, więc jak nie potrzeba ? A oni naiwnie uwieżyli że to będzie trwać wiecznie ha ha ha….. A teraz zmyłes się razem ze swoim śmiesznym serwerkiem i wszyscy tu lamentują. ogarnij się i na nastepny raz nie rób takich idiotycznych zagrań, bo żeby świadczyć komuś takie usługi 7/24 to trzeba sie mocno zastanowić wcześniej.

    Odpowiedz
  • Szczerze mówiąc bardziej interesowało by mnie aby odczyt nie odbywał się przez internet bo nie mam takiej potrzeby i nie chce się aż tak bardzo uzależniać od tego medium. Tak samo nie mogę znaleźć informacji jak zrobić odczyt z ESP8266 na wyświetlacz LCD przez arduino (nie przez internet). Wszystko co jest przykłady, dyskusje wszystko oparte przez net’a. Wiem że ESP8266 to IOT , a;e nie wierzę, że tylko tak się da…

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?