Daftar Isi:

Memulai Dengan Arduino dan Ethernet: 8 Langkah
Memulai Dengan Arduino dan Ethernet: 8 Langkah

Video: Memulai Dengan Arduino dan Ethernet: 8 Langkah

Video: Memulai Dengan Arduino dan Ethernet: 8 Langkah
Video: Tonton Sampai Habis !!! Belajar Arduino Di Jamin Bisa 2024, Juli
Anonim
Memulai Dengan Arduino dan Ethernet
Memulai Dengan Arduino dan Ethernet

Arduino Anda dapat dengan mudah berkomunikasi dengan dunia luar melalui koneksi Ethernet kabel. Namun sebelum kita mulai, diasumsikan bahwa Anda memiliki pemahaman dasar tentang jaringan komputer, seperti pengetahuan tentang cara menghubungkan komputer ke hub/router dengan kabel RJ45, apa itu alamat IP dan MAC, dan sebagainya. Selanjutnya, berikut adalah ikhtisar singkat yang bagus tentang Ethernet.

Anda memerlukan Arduino Uno atau papan yang kompatibel dengan pelindung Ethernet yang menggunakan IC pengontrol Ethernet W5100 (hampir semuanya) sesuai gambar.

Selanjutnya Anda perlu memberi daya pada papan melalui soket DC eksternal – IC W5100 menggunakan lebih banyak arus daripada yang dapat dipasok oleh daya USB. Paket steker 9V 1.5A/kutil di dinding sudah cukup.

Langkah 1:

Gambar
Gambar

Terakhir - pelindung menjadi panas – jadi berhati-hatilah untuk tidak menyentuh W5100 setelah digunakan dalam waktu lama. Jika Anda tidak yakin – ini adalah IC W5100.

Langkah 2:

Setelah Anda memiliki Arduino yang mendukung Ethernet, dan menghubungkan daya eksternal – sebaiknya periksa apakah semuanya berfungsi. Buka Arduino IDE dan pilih File > Contoh > Ethernet > Webserver. Ini memuat sketsa sederhana yang akan menampilkan data yang dikumpulkan dari input analog pada browser web. Namun belum diupload, perlu sedikit modifikasi.

Anda perlu menentukan alamat IP pelindung Ethernet – yang dilakukan di dalam sketsa. Ini sederhana, pergi ke baris:

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

Dan ubah agar sesuai dengan pengaturan Anda sendiri. Misalnya, di rumah kami alamat IP router adalah 10.1.1.1, printer adalah 10.1.1.50 dan semua PC di bawah …50. Jadi saya akan mengatur IP perisai saya ke 10.1.1.77 dengan mengubah baris menjadi:

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

Namun jika Anda hanya memiliki satu perisai, biarkan saja. Mungkin ada peluang yang sangat, sangat, jarang secara statistik untuk memiliki alamat MAC yang sama dengan perangkat keras Anda yang ada, sehingga akan ada waktu lain untuk mengubahnya.

Langkah 3:

Gambar
Gambar

Namun jika Anda hanya memiliki satu perisai, biarkan saja. Mungkin ada peluang yang sangat, sangat, jarang secara statistik untuk memiliki alamat MAC yang sama dengan perangkat keras Anda yang ada, sehingga akan ada waktu lain untuk mengubahnya.

Setelah Anda membuat perubahan, simpan dan unggah sketsa. Sekarang buka browser web dan navigasikan ke alamat IP yang Anda masukkan dalam sketsa, dan Anda akan disajikan sesuatu yang mirip dengan gambar.

Apa yang terjadi?

Arduino telah diprogram untuk menawarkan halaman web sederhana dengan nilai-nilai yang diukur oleh input analog. Anda dapat menyegarkan browser untuk mendapatkan nilai yang diperbarui. Pada titik ini – harap perhatikan bahwa pelindung Ethernet menggunakan pin digital 10~13, jadi Anda tidak dapat menggunakannya untuk hal lain. Beberapa pelindung Ethernet Arduino mungkin juga memiliki soket kartu microSD, yang juga menggunakan pin digital lain – jadi periksalah dengan dokumentasi untuk mengetahui yang mana.

Langkah 4:

Namun demikian, sekarang kita dapat melihat perisai Ethernet berfungsi, kita dapat beralih ke sesuatu yang lebih berguna. Mari kita membedah contoh sebelumnya dengan cara yang sederhana, dan melihat bagaimana kita dapat mendistribusikan dan menampilkan data yang lebih menarik melalui jaringan. Sebagai referensi, semua fungsi terkait Ethernet ditangani oleh library Ethernet Arduino. Jika Anda memeriksa sketsa sebelumnya yang baru saja kita gunakan, bagian yang menarik adalah:

for (int analogChannel = 0; analogChannel < 6; analogChannel++) { int sensorReading = analogRead(analogChannel); client.print("masukan analog"); client.print(analogChannel); klien.print(" adalah "); client.print(sensorMembaca); klien.println(""); } klien.println("");

Semoga bagian sketsa ini sudah familiar – ingat bagaimana kita menggunakan serial.print(); di masa lalu saat mengirim data ke kotak monitor serial? Sekarang kita dapat melakukan hal yang sama, tetapi mengirimkan data dari perisai Ethernet kita kembali ke browser web – dengan kata lain, jenis halaman web yang sangat mendasar. Namun ada sesuatu yang mungkin ingin atau tidak ingin Anda pelajari untuk memformat output dalam format yang dapat dibaca – kode HTML. Saya bukan pengembang situs web (!) jadi tidak akan mempelajari HTML terlalu banyak.

Namun jika Anda ingin menyajikan halaman web yang diformat dengan baik dengan Arduino Anda dan sebagainya, ini akan menjadi awal yang baik. Demi kesederhanaan, dua fungsi berikut akan menjadi yang paling berguna:

klien.print(" adalah ");

Klien.print(); memungkinkan kita untuk mengirim teks atau data kembali ke halaman web. Ia bekerja dengan cara yang sama seperti serial.print(), jadi tidak ada yang baru di sana. Anda juga dapat menentukan tipe data dengan cara yang sama seperti serial.print(). Tentu Anda juga dapat menggunakannya untuk mengirim data kembali juga. Baris berguna lainnya adalah:

klien.println("");

yang mengirimkan kode HTML kembali ke browser web yang menyuruhnya memulai baris baru. Bagian yang sebenarnya menyebabkan carriage return/baris baru adalah

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

Jadi jika Anda membuat tampilan halaman web yang lebih rumit, Anda bisa memasukkan tag HTML lain di client.print(); penyataan. Jika Anda ingin mempelajari lebih lanjut tentang perintah HTML, inilah situs tutorial yang bagus.

Terakhir – perhatikan bahwa sketsa hanya akan mengirimkan data jika telah diminta, yaitu ketika telah menerima permintaan dari browser web.

Langkah 5: Mengakses Arduino Anda Melalui Internet

Mengakses Arduino Anda Melalui Internet
Mengakses Arduino Anda Melalui Internet

Sejauh ini baik. Tetapi bagaimana jika Anda ingin mengakses Arduino Anda dari luar jaringan lokal?

Anda akan memerlukan alamat IP statis – yaitu, alamat IP yang diberikan oleh penyedia layanan internet Anda ke koneksi Anda harus tetap sama. Jika Anda tidak memiliki IP statis, selama Anda membiarkan modem/router diaktifkan secara permanen, IP Anda tidak akan berubah. Namun itu bukan solusi yang optimal.

Jika ISP Anda tidak dapat menawarkan IP statis sama sekali, Anda masih dapat melanjutkan proyek dengan menggunakan organisasi yang menawarkan DNS Dinamis. Organisasi-organisasi ini menawarkan nama host IP statis Anda sendiri (misalnya mojo.monkeynuts.com) alih-alih nomor, melacak alamat IP Anda yang berubah dan menautkannya ke nama host baru. Dari apa yang saya dapat kumpulkan, modem Anda perlu mendukung (memiliki klien bawaan untuk…) layanan DDNS ini.

Sebagai contoh, dua perusahaan adalah No-IP dan DynDNS.com. Harap dicatat bahwa saya belum pernah menggunakan keduanya, mereka hanya ditawarkan sebagai contoh. Sekarang, untuk menemukan alamat IP Anda… biasanya ini dapat ditemukan dengan masuk ke halaman administrasi router Anda – biasanya 192.168.0.1 tetapi bisa berbeda. Tanyakan kepada pemasok atau ISP Anda apakah mereka menyediakan perangkat keras. Untuk contoh ini, jika saya memasukkan 10.1.1.1 di browser web, dan setelah memasukkan kata sandi administrasi modem saya, layar berikut ditampilkan sesuai gambar.

Langkah 6:

Gambar
Gambar

Yang Anda cari adalah alamat IP WAN Anda, seperti yang Anda lihat pada gambar di atas. Untuk menjauhkan orang-orang iseng, saya telah mengaburkan beberapa alamat saya.

Hal selanjutnya yang harus dilakukan adalah mengaktifkan penerusan porta. Ini memberi tahu router tempat untuk mengarahkan permintaan masuk dari dunia luar. Ketika modem menerima permintaan seperti itu, kami ingin mengirim permintaan itu ke nomor port perisai Ethernet kami. Menggunakan:

Server EthernetServer(125);

fungsi dalam sketsa kami telah mengatur nomor port ke 125. Layar konfigurasi masing-masing modem akan terlihat berbeda, tetapi sebagai contoh di sini adalah satu di gambar.

Langkah 7:

Gambar
Gambar

Jadi Anda dapat melihat dari baris nomor satu pada gambar di atas, nomor port masuk telah diatur ke 125, dan alamat IP dari perisai Ethernet telah diatur ke 10.1.1.77 – sama seperti pada sketsa.

Setelah menyimpan pengaturan, kita sudah siap. Alamat eksternal perisai Ethernet saya akan menjadi WAN:125, jadi untuk mengakses Arduino saya akan mengetikkan alamat WAN saya dengan:125 di akhir ke browser perangkat web jarak jauh, yang akan menghubungi perangkat keras Ethernet yang sepi di rumah.

Selanjutnya, Anda mungkin perlu mengubah pengaturan firewall modem Anda, untuk memungkinkan port 125 menjadi "terbuka" untuk permintaan yang masuk. Silakan periksa dokumentasi modem Anda untuk informasi lebih lanjut tentang cara melakukannya. Sekarang pada dasarnya dari semua perangkat yang terhubung ke Internet di dunia bebas, saya dapat memasukkan WAN dan nomor port saya ke dalam bidang URL dan menerima hasilnya. Misalnya, dari ponsel saat terhubung ke Internet melalui data seluler LTE.

Jadi pada tahap ini Anda sekarang dapat menampilkan data pada halaman web sederhana yang dibuat oleh Arduino Anda dan mengaksesnya dari mana saja dengan akses Internet tanpa batas. Dengan pengetahuan Arduino Anda sebelumnya, Anda sekarang dapat menggunakan data dari sensor atau bagian lain dari sketsa dan menampilkannya untuk pengambilan.

Langkah 8: Menampilkan Data Sensor di Halaman Web

Menampilkan Data Sensor di Halaman Web
Menampilkan Data Sensor di Halaman Web

Sebagai contoh menampilkan data sensor di halaman web, mari gunakan sensor suhu dan kelembaban yang murah dan populer – DHT22. Anda perlu menginstal perpustakaan Arduino DHT22 yang dapat ditemukan di halaman ini. Jika ini pertama kalinya Anda menggunakan DHT22, bereksperimenlah dengan contoh sketsa yang disertakan dengan perpustakaan sehingga Anda memahami cara kerjanya.

