Isi kandungan:
- Prasyarat
- Langkah 1: Bermula Dengan Sketsa Pelayan Web yang Sederhana
- Langkah 2: Membuat JavaScript Jauh
- Langkah 3: Memuatkan Fail Jauh JavaScript ke Penyemak Imbas Pelawat
- Langkah 4: Menambah Elemen Baru ke Halaman
- Langkah 5: Elemen Interaktif
- Langkah 6: Tindak Balas Elemen Interaktif
- Langkah 7: Kesimpulannya
Video: Muatkan Halaman Web Konfigurasi Arduino / ESP Anda dari Awan: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Semasa membuat projek Arduino / ESP (ESP8266 / ESP32), anda boleh menguraikan semuanya. Tetapi lebih kerap sesuatu tidak muncul dan anda akhirnya akan memasang semula peranti IoT anda ke IDE anda lagi. Atau anda mendapat lebih banyak orang yang mengakses konfigurasi dan anda ingin memberikan UI dan bukannya mengharapkan mereka memahami cara kerja dalaman.
Petunjuk ini akan memberitahu anda bagaimana meletakkan sebahagian besar UI di awan dan bukannya pada Arduino / ESP. Melakukannya dengan cara ini akan menjimatkan penggunaan ruang dan memori. Perkhidmatan yang menyediakan laman web statik percuma sangat sesuai sebagai "cloud", seperti GitHub Pages, tetapi pilihan lain mungkin akan berfungsi juga.
Membangun laman web dengan cara ini memerlukan penyemak imbas pengguna menjalani 4 langkah:
- Minta url root dari Arduino / ESP
- Terima laman web yang sangat sederhana, memberitahu kepada:
- Minta fail JavaScript dari awan
- Terima kod yang membina halaman sebenar
Instructable ini juga akan menerangkan cara berinteraksi dengan Arduino / ESP setelah halaman siap seperti langkah-langkah di atas.
Kod yang dibuat pada arahan ini boleh didapati di GitHub juga.
Prasyarat
Ini boleh diandaikan dengan andaian anda mendapat akses ke bahan-bahan tertentu dan beberapa pengetahuan sebelumnya:
- Arduino (dengan akses rangkaian) / ESP
- Komputer untuk melampirkan perkara di atas ke
- Akses WiFi disambungkan ke internet
- Arduino IDE dipasang (juga untuk ESP32)
- Anda tahu bagaimana memuat naik lakaran ke peranti IoT anda
- Anda tahu bagaimana menggunakan Git & GitHub
Langkah 1: Bermula Dengan Sketsa Pelayan Web yang Sederhana
Kami akan bermula semudah mungkin, dan biarkan ia berkembang mulai sekarang.
#sertakan
const char * ssid = "yourssid"; const char * kata laluan = "yourpasswd"; Pelayan WiFiServer (80); batal persediaan () {// Permulaan siri dan tunggu port dibuka: Serial.begin (115200); sambil (! bersiri) {; // tunggu port bersambung. Diperlukan hanya untuk port USB asli} WiFi.begin (ssid, password); sementara (WiFi.status ()! = WL_CONNECTED) {kelewatan (500); Cetakan bersiri ("."); } Serial.println ("WiFi disambungkan."); Serial.println ("Alamat IP:"); Serial.println (WiFi.localIP ()); pelayan.begin (); } gelung void () {// dengarkan klien masuk WiFiClient client = server.available (); // dengarkan klien masuk bool sendResponse = false; // tetapkan ke true jika kita mahu menghantar jawapan String urlLine = ""; // buat Rentetan untuk menahan URL yang diminta jika (klien) // jika anda mendapat pelanggan, {Serial.println ("Pelanggan Baru."); // mencetak mesej keluar dari siri siri String currentLine = ""; // buat String untuk menahan data masuk dari klien semasa (client.connected ()) // loop semasa klien terhubung {if (client.available ()) // jika ada bait untuk dibaca dari klien, {char c = client.read (); // baca bait, kemudian jika (c == '\ n') // jika bait adalah watak barisan baru {// jika baris semasa kosong, anda mendapat dua watak barisan berturut-turut. // itulah akhir permintaan HTTP klien, jadi hantarkan respons: if (currentLine.length () == 0) {sendResponse = true; // semuanya baik sahaja! rehat; // keluar dari loop sementara} lain // jika anda mendapat garis baru, kemudian kosongkan currentLine: {if (currentLine.indexOf ("GET /")> = 0) // ini harus menjadi baris URL {urlLine = currentLine; // simpan untuk penggunaan kemudian} currentLine = ""; // reset theLine String}} yang lain jika (c! = '\ r') // jika anda mendapat apa-apa selain watak pengembalian kereta, {currentLine + = c; // tambahkannya ke hujung currentLine}}} jika (sendResponse) {Serial.print ("Pelanggan diminta"); Serial.println (urlLine); // Header HTTP selalu bermula dengan kod respons (mis. HTTP / 1.1 200 OK) // dan jenis kandungan sehingga klien tahu apa yang akan datang, kemudian baris kosong: client.println ("HTTP / 1.1 200 OK"); client.println ("Jenis kandungan: teks / html"); pelanggan.println (); if (urlLine.indexOf ("GET /")> = 0) // jika URL hanya "/" {// kandungan respons HTTP mengikuti tajuk: client.println ("Hello world!"); } // Respons HTTP diakhiri dengan baris kosong lain: client.println (); } // tutup sambungan: client.stop (); Serial.println ("Pelanggan Terputus."); }}
Salin kod di atas, atau muat turun dari komit di GitHub.
Jangan lupa menukar SSID dan kata laluan agar sesuai dengan rangkaian anda.
Lakaran ini menggunakan Arduino yang terkenal
persediaan ()
dan
gelung ()
fungsi. Di dalam
persediaan ()
fungsi sambungan bersiri ke IDE dimulakan dan begitu juga WiFi. Setelah WiFi disambungkan ke SSID tersebut, IP dicetak dan pelayan web dimulakan. Dalam setiap lelaran
gelung ()
fungsi pelayan web diperiksa untuk pelanggan yang disambungkan. Sekiranya pelanggan dihubungkan, permintaan akan dibaca dan URL yang diminta disimpan dalam pemboleh ubah. Sekiranya semuanya kelihatan baik-baik saja, tindak balas dari pelayan kepada pelanggan dilakukan berdasarkan URL yang diminta.
AMARAN! Kod ini menggunakan kelas Arduino String agar mudah. Pengoptimuman rentetan tidak berada dalam ruang lingkup arahan ini. Baca lebih lanjut mengenai ini mengenai petunjuk Manipulasi String Arduino Menggunakan Ram Minimal.
Langkah 2: Membuat JavaScript Jauh
Arduino / ESP akan memberitahu pelayar pelawat untuk memuatkan fail yang satu ini. Selebihnya akan dilakukan dengan kod JavaScript ini.
Dalam Instructable ini kami akan menggunakan jQuery, ini tidak diperlukan sepenuhnya, tetapi akan menjadikan semuanya lebih mudah.
Fail ini perlu diakses dari web, pelayan halaman statik sudah cukup untuk membuat ini berfungsi, misalnya halaman GitHub. Oleh itu, anda mungkin mahu membuat repositori GitHub baru dan membuat
halaman gh
cawangan. Masukkan kod berikut di dalam a
.js
fail di repositori di cawangan yang betul.
var cdnjsURL = 'https://cdnjs.cloudflare.com/ajax/libs/', $; (fungsi () {var script = document.createElement ('script'); // buat elemen skrip.src = cdnjsURL + 'jquery / 3.2.1 / jquery.min.js'; // tetapkan src = "" atribut script.onload = function () // callback function, dipanggil setelah fail jquery dimuat {$ = window.jQuery; // jadikan jQuery dapat diakses sebagai $ global init (); // panggil fungsi init}; dokumen. getElementsByTagName ('head') [0].appendChild (script); // tambahkan tag yang dibuat ke dokumen, ini akan mula memuatkan jQuery lib}) (); function init () {// Selesai memuat jQuery, akan menambahkan kod di sini nanti…}
Salin kod di atas, atau muat turun dari komit di GitHub.
Periksa sama ada fail anda boleh diakses. Sekiranya halaman GitHub pergi ke https://username.github.io/repository/your-file.j… (ganti
nama pengguna
,
repositori
dan
fail-fail anda
untuk parameter yang betul).
Langkah 3: Memuatkan Fail Jauh JavaScript ke Penyemak Imbas Pelawat
Sekarang kita sudah siap semuanya, inilah masanya laman web memuatkan fail JavaScript jauh.
Anda boleh melakukannya dengan menukar baris 88 lakaran dari
client.println ("Hello world!"); t
pelanggan.println ("");
(tukar
src
atribut untuk menunjuk ke fail JavaScript anda sendiri). Ini adalah laman web html kecil, yang dilakukannya hanyalah memuatkan fail JavaScript ke pelayar pelawat.
Fail yang diubah juga boleh didapati di komit yang sesuai di GitHub.
Muat naik lakaran yang disesuaikan ke Arduino / ESP anda.
Langkah 4: Menambah Elemen Baru ke Halaman
Halaman kosong tidak berguna, jadi sekarang masanya untuk menambahkan elemen baru ke laman web. Buat masa ini ini akan menjadi video YouTube. Dalam contoh ini, beberapa kod jQuery akan digunakan untuk mencapainya.
Tambahkan baris kod berikut ke
di dalamnya()
fungsi:
$ (''). prop ({src: 'https://www.youtube.com/embed/k12h_FOInZg?rel=0', frameborder: '0'}). css ({lebar: '608px', tinggi: '342px'}). AppendTo ('body');
Ini akan mewujudkan
iframe
elemen, tetapkan yang betul
src
atribut dan tetapkan ukuran menggunakan css dan tambahkan elemen ke badan halaman.
jQuery membantu kita memilih dan mengubah elemen dengan mudah di laman web, beberapa perkara asas yang perlu diketahui:
-
$ ('badan')
- memilih elemen yang sudah ada, pemilih css lain juga boleh digunakan
-
$(' ')
mencipta yang baru
- elemen (tetapi tidak menambahkannya ke dokumen)
-
.appendTo ('. utama')
- menambahkan elemen yang dipilih / dibuat ke elemen dengan kelas 'utama' css
-
Fungsi lain untuk menambahkan elemen adalah
.lampirkan ()
,
.pendekkan ()
,
.prependTo ()
,
.sisipkan ()
,
.insertSetelah ()
,
.insertSebelum ()
,
. selepas ()
,
sebelum ()
Lihat komitmen yang sesuai di GitHub jika ada yang tidak jelas.
Langkah 5: Elemen Interaktif
Video memang menyeronokkan, tetapi tujuan pengajaran ini adalah untuk berinteraksi dengan Arduino / ESP. Mari ganti video untuk butang yang menghantar maklumat ke Arduino / ESP dan juga menunggu tindak balas.
Kami memerlukan
$('')
untuk menambah halaman, dan lampirkan pendengar acara di dalamnya. Eventlistener akan memanggil fungsi callback apabila peristiwa yang ditentukan berlaku:
$ (''). teks ('butang'). pada ('klik', fungsi ()
{// kod di sini akan dilaksanakan apabila butang diklik}). appendTo ('body');
Dan tambahkan permintaan AJAX ke fungsi panggilan balik:
$.get ('/ ajax', fungsi (data)
{// kod di sini akan dilaksanakan apabila permintaan AJAX selesai});
Setelah permintaan selesai, data yang dikembalikan akan ditambahkan ke halaman:
$('
'). teks (data).appendTo (' body ');
Ringkasnya, kod di atas membuat butang, menambahkannya ke halaman web, ketika tombol diklik permintaan akan dikirim dan respons juga akan ditambahkan ke halaman web.
Sekiranya ini adalah kali pertama anda menggunakan panggilan balik, anda mungkin ingin memeriksa komit di GitHub untuk melihat bagaimana semuanya bersarang.
Langkah 6: Tindak Balas Elemen Interaktif
Sudah tentu, permintaan AJAX memerlukan tindak balas.
Untuk membuat tindak balas yang betul untuk
/ ajax
url kita perlu menambah
lain jika ()
tepat selepas tanda kurung penutup pernyataan if yang memeriksa
/
url.
lain jika (urlLine.indexOf ("GET / ajax")> = 0)
{client.print ("Hai!"); }
Dalam komit di GitHub saya juga telah menambahkan penghitung untuk menunjukkan penyemak imbas bahawa setiap permintaan adalah unik.
Langkah 7: Kesimpulannya
Inilah akhir pengajaran ini. Anda sekarang mempunyai Arduino / ESP yang menyajikan laman web kecil yang memberitahu penyemak imbas pelawat memuat fail JavaScript dari awan. Setelah JavaScript dimuat, ia akan membina sisa kandungan halaman web yang menyediakan UI untuk pengguna berkomunikasi dengan Arduino / ESP.
Sekarang terserah kepada imaginasi anda untuk membuat lebih banyak elemen di laman web dan menyimpan tetapan secara tempatan pada semacam ROM (EEPROM / NVS / dll).
Terima kasih kerana membaca, dan sila beri maklum balas!
Disyorkan:
Sambungkan Loji Anda ke Awan: 10 Langkah
Sambungkan Tumbuhan Anda ke Awan: Di pejabat kami ada kaktus yang tidak mendapat perhatian yang sewajarnya. Oleh kerana saya bekerja di syarikat IT dan ingin bereksperimen dengan LoRa, penyelesaian tanpa server dan AWS, saya menamakan kaktus Steeve kami dan menghubungkannya ke awan. Anda kini boleh memantau
Asas IoT: Menghubungkan IoT Anda ke Awan Menggunakan OS Mongoose: 5 Langkah
Asas IoT: Menghubungkan IoT Anda ke Awan Menggunakan OS Mongoose: Sekiranya anda seorang yang suka bermain-main dan elektronik, lebih kerap daripada tidak, anda akan menemui istilah Internet of Things, yang biasanya disingkat sebagai IoT, dan bahawa ia merujuk kepada satu set peranti yang boleh menyambung ke internet! Menjadi orang seperti itu
Jadikan Pi Anda sebagai Pelayan Awan (Tempatan)! 19 Langkah (dengan Gambar)
Jadikan Pi Anda sebagai Pelayan Awan (Tempatan) !: Simpan dan akses dokumen dan foto dan muzik di pelayan Pi Cloud tempatan anda sendiri! Bahagian terbaik: anda boleh menggunakannya jika, atau kapan, Internet tergendala (atau jika anda berada di tempat terpencil & mahu akses ke Wikipedia). Oh hei, dan jika rakan anda mendapat satu dan
Gabungkan Halaman Web Anda (Pembuat Halaman Google) Dengan Picasa di Talian Album: 5 Langkah
Gabungkan Halaman Web Anda (Pencipta Halaman Google) Dengan Picasa on Line Album: Helo, inilah Instruksinya yang pertama, nikmatilah! terus dengan arahan ini Menyiapkan Laman web dengan Pencipta Halaman Google
Cara Mendapatkan Muzik Dari Laman Web HANYA (Haha) (Selagi Anda Boleh Mendengarnya, Anda Boleh Mendapatkannya Ok Baiklah Jika Ia Dimasukkan dalam Kilat Anda Mungkin Tidak Mampu) DIEDIT !!!!! Maklumat Tambahan: 4 Langkah
Cara Mendapatkan Muzik Dari Laman Web HANYA (Haha) (Selagi Anda Boleh Mendengarnya, Anda Boleh Mendapatkannya … Ok Baiklah Jika Ia Dimasukkan dalam Kilat Anda Mungkin Tidak Mampu) DIEDIT !!!!! Maklumat Tambahan: jika anda pernah pergi ke laman web dan memainkan lagu yang anda suka dan mahukannya, inilah petunjuk untuk tidak salah saya sekiranya anda mengacaukan sesuatu (satu-satunya cara ia akan berlaku adalah jika anda mula menghapus barang tanpa sebab ) Saya dapat mendapatkan muzik untuk