Mengapa orang membuat server web pada mikrokontroler?

13

Saya telah menemukan orang yang membuat server web menggunakan mikrokontroler, mengapa seseorang melakukan itu? Apa aplikasinya? Keterampilan apa yang ditetapkan selain bahasa C yang dibutuhkan seseorang untuk membuat server seperti itu? Saya cukup ingin tahu tentang server kecil ini yang memiliki RAM sekecil itu.

quantum231
sumber
Pertanyaan ini sangat luas, silakan coba fokus pada pertanyaan teknis tertentu.
Kortuk
10
Voting untuk dibuka kembali. Pertanyaan ini cukup bagus.
Nick Alexeev
"Kami mengharapkan jawaban didukung oleh fakta, referensi, atau keahlian khusus, tetapi pertanyaan ini kemungkinan akan mengundang debat, argumen, pemungutan suara, atau diskusi panjang."
The Photon
Saya senang akhirnya bisa melihat bagaimana konsep ini digunakan di industri. Tetapi dari ini muncul pertanyaan baru, melihat bahwa mengimplementasikan server pada UC dan daripada menciptakan antarmuka pengguna yang berjalan di browser internet membuat semuanya jadi mudah, mengapa banyak orang masih menggunakan cara yang lebih sulit seperti USB?
quantum231
@ quantum231 Silakan ajukan pertanyaan baru jika Anda memiliki pertanyaan baru. :-)
Anindo Ghosh

Jawaban:

15

Saya telah melakukan ini di beberapa produk. Sejauh ini alasannya adalah untuk memungkinkan konfigurasi bidang yang sederhana. Setiap kali produk sudah harus terhubung ke ethernet karena alasan operasi utamanya. Server web karena itu hanya menambahkan kode dalam mikrokontroler.

Keuntungan besar dari server HTTP adalah tidak ada perangkat keras atau perangkat lunak khusus yang diperlukan untuk menghadirkan antarmuka pengguna yang wajar kepada pengguna akhir. Setiap orang sudah memiliki browser web, jadi ini bukan masalah bagi pelanggan. Pikirkan tentang alternatif lain. Anda dapat menyediakan port RS-232, tetapi kemudian Anda harus menyediakan aplikasi khusus atau menjelaskan kepada seseorang cara mengatur program terminal dengan kecepatan baud yang tepat, bit mulai, bit berhenti, dan paritas. Anda juga harus menyediakan kabel atau berharap pelanggan memilikinya, dan seseorang harus pergi ke unit dan terhubung secara fisik. USB tidak memiliki masalah konfigurasi yang sama, tetapi umumnya berarti mikro secara keseluruhan terpisah di dalam produk dan di sana Anda memerlukan program khusus untuk berjalan pada platform apa pun yang mungkin dimiliki pelanggan.

Adapun RAM, itu tidak banyak masalah untuk server HTTP. Tumpukan protokol TCP memerlukan beberapa RAM, tetapi server HTTP tidak terlalu, kecuali untuk sumber daya tambahan yang mungkin diperlukan dari tumpukan jaringan. Server web sebagian besar membutuhkan ruang ROM, karena sebagian besar setiap halaman adalah konstan, biasanya dengan beberapa nilai dikonversi menjadi teks dan disisipkan dengan cepat. Server web untuk mikro kecil bekerja dengan sistem file ROM dan keluar urutan dalam file-file yang menyebabkan kode aplikasi Anda dipanggil untuk menghasilkan string disesuaikan untuk dimasukkan di beberapa tempat yang telah ditentukan.

Sejauh ini saya telah menggunakan PIC 18 dalam semua kasus ini. Sementara kurang dari 4 kbytes RAM adalah batasan, masih banyak yang bisa Anda lakukan. Ruang ROM bahkan belum dekat dengan masalah. Tumpukan jaringan saya untuk PIC 18 (tersedia dalam rilis Alat Pengembangan PIC saya di www.embedinc.com/pic/dload.htm ) hanya membutuhkan sebagian kecil dari ruang ROM 18F67J60, yang merupakan bagian yang bagus untuk hal-hal seperti itu sejak memiliki ethernet lengkap MAC / PHY built in. Dalam satu kasus saya memiliki PIC yang menjadi server untuk 6 koneksi TCP simultan. Ini benar-benar tidak seberat yang orang pikirkan.

Olin Lathrop
sumber
Perlu dicatat bahwa banyak server web sederhana, ketika mereka menerima permintaan, akan segera mengirimkan semua yang akan mereka kirim sebagai tanggapan atas permintaan, menutup koneksi, dan melupakannya. Ini mengurangi persyaratan RAM TCP, tetapi memberikan beberapa batasan parah pada kompleksitas halaman web. Adalah mungkin untuk merancang server TCP stateless yang dapat menjaga jumlah koneksi yang tidak terbatas tetap terbuka (saya sudah melakukannya), tetapi hal seperti itu akan membutuhkan front-end sisi klien kustom. Ini paling sederhana untuk menjaga hal-hal yang cukup kecil untuk memungkinkan operasi HTTP stateless.
supercat
PEMBERITAHUAN: Saya mencoba mengunduh "install_picdev.exe" tetapi Firefox (atau Windows Security Essentials) mengatakan itu adalah malware. Tidak akan membukanya.
ahogen
14

Kontributor utama peningkatan popularitas server web baru-baru ini pada mikrokontroler adalah keinginan untuk mengakses informasi sensor fisik (suhu, kelembaban, tingkat cahaya, keberadaan karbon monoksida, dll.) Dari jarak jauh, serta membuat berbagai hal terjadi di dunia fisik (beralih pada LED, nyalakan alarm, nyalakan kipas darurat, nyalakan pompa pendingin) juga dari jarak jauh. Itulah aplikasinya.

Apa cara yang lebih baik untuk mencapai akses jarak jauh generik, konsisten, independen perangkat, desainer-independen daripada protokol HTTP yang ada di mana-mana, melalui jaringan IP yang bahkan lebih ada di mana-mana? Lapisan fisik komunikasi dapat berupa WiFi, kabel Ethernet, atau opsi praktis lainnya yang mendukung jaringan IP. Itulah sebabnya server web pada perangkat tertanam sedang dilakukan.

Untuk wawasan lebih lanjut, seseorang dapat mencari " Internet of Things " dan melihat berbagai proses pemikiran yang muncul.

Mengenai " server kecil yang memiliki RAM sekecil itu ", perlu dicatat bahwa protokol HTTP cukup sederhana untuk diimplementasikan pada RAM yang sangat sedikit, dengan daya pemrosesan yang sangat sedikit. Juga, mikrokontroler saat ini sebanding dengan, atau dalam beberapa kasus lebih kuat daripada, prosesor pada komputer pribadi awal di mana orang telah menerapkan tidak hanya web, tetapi juga melakukan berbagai tugas interaktif, bahkan bermain game.

Anindo Ghosh
sumber
Jawaban yang bagus. Mengenai aplikasi, saya kehilangan menyebutkan beberapa elektronik konsumen umum yang sering juga dapat diakses dan dikonfigurasi menggunakan browser. Printer, perangkat TV, penerima audio bioskop rumah, router ... Saya bertaruh bahkan ada mesin kopi yang dapat diakses dari jarak jauh :) EDIT: Memang, beberapa dari mereka memiliki kekuatan pemrosesan PC modern dan tidak berbasis mikrokontroler.
Rev1.0
Saya akan menambahkan bahwa pilihan antara memiliki sesuatu seperti alat berkomunikasi melalui HTTP versus sesuatu yang lain umumnya merupakan pilihan antara membuat alat itu sendiri sedikit lebih rumit, dibandingkan mengharuskan pengguna untuk membeli atau menginstal beberapa perangkat keras atau perangkat lunak khusus untuk berkomunikasi dengannya. Mungkin lebih murah dan lebih hemat energi untuk membangun sensor suhu yang menggunakan skema RF eksklusif untuk berkomunikasi secara nirkabel dengan dongle USB daripada memasukkan adaptor WiFi ke sensor suhu, tetapi pendekatan terakhir menghindari kebutuhan untuk dongle.
supercat
4

Banyak perangkat jaringan menyediakan server web untuk memeriksa dan mengatur parameter konfigurasi, memeriksa status perangkat, dll. Misalnya, saya dapat mengkonfigurasi router di sistem saya dengan mengarahkan browser saya ke http:///192.168.0.254(jika saya ingat dengan benar ...).

Pete Becker
sumber
3
  1. Karena mereka bisa.

  2. Karena mereka bisa menjadi kekuatan yang sangat rendah. Seperti di bawah 1W dengan beberapa undian puncak. Di bawah setengah amp. Baterai dan tenaga surya praktis, tidak seperti komputer yang lebih besar.

  3. Ukuran fisik. Sebuah mikrokontroler + wifi atau chip ethernet dapat menjadi ukuran thumb drive.

  4. Biaya. Mikrokontroler yang cocok untuk ini bisa berada dalam kisaran dolar tunggal. Bagian-bagian jaringan hampir semurah itu.

  5. Sekali pakai. Anda dapat menempatkan mereka dalam satu proyek dan jika mereka mati, itu tidak seburuk jika komputer yang mahal tidak.

  6. Hanya menyebabkan.

Dengan munculnya komputer yang penuh sesak nafas untuk puluhan dolar (gratis hingga $ 100) (shrevaplug, raspberry pi, smartphone, thumb drive linux, tongkat android, ROUTER), Anda mungkin akan melihat lebih sedikit server web mikrokontroler di masa depan, karena ada tidak lagi BIAYA dan Ukuran sebagai faktor pendorong. Raspberry Pi 35 dolar atau Beaglebone 45 dolar dapat mengungguli Arduino + Ethernet atau Wifi shield dalam hal biaya, kinerja, kemudahan pengaturan. Ini hampir tidak lebih besar dari Arduino. Satu-satunya hal yang dapat dilakukan arduino adalah efisiensi daya 0,1W (0,5mA hingga 50 mA tidur hingga daya komputasi penuh [5v, 16mhz, 100% cpu] oleh ATMEGA saja) vs 4W untuk RPI tanpa ethernet / HDMI / usb penggunaan saat idle.

Jadi webservers mikrokontroler dapat bertenaga baterai karena konsumsi arus yang rendah. Bahkan kemudian, beberapa SoC linux yang lebih baru seperti router saku dengan server web dapat dekat dengan mereka.

Pejalan kaki
sumber
Pertimbangkan juga rangkaian mikrokontroler Texas Instruments MSP430: Konsumsi daya yang sangat rendah dan kemampuan yang cukup untuk melayani web. Pemrosesan 16 bit. Beberapa opsi termasuk jaringan nirkabel di luar kotak. Ukuran: Papan lengkap dengan konektivitas nirkabel dapat masuk ke thumb drive.
Anindo Ghosh
Jawaban-jawaban ini hanya menjawab satu bagian dari pertanyaan. Kenapa kita melakukannya? Bagaimana dengan bagian selanjutnya; Bagaimana kita melakukannya? Skill apa yang dibutuhkan?
Anshul
1
@Anshul Anda perlu kode ke spesifikasi server http, dan Anda memerlukan tumpukan jaringan (ip / tcp / udp) atau serupa, tergantung pada IC jaringan yang Anda pilih.
Pejalan kaki
2

Jawaban Olin cukup banyak hits pada setiap alasan saya menggunakan server web tertanam. Saya bekerja mengembangkan kontrol industri dan hampir setiap produk yang kami hasilkan memiliki server web tertanam.

Sebagian besar pelanggan akan memiliki semua peralatan mereka di jaringan mereka karena berbagai alasan. Jadi dapat mengkonfigurasi dan / atau mengendalikannya melalui peramban web alih-alih memasang lusinan program khusus sangat diinginkan.

Bahkan jika mereka menggunakan protokol industri seperti PROFINET , lapisan fisiknya sama dengan sisa Ethernet mereka dan kemudian mereka hanya perlu satu perangkat lunak (pengawas IO PROFINET) untuk mengendalikan puluhan mesin. Dalam pengalaman saya, pengaturan ini cukup standar di banyak industri.

Berkenaan dengan sumber daya (kekuatan pemrosesan, RAM, ROM), ketika dipotong ke esensi beruang, perangkat keras yang sangat minimal diperlukan untuk berhasil melayani halaman web. webACE Saya pikir memegang rekor untuk server web terkecil. Sayang sekali Anda tidak bisa lagi mengunjungi halaman yang dihostingnya.

chip webACE kabel webACE

Perangkat Lunak

Beberapa statistik kode untuk perangkat lunak asli. Saya awalnya lupa untuk memasukkan "data eeprom" on-chip 64 byte dalam total, yang menyebabkan angka 1010 byte yang dikutip pada TBTF.

Startup       36 bytes
Serial       179
SLIP          91
IP           144
ICMP          47
TCP          188
Checksum     132
Application  257
Total       1074 bytes

Comprising:
  454 instructions
  912 instruction bytes
  162 data bytes
 2.01 bytes/instruction average

Adapun keterampilan lain yang dibutuhkan, pemahaman yang mendalam tentang jaringan tidak benar-benar diperlukan. Saya tidak pernah menulis setumpuk untuk protokol apa pun karena ada banyak perpustakaan yang tersedia untuk dihubungkan dan digunakan untuk setiap arsitektur yang mungkin. Mengetahui beberapa HTML mentah dasar berguna untuk merancang dan menulis halaman yang sebenarnya.

Selain itu bisa membaca dan memahami log dari Wireshark atau Fiddler (penganalisa jaringan) mungkin akan menjadi keterampilan yang paling berguna karena akan sangat membantu dalam men-debug setiap masalah yang Anda miliki. Sedikit bacaan tentang struktur paket protokol apa pun yang Anda gunakan (TCP, IP, HTTP, UDP, PROFINET, dll.) Akan memberi tahu Anda ke mana harus mencari paket untuk informasi apa pun yang Anda butuhkan. Anda bahkan dapat menjalankan salah satu dari analisa tersebut sekarang dan melihat lalu lintas yang datang dan pergi ke komputer Anda untuk merasakannya.

tertanam.kyle
sumber
2

Salah satu alasannya adalah tantangan. Terlebih lagi jika Anda mengembangkan papan mikrokontroler dan / atau menulis perangkat lunak Anda sendiri.

Brian Carlton
sumber
3
Ini bukan tantangan. Anda dapat mengunduh demo yang memiliki server web bawaan.
Olin Lathrop
1
Ini akan menjadi tantangan jika Anda akan menulis tumpukan TCP / IP Anda sendiri dari awal ..
m.lin