Hubungkan DHT22 dengan pin data ke Arduino D2, Vin ke pin 5V dan GND ke … GND. Sekarang untuk sketsa kita – untuk menampilkan suhu dan kelembapan pada halaman web. Jika Anda tidak mengerti HTML, Anda dapat menggunakan layanan online seperti ini untuk menghasilkan kode, yang kemudian dapat Anda modifikasi untuk digunakan dalam sketsa. Pada contoh di bawah ini, data suhu dan kelembaban dari DHT22 disajikan dalam halaman web sederhana:

#sertakan "SPI.h"#sertakan "Ethernet.h"

// untuk sensor DHT22

#sertakan "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22

// Masukkan alamat MAC dan alamat IP untuk pengontrol Anda di bawah ini.

// Alamat IP akan tergantung pada jaringan lokal Anda: byte mac = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPaddress ip(10, 1, 1, 77);

// Inisialisasi perpustakaan server Ethernet

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

batalkan pengaturan()

{ dht.mulai(); // Buka komunikasi serial dan tunggu port terbuka: Serial.begin(9600); while (!Serial) {; // tunggu port serial terhubung. Diperlukan hanya untuk Leonardo } // memulai koneksi Ethernet dan server: Ethernet.begin(mac, ip); server.mulai(); Serial.print("server ada di "); Serial.println(Ethernet.localIP()); }

lingkaran kosong()

{ // mendengarkan klien yang masuk EthernetClient client = server.available(); if (klien) { Serial.println("klien baru"); // permintaan http diakhiri dengan baris kosong boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.tulis(c); // jika Anda telah mencapai akhir baris (menerima baris baru // karakter) dan baris kosong, permintaan http telah berakhir, // sehingga Anda dapat mengirim balasan jika (c == 'n' && currentLineIsBlank) { // kirim header respons http standar client.println("HTTP/1.1 200 OK"); client.println("Jenis Konten: teks/html"); client.println("Koneksi: tutup"); // koneksi akan ditutup setelah respon client selesai.println("Refresh: 30"); // refresh halaman secara otomatis setiap 30 detik client.println(); klien.println("");

klien.println("");

// dapatkan data dari sensor DHT22

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

// dari sini kita dapat memasukkan kode HTML kita sendiri untuk membuat halaman web

client.print( Cuaca Kantor

Suhu kantor - );

klien.print(t);

client.print( derajat Celcius

);

klien.print("

Kelembaban - );

klien.print(h);

klien.print( persen

);

klien.print("

Halaman disegarkan setiap 30 detik<

. );

merusak;

} if (c == 'n') { // Anda memulai baris baru currentLineIsBlank = true; } else if (c != 'r') { // Anda mendapatkan karakter pada baris saat ini currentLineIsBlank = false; } } } // memberikan waktu pada web browser untuk menerima data delay(1); // tutup koneksi: client.stop(); Serial.println("klien terputus"); } }

Ini adalah modifikasi dari sketsa contoh server web IDE yang kami gunakan sebelumnya – dengan beberapa modifikasi. Pertama, halaman web akan secara otomatis menyegarkan setiap 30 detik – parameter ini diatur di baris:

client.println("Segarkan: 30"); // refresh halaman secara otomatis setiap 30 detik

… dan HTML khusus untuk halaman web kami dimulai di bawah baris:

// dari sini kita dapat memasukkan kode HTML kita sendiri untuk membuat halaman web

Anda kemudian dapat dengan mudah memasukkan HTML yang diperlukan di dalam fungsi client.print() untuk membuat tata letak yang Anda butuhkan. Terakhir – inilah contoh screen shot dari contoh sketsa di tempat kerja.

Jadi begitulah, cara lain yang berguna untuk membuat Arduino Anda berinteraksi dengan dunia luar. Posting ini dipersembahkan oleh pmdway.com – semuanya untuk pembuat dan penggemar elektronik, dengan pengiriman gratis ke seluruh dunia.

Direkomendasikan: