Агуулгын хүснэгт:

Arduino болон Ethernet -ийг эхлүүлэх нь: 8 алхам
Arduino болон Ethernet -ийг эхлүүлэх нь: 8 алхам

Видео: Arduino болон Ethernet -ийг эхлүүлэх нь: 8 алхам

Видео: Arduino болон Ethernet -ийг эхлүүлэх нь: 8 алхам
Видео: 🌎 Просто о том, как за 8 минут сделать WEB-сервер для Arduino на Ethernet shield W5100 своими руками 2024, Долдугаар сарын
Anonim
Arduino болон Ethernet -ийг ашиглаж эхлэх нь
Arduino болон Ethernet -ийг ашиглаж эхлэх нь

Таны Arduino нь утастай Ethernet холболтоор гадаад ертөнцтэй амархан харилцах боломжтой. Гэсэн хэдий ч эхлэхээс өмнө та компьютерийг сүлжээний талаар үндсэн ойлголттой болсон байх ёстой, тухайлбал компьютерийг RJ45 кабелиар төв/чиглүүлэгчтэй холбох, IP ба MAC хаяг гэж юу вэ гэх мэт. Цаашилбал, Ethernet -ийн талаархи сайн тоймыг энд оруулав.

Зургийн дагуу W5100 Ethernet хянагч IC (бараг бүгдээрээ) ашигладаг Ethernet бамбайтай Arduino Uno эсвэл нийцтэй самбар хэрэгтэй болно.

Цаашилбал, та самбарыг гадаад DC залгуураар тэжээх хэрэгтэй болно - W5100 IC нь USB тэжээлээс илүү их гүйдэл ашигладаг. 9V 1.5A залгуурын багц/ханын warts хангалттай байх болно.

1-р алхам:

Зураг
Зураг

Эцэст нь бамбай нь халууцдаг тул удаан хугацаагаар хэрэглэсний дараа W5100 -т хүрэхээс болгоомжил. Хэрэв та итгэлгүй байгаа бол энэ бол W5100 IC юм.

Алхам 2:

Ethernet-ийг идэвхжүүлсэн Arduino-ийг аваад гадаад хүчийг холбосны дараа бүх зүйл ажиллаж байгааг шалгах нь зүйтэй юм. Arduino IDE -ийг нээгээд Файл> Жишээ> Ethernet> Вэб серверийг сонгоно уу. Энэ нь вэб хөтөч дээрх аналог оролтоос цуглуулсан өгөгдлийг харуулах энгийн тоймыг нээдэг. Гэсэн хэдий ч үүнийг одоохондоо бүү оруулаарай, бага зэрэг өөрчлөлт оруулах шаардлагатай байна.

Та ноорог дотор хийсэн Ethernet бамбайны IP хаягийг зааж өгөх хэрэгтэй. Энэ бол энгийн зүйл, мөр рүү очно уу.

IP хаяг IP (10, 1, 1, 77);

Мөн үүнийг өөрийн тохиргоонд нийцүүлэн өөрчилнө үү. Жишээлбэл, манай гэрт чиглүүлэгчийн IP хаяг 10.1.1.1, принтер нь 10.1.1.50, бүх компьютерууд… 50 -аас доош байна. Тиймээс би бамбай IP -аа 10.1.1.77 болгож мөрийг дараах байдлаар өөрчилнө.

байт mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

Гэсэн хэдий ч хэрэв танд ганцхан бамбай байгаа бол түүнийг орхи. Статистикийн хувьд MAC хаягаа одоо байгаа тоног төхөөрөмжтэйгөө адилхан авах магадлал маш бага байж магадгүй тул үүнийг өөрчлөх өөр цаг үе байх болно.

Алхам 3:

Зураг
Зураг

Гэсэн хэдий ч хэрэв танд ганцхан бамбай байгаа бол түүнийг орхи. Статистикийн хувьд MAC хаягийг одоо байгаа тоног төхөөрөмжтэйгөө адилхан авах магадлал маш бага байж магадгүй тул үүнийг өөрчлөх өөр цаг үе байх болно.

Өөрчлөлт хийснийхээ дараа ноорогоо хадгалаад байршуулна уу. Одоо вэб хөтөчийг нээгээд ноорог дээр оруулсан IP хаягаа оруулна уу, танд зурагтай төстэй зүйлийг үзүүлэх болно.

Юу болоод байна?

Arduino нь аналог оролтоор хэмжигдэх утгууд бүхий энгийн вэб хуудсыг санал болгохоор програмчлагдсан болно. Та шинэчлэгдсэн утгыг авахын тулд хөтчийг сэргээж болно. Энэ үед Ethernet бамбай нь 10 ~ 13 дижитал тээглүүр ашигладаг тул та үүнийг өөр зүйлд ашиглах боломжгүй гэдгийг анхаарна уу. Зарим Arduino Ethernet бамбай нь бас өөр дижитал зүү ашигладаг microSD картны сокеттай байж болох тул аль нэгийг нь олж мэдэхийн тулд баримт бичгийг шалгаарай.

Алхам 4:

Гэсэн хэдий ч одоо бид Ethernet бамбай ажиллаж байгааг олж хараад илүү ашигтай зүйл рүү шилжиж болно. Өмнөх жишээг энгийн байдлаар задлан шинжилж, илүү сонирхолтой өгөгдлийг сүлжээгээр хэрхэн түгээх, харуулахыг үзье. Лавлахын тулд Ethernet-тэй холбоотой бүх функцийг Ethernet Arduino номын сан хариуцдаг. Хэрэв та бидний саяхан ашигласан өмнөх ноорогыг судалж үзвэл сонирхолтой хэсэг нь:

for (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("аналог оролт"); client.print (analogChannel); client.print ("is"); клиент.хэвлэх (sensorReading); client.println (""); } client.println ("");

Ноорогны энэ хэсэг танил болсон байх гэж найдаж байна - бид serial.print () -ийг хэрхэн ашиглаж байсныг санаарай; Өмнө нь цуваа дэлгэцийн хайрцагт өгөгдөл илгээх үед? За, одоо бид ижил зүйлийг хийж чадна, гэхдээ Ethernet бамбайгаасаа өгөгдлийг вэб хөтөч рүү илгээх, өөрөөр хэлбэл вэб хуудасны маш энгийн төрөл. Гэсэн хэдий ч форматлахын тулд сурахыг хүсэж байгаа эсвэл хүсэхгүй байгаа зүйлүүд байдаг. унших форматтай гаралт - HTML код. Би вэбсайт хөгжүүлэгч биш (!) Тул HTML -ийг хэт их судлахгүй.

Гэсэн хэдий ч хэрэв та Arduino гэх мэт сайхан форматтай вэб хуудсуудыг ашиглахыг хүсч байвал энд маш сайн эхлэл байх болно. Энгийн байдлын үүднээс дараахь хоёр функц хамгийн ашигтай байх болно.

client.print ("is");

Client.print (); текст эсвэл өгөгдлийг вэб хуудас руу буцааж илгээх боломжийг бидэнд олгодог. Энэ нь serial.print () -тэй адил ажилладаг тул шинэ зүйл байхгүй. Та өгөгдлийн төрлийг serial.print () -тэй ижил аргаар зааж өгч болно. Мэдээжийн хэрэг та үүнийг ашиглан өгөгдлийг буцааж илгээх боломжтой. Өөр ашигтай мөр бол:

client.println ("");

HTML кодыг вэб хөтөч рүү буцааж илгээж шинэ мөр эхлүүлэхийг хэлнэ. Тэргэнцэр буцах/шинэ шугамыг жинхэнэ утгаар нь үүсгэдэг хэсэг нь

Энэ нь шинэ мөрийн HTML код (эсвэл "таг") юм.

Хэрэв та илүү нарийвчилсан вэб хуудасны дэлгэц үүсгэж байгаа бол өөр HTML хаягийг client.print () дээр оруулах боломжтой. мэдэгдэл. Хэрэв та HTML командуудын талаар илүү ихийг мэдэхийг хүсч байвал сайн зааварчилгааны сайт энд байна.

Эцэст нь хэлэхэд, ноорог нь өгөгдлийг зөвхөн хүссэн үедээ, өөрөөр хэлбэл вэб хөтчөөс хүсэлт хүлээн авах үед л илгээнэ гэдгийг анхаарна уу.

Алхам 5: Arduino -тойгоо интернетээр холбогдоорой

Arduino -гоо интернетээр дамжуулан үзэх
Arduino -гоо интернетээр дамжуулан үзэх

Одоогоор маш сайн. Гэхдээ хэрэв та Arduino -доо дотоод сүлжээнээс гадна хандахыг хүсвэл яах вэ?

Танд статик IP хаяг хэрэгтэй болно, өөрөөр хэлбэл таны интернет үйлчилгээ үзүүлэгчийн таны холболтод өгсөн IP хаяг хэвээр байх ёстой. Хэрэв танд статик IP байхгүй бол модем/чиглүүлэгчээ үүрд орхисон тохиолдолд таны IP өөрчлөгдөх ёсгүй. Гэсэн хэдий ч энэ нь оновчтой шийдэл биш юм.

Хэрэв таны ISP танд статик IP санал болгож чадахгүй бол та Динамик DNS санал болгодог байгууллагыг ашиглан төслийг үргэлжлүүлж болно. Эдгээр байгууллагууд танд дугаарын оронд өөрийн статик IP хост нэрийг (жишээ нь mojo.monkeynuts.com) санал болгож байгаа бөгөөд таны өөрчлөгдөж буй IP хаягийг хянаж, шинэ хостын нэртэй холбож өгнө үү. Миний цуглуулж чадах зүйлээс харахад таны модем эдгээр DDNS үйлчилгээг дэмжих шаардлагатай байна.

Жишээлбэл, No-IP баDynDNS.com гэсэн хоёр компани байна. Би эдгээр хоёрыг ашиглаагүй гэдгийг анхаарна уу, тэдгээрийг зөвхөн жишээ болгон санал болгож байна. Одоо, IP хаягаа олохын тулд … ихэвчлэн үүнийг чиглүүлэгчийнхээ удирдлагын хуудсанд нэвтрэн орж олж болно - энэ нь ихэвчлэн 192.168.0.1 боловч өөр байж болно. Тоног төхөөрөмжийг нийлүүлсэн эсэхийг ханган нийлүүлэгч эсвэл ISP -ээс шалгаарай. Жишээлбэл, хэрэв би вэб хөтөч дээр 10.1.1.1 гэж оруулаад, модемийн удирдлагын нууц үгээ оруулсны дараа зургийн дагуу дараах дэлгэцийг үзүүлэв.

Алхам 6:

Зураг
Зураг

Таны хайж буй зүйл бол таны WAN IP хаяг гэдгийг дээрх зургаас харж болно. Пранкеруудыг холдуулахгүйн тулд би хаягийнхаа зарим хэсгийг харлуулсан байна.

Дараагийн хийх зүйл бол порт дамжуулалтыг идэвхжүүлэх явдал юм. Энэ нь чиглүүлэгчид гадаад ертөнцөөс ирж буй хүсэлтийг хааш нь чиглүүлэхийг хэлж өгнө. Модем ийм хүсэлтийг хүлээн авмагц бид энэ хүсэлтийг Ethernet бамбайныхаа порт руу илгээхийг хүсч байна. Үүнийг ашиглан:

EthernetServer сервер (125);

Манай ноорог дээрх функц нь портын дугаарыг 125 болгож тохируулсан. Модем бүрийн тохиргооны дэлгэц өөр харагдах боловч энд жишээ болгон зурган дээр байгаа болно.

Алхам 7:

Зураг
Зураг

Та дээрх зурган дээрх 1 -р мөрөөс орж ирж буй портын дугаарыг 125, Ethernet бамбайны IP хаягийг 10.1.1.77 болгож зурсантай ижил болохыг харж болно.

Тохиргоог хадгалсны дараа бид бүгд бэлэн боллоо. Миний Ethernet бамбайны гадаад хаяг нь WAN: 125 байх болно, ингэснээр Arduino руу нэвтрэхийн тулд би WAN хаягаа: 125 -р хаягаар алсын вэб төхөөрөмжийн хөтөч рүү оруулаад гэртээ ганцаардах Ethernet тоног төхөөрөмжтэй холбогдох болно.

Цаашилбал, 125 портыг ирж буй хүсэлтэд "нээлттэй" байлгахын тулд та модемийнхоо галт ханын тохиргоог өөрчлөх шаардлагатай болж магадгүй юм. Үүнийг хэрхэн хийх талаар нэмэлт мэдээлэл авахын тулд модемийн баримт бичгээ шалгана уу. Чөлөөт ертөнцөд интернетэд холбогдсон ямар ч төхөөрөмжөөс би өөрийн WAN болон портын дугаарыг URL талбарт оруулаад үр дүнг нь хүлээн авах боломжтой. Жишээлбэл, LTE мобайл датагаар интернетэд холбогдсон үед утаснаас.

Тиймээс энэ үе шатанд та өөрийн Arduino -ийн үүсгэсэн энгийн вэб хуудсан дээрх өгөгдлийг харуулах боломжтой бөгөөд хаанаас ч интернетэд хязгааргүй нэвтрэх боломжтой. Өмнөх Arduino -ийн мэдлэгээр та одоо мэдрэгч эсвэл ноорогны бусад хэсгүүдийн өгөгдлийг ашиглаж, татаж авахын тулд харуулах боломжтой болно.

Алхам 8: Мэдрэгчийн өгөгдлийг вэб хуудсан дээр харуулах

Мэдрэгчийн мэдээллийг вэб хуудсан дээр харуулах
Мэдрэгчийн мэдээллийг вэб хуудсан дээр харуулах

Мэдрэгчийн өгөгдлийг вэб хуудсан дээр харуулах жишээ болгон хямд, түгээмэл хэрэглэгддэг температур, чийгшлийн мэдрэгч DHT22 -ийг ашиглацгаая. Та энэ хуудсан дээрээс олж болох DHT22 Arduino номын санг суулгах хэрэгтэй болно. Хэрэв та DHT22 -ийг анх удаа ашиглаж байгаа бол номын санд орсон жишээг зургаар туршиж үзээрэй, ингэснээр энэ нь хэрхэн ажилладагийг ойлгох болно.

DHT22 -ийг өгөгдлийн зүүгээр Arduino D2, Вин -ийг 5V зүү, GND -ийг… GND руу холбоно уу. Одоо манай ноорогны хувьд температур, чийгшлийг вэб хуудсан дээр харуулах болно. Хэрэв та HTML -г мэдэхгүй бол кодыг үүсгэхийн тулд ийм онлайн үйлчилгээг ашиглаж болно, дараа нь үүнийг ноорог дээр ашиглахын тулд өөрчилж болно. Доорх жишээн дээр DHT22 -ийн температур, чийгшлийн мэдээллийг энгийн вэб хуудсан дээр байрлуулна.

#"SPI.h" оруулах#"Ethernet.h" оруулах

// DHT22 мэдрэгчийн хувьд

#"DHT.h" оруулах #DHTPIN 2 тодорхойлох #DHTTYPE DHT22 тодорхойлох

// Хянагчийнхаа MAC хаяг болон IP хаягийг доор оруулна уу.

// IP хаяг нь таны дотоод сүлжээнээс хамаарна: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IP хаяг IP (10, 1, 1, 77);

// Ethernet серверийн номын санг эхлүүлэх

// ашиглахыг хүсч буй IP хаяг, портоор // (порт 80 нь HTTP -д анхдагчаар тохируулагдсан): EthernetServer сервер (125); DHT dht (DHTPIN, DHTTYPE);

хүчингүй тохиргоо ()

{dht.begin (); // Цуваа холболтыг нээж, порт нээгдэхийг хүлээнэ үү: Serial.begin (9600); while (! Цуваа) {; // цуваа порт холбогдохыг хүлээнэ үү. Зөвхөн Леонардод хэрэгтэй} // Ethernet холболт ба серверийг эхлүүлэх: Ethernet.begin (mac, ip); server.begin (); Serial.print ("сервер байгаа"); Serial.println (Ethernet.localIP ()); }

хоосон давталт ()

{// ирж буй үйлчлүүлэгчдийг сонсох EthernetClient client = server.available (); if (үйлчлүүлэгч) {Serial.println ("шинэ үйлчлүүлэгч"); // http хүсэлт нь хоосон мөрөөр дуусна boolean currentLineIsBlank = үнэн; while (client.connected ()) {if (client.available ()) {char c = client.read (); Цуваа бичих (c); // хэрэв та мөрийн төгсгөлд хүрсэн бол (шинэ мөр хүлээн авсан // тэмдэгт), мөр хоосон байвал http хүсэлт дууссан, // хэрэв та (c == 'n' && currentLineIsBlank) {// стандарт http хариултын толгой client.println илгээх ("HTTP/1.1 200 OK"); client.println ("Агуулгын төрөл: текст/html"); client.println ("Холболт: хаах"); // client.println ("Шинэчлэх: 30") хариулт дууссаны дараа холболт хаагдах болно; // 30 секунд тутамд хуудсыг автоматаар шинэчлэх client.println (); client.println ("");

client.println ("");

// DHT22 мэдрэгчээс мэдээлэл авах

float h = dht.readHumidity (); float t = dht.readTemperature (); Serial.println (t); Serial.println (h);

// эндээс бид өөрсдийн HTML кодыг оруулж вэб хуудас үүсгэж болно

client.print ( Оффисын цаг агаар

Оффисын температур - );

үйлчлүүлэгч.хэвлэх (t);

client.print ( Цельсийн градус

);

client.print ("

Чийгшил - );

үйлчлүүлэгч.хэвлэх (h);

client.print ( хувь

);

client.print ("

Хуудас 30 секунд тутамд шинэчлэгддэг <

. );

завсарлага;

} if (c == 'n') {// та шинэ мөр эхлүүлж байгаа currentLineIsBlank = true; } else if (c! = 'r') {// та одоогийн мөрөнд тэмдэгт авсан currentLineIsBlank = false; }}} // вэб хөтчид өгөгдлийн саатлыг хүлээн авах хугацаа өгөх (1); // холболтыг хаах: client.stop (); Serial.println ("үйлчлүүлэгч салгагдсан"); }}

Энэ бол бидний өмнө нь ашиглаж байсан IDE -ийн вэб серверийн жишээг зургийн хэд хэдэн өөрчлөлтөөр хийсэн өөрчлөлт юм. Нэгдүгээрт, вэб хуудас 30 секунд тутамд автоматаар шинэчлэгдэх болно - энэ параметрийг мөрөнд тохируулна.

client.println ("Шинэчлэх: 30"); // 30 секунд тутамд хуудсыг автоматаар шинэчилнэ

… Мөн манай вэб хуудасны захиалгат HTML нь шугамын доор эхэлнэ.

// эндээс бид өөрсдийн HTML кодыг оруулж вэб хуудас үүсгэж болно

Та дараа нь ердөө л шаардлагатай HTML форматыг клиент.print () функц дотор оруулж, өөрт хэрэгтэй зохион байгуулалтыг хийж болно. Эцэст нь ажлын жишээн дээр зурсан зургийн жишээг энд харуулав.

Эндээс та өөрийн Arduino -г гадаад ертөнцтэй харилцах өөр нэг ашигтай аргыг олж авах боломжтой бөгөөд энэхүү бичлэгийг pmdway.com сайтаас танд хүргэж байна.

Зөвлөмж болгож буй: