Orodha ya maudhui:

Kuanza na Arduino na Ethernet: 8 Hatua
Kuanza na Arduino na Ethernet: 8 Hatua

Video: Kuanza na Arduino na Ethernet: 8 Hatua

Video: Kuanza na Arduino na Ethernet: 8 Hatua
Video: Lesson 02 Arduino IDE Software | Robojax Arduino Step By Step Course 2024, Julai
Anonim
Kuanza na Arduino na Ethernet
Kuanza na Arduino na Ethernet

Arduino yako inaweza kuwasiliana kwa urahisi na ulimwengu wa nje kupitia muunganisho wa nyaya ya Ethernet. Walakini kabla ya kuanza, itafikiriwa kuwa una uelewa wa kimsingi wa mitandao ya kompyuta, kama vile ujuzi wa jinsi ya kuunganisha kompyuta kwenye kitovu / router na nyaya za RJ45, anwani ya IP na MAC ni nini, na kadhalika. Kwa kuongezea, hapa kuna upepo mzuri wa haraka juu ya Ethernet.

Utahitaji Arduino Uno au bodi inayoendana na ngao ya Ethernet inayotumia W5100 Ethernet mdhibiti IC (sawa kabisa) kulingana na picha.

Kwa kuongezea utahitaji kuiwezesha bodi kupitia tundu la nje la DC - W5100 IC hutumia sasa zaidi kuliko nguvu ya USB inaweza kusambaza. Kifurushi cha 9V 1.5A cha kuziba / wart ya ukuta itatosha.

Hatua ya 1:

Picha
Picha

Mwishowe - ngao hupata moto - kwa hivyo kuwa mwangalifu usiguse W5100 baada ya matumizi marefu. Ikiwa haujui - hii ni W5100 IC.

Hatua ya 2:

Mara tu ukiwa na Arduino yako inayowezeshwa na Ethernet, na kuwa na nguvu ya nje iliyounganishwa - ni wazo nzuri kuangalia yote yanafanya kazi. Fungua Arduino IDE na uchague Faili> Mifano> Ethernet> Webserver. Hii inapakia mchoro rahisi ambao utaonyesha data iliyokusanywa kutoka kwa pembejeo za analog kwenye kivinjari cha wavuti. Walakini usiipakie bado, inahitaji marekebisho kidogo.

Unahitaji kutaja anwani ya IP ya ngao ya Ethernet - ambayo hufanywa ndani ya mchoro. Hii ni rahisi, nenda kwenye laini:

Anwani ya IP (10, 1, 1, 77);

Na ubadilishe ilingane na usanidi wako mwenyewe. Kwa mfano, nyumbani kwetu anwani ya IP ya router ni 10.1.1.1, printa ni 10.1.1.50 na PC zote ziko chini… 50. Kwa hivyo nitaweka ngao yangu IP kuwa 10.1.1.77 kwa kubadilisha laini kuwa:

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

Walakini ikiwa una ngao moja acha tu. Kunaweza kuwa na nafasi adimu sana, ya kitakwimu ya kuwa na anwani ya MAC sawa na vifaa vyako, kwa hiyo hiyo inaweza kuwa wakati mwingine wa kuibadilisha.

Hatua ya 3:

Picha
Picha

Walakini ikiwa una ngao moja acha tu. Kunaweza kuwa na nafasi adimu sana, ya kitakwimu ya kuwa na anwani ya MAC sawa na vifaa vyako, kwa hiyo hiyo inaweza kuwa wakati mwingine wa kuibadilisha.

Mara tu unapofanya mabadiliko yako, hifadhi na upakie mchoro. Sasa fungua kivinjari na uende kwenye anwani ya IP uliyoingiza kwenye mchoro, na unapaswa kuwasilishwa na kitu sawa na picha.

Nini kinaendelea?

Arduino imesanidiwa kutoa ukurasa rahisi wa wavuti na maadili yaliyopimwa na pembejeo za analog. Unaweza kuburudisha kivinjari ili kupata maadili yaliyosasishwa Katika hatua hii - tafadhali kumbuka kuwa ngao za Ethernet hutumia pini za dijiti 10 ~ 13, kwa hivyo huwezi kuzitumia kwa kitu kingine chochote. Ngao zingine za Arduino Ethernet zinaweza pia kuwa na tundu la kadi ya MicroSD, ambayo pia hutumia pini nyingine ya dijiti - kwa hivyo angalia na nyaraka ili kujua ni ipi.

Hatua ya 4:

Walakini, sasa kwa kuwa tunaweza kuona ngao ya Ethernet inafanya kazi tunaweza kuendelea na kitu muhimu zaidi. Wacha tugawanye mfano uliopita kwa njia rahisi, na tuone jinsi tunaweza kusambaza na kuonyesha data ya kupendeza zaidi kwenye mtandao. Kwa kumbukumbu, kazi zote zinazohusiana na Ethernet zinashughulikiwa na maktaba ya Ethernet Arduino. Ikiwa unachunguza mchoro uliopita tuliotumia, sehemu ambayo itavutia ni:

kwa (int analogChannel = 0; AnalogChannel <6; AnalogChannel ++) {int sensorReading = AnalogRead (AnalogChannel); alama ya mteja ("pembejeo ya analog"); alama ya mteja (AnalogChannel); alama ya mteja ("ni"); alama ya mteja (Kusoma kwa sensa); mteja.println (""); } mteja.println ("");

Tunatumahi kuwa sehemu hii ya mchoro inapaswa kufahamika - kumbuka jinsi tumetumia serial.print (); huko nyuma wakati wa kutuma data kwenye sanduku la ufuatiliaji wa serial? Kweli sasa tunaweza kufanya kitu kimoja, lakini kutuma data kutoka kwa ngao yetu ya Ethernet kurudi kwenye kivinjari - kwa maneno mengine, aina ya msingi sana ya ukurasa wa wavuti. pato katika muundo unaoweza kusomeka - nambari ya HTML. Mimi sio msanidi programu wa wavuti (!) Kwa hivyo haitaingia kwenye HTML sana.

Walakini ikiwa unataka kutumikia kurasa za wavuti zilizopangwa vizuri na Arduino yako na kadhalika, hapa itakuwa mwanzo mzuri. Kwa masilahi ya unyenyekevu, kazi mbili zifuatazo zitakuwa muhimu zaidi:

alama ya mteja ("ni");

Mteja.print (); inaruhusu sisi kutuma maandishi au data nyuma kwenye ukurasa wa wavuti. Inafanya kazi kwa njia sawa na serial.print (), kwa hivyo hakuna kitu kipya hapo. Unaweza pia kutaja aina ya data kwa njia ile ile na serial.print (). Kwa kawaida unaweza pia kuitumia kutuma data pia. Mstari mwingine muhimu ni:

mteja.println ("");

ambayo hutuma nambari ya HTML kurudi kwa kivinjari cha wavuti kuwaambia ianze laini mpya. Sehemu ambayo inasababisha kurudi kwa gari / laini mpya ni

ambayo ni nambari ya HTML (au "tag") ya laini mpya.

Kwa hivyo ikiwa unaunda maonyesho zaidi ya ukurasa wa wavuti, unaweza kuingiza vitambulisho vingine vya HTML kwenye mteja.print (); kauli. Ikiwa unataka kujifunza zaidi juu ya maagizo ya HTML, hapa kuna tovuti nzuri ya mafunzo.

Mwishowe - kumbuka kuwa mchoro utatuma tu data wakati imeombwa, ndio wakati imepokea ombi kutoka kwa kivinjari cha wavuti.

Hatua ya 5: Kupata Arduino Yako Kwenye Mtandao

Kupata Arduino Yako Kwenye Mtandao
Kupata Arduino Yako Kwenye Mtandao

Hadi sasa - nzuri sana. Lakini vipi ikiwa unataka kupata Arduino yako kutoka nje ya mtandao wa karibu?

Utahitaji anwani ya IP tuli - ambayo ni, anwani ya IP ambayo mtoa huduma wako wa mtandao anapeana kwa unganisho lako inahitaji kukaa sawa. Ikiwa huna IP tuli, maadamu unatoka modem / router yako iliyochomwa kabisa kwenye IP yako haipaswi kubadilika. Walakini hiyo sio suluhisho mojawapo.

Ikiwa ISP yako haiwezi kukupa IP tuli kabisa, bado unaweza kuendelea na mradi huo kwa kutumia shirika ambalo linatoa Dynamic Dynamic. Mashirika haya yanakupa jina lako la mwenyeji wa IP tuli (kwa mfano mojo.monkeynuts.com) badala ya nambari, fuatilia anwani yako ya IP inayobadilika na kuiunganisha na jina jipya la mwenyeji. Kutoka kwa kile ninachoweza kukusanya, modem yako inahitaji kuunga mkono (kuwa na mteja aliyejengwa kwa…) huduma hizi za DDNS.

Kwa mfano, kampuni mbili ni No-IP naDynDNS.com. Tafadhali kumbuka kuwa sijatumia hizo mbili, zinapewa tu kama mifano. Sasa, kupata anwani yako ya IP… kawaida hii inaweza kupatikana kwa kuingia kwenye ukurasa wa utawala wa router yako - kawaida ni 192.168.0.1 lakini inaweza kuwa tofauti. Wasiliana na muuzaji wako au ISP ikiwa walitoa vifaa. Kwa mfano huu, ikiwa nitaingia 10.1.1.1 kwenye kivinjari cha wavuti, na baada ya kuingiza nywila yangu ya usimamizi wa modem, skrini inayofuata imewasilishwa kulingana na picha.

Hatua ya 6:

Picha
Picha

Unachotafuta ni anwani yako ya IP ya WAN, kama unaweza kuona kwenye picha hapo juu. Kuweka pranksters mbali, mimi blacked nje ya baadhi ya anwani yangu.

Jambo la pili kufanya ni kuwasha usambazaji wa bandari. Hii inamwambia router wapi kuelekeza ombi zinazoingia kutoka kwa ulimwengu wa nje. Wakati modem inapokea ombi kama hilo, tunataka kutuma ombi hilo kwa nambari ya bandari ya ngao yetu ya Ethernet. Kutumia:

Seva ya EthernetServer (125);

kazi katika mchoro wetu imeweka nambari ya bandari kuwa 125. Kila skrini ya usanidi wa modem itaonekana tofauti, lakini kama mfano hapa ni moja kwenye picha.

Hatua ya 7:

Picha
Picha

Kwa hivyo unaweza kuona kutoka kwa nambari moja ya mstari kwenye picha hapo juu, nambari za bandari zinazoingia zimewekwa 125, na anwani ya IP ya ngao ya Ethernet imewekwa kuwa 10.1.1.77 - sawa na kwenye mchoro.

Baada ya kuhifadhi mipangilio, sisi sote tumeweka. Anwani ya nje ya ngao yangu ya Ethernet itakuwa WAN: 125, kwa hivyo kupata Arduino nitaandika anwani yangu ya WAN na: 125 mwishowe kwenye kivinjari cha kifaa cha mbali cha wavuti, ambacho kitawasiliana na vifaa vya upweke vya Ethernet nyumbani.

Kwa kuongezea, unaweza kuhitaji kubadilisha mipangilio ya firewall ya modem yako, ili kuruhusu bandari 125 iwe "wazi" kwa maombi yanayoingia. Tafadhali angalia nyaraka zako za modem kwa habari zaidi juu ya jinsi ya kufanya hivyo. Sasa kutoka kimsingi kifaa chochote kilichounganishwa na Mtandao katika ulimwengu wa bure, ninaweza kuingiza namba yangu ya WAN na bandari kwenye uwanja wa URL na kupokea matokeo. Kwa mfano, kutoka kwa simu wakati imeunganishwa kwenye mtandao kupitia data ya rununu ya LTE.

Kwa hivyo katika hatua hii sasa unaweza kuonyesha data kwenye ukurasa rahisi wa wavuti ulioundwa na Arduino wako na uifikie kutoka mahali popote na ufikiaji wa Intaneti bila vizuizi. Kwa ujuzi wako wa awali wa Arduino sasa unaweza kutumia data kutoka kwa sensorer au sehemu zingine za mchoro na uionyeshe kwa kurudisha.

Hatua ya 8: Kuonyesha Takwimu za Sensorer kwenye Ukurasa wa Wavuti

Kuonyesha Takwimu za Sensorer kwenye Ukurasa wa Wavuti
Kuonyesha Takwimu za Sensorer kwenye Ukurasa wa Wavuti

Kama mfano wa kuonyesha data ya sensorer kwenye ukurasa wa wavuti, wacha tutumie sensorer ya gharama nafuu na maarufu ya sensorer ya unyevu - DHT22. Utahitaji kusanikisha maktaba ya DHT22 Arduino ambayo inaweza kupatikana kwenye ukurasa huu. Ikiwa hii ni mara yako ya kwanza na DHT22, jaribu mchoro wa mfano uliojumuishwa na maktaba ili uelewe jinsi inavyofanya kazi.

Unganisha DHT22 na pini ya data kwa Arduino D2, Vin kwenye pini ya 5V na GND kwa… GND. Sasa kwa mchoro wetu - kuonyesha joto na unyevu kwenye ukurasa wa wavuti. Ikiwa hauko kwenye HTML unaweza kutumia huduma za mkondoni kama hii kutoa nambari, ambayo unaweza kurekebisha ili utumie kwenye mchoro. Katika mfano hapa chini, data ya joto na unyevu kutoka kwa DHT22 inatumiwa kwenye ukurasa rahisi wa wavuti:

# pamoja na "SPI.h" # pamoja na "Ethernet.h"

// kwa sensorer ya DHT22

# pamoja na "DHT.h" #fafanua DHTPIN 2 #fafanua DHTTYPE DHT22

// Ingiza anwani ya MAC na anwani ya IP ya mdhibiti wako hapa chini.

// Anwani ya IP itategemea mtandao wako wa ndani: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; Anwani ya IP (10, 1, 1, 77);

// Anzisha maktaba ya seva ya Ethernet

// na anwani ya IP na bandari unayotaka kutumia // (bandari 80 ni chaguo-msingi kwa HTTP): Seva ya EthernetServer (125); DHT dht (DHTPIN, DHTTYPE);

kuanzisha batili ()

{dht. kuanza (); // Fungua mawasiliano ya serial na subiri bandari ifunguliwe: Serial.begin (9600); wakati (! Serial) {; // subiri bandari ya serial kuungana. Inahitajika kwa Leonardo tu} // kuanza unganisho la Ethernet na seva: Ethernet.anza (mac, ip); anza (); Serial.print ("seva iko"); Serial.println (Ethernet.localIP ()); }

kitanzi batili ()

{// sikiliza wateja wanaoingia EthernetClient mteja = server.available); ikiwa (mteja) {Serial.println ("mteja mpya"); // ombi la http linaisha na laini tupu ya boolean currentLineIsBlank = kweli; wakati (mteja.meunganishwa ()) {ikiwa (mteja anapatikana ()) {char c = mteja.soma (); Serial.write (c); // ikiwa umefikia mwisho wa mstari (umepokea herufi mpya ya // /) na laini haina tupu, ombi la http limeisha, // ili uweze kutuma jibu ikiwa (c == 'n' && currentLineIsBlank) {// tuma mteja wa kawaida wa kichwa cha majibu ya http.println ("HTTP / 1.1 200 OK"); mteja.println ("Aina ya Maudhui: maandishi / html"); mteja.println ("Uunganisho: funga"); // unganisho litafungwa baada ya kukamilika kwa mteja wa majibu.println ("Refresh: 30"); // onyesha upya ukurasa moja kwa moja kila mteja wa sekunde 30.println (); mteja.println ("");

mteja.println ("");

// pata data kutoka kwa sensorer ya DHT22

kuelea h = dht.read Humidity (); kuelea t = dht. soma Joto (); Serial.println (t); Serial.println (h);

// kutoka hapa tunaweza kuingiza nambari yetu ya HTML kuunda ukurasa wa wavuti

alama ya mteja ( Ofisi ya Hali ya Hewa

Joto la ofisi - );

alama ya mteja (t);

alama ya mteja ( digrii Celsius

);

alama ya mteja ("

Unyevu - );

alama ya mteja (h);

alama ya mteja ( asilimia

);

alama ya mteja ("

Ukurasa huburudisha kila sekunde 30 <

. );

kuvunja;

} ikiwa (c == 'n') {// unaanza laini mpya ya sasaLineIsBlank = kweli; } vingine ikiwa (c! = 'r') {// umepata tabia kwenye laini ya sasa ya sasaLineIsBlank = uwongo; }}} // mpe kivinjari muda wa kupokea ucheleweshaji wa data (1); // funga unganisho: mteja.acha (); Serial.println ("mteja ameondolewa"); }}

Ni marekebisho ya mchoro wa mfano wa seva ya wavuti ya IDE ambayo tulitumia hapo awali - na marekebisho machache. Kwanza, ukurasa wa wavuti utaburudisha kiatomati kila sekunde 30 - kigezo hiki kimewekwa kwenye laini:

mteja.println ("Onyesha upya: 30"); // onyesha upya ukurasa moja kwa moja kila sekunde 30

… Na HTML ya kawaida ya ukurasa wetu wa wavuti huanza chini ya mstari:

// kutoka hapa tunaweza kuingiza nambari yetu ya HTML kuunda ukurasa wa wavuti

Basi unaweza kuingiza tu HTML zinazohitajika ndani ya kazi za mteja.print () kuunda mpangilio unaohitaji. Mwishowe - hapa kuna mfano wa picha ya mfano wa mchoro wa mfano kazini.

Kwa hivyo unayo, njia nyingine muhimu ya kuwa na Arduino yako ingiliane na ulimwengu wa nje. Chapisho hili linaletwa kwako na pmdway.com - kila kitu kwa watengenezaji na wapenda umeme, na uwasilishaji wa bure ulimwenguni.

Ilipendekeza: