Mündəricat:

Arduino və Ethernet ilə işə başlayın: 8 addım
Arduino və Ethernet ilə işə başlayın: 8 addım

Video: Arduino və Ethernet ilə işə başlayın: 8 addım

Video: Arduino və Ethernet ilə işə başlayın: 8 addım
Video: Управляем адресными светодиодами на ESP32, прошивка WLED, применение в Home Assistant 2024, Iyul
Anonim
Arduino və Ethernet ilə işə başlayın
Arduino və Ethernet ilə işə başlayın

Arduino, simli Ethernet bağlantısı ilə xarici dünya ilə asanlıqla əlaqə qura bilər. Başlamazdan əvvəl, kompüterləri RJ45 kabelləri ilə bir hub/routerə necə bağlayacağınız, IP və MAC ünvanının nə olduğunu və s. Bundan əlavə, burada Ethernet haqqında yaxşı bir qısa məlumat var.

Görüntüyə görə W5100 Ethernet nəzarətçi IC -ni (hamısı) istifadə edən bir Ethernet qalxanı olan bir Arduino Uno və ya uyğun bir lövhəyə ehtiyacınız olacaq.

Bundan əlavə, lövhəni xarici DC yuvası ilə gücləndirməlisiniz - W5100 IC, USB gücünün verə biləcəyindən daha çox cərəyan istifadə edir. 9V 1.5A fiş paketi/divar siğili kifayət edər.

Addım 1:

Şəkil
Şəkil

Nəhayət - qalxanların qızması - buna görə uzun müddət istifadədən sonra W5100 -ə toxunmamağa diqqət edin. Əmin olmadığınız halda - bu W5100 IC -dir.

Addım 2:

Ethernet ilə işləyən Arduino qurduqdan və xarici gücə qoşulduqdan sonra hər şeyin işlədiyini yoxlamaq yaxşıdır. Arduino IDE -ni açın və Fayl> Nümunələr> Ethernet> Veb serveri seçin. Bu, veb brauzerdəki analoq girişlərdən toplanan məlumatları əks etdirəcək sadə bir eskiz yükləyir. Ancaq hələ yükləməyin, kiçik bir dəyişikliyə ehtiyacı var.

Eskizin içərisində olan Ethernet qalxanının IP ünvanını göstərməlisiniz. Bu sadədir, xəttə keçin:

IP ünvanı IP (10, 1, 1, 77);

Və öz quruluşunuza uyğun olaraq dəyişdirin. Məsələn, evimizdə marşrutlaşdırıcının IP ünvanı 10.1.1.1, printer 10.1.1.50 və bütün kompüterlər aşağıdadır … 50. Beləliklə, xətti dəyişdirərək qalxan IP -ni 10.1.1.77 olaraq təyin edəcəyəm:

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

Ancaq yalnız bir qalxanınız varsa, buraxın. MAC ünvanınızın mövcud aparatınızla eyni olma ehtimalı statistik olaraq çox nadir ola bilər, buna görə onu dəyişdirmək üçün başqa bir vaxt olardı.

Addım 3:

Şəkil
Şəkil

Ancaq yalnız bir qalxanınız varsa, buraxın. MAC ünvanınızın mövcud qurğunuzla eyni olma ehtimalı, statistik olaraq çox nadir ola bilər, buna görə onu dəyişdirmək üçün başqa bir vaxt olardı.

Dəyişikliklər etdikdən sonra eskizi saxlayıb yükləyin. İndi bir veb brauzeri açın və eskizdə daxil etdiyiniz IP ünvanına gedin və görüntüyə bənzər bir şey təqdim edilməlidir.

Nə baş verir?

Arduino, analoq girişlərlə ölçülən dəyərləri olan sadə bir veb səhifəsi təqdim etmək üçün proqramlaşdırılmışdır. Yenilənmiş dəyərləri əldə etmək üçün brauzeri yeniləyə bilərsiniz. Bu nöqtədə - Ethernet qalxanlarının 10 ~ 13 rəqəmsal pinlərdən istifadə etdiyini unutmayın, buna görə də bunları başqa bir şey üçün istifadə edə bilməzsiniz. Bəzi Arduino Ethernet ekranlarında başqa bir rəqəmsal pin istifadə edən bir microSD kart yuvası da ola bilər - bu səbəbdən hansının olduğunu öyrənmək üçün sənədlərlə tanış olun.

Addım 4:

Buna baxmayaraq, indi Ethernet qalxanının işlədiyini görə bildiyimiz üçün daha faydalı bir işə keçə bilərik. Əvvəlki nümunəni sadə bir şəkildə təhlil edək və daha maraqlı məlumatları şəbəkə üzərindən necə paylaya və göstərə biləcəyimizi görək. Məlumat üçün bildirək ki, Ethernet ilə əlaqəli bütün funksiyalar Ethernet Arduino kitabxanası tərəfindən idarə olunur. Bir az əvvəl istifadə etdiyimiz eskizi araşdırsanız, maraqlı olacaq bölmə:

for (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("analoq giriş"); client.print (analogChannel); client.print ("is"); müştəri çapı (sensorReading); müştəri.println (""); } client.println ("");

İnşallah eskizin bu bölməsi tanış olmalıdır - serial.print () istifadə etdiyimizi xatırlayın; keçmişdə serial monitor qutusuna məlumat göndərərkən? İndi eyni şeyi edə bilərik, ancaq Ethernet qalxanımızdan məlumatları yenidən veb brauzerə göndəririk - başqa sözlə desək çox sadə bir veb səhifəsi. oxunaqlı formatda çıxış - HTML kodu. Mən veb sayt hazırlayıcısı deyiləm (!), Buna görə də HTML -ni çox araşdırmayacağam.

Ancaq Arduino və s. İlə gözəl formatlı veb səhifələrə xidmət etmək istəyirsinizsə, burada yaxşı bir başlanğıc olar. Sadəlik baxımından aşağıdakı iki funksiya ən faydalı olacaq:

client.print ("is");

Client.print (); mətn və ya məlumatları yenidən veb səhifəyə göndərməyimizə imkan verir. Serial.print () ilə eyni şəkildə işləyir, buna görə də yeni bir şey yoxdur. Məlumat növünü serial.print () ilə eyni şəkildə təyin edə bilərsiniz. Təbii olaraq məlumatları geri göndərmək üçün də istifadə edə bilərsiniz. Digər faydalı xətt:

müştəri.println ("");

HTML kodunu veb brauzerinə yenidən göndərərək yeni bir sətir başlatmasını bildirir. Daşıyıcının geri dönməsinə/yeni xəttinə səbəb olan hissə

yeni bir xətt üçün bir HTML kodu (və ya "etiket").

Beləliklə, daha ətraflı veb səhifələr yaradırsınızsa, client.print () -ə digər HTML etiketlərini əlavə edə bilərsiniz. bəyanat. HTML əmrləri haqqında daha çox öyrənmək istəyirsinizsə, burada yaxşı bir dərs saytı var.

Nəhayət - nəzərə alın ki, eskiz məlumatları yalnız tələb olunduqda, yəni veb brauzerdən sorğu aldıqda göndərəcəkdir.

Addım 5: Arduino -ya İnternetdən daxil olmaq

Arduino -ya İnternetdən daxil olmaq
Arduino -ya İnternetdən daxil olmaq

İndiyə qədər - çox yaxşı. Bəs Arduino -ya yerli şəbəkədən kənarda daxil olmaq istəyirsinizsə nə etməli?

Statik bir IP ünvanınıza ehtiyacınız olacaq - yəni internet xidmət təminatçınızın bağlantınıza təyin etdiyi IP ünvanı eyni qalmalıdır. Statik bir IP -yə sahib deyilsinizsə, modeminizi/yönlendiricinizi IP -də daimi olaraq tərk etdiyiniz müddətcə dəyişməməlidir. Ancaq bu, optimal həll deyil.

İnternet provayderiniz sizə heç bir statik IP təklif edə bilmirsə, Dinamik DNS təklif edən bir təşkilatdan istifadə edərək layihəni davam etdirə bilərsiniz. Bu təşkilatlar sizə nömrə əvəzinə öz statik IP host adınızı (məsələn, mojo.monkeynuts.com) təklif edir, dəyişən IP ünvanınızı izləyin və yeni host adına bağlayın. Toplaya bildiyimə görə, modeminizin bu DDNS xidmətlərini dəstəkləməsi lazımdır (…

Nümunə olaraq iki şirkət No-IP vəDynDNS.com-dur. Diqqət yetirin ki, bu ikisini istifadə etməmişəm, sadəcə nümunə olaraq təqdim olunur. İndi IP ünvanınızı tapmaq üçün… ümumiyyətlə bunu yönlendiricinizin idarəetmə səhifəsinə daxil olaraq tapmaq olar - adətən 192.168.0.1 -dir, lakin fərqli ola bilər. Təchizatçınızla və ya ISP ilə təchizatı təmin etdiklərini yoxlayın. Bu nümunə üçün, bir veb brauzerə 10.1.1.1 daxil etsəm və modem idarəetmə şifrəmi daxil etdikdən sonra, aşağıdakı ekran görüntüyə uyğun olaraq təqdim olunur.

Addım 6:

Şəkil
Şəkil

Axtardığınız şey yuxarıdakı şəkildə gördüyünüz kimi WAN IP ünvanınızdır. Zarafatçıları uzaq tutmaq üçün bəzi ünvanlarımı qaraladım.

Növbəti şey liman yönləndirməsini aktivləşdirməkdir. Bu, yönlendiriciyə xarici dünyadan daxil olan sorğuların hara yönləndiriləcəyini bildirir. Modem belə bir istək aldıqda, bu sorğunu Ethernet qalxanının liman nömrəsinə göndərmək istəyirik. İstifadə edərək:

EthernetServer serveri (125);

eskizimizdəki funksiya port nömrəsini 125 olaraq təyin etdi. Hər modemin konfiqurasiya ekranı fərqli görünəcək, ancaq burada nümunə olaraq şəkildən biri var.

Addım 7:

Şəkil
Şəkil

Beləliklə, yuxarıdakı şəkildəki bir nömrəli xəttdən görə bilərsiniz ki, daxil olan port nömrələri 125, Ethernet qalxanının IP ünvanı isə 10.1.1.77 olaraq təyin edilmişdir - eskizdə olduğu kimi.

Ayarları saxladıqdan sonra hamımız hazırıq. Ethernet qalxanımın xarici ünvanı WAN olacaq: 125, buna görə də Arduinoya daxil olmaq üçün WAN ünvanımı: 125 ilə uzaqdakı veb cihazının brauzerinə yazacağam və evdəki tənha Ethernet avadanlığı ilə əlaqə quracaq.

Bundan əlavə, 125 portunun daxil olan sorğulara "açıq" olmasına icazə vermək üçün modeminizin təhlükəsizlik duvarı parametrlərini dəyişdirməyiniz lazım ola bilər. Bunun necə ediləcəyi haqqında daha çox məlumat üçün zəhmət olmasa modem sənədlərinizi yoxlayın. İndi əsasən pulsuz dünyada İnternetə bağlı hər hansı bir cihazdan, WAN və port nömrəmi URL sahəsinə daxil edib nəticələrini ala bilərəm. Məsələn, LTE mobil məlumatları ilə İnternetə qoşulduqda bir telefondan.

Beləliklə, bu mərhələdə məlumatları Arduino -nun yaratdığı sadə bir veb səhifədə göstərə və məhdudiyyətsiz İnternet bağlantısı olan hər yerdən əldə edə bilərsiniz. Əvvəlki Arduino biliyinizlə, indi sensorlardan və ya bir eskizin digər hissələrindən olan məlumatlardan istifadə edə və əldə etmək üçün göstərə bilərsiniz.

Addım 8: Veb səhifədə sensor məlumatlarının göstərilməsi

Veb səhifədə sensor məlumatlarının göstərilməsi
Veb səhifədə sensor məlumatlarının göstərilməsi

Veb səhifədə sensor məlumatlarının göstərilməsinə nümunə olaraq, ucuz və populyar bir temperatur və rütubət sensoru - DHT22 -dən istifadə edək. Bu səhifədə tapa biləcəyiniz DHT22 Arduino kitabxanasını qurmalısınız. DHT22 ilə ilk dəfədirsə, necə işlədiyini başa düşmək üçün kitabxanaya daxil olan nümunə eskizini sınayın.

DHT22 -ni məlumat piniylə Arduino D2 -yə, Vin -i 5V pininə və GND -ni… GND -ə bağlayın. İndi eskizimiz üçün - bir veb səhifədə temperatur və rütubəti göstərmək. HTML -də deyilsinizsə, kodu yaratmaq üçün bu kimi onlayn xidmətlərdən istifadə edə bilərsiniz, sonra da eskizdə istifadə etmək üçün dəyişdirə bilərsiniz. Aşağıdakı nümunədə, DHT22 -dən alınan temperatur və rütubət məlumatları sadə bir veb səhifədə verilir:

#"SPI.h" daxil et "Ethernet.h" daxil et

// DHT22 sensoru üçün

#"DHT.h" daxil edin #DHTPIN 2 təyin edin #DHTTYPE DHT22 təyin edin

// Aşağıdakı nəzarətçiniz üçün bir MAC ünvanı və IP ünvanı daxil edin.

// IP ünvanı yerli şəbəkənizdən asılı olacaq: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IP ünvanı IP (10, 1, 1, 77);

// Ethernet server kitabxanasını işə salın

// istifadə etmək istədiyiniz IP ünvanı və portu ilə // (port 80 HTTP üçün standartdır): EthernetServer serveri (125); DHT dht (DHTPIN, DHTTYPE);

boş quraşdırma ()

{dht.begin (); // Serial əlaqələri açın və portun açılmasını gözləyin: Serial.begin (9600); while (! Serial) {; // serial portunun bağlanmasını gözləyin. Yalnız Leonardo üçün lazımdır} // Ethernet bağlantısını və serveri işə salın: Ethernet.begin (mac, ip); server.begin (); Serial.print ("server var"); Serial.println (Ethernet.localIP ()); }

boşluq döngəsi ()

{// gələn müştəriləri dinləyin EthernetClient müştəri = server.available (); if (müştəri) {Serial.println ("yeni müştəri"); // bir http sorğusu boş bir sətirlə bitir boolean currentLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (c); // sətrin sonuna çatmısınızsa (yeni bir sətir // xarakter almışsınızsa) və sətir boşdursa, http sorğusu sona çatdı, // buna görə də cavab göndərə bilərsiniz (c == 'n' && currentLineIsBlank) {// standart http cavab başlığı göndərmək client.println ("HTTP/1.1 200 OK"); client.println ("Məzmun növü: mətn/html"); client.println ("Bağlantı: yaxın"); // client.println cavabı tamamlandıqdan sonra əlaqə bağlanacaq ("Yeniləyin: 30"); // hər 30 saniyədə bir səhifəni avtomatik olaraq yeniləyin client.println (); müştəri.println ("");

müştəri.println ("");

// DHT22 sensorundan məlumat əldə edin

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

// buradan veb səhifəsi yaratmaq üçün öz HTML kodumuzu daxil edə bilərik

client.print ( Ofis Hava

Ofis istiliyi - );

müştəri çapı (t);

client.print ( Selsi dərəcə

);

client.print ("

Rütubət - );

müştəri çapı (h);

client.print ( yüzdə

);

client.print ("

Səhifə hər 30 saniyədə bir yenilənir <

. );

fasilə;

} if (c == 'n') {// yeni bir sətir başlayırsınız currentLineIsBlank = doğru; } else if (c! = 'r') {// cari sətirdə bir xarakter əldə etmisiniz currentLineIsBlank = false; }}} // veb brauzerinə məlumat gecikməsini almaq üçün vaxt verin (1); // əlaqəni bağlayın: client.stop (); Serial.println ("müştəri əlaqəsi kəsildi"); }}

Daha əvvəl istifadə etdiyimiz IDE veb -server nümunə eskizinin bir neçə dəyişikliklə dəyişdirilməsi. Birincisi, veb səhifəsi hər 30 saniyədə avtomatik olaraq yenilənir - bu parametr sətirdə təyin olunur:

client.println ("Yenile: 30"); // hər 30 saniyədə səhifəni avtomatik yeniləyin

… Və veb səhifəmiz üçün xüsusi HTML xəttin altından başlayır:

// buradan veb səhifəsi yaratmaq üçün öz HTML kodumuzu daxil edə bilərik

Lazım olan düzeni yaratmaq üçün lazımi HTML -ni client.print () funksiyalarının içərisinə daxil edə bilərsiniz. Nəhayət - iş yerində nümunə eskizinin ekran görüntüsü nümunəsi.

Arduino'nun xarici dünya ilə qarşılıqlı əlaqədə olmasının başqa bir faydalı yolu var. Bu yazı pmdway.com tərəfindən sizə təqdim olunur - istehsalçılar və elektronika həvəskarları üçün hər şey pulsuz çatdırılır.

Tövsiyə: