LAKI PINGVINI<>
012018<><>

Štitovi Arduina (4): Ethernet Shield

Nastavljamo seriju o šildovima za Arduino i ovog puta ulazimo u „open world”. Da bi se Arduino povezao sa svetom, može da koristi ethernet i wifi module i šildove, a mi ćemo se ovog puta pozabaviti Ethernet šildom. Šild koji ćemo koristiti je i ovaj put kineska kopija Adafruit šilda R3, a u međuvremenu je Lady Ada predstavila i verziju sa W5500 čipom. Suština je ista, a razlike se ogledaju u većem broju podržanih protokola, konektorima (I2C i UART) i duplo većem broju mogućih istovremenih konekcija.

I ovaj šild je oblika Una i ima prolazne pinove, što znači da je nadogradiv. Šild je zadržao kompletan pinout Una, pa čak i LED povezan na pin 13. Osim dva reda bočnih pinova, Ethernet šild, za razliku od prethodno opisanih šildova, za povezivanje koristi i ICSP hedere. Na ploči još primećujemo reset dugme, sveprisutni AMS1117 naponski regulator i LAN port. HanRun na nalepnici se odnosi na proizvođača porta (LAN priključka) i ni na šta više, dok je sam port megabitni (10/100). Položaj porta je, smatramo, loše postavljen i možda bi bilo bolje da je zaokrenut za 180 stepeni, jer je ovako problem pritisnuti polugicu da bi se LAN kabl odvojio (USB kabl je ispod). Centralno mesto na šildu zauzima vremešni Wiznetov čip sa oznakom W5100, koji je star sada već preko deset godina i koji je sa svojim ograničenjima direktan krivac za (ne)mogućnosti šilda. W5100 omogućuje Arduinu pristup internet mreži putem TCP/IP i UDP protokola uz četiri istovremene konekcije. Ethernet čip ima sopstvenih 16 kilobajta memorije i radi na 3,3 volta (I/O tolerantan na pet volti). Pri dnu šilda je slot za mikro SD karticu, a desno od njega je čak sedam LE dioda (TX, RX, COLL, FUULD, 100M, LINK i PWR). Prve dve će treptati kada se šalju i primaju podaci, COLL će treptati ako dođe do kolizije, FUULD je skraćeno od Full Duplex, 100M ako se koristi 100Mb/s konekcija, LINK ako postoji mrežna veza i PWR je skraćeno od Power. Sve bitne informacije su dostupne preko LE dioda, koje su u različitim bojama i lake za pamćenje.

Za komunikaciju sa šildom Arduino koristi 11, 12 i 13 digitalne pinove za SPI na Unu, koji ćemo mi ovog puta koristiti (ICSP hederi), a W5100 koristi pin 10 za SS, tako da se ovi pinovi ne mogu koristiti za dalju razradu projekta. Pin 4 se koristi kao CS za SD slot. Važno je napomenuti da i W5100 i SD slot dele SPI, tako da u jednom trenutku samo jedan od njih može biti aktivan. Ukoliko se jedna od periferija ne koristi, potrebno ga je „isključiti” u samom skeču postavljanjem odgovarajućeg pina na OUTPUT i HIGH.

pinMode(4, OUTPUT);

digitalWrite(4, HIGH); // ukoliko zelimo da iskljucimo mikro SD slot, postavljamo ove linije u setup funkciji

Ukoliko će se koristiti MEGA, tada će za SPI biti zauzeti 50, 51 i 52 pinovi. Hardverski SS pin 53 se neće koristiti, ali se mora ostaviti kao OUTPUT da bi SPI radio. Na kraju, primećujemo INT tačke (džamperi) do samih TX i RX pinova, čijim se spajanjem (lemljenjem) povezuju INT pin Wizneta i pin 2 Arduina i tako omogućava Arduinu da prima interupt notifikacije sa Wiznetovog čipa, ali za ovo ne postoji podrška u Ethernet biblioteci u okviru razvojnog okruženja. Originalni Adafruit šild ima mogućnost dograđivanja PoE modula, koji se na njega postavlja ukoso, dok ovaj to nema.

