Mundarija:

Arduino va Ethernet -ni ishga tushirish: 8 qadam
Arduino va Ethernet -ni ishga tushirish: 8 qadam

Video: Arduino va Ethernet -ni ishga tushirish: 8 qadam

Video: Arduino va Ethernet -ni ishga tushirish: 8 qadam
Video: TIA Portal dasturi bilan Simatic S7 1200 kontrollerini bog'lash 2024, Noyabr
Anonim
Arduino va Ethernet bilan ishlashni boshlash
Arduino va Ethernet bilan ishlashni boshlash

Sizning Arduino tashqi dunyo bilan simli chekilgan ulanish orqali osongina aloqa o'rnatishi mumkin. Ishni boshlashdan oldin, siz kompyuter tarmoqlarini RJ45 kabellari bilan hub/routerga ulash, IP va MAC manzili va h.k. kabi bilimlarga ega bo'lasiz. Bundan tashqari, bu erda Ethernet haqida yaxshi xulosa.

Sizga Arduino Uno yoki Ethernet qalqoni bo'lgan mos keluvchi taxta kerak bo'ladi, u rasmda ko'rsatilgandek W5100 chekilgan IC tekshirgichini (deyarli barchasi) ishlatadi.

Bundan tashqari, siz platani tashqi shahar rozetkasi orqali quvvatlantirishingiz kerak bo'ladi - W5100 IC USB quvvatiga qaraganda ko'proq oqim sarflaydi. 9V 1.5A vilkasi to'plami/devor siğili etarli bo'ladi.

1 -qadam:

Rasm
Rasm

Nihoyat - qalqonlar qizib ketadi - shuning uchun ehtiyot bo'ling, uzoq vaqt ishlatilganidan keyin W5100 ga tegmang. Agar ishonchingiz komil bo'lmasa - bu W5100 IC.

2 -qadam:

Ethernet-ga ulangan Arduino-ni va tashqi quvvatni ulaganingizdan so'ng, uning ishlashini tekshirish yaxshidir. Arduino IDE -ni oching va Fayl> Misollar> Ethernet> Veb -server -ni tanlang. Bu oddiy eskizni yuklaydi, u veb -brauzerda analog kirishlardan yig'ilgan ma'lumotlarni ko'rsatadi. Ammo uni hali yuklamang, unga ozgina o'zgartirish kerak.

Ethernet qalqonining IP -manzilini ko'rsatish kerak - bu eskiz ichida amalga oshiriladi. Bu oddiy, chiziqqa o'ting:

IPAddress ip (10, 1, 1, 77);

Va uni o'zingizning sozlamalaringizga mos ravishda o'zgartiring. Masalan, bizning uyimizda yo'riqnoma IP -manzili 10.1.1.1, printer 10.1.1.50 va barcha shaxsiy kompyuterlar pastda … 50. Shunday qilib, men chiziqni o'zgartirib, qalqon IP -ni 10.1.1.77 ga o'rnataman:

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

Ammo agar sizda faqat bitta qalqon bo'lsa, uni qoldiring. MAC manzilini sizning mavjud uskunangiz bilan bir xil, statistik jihatdan kamdan -kam uchraydigan imkoniyat bo'lishi mumkin, shuning uchun uni o'zgartirishning boshqa vaqti bo'ladi.

3 -qadam:

Rasm
Rasm

Ammo agar sizda faqat bitta qalqon bo'lsa, uni qoldiring. MAC manzilini sizning mavjud uskunangiz bilan bir xil, statistik jihatdan kamdan -kam uchraydigan imkoniyat bo'lishi mumkin, shuning uchun uni o'zgartirishning boshqa vaqti bo'ladi.

O'zgartirish kiritgandan so'ng, eskizni saqlang va yuklang. Endi veb -brauzerni oching va eskizga kiritilgan IP -manzilga o'ting va sizga rasmga o'xshash narsa ko'rsatilishi kerak.

Nimalar bo'lyapti?

Arduino analog kirish bilan o'lchanadigan oddiy veb -sahifani taklif qilish uchun dasturlashtirilgan. Yangilangan qiymatlarni olish uchun siz brauzerni yangilashingiz mumkin, shuni yodda tutingki, Ethernet qalqonlari 10 ~ 13 raqamli pinlardan foydalanadi, shuning uchun ularni boshqa hech narsa uchun ishlata olmaysiz. Ba'zi Arduino Ethernet qalqonlarida microSD karta uyasi ham bo'lishi mumkin, u boshqa raqamli pinni ham ishlatadi - shuning uchun qaysi biri ekanligini bilish uchun hujjatlar bilan tanishib chiqing.

4 -qadam:

Shunday bo'lsa -da, endi biz Ethernet qalqoni ishlayotganini ko'rib, yanada foydali narsaga o'tishimiz mumkin. Keling, oldingi misolni oddiy tarzda ajratib olamiz va qanday qilib tarmoq orqali yanada qiziqarli ma'lumotlarni tarqatish va ko'rsatish mumkinligini ko'rib chiqamiz. Ma'lumot uchun, Ethernet bilan bog'liq barcha funktsiyalar Ethernet Arduino kutubxonasi tomonidan boshqariladi. Agar biz foydalangan oldingi eskizni ko'rib chiqsangiz, bizni qiziqtiradigan bo'lim:

uchun (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("analog kiritish"); client.print (analog kanal); client.print ("bu"); client.print (sensorReading); mijoz.println (""); } client.println ("");

Umid qilamanki, eskizning bu qismi tanish bo'lishi kerak - serial.print () dan qanday foydalanganimizni eslang; o'tmishda ketma -ket monitor qutisiga ma'lumotlar yuborilganda? Endi biz ham xuddi shunday qila olamiz, lekin ma'lumotlarni Ethernet qalqonimizdan veb -brauzerga yuboramiz, boshqacha aytganda, veb -sahifaning juda oddiy turi. o'qiladigan formatdagi chiqish - HTML kod. Men veb -sayt ishlab chiquvchisi emasman (!), Shuning uchun HTMLga juda ko'p kirmayman.

Agar siz Arduino va boshqalar bilan yaxshi formatlangan veb -sahifalarga xizmat ko'rsatishni xohlasangiz, bu yaxshi boshlanish bo'ladi. Oddiylik uchun quyidagi ikkita funktsiya eng foydali bo'ladi:

client.print ("bu");

Client.print (); matn yoki ma'lumotlarni veb -sahifaga qaytarish imkonini beradi. Bu serial.print () bilan bir xil ishlaydi, shuning uchun u erda hech qanday yangilik yo'q. Ma'lumot turini serial.print () bilan bir xil tarzda belgilashingiz mumkin. Tabiiyki, siz undan ma'lumotlarni qaytarish uchun ham foydalanishingiz mumkin. Boshqa foydali qator:

mijoz.println ("");

HTML kodini veb -brauzerga qaytaradi va unga yangi qatorni boshlashini bildiradi. Aravaning qaytishiga/yangi qatorga olib keladigan qism - bu

bu yangi satr uchun HTML kod (yoki "teg").

Shunday qilib, agar siz yanada aniq veb -sahifalar displeylarini yaratayotgan bo'lsangiz, client.print () ga boshqa HTML teglarini kiritishingiz mumkin; bayonot. Agar siz HTML buyruqlari haqida ko'proq bilmoqchi bo'lsangiz, bu erda yaxshi qo'llanma sayti.

Nihoyat - esda tutingki, eskiz ma'lumotlarni faqat so'ralgan vaqtda, ya'ni veb -brauzerdan so'rov olganida yuboradi.

5 -qadam: Arduino -ga Internet orqali kirish

Arduino -ga Internet orqali kirish
Arduino -ga Internet orqali kirish

Hozircha hammasi yaxshi. Agar siz Arduino -ga mahalliy tarmoqdan tashqarida kirishni xohlasangiz nima bo'ladi?

Sizga statik IP -manzil kerak bo'ladi, ya'ni Internet -provayderingiz sizning ulanishingizga belgilagan IP -manzili o'zgarishsiz qolishi kerak. Agar sizda statik IP bo'lmasa, modemingizni/yo'riqchingizni doimiy ravishda tark etsangiz, IP o'zgarmasligi kerak. Biroq, bu optimal echim emas.

Agar Internet -provayderingiz sizga statik IP -ni taklif qila olmasa, siz Dinamik DNS -ni taklif qiladigan tashkilot yordamida loyihani davom ettirishingiz mumkin. Bu tashkilotlar sizga raqam o'rniga o'z statik IP -xost nomingizni (masalan, mojo.monkeynuts.com) taklif qiladi, o'zgaruvchan IP -manzilingizni kuzatib boring va uni yangi xost nomi bilan bog'lang. Men yig'a oladigan narsalarga qaraganda, sizning modemingiz ushbu DDNS xizmatlarini qo'llab-quvvatlashi kerak (… uchun o'rnatilgan mijozi bo'lishi kerak).

Misol sifatida ikkita kompaniya-No-IP vaDynDNS.com. E'tibor bering, men bu ikkalasini ishlatmaganman, ular misol sifatida keltirilgan. Endi sizning IP -manzilingizni topish uchun… odatda, uni yo'riqnoma boshqaruv sahifasiga kirish orqali topish mumkin - bu odatda 192.168.0.1, lekin boshqacha bo'lishi mumkin. Yetkazib beruvchingiz yoki provayderingizdan qo'shimcha qurilmani etkazib berishlarini tekshiring. Misol uchun, agar men veb -brauzerga 10.1.1.1 ni kiritsam va modem ma'muriyati parolini kiritganimdan so'ng, rasmga muvofiq quyidagi ekran ko'rsatiladi.

6 -qadam:

Rasm
Rasm

Siz qidirayotgan narsa - sizning WAN IP -manzilingiz, yuqoridagi rasmda ko'rib turganingizdek. Pranksterlardan uzoqlashish uchun men o'z manzilimni qorong'i qilib qo'ydim.

Keyingi narsa-portni uzatishni yoqish. Bu yo'riqchiga tashqi dunyodan kelgan so'rovlarni qayerga yo'naltirish kerakligini aytadi. Modem bunday so'rovni olganida, biz bu so'rovni Ethernet qalqoni port raqamiga yubormoqchimiz. Foydalanish:

EthernetServer serveri (125);

Bizning eskizdagi funktsiya port raqamini 125 ga o'rnatdi. Har bir modemning konfiguratsion ekrani boshqacha ko'rinadi, lekin bu erda misol sifatida rasmda bitta.

7 -qadam:

Rasm
Rasm

Shunday qilib, siz yuqoridagi rasmdagi birinchi qatordan ko'rishingiz mumkinki, kiruvchi port raqamlari 125, Ethernet qalqoni IP -manzili 10.1.1.77 - eskizda bo'lgani kabi o'rnatilgan.

Sozlamalarni saqlagandan so'ng, biz tayyormiz. Mening chekilgan qalqonimning tashqi manzili WAN: 125 bo'ladi, shuning uchun Arduino -ga kirish uchun men o'zimning WAN manzilimni: 125 -sonli masofaviy veb -qurilmaning brauzeriga yozaman, u uydagi yolg'iz Ethernet uskunalari bilan bog'lanadi.

Bundan tashqari, 125 -port kiruvchi so'rovlar uchun "ochiq" bo'lishi uchun siz modemingizning xavfsizlik devori sozlamalarini o'zgartirishingiz kerak bo'lishi mumkin. Iltimos, buni qanday qilish haqida ko'proq ma'lumot olish uchun modem hujjatlarini tekshiring. Endi erkin dunyodagi Internetga ulangan har qanday qurilmadan men o'z WAN va port raqamimni URL maydoniga kiritib, natijalarni olishim mumkin. Masalan, LTE mobil ma'lumotlari orqali Internetga ulangan telefondan.

Shunday qilib, ushbu bosqichda siz Arduino tomonidan yaratilgan oddiy veb -sahifada ma'lumotlarni ko'rishingiz va Internetga cheklanmagan holda kirishingiz mumkin. Oldingi Arduino bilimingiz bilan endi siz sensorlardan yoki eskizning boshqa qismlaridan ma'lumotlarni ishlatishingiz va uni olish uchun ko'rsatishingiz mumkin.

8 -qadam: Sensor ma'lumotlarini veb -sahifada ko'rsatish

Sensor ma'lumotlarini veb -sahifada ko'rsatish
Sensor ma'lumotlarini veb -sahifada ko'rsatish

Sensor ma'lumotlarini veb -sahifada ko'rsatishga misol sifatida, arzon va mashhur harorat va namlik sensori - DHT22 dan foydalanaylik. Siz ushbu sahifada joylashgan DHT22 Arduino kutubxonasini o'rnatishingiz kerak bo'ladi. Agar siz DHT22 bilan birinchi marta bo'lsangiz, kutubxonaga kiritilgan namunaviy eskiz bilan tajriba o'tkazing, shunda uning qanday ishlashini tushunasiz.

DHT22 -ni ma'lumotlar pinli Arduino D2 -ga, Vinni 5V -ga va GND -ni… GND -ga ulang. Endi bizning eskizimiz uchun - harorat va namlikni veb -sahifada ko'rsatish. Agar siz HTML -ni bilmasangiz, siz kodni yaratish uchun onlayn xizmatlardan foydalanishingiz mumkin, keyin ularni eskizda ishlatishingiz mumkin. Quyidagi misolda DHT22 dan olingan harorat va namlik ma'lumotlari oddiy veb -sahifada taqdim etiladi:

#"SPI.h" ni kiriting#"Ethernet.h" ni qo'shing

// DHT22 sensori uchun

#"DHT.h" ni qo'shing #DHTPIN 2 ni belgilang #DHTTYPE DHT22 ni aniqlang

// Quyida tekshirgichingiz uchun MAC manzilini va IP manzilini kiriting.

// IP -manzil mahalliy tarmoqqa bog'liq bo'ladi: bayt mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip (10, 1, 1, 77);

// Ethernet serverlar kutubxonasini ishga tushiring

// ishlatmoqchi bo'lgan IP -manzil va port bilan // (HTTP uchun 80 -port standart): EthernetServer serveri (125); DHT dht (DHTPIN, DHTTYPE);

bo'sh o'rnatish ()

{dht.begin (); // Seriya aloqalarini oching va port ochilishini kuting: Serial.begin (9600); while (! Seriyali) {; // ketma -ket port ulanishini kuting. Faqat Leonardo uchun kerak} // Ethernet ulanishini va serverni ishga tushiring: Ethernet.begin (mac, ip); server.begin (); Serial.print ("server hozirda"); Serial.println (Ethernet.localIP ()); }

bo'sh halqa ()

{// kiruvchi mijozlarni tinglang EthernetClient client = server.available (); if (mijoz) {Serial.println ("yangi mijoz"); // http so'rovi bo'sh satr bilan tugaydi boolean currentLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (c); // agar siz satr oxirigacha etib kelgan bo'lsangiz (yangi satr // belgisini olgan bo'lsangiz) va bo'sh bo'lsa, http so'rovi tugadi, // shuning uchun siz javob yuborishingiz mumkin, agar (c == 'n' && currentLineIsBlank) {// standart http javob sarlavhasini client.println yuborish ("HTTP/1.1 200 OK"); client.println ("Kontent turi: matn/html"); client.println ("Ulanish: yopish"); // client.println ("Yangilash: 30") javobi tugagandan so'ng ulanish yopiladi; // har 30 soniyada sahifani avtomatik ravishda yangilang client.println (); mijoz.println ("");

mijoz.println ("");

// DHT22 sensoridan ma'lumotlarni oling

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

// bu yerdan veb -sahifani yaratish uchun o'z HTML kodimizni kiritishimiz mumkin

client.print ( Ofis ob -havo

Ish harorati - );

client.print (t);

client.print ( Selsiy bo'yicha daraja

);

client.print ("

Namlik - );

client.print (h);

client.print ( foiz

);

client.print ("

Sahifa har 30 soniyada yangilanadi <

. );

tanaffus;

} if (c == 'n') {// siz yangi qatorni boshlayapsiz currentLineIsBlank = true; } if if (c! = 'r') {// siz joriy chiziqdagi belgini oldingiz currentLineIsBlank = false; }}} // veb -brauzerga ma'lumotlarni kechiktirishini olish uchun vaqt bering (1); // ulanishni yoping: client.stop (); Serial.println ("mijoz uzildi"); }}

Bu biz ilgari ishlatgan IDE veb -server namunasi eskizining modifikatsiyasi - bir nechta o'zgartirishlar bilan. Birinchidan, veb -sahifa har 30 soniyada avtomatik ravishda yangilanadi - bu parametr qatorda o'rnatiladi:

client.println ("Yangilash: 30"); // har 30 soniyada sahifani avtomatik ravishda yangilang

… va bizning veb -sahifamiz uchun maxsus HTML satrdan boshlanadi:

// bu yerdan veb -sahifani yaratish uchun o'z HTML kodimizni kiritishimiz mumkin

Kerakli tartibni yaratish uchun kerakli HTML -ni client.print () funktsiyalariga kiritishingiz mumkin. Oxirida - bu ish joyidagi eskizning namunaviy skrinshoti.

Demak, sizda Arduino tashqi dunyo bilan muloqot qilishning yana bir foydali usuli bor, bu xabarni sizga pmdway.com - ishlab chiqaruvchilar va elektronika ixlosmandlari uchun hamma narsa, butun dunyo bo'ylab bepul etkazib berish.

Tavsiya: