Përmbajtje:

Fillimi me Arduino dhe Ethernet: 8 hapa
Fillimi me Arduino dhe Ethernet: 8 hapa

Video: Fillimi me Arduino dhe Ethernet: 8 hapa

Video: Fillimi me Arduino dhe Ethernet: 8 hapa
Video: Lesson 02 Arduino IDE Software | Robojax Arduino Step By Step Course 2024, Korrik
Anonim
Fillimi me Arduino dhe Ethernet
Fillimi me Arduino dhe Ethernet

Arduino juaj mund të komunikojë lehtësisht me botën e jashtme përmes një lidhjeje Ethernet me tela. Sidoqoftë, para se të fillojmë, do të supozohet se keni një kuptim bazë të rrjeteve kompjuterike, siç është njohuria se si të lidhni kompjuterët me një shpërndarës/ruter me kabllo RJ45, çfarë është një adresë IP dhe MAC, etj. Për më tepër, këtu është një përmbledhje e shpejtë e mirë në lidhje me Ethernet.

Ju do të keni nevojë për një Arduino Uno ose bord të pajtueshëm me një mburojë Ethernet që përdor IC kontrolluesin W5100 Ethernet (pothuajse të gjithë ata) sipas imazhit.

Për më tepër, do t'ju duhet të fuqizoni bordin përmes prizës së jashtme DC - IC W5100 përdor më shumë rrymë sesa mund të furnizojë energjia USB. Një paketë prize 9V 1.5A/lyth muri do të jetë e mjaftueshme.

Hapi 1:

Imazhi
Imazhi

Së fundi - mburojat nxehen - kështu që kini kujdes të mos prekni W5100 pas përdorimit të zgjatur. Në rast se nuk jeni të sigurt - ky është IC W5100.

Hapi 2:

Pasi të keni Arduino të aktivizuar me Ethernet dhe të keni lidhur fuqinë e jashtme-është një ide e mirë të kontrolloni që të gjitha funksionojnë. Hapni Arduino IDE dhe zgjidhni Skedar> Shembuj> Ethernet> Web server. Kjo ngarkon një skicë të thjeshtë e cila do të shfaqë të dhënat e mbledhura nga hyrjet analoge në një shfletues uebi. Sidoqoftë, mos e ngarkoni akoma, ka nevojë për një modifikim të vogël.

Ju duhet të specifikoni adresën IP të mburojës Ethernet - e cila bëhet brenda skicës. Kjo është e thjeshtë, shkoni në linjë:

Adresa IP IP (10, 1, 1, 77);

Dhe ndryshojeni atë që të përputhet me konfigurimin tuaj. Për shembull, në shtëpinë tonë adresa IP e routerit është 10.1.1.1, printeri është 10.1.1.50 dhe të gjithë kompjuterët janë nën… 50. Kështu që unë do ta vendos IP -në e mburojës sime në 10.1.1.77 duke ndryshuar linjën në:

byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

Sidoqoftë, nëse keni vetëm një mburojë, lini atë të jetë. Mund të ketë mundësi shumë, shumë, statistikisht të rralla për të pasur një adresë MAC të njëjtë me pajisjen tuaj ekzistues, kështu që do të ishte një kohë tjetër për ta ndryshuar atë.

Hapi 3:

Imazhi
Imazhi

Sidoqoftë, nëse keni vetëm një mburojë, lini atë të jetë. Mund të ketë mundësi shumë, shumë, statistikisht të rralla për të pasur një adresë MAC të njëjtë me pajisjen tuaj ekzistues, kështu që do të ishte një kohë tjetër për ta ndryshuar atë.

Pasi të keni bërë ndryshimet tuaja, ruani dhe ngarkoni skicën. Tani hapni një shfletues uebi dhe lundroni në adresën IP që keni futur në skicë dhe duhet t'ju paraqitet diçka e ngjashme me imazhin.

Cfare po ndodh?

Arduino është programuar të ofrojë një faqe të thjeshtë në internet me vlerat e matura nga inputet analoge. Mund ta rifreskoni shfletuesin për të marrë vlera të përditësuara. Në këtë pikë - ju lutemi vini re se mburojat Ethernet përdorin kunjat dixhitale 10 ~ 13, kështu që nuk mund t'i përdorni ato për asgjë tjetër. Disa mburoja të Arduino Ethernet mund të kenë gjithashtu një prizë të kartës microSD, e cila gjithashtu përdor një kunj tjetër digjital - kështu që kontrolloni me dokumentacionin për të gjetur se cilën.

Hapi 4:

Sidoqoftë, tani që ne mund të shohim që mburoja Ethernet po funksionon, mund të kalojmë në diçka më të dobishme. Le ta analizojmë shembullin e mëparshëm në një mënyrë të thjeshtë dhe të shohim se si mund të shpërndajmë dhe shfaqim të dhëna më interesante në rrjet. Për referencë, të gjitha funksionet e lidhura me Ethernet trajtohen nga biblioteka Ethernet Arduino. Nëse shqyrtoni skicën e mëparshme që sapo kemi përdorur, pjesa që do të jetë me interes është:

për (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("hyrje analoge"); klient.print (analogChannel); klient.print ("është"); klient.print (sensorReading); klient.println (""); } client.println ("");

Shpresojmë që kjo pjesë e skicës të jetë e njohur - mbani mend se si e kemi përdorur serial.print (); në të kaluarën kur dërgoni të dhëna në kutinë e monitorimit serik? Epo tani ne mund të bëjmë të njëjtën gjë, por dërgimi i të dhënave nga mburoja jonë Ethernet përsëri në një shfletues uebi - me fjalë të tjera, një lloj shumë themelor i faqes në internet. Megjithatë ka diçka që ju mund ose nuk dëshironi të mësoni për të formatuar dalja në një format të lexueshëm - kodi HTML. Unë nuk jam një zhvillues i faqes në internet (!) Kështu që nuk do të thellohem në HTML shumë.

Sidoqoftë, nëse dëshironi të shërbeni faqe në internet të formatuara bukur me Arduino tuaj dhe kështu me radhë, këtu do të ishte një fillim i mirë. Në interes të thjeshtësisë, dy funksionet e mëposhtme do të jenë më të dobishme:

klient.print ("është");

Client.print (); na lejon të dërgojmë tekst ose të dhëna përsëri në faqen e internetit. Punon në të njëjtën mënyrë si serial.print (), kështu që asgjë të re atje. Ju gjithashtu mund të specifikoni llojin e të dhënave në të njëjtën mënyrë si me serial.print (). Natyrisht, ju gjithashtu mund ta përdorni atë për të dërguar të dhëna mbrapa gjithashtu. Linja tjetër e dobishme është:

klient.println ("");

i cili dërgon kodin HTML përsëri në shfletuesin e internetit duke i thënë atij të fillojë një linjë të re. Pjesa që në fakt shkakton kthimin/linjën e re të karrocës është

i cili është një kod HTML (ose "etiketë") për një linjë të re.

Pra, nëse jeni duke krijuar ekrane më të përpunuara të ueb faqeve, thjesht mund të futni etiketa të tjera HTML në client.print (); deklarata. Nëse doni të mësoni më shumë rreth komandave HTML, këtu është një sit i mirë mësimor.

Së fundi - vini re se skica do të dërgojë të dhënat vetëm kur të jenë kërkuar, domethënë kur ka marrë një kërkesë nga shfletuesi i uebit.

Hapi 5: Qasja në Arduino tuaj përmes internetit

Qasja në Arduino tuaj përmes internetit
Qasja në Arduino tuaj përmes internetit

Deri tani - kaq mirë. Por, çfarë nëse doni të hyni në Arduino tuaj jashtë rrjetit lokal?

Ju do të keni nevojë për një adresë IP statike - domethënë, adresa IP që ofruesi i shërbimit tuaj të internetit i cakton lidhjes tuaj duhet të qëndrojë i njëjtë. Nëse nuk keni një IP statike, për aq kohë sa e lini modemin/ruterin tuaj të kyçur përgjithmonë në IP -në tuaj nuk duhet të ndryshojë. Sidoqoftë, kjo nuk është një zgjidhje optimale.

Nëse ISP -ja juaj nuk mund t'ju ofrojë fare IP IP, ju prapë mund të ecni përpara me projektin duke përdorur një organizatë që ofron një DNS Dinamike. Këto organizata ju ofrojnë emrin tuaj statik të hostit IP (p.sh. mojo.monkeynuts.com) në vend të një numri, mbani shënim ndryshimin e adresës tuaj IP dhe lidhjen e tij me emrin e hostit të ri. Nga sa mund të mbledh, modemi juaj duhet të mbështesë (të ketë një klient të integruar për…) këto shërbime DDNS.

Si shembull, dy kompani janë No-IP dheDynDNS.com. Ju lutemi vini re se unë nuk i kam përdorur ato të dyja, ato ofrohen vetëm si shembuj. Tani, për të gjetur adresën tuaj IP … zakonisht kjo mund të gjendet duke hyrë në faqen e administrimit të ruterit tuaj - zakonisht është 192.168.0.1 por mund të jetë ndryshe. Kontrolloni me furnizuesin ose ISP -në tuaj nëse ata kanë furnizuar pajisjen. Për këtë shembull, nëse fut 10.1.1.1 në një shfletues uebi, dhe pasi futem fjalëkalimin tim të administrimit të modemit, ekrani i mëposhtëm paraqitet sipas imazhit.

Hapi 6:

Imazhi
Imazhi

Ajo që ju po kërkoni është adresa juaj IP WAN, siç mund ta shihni në imazhin e mësipërm. Për t’i mbajtur shakaxhinjtë larg, i kam nxirë disa nga adresat e mia.

Gjëja tjetër që duhet bërë është të aktivizoni përcjelljen e portit. Kjo i tregon ruterit se ku të ridrejtojë kërkesat e ardhura nga bota e jashtme. Kur modemi merr një kërkesë të tillë, ne duam ta dërgojmë atë kërkesë në numrin e portit të mburojës sonë Ethernet. Duke perdorur:

Serveri EthernetServer (125);

funksioni në skicën tonë ka vendosur numrin e portit në 125. Ekrani i konfigurimit të secilit modem do të duket ndryshe, por si shembull këtu është një në imazh.

Hapi 7:

Imazhi
Imazhi

Kështu që ju mund të shihni nga linja numër një në imazhin e mësipërm, numrat e portave hyrëse janë vendosur në 125, dhe adresa IP e mburojës Ethernet është vendosur në 10.1.1.77 - e njëjtë si në skicë.

Pas ruajtjes së cilësimeve, ne jemi gati. Adresa e jashtme e mburojës sime Ethernet do të jetë WAN: 125, kështu që për të hyrë në Arduino do të shkruaj adresën time WAN me: 125 në fund në shfletuesin e pajisjes në internet të largët, e cila do të kontaktojë pajisjen e vetme Ethernet në shtëpi.

Për më tepër, mund t'ju duhet të ndryshoni cilësimet e firewall të modemit tuaj, për të lejuar që porta 125 të jetë "e hapur" për kërkesat në hyrje. Ju lutemi kontrolloni dokumentacionin tuaj të modemit për më shumë informacion se si ta bëni këtë. Tani në thelb nga çdo pajisje e lidhur me Internetin në botën e lirë, unë mund të fus numrin WAN dhe portin tim në fushën URL dhe të marr rezultatet. Për shembull, nga një telefon kur është i lidhur me internetin nëpërmjet të dhënave celulare LTE.

Pra, në këtë fazë tani mund të shfaqni të dhëna në një faqe të thjeshtë në internet të krijuar nga Arduino juaj dhe t'i përdorni ato nga kudo me qasje të pakufizuar në internet. Me njohuritë tuaja të mëparshme për Arduino, tani mund të përdorni të dhëna nga sensorë ose pjesë të tjera të një skicë dhe t'i shfaqni ato për marrje.

Hapi 8: Shfaqja e të dhënave të sensorit në një faqe në internet

Shfaqja e të dhënave të sensorit në një faqe në internet
Shfaqja e të dhënave të sensorit në një faqe në internet

Si shembull i shfaqjes së të dhënave të sensorit në një faqe në internet, le të përdorim një sensor të lirë dhe popullor të temperaturës dhe lagështisë - DHT22. Ju do të duhet të instaloni bibliotekën DHT22 Arduino e cila mund të gjendet në këtë faqe. Nëse kjo është hera juaj e parë me DHT22, eksperimentoni me skicën shembull që përfshihet në bibliotekë, në mënyrë që të kuptoni se si funksionon.

Lidhni DHT22 me pinin e të dhënave në Arduino D2, Vin në pin 5V dhe GND në… GND. Tani për skicën tonë - për të shfaqur temperaturën dhe lagështinë në një faqe në internet. Nëse nuk jeni në HTML, mund të përdorni shërbime online të tilla si kjo për të gjeneruar kodin, të cilin më pas mund ta modifikoni për ta përdorur në skicë. Në shembullin e mëposhtëm, të dhënat e temperaturës dhe lagështisë nga DHT22 shërbehen në një faqe të thjeshtë në internet:

#përfshi "SPI.h"#përfshi "Ethernet.h"

// për sensorin DHT22

#përfshi "DHT.h" #përcakto DHTPIN 2 #përcakto DHTTYPE DHT22

// Futni një adresë MAC dhe adresë IP për kontrolluesin tuaj më poshtë.

// Adresa IP do të varet nga rrjeti juaj lokal: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; Adresa IP IP (10, 1, 1, 77);

// Filloni bibliotekën e serverit Ethernet

// me adresën IP dhe portin që dëshironi të përdorni // (porta 80 është e parazgjedhur për HTTP): Serveri EthernetServer (125); DHT dht (DHTPIN, DHTTYPE);

void setup ()

{dht.filloj (); // Hapni komunikimet serike dhe prisni që porti të hapet: Serial.begin (9600); ndërsa (! Serial) {; // prisni që porti serik të lidhet. Nevojitet vetëm për Leonardo} // filloni lidhjen Ethernet dhe serverin: Ethernet.begin (mac, ip); server.filloj (); Serial.print ("serveri është në"); Serial.println (Ethernet.localIP ()); }

lak void ()

{// dëgjoni për klientët hyrës EthernetClient client = server.available (); if (klienti) {Serial.println ("klient i ri"); // një kërkesë http përfundon me një vijë të bardhë boolean currentLineIsBlank = true; ndërsa (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.shkruani (c); // nëse keni arritur në fund të rreshtit (keni marrë një linjë të re // karakter) dhe rreshti është bosh, kërkesa http ka përfunduar, // kështu që ju mund të dërgoni një përgjigje nëse (c == 'n' && currentLineIsBlank) {// dërgoni një përgjigje standarde http header client.println ("HTTP/1.1 200 OK"); client.println ("Lloji i Përmbajtjes: tekst/html"); client.println ("Lidhja: mbyll"); // lidhja do të mbyllet pas përfundimit të përgjigjes client.println ("Refresh: 30"); // rifreskoni faqen automatikisht çdo 30 sek. client.println (); klient.println ("");

klient.println ("");

// merrni të dhëna nga sensori DHT22

noton h = dht.readHumidity (); noton t = dht.readTemperatura (); Serial.println (t); Serial.println (h);

// nga këtu mund të futim kodin tonë HTML për të krijuar faqen e internetit

client.print ( Moti i Zyrës

Temperatura e zyrës - );

klienti.print (t);

klienti.print ( gradë Celsius

);

client.print ("

Lagështia - );

klienti.print (h);

klienti.print ( për qind

);

client.print ("

Faqja rifreskohet çdo 30 sekonda <

. );

pushim;

} nëse (c == 'n') {// po filloni një linjë të re currentLineIsBlank = e vërtetë; } tjetër nëse (c! = 'r') {// keni marrë një karakter në vijën aktuale currentLineIsBlank = false; }}} // jepni kohë shfletuesit të uebit për të marrë vonesën e të dhënave (1); // mbyllni lidhjen: client.stop (); Serial.println ("klienti i shkëputur"); }}

Shtë një modifikim i skicës së shembullit të serverit të IDE që kemi përdorur më parë - me disa modifikime. Së pari, faqja e internetit do të rifreskohet automatikisht çdo 30 sekonda - ky parametër është vendosur në rresht:

client.println ("Refresh: 30"); // rifreskoni faqen automatikisht çdo 30 sek

… Dhe HTML e personalizuar për faqen tonë të internetit fillon nën rreshtin:

// nga këtu mund të futim kodin tonë HTML për të krijuar faqen e internetit

Pastaj thjesht mund të futni funksionet e kërkuara HTML brenda klientit.print () për të krijuar paraqitjen që ju nevojitet. Së fundi - këtu është një shembull i ekranit të skicës së shembullit në punë.

Kështu që ju e keni atë, një mënyrë tjetër e dobishme për të bashkëvepruar Arduino tuaj me botën e jashtme. Ky postim ju është sjellë nga pmdway.com - gjithçka për prodhuesit dhe entuziastët e elektronikës, me shpërndarje falas në të gjithë botën.

Recommended: