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ę.
Dodajemy nasze urządzenie klikając przycisk “Dodaj urządzenie”, wpisujemy dowolną nazwę i klikamy “Dodaj”
Po dodaniu urządzenia, będziemy mogli dodać czujnik przez kliknięcie przycisku “Dodaj czujnik”
Wpisujemy nazwę czujnika i klikamy “Dodaj”
Po dodaniu czujnika ukaże nam się Panel w którym będziemy mogli monitorować nasze urządzenie.
2. Konfiguracja Arduino
Do podłączenia czujnika DS18B20 możemy wykorzystując płytkę stykową lub wytrawioną podstawkę do czujnika:
Płytka stykowa
Podstawka
Projekt w Eagle: DS18B20
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)
Kod
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#include <Ethernet.h> #include "SPI.h" #include <ArduinoJson.h> #include <ArduinoMonitor.h> #include <OneWire.h> #include <DallasTemperature.h> //DS18B20 #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature TemperatureSensors(&oneWire); byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xAD }; ArduinoMonitor client; void dataArrived(char *data) { Serial.println(data); } void setup() { Serial.begin(9600); Ethernet.begin(mac); delay(1000); client.setDataArrivedDelegate(dataArrived); client.connect("arduinomonitor.com", 1338); client.apiKey("9aebe70414db8ea1522676ac252bff22"); //ApiKey client.device("554b9a7f169c7c674c3ac8g5"); //Identyfikator urządzenia (device) TemperatureSensors.begin(); delay(2000); } void loop() { //Jeden cykl pętli loop nie może przekraczać 30sekund !!!!!!!! client.monitor(); TemperatureSensors.requestTemperatures(); //Dodawanie czujnika: //client.sensor(sensor, data); //przykład: client.sensor("554b9ab9185599664c826e2c", TemperatureSensors.getTempCByIndex(0)); client.send(); delay(5000); } |
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
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
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.
Cześć, biblioteka JSON z tego linku co podałeś obsługuje inne polecenia (+sama jej nazwa jest inna: json_arduino.h”) więc z nią ten kod nie działa.
Odpowiednia biblioteka jest np. tutaj.
https://github.com/bblanchon/ArduinoJson
Masz rację, mój błąd. Link został zmieniony na poprawny.
Mnie przekonuje tutaj m.in. brak potrzeby serwera.
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.
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?
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.
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:(
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.
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.
Hej, i jak opracowałeś już może bibliotekę pod ENC28J60?
PS Naprawdę fajna stronka :D
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ć?
U mnie to nie działa nie wiem co źle robię ale cały czas mam offline :(
Czy projekt może wspierać większa ilość czujników ds18b20 podłączonych do jednego arduino?
Czy zamiast ethernet shield mogę użyć ENC28J60?
Zamiast ethernet shield można użyć ESP8266?
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?
Pięknie działa , była by możliwość dodania ośmiu czujników bo na razie widzę że można tylko trzy.
Witam i pytam co się dzieje ze stronką Arduinomonitor.com.
Piotr.
Czy ktoś tu żyje?
Ja tak ale mam problem ze odpaleniem tego projektu.
Jesteś mi coś w stanie pomóc w tej kwestii?
Jaki masz problem? Pisz pzgd@poczta.onet.pl
Największym problemem jest to że ta strona już nie działa.
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.
Jak można stworzyć stronę i udostępniając ją i naraz ją wyłączyć bez żadnej informacji, może własciciel odezwał by się.
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…
Strona arduinomonitor.com jest już nieaktywna. Czy jest jakiś jej odpowiednik?
Czy jest jakis odpowiednik????
Projekt niestety umarł, a autor przestał się tu udzielać. Ale niech projekt zostanie na majsterkowo.pl. Kody programów mogą posłużyć jako przykłady.