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

Opublikuj swój projekt i odbierz 50% rabatu do wykorzystania w sklepie Nettigo.pl

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)
Nettigo - patron działu Elektronika

Podobne posty

Regulator PID na arduino.

Regulator PID na arduino.

Witam wszystkich majsterkowiczów! Chciałbym przedstawić wam moje nagranie dotyczące realizacji regulatora PID przy użyciu arduino.Regulatory…

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

Prosty internetowy czujnik temperatury za pomocą Arduino i ThingSpeak

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?