Prosty internetowy czujnik temperatury za pomocą Arduino i ThingSpeak

Prosty internetowy czujnik temperatury za pomocą Arduino i ThingSpeak

Witam wszystkich, przedstawię wam dzisiaj jak zrobić prosty czujnik temperatury, dzięki któremu będziemy mogli sprawdzić aktualną temperaturę w naszym pokoju z każdego miejsca na świecie gdzie jest internet :)

W mojej wersji pokażę podłączenie tylko jednego czujnika, ale oczywiście może to być kilka czujników np. temperatury, wilgotności, ciśnienia itp.

 

Co nam będzie potrzebne?

Arduino, w moim przypadku Leonardo

Moduł sieciowy ENC28J60

Czujnik temperatury DS18b20

Przewody połączeniowe

Od czego zacząć?

Na początku trzeba złożyć nasz prosty układ (jak zwykle brzydko mi to wyszło):

123

6

 

Konto w ThingSpeak

 

Po podłączeniu naszego układu należy założyć konto w serwisie ThingSpeak.

Po wejściu na stronę klikamy na przycisk “Get Started Now”:

 

1

 

Następnie uzupełniamy dane do naszego konta:

 

2

 

Po utworzeniu konta i aktywacji e-mail klikamy na przycisk “New Channel”:

 

3

 

Wpisujemy nazwę naszego kanału i nazwę wykresu, a następnie klikamy na przycisk “Save Channel”:

 

4

 

Potem wystarczy przejść do zakładki “API Keys” i skopiować nasz klucz:

 

5

 

Tutaj mamy już wszystko gotowe, została nam część Arduino.

Wgrywamy kod do Arduino

 

W kodzie wystarczy wpisać wcześniej skopiowany API KEY w odpowiednie miejsce i wszystko gotowe:

 

 

Tutaj możecie zobaczyć dane, które wysyłałem przez kilkanaście minut :)

Zakończenie

Jeśli wszystko działa, to możemy dodać więcej czujników itp. Jeśli się wam spodoba, to mogę zrobić wersję z innymi czujnikami :)

 

Myślę, że poradnik jest krótki, ale każdemu się przyda, bo bardzo długo szukałem jak to zrobić :D

Ocena: 4.28/5 (głosów: 64)

Podobne posty

53 komentarzy do “Prosty internetowy czujnik temperatury za pomocą Arduino i ThingSpeak

      • Ja mam gorącą prośbę o pomoc nie mogę sobie poradzić coś mi nie chce działać ;/ wogóle to mojego andurino nie widać w sieci, ;/ to pierwszy problem, A ogólnie to szukam gotowego programu dla odczytu bezpośrednio z web na andurino pomiarów temperatury. do 8 czujników cyfrowych, tak abym mógł z komórki podejrzeć sobie. było by super gdyby szło ustawić alarmy górnych i dolnych granic temperatur. np. na maila

        Odpowiedz
  • Wszystko fajnie pięknie, ale niech ktoś opiszę taką samą akcję, ale bez użycia serwisu ThingSpeak, a przy wykorzystaniu skryptów PHP i własnego serwera
    Ja osobiście wolę się uniezależnić od jakiejś strony, która może za rok czy 5 lat zniknąć z sieci i cały mój wysiłek pójdzie na marne

    Odpowiedz
  • Fajnie że wziąłeś gotowy kod i wklepałeś swoje dane… I dodatkowo go nie wyjaśniłeś.

    BTW to ostatnio był artykuł o module ESP8266 i thingspeak tak jak kolega wyżej napisał lepiej jest to zrobić na własnym serwerze bo co chmura padnie i koniec…

    Odpowiedz
    • W sumie nie ma za bardzo co tłumaczyć w kodzie, bo 1 część służy do łączenia się i wysyłania danych i tutaj nie ma co zmieniać poza API keyem, a reszta obsługuje termometr :)

      A co do własnego serwera, też nie ma co opisywać, bo już jest tutaj taki artykuł :D

      Odpowiedz
    • Tak na prawde to maly problem to przeportowac na dowolny wlasny serwer.
      Wystaczy wystawic jeden servlet, ktory oczekuje 2-ch parametrow:
      – key
      – field1
      Jeżeli key nie jest wartoscia przez nas zdefiniowana – zwroc blad
      Field1 – to jest temparatura
      I teraz jezeli key sie zgadza to wrzucic wartosc Field1 (i sysdate) do jakiejs bazy danych

      5 min roboty w PHP

      Odpowiedz
      • a – bym zapomnial – jak wysatwimy taki serwisik, to jedyne co w kodzie podanym wyzej trzeba bedzie zmienic to adres serwisu, ktory jest wykorzystywany – zmiana linii 23 i dziala ;)

        Odpowiedz
  • Mi chodzi po głowie projekt w którym poprzez Arduino zbieram pomiary z czujników i przesyłam po sieci do serwera postawionego na SynologyNas gdzie można założyć serwer www i zbierać dane do MySQL.

    NAS nie jest włączony cały czas i dlatego chciałbym zbierać dane na SD a w momencie kiedy www zacznie odpytywać to niech pobierze dane z SD.

    Czy jest możliwe skorzystanie z zasobów Arduino na SD odpytując się zewnętrznym hostem po RJ? Pytanie – chaos, ale jestem na etapie koncepcji i zaczynam dopiero układać to w całość.

    Pozdrawiam,
    Gumers

    Odpowiedz
  • https://thingspeak.com/channels/31146

    w kolejce do podpięcia leży mq135 i GP2Y1010AU0F (dzisiaj dotarł). Z MQ135 da się wyznaczyć charakterystyki NOx i CO2 etc. Trochę liczenia i da się wyłuskać dane. Niby jest biblioteka dla ardunio ale słaba i trzeba będzie samemu się pobawić w obliczenia. W dodatku uruchomienie czujnika to 24 wypalenia dla poprawnej kalibracji.

    Już z tego co jest da się policzyć punkt rosy, a potem wysokość podstawy chmur. Podoba mi się, że API thingspeak nie daje żadnych ograniczeń. Trochę podstaw programowania i można zrobić co tylko się zamarzy. Tak samo jak thingspeak pozwala wykonać określone działania po przekroczeniu pewnych poziomów z czujników.

    BTW: Esp8266 z API 1.0 działa już bez zwisów od tygodnia, pewnie nowe 1.0.1 jest jeszcze stabilniejsze, bo w changelogu jest sporo drobnych poprawek.

    Czy ktoś z was wie gdzie dostać MICS-4514? I inne sensory z SGX Sensortech.

    Odpowiedz
  • Dobra.
    Zrobiłem takie coś http://pastebin.com/cWmLhFEV, ale i tak coś nie działa. Nie wiem dlaczego. Mam adapter ethernet Enc28j60. On jest podłączony ro routera. Ale router jest podpięty do anteny radiowej i to ona daje DHCP. Wszystkie urządzenia bez problemu sobie pobierają adres ip.

    Odpowiedz
  • Dobra…
    A teraz konkrety: Powiedz mi drogi Autorze na jakim Arduino IDE to wgrywałeś oraz poproszę o bibliotekę, której używałeś do kompilowanie tego kodu
    Bo ni chu chu nie chce się ona kompilować prawidłowo:
    “webClient.ino: In function ‘void loop()’:
    webClient:56: error: invalid conversion from ‘const char‘ to ‘prog_char
    webClient:56: error: initializing argument 3 of ‘static void EtherCard::browseUrl(prog_char, const char, prog_char, void ()(uint8_t, uint16_t, uint16_t))'”

    Odpowiedz
  • Jak długi i czy jeszcze w ogóle działa ten projekcik? Ja miałem problem z zawieszaniem się modułu ethernetu (program działał) – przestał się komunikować, odpowiadać na pingi. Dopiero reset pomagał…

    OFFTOP: Nie dawno robiłem coś podobnego, tylko mierzyłem temperaturę, wilgotność oraz obecność prądu w gniazdku. Do tego miałem swój własny serwer z napisaną aplikacją PHP we frameworku PHP oraz serwer smsowy, pozwalający na wysyłanie powiadomień sms z telefonu (dodatkowo gdy ktoś podeśle sms o treści raportuj na numer telefonu, to dostanie raport w odpowiedzi). Byłby ktoś zainteresowany takim artykulikiem? :) Mogę opisać. Tylko będzie wymagał od użytkowników co najmniej średniego zaawansowania w programowanie PHP.

    Odpowiedz
  • Jak można dodać kolejny czujnik do tego sketcha ?
    Bo z moich prób wynikło tyle że tylko jeden z nich wysyłał dane, albo jeden albo drugi.

    Odpowiedz
  • english comment,, I am slovak

    I change code and added suport for more than one sensor
    you need to add your API KEY, address for ds18b20, use 1-wire finder sketch

    in sketch are 2 sensor
    add other address, field and add others lines


    this was added
    DeviceAddress Thermometer = { 0x28, 0x5C, 0x46, 0xB4, 0x01, 0x00, 0x00, 0x0C };
    DeviceAddress Thermometer1 = { 0x28, 0xFF, 0xE2, 0x44, 0x31, 0x04, 0x00, 0xB1 };

    float aThermometer = sensors.getTempC(Thermometer);
    float aThermometer1 = sensors.getTempC(Thermometer1);

    stash.print(“field1=”);
    stash.println(aThermometer);
    stash.print(“&field2=”);
    stash.println(aThermometer1);


    here is download

    Odpowiedz
  • arduino 2x 1-wire bus 4x ds18b20 thingspeak.txt
    arduino 2x 1-wire bus 4x ds18b20.txt
    arduino onewire 4x ds18b20 with address.txt
    OneWireAddresssFinder.ino
    web_tepl_thingspeak 2 sensors.ino

    5x sketch

    send temperatures to thingspeak::
    2x 1-wire bus, 2x ds18b20 pin7 and 2x ds18b20 pin6
    1x 1-wire bus on pin7 and 2x ds18b20


    only temperature in terminal::
    2x 1-wire bus, 2x ds18b20 pin7 and 2x ds18b20 pin6
    1-wire pin7, 4x ds18b20

    3 sensors on 3 floors in house and 1 sensor is out

    you download and change code
    http://uloz.to/xKf7nTPK/arduino-thingspeak-enc28j60-multiple-sensors-zip

    Odpowiedz
  • Hej, czy do tego projekto można użyć arduino nano + ENC28J60 + 6 sensorów DS18b20?

    Z tego co wyczytałem może być problem z zasileniem eth?

    Możesz mi pomóc zbudować coś takiego na arduino nano + ENC28J60 + 6 sensorach. Pozdrawiam i dziękuję

    Odpowiedz
  • Złożyłem wg opisu. Na monitorze portu temperatura wyświetlana jest prawidłowo, ale na Thingspeak wartości rzędu 4,5,8,9 ?
    Użyłem DS18B20, taki jest na schemacie, ale w kodzie pojawia się DS18S20. To nie ma znaczenia? Może jakieś inne wartości MSB. LSB?

    Odpowiedz
  • Czołem
    W trudzie z znoju raczkującego w temacie poskładałem to z użyciem klona ArduinoNANOv3.
    I niby działa ale są problemy opisane w dwóch powyższych postach. W monitorze portu i na doklejonym LCD pokazuje prawidłową temp. Na TS wykres jest poniżej 10*C a przy exporcie danych krzaki jak u kolegi kapik.
    Czy ma wpływ wydajność zasilania? Bo początkowo przy zasilaniu z USB były kłopoty z łącznością z TS, teraz po przejściu na ładowarkę jest lepiej, ale może jeszcze mało?
    P.S, Odpięcie LCD nie poprawia sytuacji
    P.S.2 A może to kwestia ustawień w TS???

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?