All about Arduino // ESP8266 // Raspberry Pi

Discussion in 'Generalna diskusija' started by black, Aug 11, 2015.

  1. black

    black Komšija

    Odavno me privlacio Arduino i nakon jednog nesretnog slucaja ( obijena mi je alatnica i ukradeno robe za nekoliko stotina maraka ) odlucio sam napraviti alarm baziran na arduinu. Imam 3 senzora i sirenu za sad. Kad sam to zavrsio imao sam viska jos jedan arduino. Surfanjem otkrio sam da dosta raje pravi svoje meteo stanice sa arduinom. Na prvi pogledmi se tesko cinilo programiranje ovih mikrokontrolera ali vrenemom mi se dopalo pa sam narucio raznih senzora i dodataka iz Kine. Ako je neko zainteresovan mogu poslat link pouzdanom trgovca sa eBaya.

    Trenutno stanje projekta je da sve senzore ocitavam bez problema ali samo na serial portu. Izazov mi je podatke slati na thingspeak ili data.sparkfun . Pokusao sam sa jeftinim wifi modulom ESP8266 (3$). Na prvi pogled ekstra ali trazi 3.3v i pravi ttl to usb konverter nazalost ne moze se arduino iskoristi za tu svrhu. Uspio sam se spojiti na svoj wifi ali spojiti se na udaljeni server nikako. Slucajno sam spojio modul na 5v i izgorio je uz bijeli dim :D
    Odustao od tih modula i sad cekam Ethernet shield za arduino.U alatnicu sam montirao jedan stari router na kojem je openwrt. Uz pomoc PoE adaptera napajat cu stanicu sa 12v iz routera koji sad sluzi kao wifi bridge i repeater. Imam jos par projekata oko arduina pa ako nekog zanima mogu postat. Evo par slika a uskoro nastavak slijedi.

    [​IMG]
    [​IMG]
    [​IMG]

    Evo popis dijelova do sad:
    Arduino Uno R3 4$
    BMP180 1.5$ - pritisak atmosferski
    BH1750 1.5$ - svjetlost u lux
    DHT22 3$ - temperatura i vlaznost
    W5100 Ethernet shield 6.5$
     
  2. Stihoklepac

    Stihoklepac Moderator

    Re: DIY: Meteo stanica

    Nedavno sam naletio na neki comunity u njemackoj a imaju i u hr dosta clanova, sa arduinom prave senzore za grmljavinu.

    Npr tcom se kaci na tu mrezu i pronalazi geografski gdje mogu imati problem sa grmljavinom.

    Neznam jesi li probao spojiti senzor pokreta ( nekako mi to ima logike za protuprovalni sistem)
     
  3. Esh

    Esh HWB

    Re: DIY: Meteo stanica

    Super stvar, i ja se malo igram sa RP2, doduše još uvijek na nekim template projektima sa Win10, ali za igranje - super :)

    Kako izgledaju podaci koje šalješ?
     
  4. black

    black Komšija

    Re: DIY: Meteo stanica

    Jos ne saljem nista jer cekam shield da stigne iz Kine. Mislio sam slati podatke na data.sparkfun.com a onda na stranici analog.io praviti grafove.

    Prikacit cu sliku serial outputa ispod.

    Protuprovalna sam napravio dva sistema. Jedan jednostavni samo upalis struju i nakon 40s aktivira se. Drugi je malo slozeniji i koristi RFID tagove ali ga nisam jos instalirao u kucu.
    [​IMG]
     
  5. radozw

    radozw Novi član

    Re: DIY: Meteo stanica

    Sto se tice emitovanja na things speak imam sketch koji radi za DB18S20 i DHT11. Ja sam nov ovde pa mi recite kako da uploadujem sketch. Mogu i da ga posaljem na email. Moj email je moje user name at gmail.com
     
  6. radozw

    radozw Novi član

    Re: DIY: Meteo stanica

    Sto se tice koriscenja BMP180 za pritisak nisam probao ali sketch koji radi sa ESP8266 je uploadovao Danijel Pticar iz Zagreba na https://sites.google.com/site/pticar/mcu. Ja sam ga skinuo i kompajlira se za ESP. Nisam ga jos probao.
     
  7. black

    black Komšija

    Re: DIY: Meteo stanica

    Sprzio sam jedan ESP8266 a drugi nesto i nece da radi. Imam kuci ethernet shield i router u bridge modu tako da mi to vise ne treba.
    Svakako hvala druze , nadam se da cu ubrzo zavrsiti ovaj projekat pa cu postati rezultat sa linkom :)
     
  8. radozw

    radozw Novi član

    Re: DIY: Meteo stanica

    To kad nece da radi obicno je hladan lem negde. Prelemi mozda proradi. Ja sprzio 2 :). Zainteresovan sam kako si resio alarm - onaj na 40 sekundi.
     
  9. black

    black Komšija

    Re: DIY: Meteo stanica

    Pa ja sam ovako rijesio.
    Imam relay koji ako nije spojen sa arduino onda je upaljen. Kad tek upalim "alatm" na sekundu se cuje sirena dok se arduino ne pokrene.Arduino Nano ima svoj 5V USB adapter a sirena ima ciglu od 12V.Ova dva kruga su potpuno izolirana jer je bilo nekih smetnjih ako koristim 12V i na arduinu.Vjerovatno je 5v regulator na arduino bio preslab da napaja senzore i relay.

    void setup
    pinMode(sirena, OUTPUT);
    digitalWrite(sirena, LOW);
    delay(20000);
    digitalWrite(sirena, HIGH);
    delay(1000);
    digitalWrite(sirena, LOW);
    delay(1000);
    digitalWrite(sirena, HIGH);
    delay(1000);
    digitalWrite(sirena, LOW);
    delay(20000);

    void loop

    digitalWrite(sirena, LOW);

    if (digitalRead(pir1) == HIGH) {
    digitalWrite(sirena, HIGH);
    delay(300000);
    }

    if (digitalRead(pir2) == HIGH) {
    digitalWrite(sirena, HIGH);
    delay(300000);
    }

    if (digitalRead(pir3) == HIGH) {
    digitalWrite(sirena, HIGH);
    delay(300000);
    }

    Ovo sam na telefonu otipkao pa ima vjerovatno gresaka ali eto princip. Mozes for loop i array koristi ali za ovako jednostavnu namjenu nije bilo potrebe.
     
  10. radozw

    radozw Novi član

    Re: DIY: Meteo stanica

    E bas ti hvala ja cu to probati sa esp8266 tako da ukljuci sirenu a i posalje nesto u cloud - mozda twiter ili sms videcu. Kad ga zavrsim javicu.
     
  11. black

    black Komšija

  12. radozw

    radozw Novi član

    Re: DIY: Meteo stanica

    Evo ovo je sketch za ThingSpeak
    Rezultate pogledaj na kanalu
    https://thingspeak.com/channels/45756/

    Code:
    /*
     *  This sketch sends data via HTTP GET requests to data.sparkfun.com service.
     *
     *  You need to get streamId and privateKey at data.sparkfun.com and paste them
     *  below. Or just customize this script to talk to other HTTP servers.
     *  This script is customised by R. Korda for 3 DS18B20 waterproof sensors and 
     *  power supply voltage and for ThingSpeak servers
     *  My Blog
     *  https://lifeandesp8266.wordpress.com
     */
     
    #include <ESP8266WiFi.h>
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <stdlib_noniso.h>
    //enabling reading voltage of pover supply
    extern "C" {
      #include "user_interface.h"
        uint16 readvdd33(void);
    }
     
     
    #define ONE_WIRE_BUS 2  // DS18B20 pin gpio2
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature DS18B20(&oneWire);
     
    const char* ssid     = "******";    //your router ssid
    const char* password = "*********"; // your password for wifi router
     
    const char* host = "api.thingspeak.com";
    const char* APIkey   = "***************"; //API key for thingSpeak channel
     
     
    float oldTemp;
    int MinSleep; //how many minutes to sleep
     
     
    void setup() {
      Serial.begin(115200);
      delay(10);
      MinSleep=10;
      // We start by connecting to a WiFi network
      // Mi pocinjemo sa spajanjem na WiFi mrezu
     
      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);
     
      WiFi.begin(ssid, password);
     
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
     
      Serial.println("");
      Serial.println("WiFi connected");
      Serial.println("WiFi spojen");
      Serial.println("IP address: ");
      Serial.println("IP adresa: ");
      Serial.println(WiFi.localIP());
    }
     
     
     
    void loop() {
      delay(3000);
     
      float temp; //defining temperature variables , definisanje temperaturnih promenljivih
        float temp1; //definiing temperatuse for 2nd sensor
    //  float temp2; //defining variable for 3rd sensor
      float vdd; //variable for power supply volatage
    
     
      DS18B20.requestTemperatures();
      temp = DS18B20.getTempCByIndex(0); //reading temperature from senor 1 
     
      temp1 = DS18B20.getTempCByIndex(1); //reading temperature from sensor 2
    //  temp2 = DS18B20.getTempCByIndex(2); // reading temp from sens 3
      delay (500);
      temp = DS18B20.getTempCByIndex(0); //second reading because first reading gives result 85
    
      temp1 = DS18B20.getTempCByIndex(1);
    //  temp2 = DS18B20.getTempCByIndex(2);  
    // read voltage of power supply - Analog pin should float
      vdd = readvdd33() / 1000.0;
    
      Serial.print("Temperature: ");
      Serial.println(temp);
      Serial.print("Temperature 1: ");
      Serial.println(temp1); 
      Serial.print("Voltage: ");
      Serial.println(vdd);
    //  Serial.print("Temperature2: ");
    //  Serial.println(temp2); 
      
    //Conversion from float to strings
    
    //setting up variables
      char charVal[12];
      char charVal1[12];
    //  char charVal2[12];  
      char charVdd[12];
    
     //actual conversion 
      dtostrf(temp, 8, 2, charVal);
      dtostrf(temp1, 8, 2, charVal1);
    //  dtostrf(temp2, 8, 2, charVal2); 
       dtostrf(vdd, 8, 2, charVdd);
       
      Serial.print("connecting to ");
      Serial.println(host);
     
      // Use WiFiClient class to create TCP connections
      // Koristimo WiFiClient klasu da otvorimo TCP konekcije
      WiFiClient client;
      const int httpPort = 80;
      if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        Serial.println("Konekcija nije uspela");
        return;
      }
     delay(10);
     
     
      // We now create a URI for the request
      // Sada pravimo URL za zahtev
      String url = "/update?key=";
      url += APIkey;
      url += "&field4=";
      url += charVal;//String(temp);
       url += "&field5=";
      url += charVal1;//String(temp1);
       url += "&field6=";
       url += charVdd;
     //   url += "&field7=";  
    //  url += charVal2;//String(temp2); 
     
      Serial.print("Requesting URL: ");
      Serial.print("Zahtev za URL: ");
      Serial.println(url);
     
      // This will send the request to the server
      // Ovo salje zahtev serveru
      client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                   "Host: " + host + "\r\n" +
                   "Connection: close\r\n\r\n");
      delay(10);
     
      // Read all the lines of the reply from server and print them to Serial
      //
      while (client.available()) {
        String line = client.readStringUntil('\r');
        Serial.print(line);
      }
     delay(10);
      Serial.println();
      Serial.println("closing connection");
        Serial.println("closing connection going to sleep ");
        Serial.print (MinSleep);
           Serial.println(" minutes ");
      Serial.print("Millis-3: ");
      Serial.println(millis()); //how long it was up 1 sec is 1.000.000 millis
    
         ESP.deepSleep(MinSleep*60000000, WAKE_RF_DEFAULT); //sleep for MinSleep minutes
         //1 minute is 60.000.000 millis
    }
     
  13. black

    black Komšija

    Re: DIY: Meteo stanica

    Koji adapter koristis za programiranje ESP8266?
    [​IMG]
    Kod mene je ovaj modul , vidim SSID od modula ali serial nikako nece.
     
  14. forzamilan

    forzamilan Veteran foruma

    Re: DIY: Meteo stanica

    I šta kažu hoćel' kiša? :D
     
  15. black

    black Komšija

    Re: DIY: Meteo stanica

    Ma ima da bude bolja prognoza neg' Majstoroviceva
     
  16. radozw

    radozw Novi član

    Re: DIY: Meteo stanica

    Pa ja koristim ovaj.
    http://www.banggood.com/FT232RL-FTDI-US ... 17226.html
    Kad ukapiram kako da prikacim sliku okacicu.
    Ja koristim ESP-12 i 12E module koje zalemim na proto board gde takodje imam pin hedere, otpornike, kondenzatore, napajanje.
    Ovaj tvoj modul ESP-201 sam dobio pre tri dana nisam ga jos probao. Googluj malo o njemu - imali su i losih primeraka. Neki se kunu u njega zato sam ga i uzeo. I zbog antene treba mi jaci domet za bastu.
     
  17. black

    black Komšija

    Re: DIY: Meteo stanica

    Taj sam mislio i uzeti jer je Arduino Uno 5v pa moram voltage divider koristi ali izgleda nisam to bas slozio. Kod mene eto ima SSID ali serial ne reaguje. Danas mi je stigao i ethernet shield pa cu razmisliti sta da koristim.
     
  18. radozw

    radozw Novi član

    Re: DIY: Meteo stanica

    Proveri baud rate - obicno za ESP treba da bude 115200 "No line ending" i proveri koji ti je COM. Meni je COM5. Arduino je COM3
     
  19. radozw

    radozw Novi član

    Re: DIY: Meteo stanica

    Ako vidis SSID onda je modul ziv. Samo nisi uspostavio pravilne elemente za komunikaciju. Kad ga spalis nema SSID-a. Ja sam jedan definitivno spalio a drugi ima SSID za sekundu pa ga nema. Negde je ladan lem.
     
  20. radozw

    radozw Novi član

    Re: DIY: Meteo stanica

    Ako vidis SSID onda je modul ziv. Samo nisi uspostavio pravilne elemente za komunikaciju. Kad ga spalis nema SSID-a. Ja sam jedan definitivno spalio a drugi ima SSID za sekundu pa ga nema. Negde je ladan lem.