Zadnje verzije Arduino IDE-a već imaju biblioteke za ethernet, tako da nam treba još samo biblioteka za mikro SD slot. SD biblioteka koju smo koristili za prethodne šildove će obaviti posao, a nalazi se na linku goo.gl/xvehzA. Sve što smo do sada rekli za mikro SD slot i rad sa SD karticama važi i ovde, naravno uz korišćenje odgovarajućeg pina za Chip Select, s tim da treba voditi računa o mogućim konfliktima, a može se lako desiti da, ukoliko se slot u okviru skeča ne koristi, ali se u njemu nalazi kartica, bude problem prilikom prebacivanja skeča na Arduino. U tom slučaju je dovoljno izvaditi karticu. Na karticu se mogu snimiti, recimo, CSS i JS fajlovi, koji će se koristiti prilikom formatiranja web stranice, pa čak i čitavi sajtovi, a ne mora se koristiti uopšte. Suštinski, Arduino je sa ovim šildom kao stvoren za server.

Kao i do sada, imamo pripremljen skeč koji možete preuzeti sa stranice goo.gl/cWyfGz. Uno će, uz pomoć Ethernet šilda, DHT22 modula i nekoliko dupont žica, prikupljati podatke o temperaturi i vlažnosti vazduha i slaće ih na Serial monitor, ali iste te podatke možemo videti i u okviru web stranice na statičnoj IP adresi koju smo zadali u okviru skeča. Dakle, napravićemo od Arduina web server kojem ćemo pristupiti putem lokalne mreže i imaćemo mogućnost da očitavamo trenutne vrednosti sa modula. Iz tog razloga smo pripremili HTM web stranicu i prebacili je sa pratećim fajlovima na mikro SD karticu. Povezivanje prema Fritzing šemi.

Na početku skeča dodajemo neophodne biblioteke za rad sa šildom i DHT22 modulom (SPI, Ethernet, SD i DHT). Sledeće na redu je definisanje digitalnog pina na koji ćemo povezati DHT22 i određivanje vrednosti bafera koji će nam biti potreban prilikom HTTP zahteva. Određujemo MAC i IP adrese. IP adresa može biti i dinamička, ali u tom slučaju ćemo morati da očitavamo IP adresu svaki put kada, recimo, nestane struja. Prilikom zadavanja statičke IP adrese moramo voditi računa o raspoloživim IP adresama rutera. Server uglavnom koristi port 80. U setup funkciji pokrećemo DHT, SD slot, Ethernet, server i serial monitor. U loop funkciji prikupljamo podatke sa modula i čekamo klijenta. Ako klijent postoji i ako je povezan, to jest ako je neko pristupio IP adresi koju smo zadali u okviru skeča, ispisujemo formatiranu web stranicu sa mikro SD kartice, gde ćemo prikazati očitane vrednosti modula. Ajax je zadužen za trenutno ispisivanje očitanih vrednosti bez osvežavanja stranice.

Kako to zapravo funkcioniše? Kada zadamo pregledaču da pristupi IP adresi Arduina, on šalje zahtev serveru. Server, nakon što primi zahtev klijenta, prvo šalje standardni HTTP odgovor, pa tek onda formatiranu stranicu. Ovo je inače sve neophodno i u skladu sa HTTP-om. Ako pogledamo u web interfejs našeg rutera, videćemo da se šild uredno prijavio na postavljenim IP i MAC adresama i pod imenom WIZnetEFFEED. U prethodnim tekstovima nismo pomenuli da Arduino sa SD.h bibliotekom za nazive fajlova koristi 8.3 filename sistem. Iz tog razloga web stranica na kartici ne može imati ekstenziju HTML, već HTM (index.htm). Isto važi i za bilo koji drugi fajl koji će biti snimljen na kartici, a koji će Arduino koristiti. HTML fajl Arduino neće registrovati.

Ethernet shield je odličan izbor ako uz pomoć Arduina planiramo da napravimo server. Uz neophodno poznavanje web programskih jezika može se napraviti mnogo toga. Slanjem podataka van lokalne mreže ćemo se pozabaviti u sledećem broju, kada budemo obrađivali wifi shield. ’Till then, stay tuned.

Dejan PETROVIĆ

 
Kuda plovi ovaj brod
SimpleScreenRecorder 0.3.8
Joplin 0.10.25
Arduino: IC i UZ u akciji
Štitovi Arduina (4): Ethernet Shield
Šta mislite o ovom tekstu?
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera