Isi kandungan:

Bermula dengan Arduino dan Ethernet: 8 Langkah
Bermula dengan Arduino dan Ethernet: 8 Langkah

Video: Bermula dengan Arduino dan Ethernet: 8 Langkah

Video: Bermula dengan Arduino dan Ethernet: 8 Langkah
Video: Tonton Sampai Habis !!! Belajar Arduino Di Jamin Bisa 2024, Julai
Anonim
Bermula dengan Arduino dan Ethernet
Bermula dengan Arduino dan Ethernet

Arduino anda dapat berkomunikasi dengan dunia luar dengan mudah melalui sambungan Ethernet berwayar. Namun sebelum kita mulai, akan diandaikan bahawa Anda memiliki pemahaman dasar tentang jaringan komputer, seperti pengetahuan tentang cara menghubungkan komputer ke hub / penghala dengan kabel RJ45, apa alamat IP dan MAC, dan sebagainya. Tambahan pula, inilah ikhtisar cepat yang baik mengenai Ethernet.

Anda memerlukan Arduino Uno atau papan serasi dengan pelindung Ethernet yang menggunakan IC pengawal Ethernet W5100 (hampir semuanya) seperti dalam gambar.

Anda juga perlu menyalakan papan melalui soket DC luaran - W5100 IC menggunakan lebih banyak arus daripada bekalan USB. Pek pasang 9V 1.5A / kutil dinding akan mencukupi.

Langkah 1:

Imej
Imej

Akhirnya - pelindung menjadi panas - jadi berhati-hatilah untuk tidak menyentuh W5100 setelah penggunaan lama. Sekiranya anda tidak pasti - ini adalah W5100 IC.

Langkah 2:

Setelah anda mempunyai Arduino berkemampuan Ethernet, dan menyambungkan kuasa luaran - ada baiknya anda menyemak semuanya berfungsi. Buka Arduino IDE dan pilih Fail> Contoh> Ethernet> Webserver. Ini memuat lakaran sederhana yang akan memaparkan data yang dikumpulkan dari input analog pada penyemak imbas web. Namun, jangan memuat naiknya, perlu sedikit pengubahsuaian.

Anda perlu menentukan alamat IP perisai Ethernet - yang dilakukan di dalam lakaran. Ini mudah, pergi ke talian:

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

Dan ubah agar sesuai dengan persediaan anda sendiri. Sebagai contoh, di rumah kami alamat IP penghala adalah 10.1.1.1, pencetak adalah 10.1.1.50 dan semua PC berada di bawah… 50. Oleh itu, saya akan menetapkan IP perisai saya ke 10.1.1.77 dengan mengubah garis ke:

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

Tetapi jika anda hanya mempunyai satu perisai biarkan saja. Mungkin ada peluang yang sangat, sangat statistik, mempunyai alamat MAC sama dengan perkakasan anda yang ada, jadi ini adalah masa lain untuk mengubahnya.

Langkah 3:

Imej
Imej

Tetapi jika anda hanya mempunyai satu perisai biarkan saja. Mungkin ada peluang yang sangat, sangat statistik, mempunyai alamat MAC sama dengan perkakasan anda yang ada, jadi ini adalah masa lain untuk mengubahnya.

Setelah membuat perubahan, simpan dan muat naik lakarannya. Sekarang buka penyemak imbas web dan arahkan ke alamat IP yang anda masukkan dalam lakaran, dan anda harus diberikan sesuatu yang serupa dengan gambar.

Apa yang sedang berlaku?

Arduino telah diprogramkan untuk menawarkan laman web sederhana dengan nilai-nilai yang diukur oleh input analog. Anda boleh memuat semula penyemak imbas untuk mendapatkan nilai yang dikemas kini. Pada ketika ini - harap maklum bahawa pelindung Ethernet menggunakan pin digital 10 ~ 13, jadi anda tidak boleh menggunakannya untuk perkara lain. Beberapa pelindung Arduino Ethernet juga mungkin mempunyai soket kad microSD, yang juga menggunakan pin digital lain - jadi periksa dokumentasi untuk mengetahui yang mana.

Langkah 4:

Walaupun begitu, sekarang kita dapat melihat perisai Ethernet berfungsi, kita dapat beralih ke sesuatu yang lebih berguna. Mari membedah contoh sebelumnya dengan cara yang mudah, dan lihat bagaimana kita dapat menyebarkan dan memaparkan data yang lebih menarik melalui rangkaian. Sebagai rujukan, semua fungsi berkaitan Ethernet dikendalikan oleh perpustakaan Ethernet Arduino. Sekiranya anda meneliti lakaran sebelumnya yang baru kami gunakan, bahagian yang akan menarik perhatian adalah:

untuk (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("input analog"); client.print (analogChannel); client.print ("is"); client.print (sensorReading); pelanggan.println (""); } pelanggan.println ("");

Semoga bahagian lakaran ini tidak asing lagi - ingat bagaimana kami telah menggunakan serial.print (); pada masa lalu semasa menghantar data ke kotak monitor bersiri? Baiklah sekarang kita boleh melakukan perkara yang sama, tetapi menghantar data dari perisai Ethernet kita kembali ke penyemak imbas web - dengan kata lain, jenis laman web yang sangat asas. Walau bagaimanapun, ada sesuatu yang mungkin atau tidak mahu anda pelajari untuk memformat output dalam format yang boleh dibaca - kod HTML. Saya bukan pembangun laman web (!) Jadi tidak akan terlalu banyak menggunakan HTML.

Tetapi jika anda ingin menyediakan laman web yang diformat dengan baik dengan Arduino dan sebagainya, inilah permulaan yang baik. Demi kesederhanaan, dua fungsi berikut akan menjadi yang paling berguna:

client.print ("is");

Cetakan Pelanggan (); membolehkan kami menghantar teks atau data kembali ke laman web. Ia berfungsi dengan cara yang sama seperti serial.print (), jadi tidak ada yang baru di sana. Anda juga boleh menentukan jenis data dengan cara yang sama seperti dengan serial.print (). Secara semula jadi anda juga dapat menggunakannya untuk mengirim data kembali. Garis berguna lain adalah:

pelanggan.println ("");

yang menghantar kembali kod HTML ke penyemak imbas web yang menyuruhnya memulakan baris baru. Bahagian yang sebenarnya menyebabkan perjalanan pulang / barisan baru adalah

yang merupakan kod HTML (atau "tag") untuk baris baru.

Oleh itu, jika anda membuat paparan halaman web yang lebih terperinci, anda hanya boleh memasukkan tag HTML lain di client.print (); penyataan. Sekiranya anda ingin mengetahui lebih lanjut mengenai perintah HTML, berikut adalah laman tutorial yang bagus.

Akhirnya - perhatikan bahawa lakaran hanya akan mengirim data ketika diminta, yaitu ketika ia menerima permintaan dari penyemak imbas web.

Langkah 5: Mengakses Arduino Anda Melalui Internet

Mengakses Arduino Anda Melalui Internet
Mengakses Arduino Anda Melalui Internet

Setakat ini - sangat baik. Tetapi bagaimana jika anda ingin mengakses Arduino anda dari luar rangkaian tempatan?

Anda memerlukan alamat IP statik - iaitu, alamat IP yang diberikan oleh penyedia perkhidmatan internet anda kepada sambungan anda agar tetap sama. Sekiranya anda tidak mempunyai IP statik, selagi anda meninggalkan modem / penghala secara kekal di IP anda tidak boleh berubah. Namun itu bukan penyelesaian yang optimum.

Sekiranya ISP anda tidak dapat menawarkan IP statik sama sekali, anda masih boleh meneruskan projek dengan menggunakan organisasi yang menawarkan DNS Dinamik. Organisasi-organisasi ini menawarkan kepada anda nama hos IP statik anda sendiri (mis. Mojo.monkeynuts.com) dan bukannya nombor, ikuti perubahan alamat IP anda dan pautkannya ke nama host baru. Dari apa yang dapat saya kumpulkan, modem anda perlu menyokong (mempunyai pelanggan bawaan untuk…) perkhidmatan DDNS ini.

Sebagai contoh, dua syarikat adalah No-IP danDynDNS.com. Harap maklum bahawa saya tidak menggunakan kedua-duanya, mereka hanya ditawarkan sebagai contoh. Sekarang, untuk mencari alamat IP anda … biasanya ini dapat dijumpai dengan masuk ke halaman pentadbiran penghala anda - biasanya 192.168.0.1 tetapi mungkin berbeza. Hubungi pembekal atau ISP anda jika mereka membekalkan perkakasan. Untuk contoh ini, jika saya memasukkan 10.1.1.1 dalam penyemak imbas web, dan setelah memasukkan kata laluan pentadbiran modem saya, skrin berikut ditunjukkan seperti gambar.

Langkah 6:

Imej
Imej

Apa yang anda cari adalah alamat IP WAN anda, seperti yang anda lihat pada gambar di atas. Untuk menjauhkan para prankter, saya telah menutup beberapa alamat saya.

Perkara seterusnya yang perlu dilakukan ialah menghidupkan pemajuan port. Ini memberitahu penghala di mana untuk mengalihkan permintaan masuk dari dunia luar. Apabila modem menerima permintaan seperti itu, kami ingin mengirimkan permintaan itu ke nombor port perisai Ethernet kami. Menggunakan:

Pelayan EthernetServer (125);

fungsi dalam lakaran kami telah menetapkan nombor port menjadi 125. Setiap skrin konfigurasi modem akan kelihatan berbeza, tetapi sebagai contoh di sini terdapat satu gambar.

Langkah 7:

Imej
Imej

Oleh itu, anda dapat melihat dari garis nombor satu dalam gambar di atas, nombor port masuk telah ditetapkan ke 125, dan alamat IP perisai Ethernet telah ditetapkan ke 10.1.1.77 - sama seperti dalam lakaran.

Setelah menyimpan tetapan, kami sudah siap. Alamat luaran pelindung Ethernet saya adalah WAN: 125, jadi untuk mengakses Arduino saya akan menaip alamat WAN saya dengan: 125 di hujungnya ke penyemak imbas peranti web jauh, yang akan menghubungi perkakasan Ethernet yang sunyi di rumah.

Selain itu, anda mungkin perlu mengubah tetapan firewall modem anda, untuk membiarkan port 125 "terbuka" untuk permintaan masuk. Sila periksa dokumentasi modem anda untuk maklumat lebih lanjut mengenai cara melakukannya. Pada dasarnya dari mana-mana peranti yang disambungkan ke Internet di dunia bebas, saya dapat memasukkan nombor WAN dan port saya ke medan URL dan menerima hasilnya. Contohnya, dari telefon ketika disambungkan ke Internet melalui data mudah alih LTE.

Jadi pada tahap ini anda sekarang dapat memaparkan data di laman web sederhana yang dibuat oleh Arduino anda dan mengaksesnya dari mana saja dengan akses Internet yang tidak terhad. Dengan pengetahuan Arduino sebelumnya, anda kini dapat menggunakan data dari sensor atau bahagian lain dari lakaran dan memaparkannya untuk diambil.

Langkah 8: Memaparkan Data Sensor di Halaman Web

Memaparkan Data Sensor di Halaman Web
Memaparkan Data Sensor di Halaman Web

Sebagai contoh memaparkan data sensor di laman web, mari kita gunakan sensor suhu dan kelembapan yang murah dan popular - DHT22. Anda perlu memasang perpustakaan DHT22 Arduino yang terdapat di halaman ini. Sekiranya ini pertama kalinya anda menggunakan DHT22, bereksperimen dengan lakaran contoh yang disertakan dengan perpustakaan sehingga anda memahami cara kerjanya.

Sambungkan DHT22 dengan pin data ke Arduino D2, Vin ke pin 5V dan GND ke… GND. Sekarang untuk lakaran kami - untuk memaparkan suhu dan kelembapan di laman web. Sekiranya anda tidak menggunakan HTML, anda boleh menggunakan perkhidmatan dalam talian seperti ini untuk menghasilkan kod, yang kemudian anda ubahsuai untuk digunakan dalam lakaran. Dalam contoh di bawah, data suhu dan kelembapan dari DHT22 disajikan di laman web mudah:

#masuk "SPI.h" #masuk "Ethernet.h"

// untuk sensor DHT22

#masuk "DHT.h" #tentukan DHTPIN 2 #tentukan DHTTYPE DHT22

// Masukkan alamat MAC dan alamat IP untuk pengawal anda di bawah.

// Alamat IP akan bergantung pada rangkaian tempatan anda: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IP Alamat IP (10, 1, 1, 77);

// Memulakan perpustakaan pelayan Ethernet

// dengan alamat IP dan port yang ingin anda gunakan // (port 80 adalah lalai untuk HTTP): Pelayan EthernetServer (125); DHT dht (DHTPIN, DHTTYPE);

persediaan tidak sah ()

{dht.begin (); // Buka komunikasi bersiri dan tunggu port dibuka: Serial.begin (9600); sambil (! bersiri) {; // tunggu port bersambung. Diperlukan untuk Leonardo sahaja} // mulakan sambungan Ethernet dan pelayan: Ethernet.begin (mac, ip); pelayan.begin (); Serial.print ("pelayan berada di"); Serial.println (Ethernet.localIP ()); }

gelung kosong ()

{// dengarkan pelanggan masuk EthernetClient client = server.available (); jika (pelanggan) {Serial.println ("pelanggan baru"); // permintaan http berakhir dengan baris kosong boolean currentLineIsBlank = true; manakala (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (c); // jika anda telah sampai ke akhir baris (menerima baris baru // watak) dan baris kosong, permintaan http telah berakhir, // sehingga anda dapat mengirim balasan jika (c == 'n' && currentLineIsBlank) {// hantar klien header respons http standard.println ("HTTP / 1.1 200 OK"); client.println ("Jenis Kandungan: teks / html"); client.println ("Sambungan: tutup"); // sambungan akan ditutup setelah selesai pelanggan respons.println ("Refresh: 30"); // muat semula halaman secara automatik setiap 30 saat klien.println (); pelanggan.println ("");

pelanggan.println ("");

// dapatkan data dari sensor DHT22

apungan h = dht.readHumidity (); terapung t = dht.readTemperature (); Bersiri.println (t); Bersiri.println (h);

// dari sini kita boleh memasukkan kod HTML kita sendiri untuk membuat laman web

client.print ( Cuaca Pejabat

Suhu pejabat - );

pelanggan.cetakan (t);

client.print ( darjah Celsius

);

pelanggan.cetakan ("

Kelembapan - );

pelanggan.cetakan (h);

client.print ( peratus

);

pelanggan.cetakan ("

Halaman disegarkan setiap 30 saat <

. );

rehat;

} jika (c == 'n') {// anda memulakan baris baru currentLineIsBlank = true; } lain jika (c! = 'r') {// anda telah mendapat watak pada baris semasa currentLineIsBlank = false; }}} // beri masa penyemak imbas web untuk menerima kelewatan data (1); // tutup sambungan: client.stop (); Serial.println ("pelanggan terputus"); }}

Ini adalah pengubahsuaian lakaran contoh pelayan web IDE yang kami gunakan sebelumnya - dengan beberapa pengubahsuaian. Pertama, laman web akan disegarkan secara automatik setiap 30 saat - parameter ini ditetapkan dalam baris:

client.println ("Segarkan: 30"); // muat semula halaman secara automatik setiap 30 saat

… dan HTML khusus untuk laman web kami bermula di bawah garis:

// dari sini kita boleh memasukkan kod HTML kita sendiri untuk membuat laman web

Anda kemudian hanya boleh memasukkan HTML yang diperlukan di dalam fungsi client.print () untuk membuat susun atur yang anda perlukan. Akhirnya - inilah contoh tangkapan skrin lakaran contoh di tempat kerja.

Oleh itu, ada cara lain yang berguna untuk Arduino anda berinteraksi dengan dunia luar. Siaran ini dihantar kepada anda oleh pmdway.com - semuanya untuk pembuat dan peminat elektronik, dengan penghantaran percuma ke seluruh dunia.

Disyorkan: