*/ ?>

Početnik si s Croduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala e-radionice na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Croduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.

UVOD

U ovom tutorijalu ćemo se upoznati s ethernet modulom ENC28J60 koji nam omogućuje spajanje na Internet putem Croduina. Modul možemo koristiti kada želimo upravljati nekim procesom ili uređajem preko interneta(lokalne mreže na koju je spojen modul i mobitel ili računalo s kojim mijenjamo parametre), ili ako želimo slati očitanja raznih senzora na neki web poslužitelj i tamo ih pohranjivati. Za korištenje modula potrebno je poznavati osnove HTML-a kako bi mogli napraviti jednostavne stvari s modulom i Croduinom. Ako želimo da nam se na stranici podaci sa senzora prikazuju grafički morat ćemo koristiti i CSS, a ako želimo samo ispisati tekst dovoljan nam je HTML.
    Karakteristike senzora: •Napajanje: 3.3V ili 5V •Komunikacija: SPI •Ethernet konektor: HR911105A

KAKO MODUL RADI?

Za početak ćemo se upoznati s radom modula i načinom na koji ga spajamo na Croduino i lokalnu mrežu. Modul na sebi ima ENC28J60 čip koji omogućuje komunikaciju između lokalne mreže i Croduina. Čip s mikrokontrolerom komunicira preko SPI komunikacije što ga čini jednostavnim za spajanje i korištenje. Kako biste se bolje upoznali kako rade Internet protokoli koji se koriste za spajanje na Internet pomoću ovog i sličnih modula, te što su IP i MAC adrese možete pogledati tutorijal o Ethernet modulu W5100.

KAKO POVEZATI MODUL?

Modul je jednostavno povezati jer koristi SPI komunikaciju te je potrebno spojiti odgovarajuće pinove modula na pinove Croduina zadužene za SPI komunikaciju. Na shemi vidimo gdje se koji pin modula povezuje na Croduino, te je još stavljena i LED dioda na pin 4 kako bi odmah mogli testirati kod koji je dan u primjeru.Kako bi modul ispravno radio potrebno mu je dovesti vanjsko napajanje od 5V, ali je također potrebno spojiti GND pin napajanja sa GND pinom Croduina kako bi imali referentnu točku.  

ARDUINO KOD

Kako bi koristili ENC28J60 ethernet modul sa Croduinom potrebno je preuzeti biblioteku koja služi za rad s ethernet modulom jer nam biblioteka koja je instalirana s Arduino Ide ne odgovara za naš modul. Biblioteka koju koristimo u primjeru i koju trebamo preuzeti je UIPEthernet. Ako ne znate kako instalirati biblioteku pogledajte tutorijal u kojemu je objašnjen postupak instalacije. Primjer koda nam u web pretraživaču otvara web stranicu na kojoj imamo dvije tipke za paljenje i gašenje LED diode koja je spojena na pin 4. Na stranici se također ispisuje stanje LED diode kako bismo znali dali je upaljena ili ugašena.
#include "UIPEthernet.h" //uključujemo biblioteku UIPEthernet koja služi za rad s ENC28J60 ethernet shield-om
int LED1=4;  //pin na koji spajamo LED diodu
int val_LED1=0;//varijabla u koju spremamo stanje LED diode

String readString; // string koji nam služi za spremanje zahtijeva korisnika koji posjećuje stranicu
EthernetServer server = EthernetServer(80);  //Inicijalizacija biblioteke koja izvršava sve funkcije vezane uz Web server (primanje zahtjeva, obrada zahtjeva i slanje podataka)
//80 unutar zagrada označava port naše web stranice (web stranice, odnosno HTTP uvijek ima port 80)

void setup()
{

 pinMode(LED1, OUTPUT);//postavljamo pin na koji je spojena LED dioda kao izlazni
 digitalWrite(LED1, LOW);//pin postavljamo na LOW, odnosno gasimo LED diodu
  Serial.begin(9600);//Inicijalizacija serijske komunikacije 
  uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05};//postavljanje MAC adrese 
  IPAddress myIP(192,168,1,156);//postavljanje IP adrese(ovu adresu upisujemo u web preglednik kako bi pristupili našoj stranici)
  Ethernet.begin(mac,myIP);//Inicijaliziraj biblioteku i Ethernet sa zadanom MAC adresom i IP adresom
  server.begin();//Server počinje s radom
 Serial.print(F("Server je aktivan na IP adresi ")); //Ispisi preko koje IP adrese možemo pristupiti našem serveru
 Serial.print(Ethernet.localIP());
}

//funkcija u kojoj provjeravamo zahtjev sa stranice i palimo ili gasimo LED diodu
void StateLED(EthernetClient cl)
{  
  //ako nam se u stringu vrati "on1" onda palimo LED diodu i ispisujemo poruku na Serial monitor
          if(readString.indexOf("on1") >0)
          { digitalWrite(LED1, HIGH);   
            Serial.println("Upaljena LED dioda");
          }
 //ako nam se u stringu vrati "off2" onda gasimo LED diodu i ispisujemo poruku na Serial monitor         
          if(readString.indexOf("off2") >0)
          { digitalWrite(LED1, LOW);    
            Serial.println("Ugašena LED dioda");
          } 

}
//funkcija za promjenu stanja led diode na stranici(ako ju upalimo ili ugasimo)
void Changetext(EthernetClient cl){
    val_LED1 = digitalRead(LED1);//u varijablu val_LED1 spremamo stanje pina na koji je spojena LED dioda
    Serial.println(val_LED1);//ispisujemo stanje pina na Serial monitor

    if(val_LED1 == HIGH){//provjeravamo dali je LED dioda upaljena
      cl.println("ON");//ispisujemo na stranici da je LED dioda upaljena
    }
    else {//ako LED dioda nije upaljena onda ispisujemo da je ugašena
        cl.println("OFF");
    }  
}

void loop(){
  //
  EthernetClient client = server.available();//Provjeravamo stanje servera, da li imamo nekoga tko nam se spojio na njega
 //ako je netko spojen na server u while petlji provjeravamo dali je spojen i dok je čitamo njegove zahtjeve
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();//čitamo znak po znak korisnikov zahtjev
       
        if (readString.length() < 100) {
         //spremamo znak koji smo pročitali u String  readString
          readString += c; 
       
        } 
        //kada je zahtjev završen ispisujemo našu stranicu kao odgovor
        if (c == '\n') {     
          client.println("HTTP/1.1 200 OK"); //pošalji novu stranicu
          client.println("Content-Type: text/html");
          client.println(F("Connection: close"));
          client.println();
          client.println(F("<!DOCTYPE HTML>"));
          client.println(F("<html>"));
          client.println(F("<title>Croduino Web server</title></html>"));
          client.println(F("Croduino web server :)"));
          client.println("<head>");
          client.println("<meta http-equiv='refresh'content='3 ;url=$$$$'>");//dio koda koji osvježava stranicu svake 3 sekunde
          client.println("</head>");
          client.println("<body>");
          client.println("<h1>Kontrola LED diode sa Croduinom</h1>");
          // tipke na našoj stranici
          client.println("Stanje LED diode:  "); 
          StateLED(client);//funkcija u kojoj provjeravamo stanje i palimo/gasimo LED diodu
          Changetext(client); //funkcija u kojoj ispisujemo stanje LED diode
          //tipka za paljenje LED diode
          client.println("<input type=button value=ON onmousedown=location.href='/on1'>");
          client.println(" ");  
          //tipka za gašenje LED diode
          client.println("<input type=button value=OFF onmousedown=location.href='/off2'>");
          client.println(" "); 
          client.println("</body>");
          client.println("</html>");
          delay(1);//Pričekaj malo da korisnikov mobitel ili računalo primi Web stranicu
          //Prekini vezu s korisnikom
          client.stop();
          readString="";//obrišemo String u kojem je bio spremljen korisnikov zahtjev kako bi se ponovno mogao spremiti drugi zahtjev
        }
      }
    }
  }
}
 

KKM

Početnik si s Croduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala e-radionice na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Croduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.

KKM

Pojavom IoT (Internet of Things) uređaja javila se i potreba za uslugama jednostavne pohrane, obrade i razmjene podataka. Jedan od pružatelja takve usluge platforma je ThingSpeak. Ona nam nudi mogućnost stvaranja komunikacijskih kanala u sklopu kojih se mogu slati i preuzimati razni podaci. Također postoji i grafički prikaz tih podataka, koji može biti i javno dostupan te se može uklopiti u vlastita rješenja.

KKM