Чому люди створюють веб-сервер на мікроконтролері?


13

Я натрапив на людей, які створюють веб-сервери за допомогою мікроконтролерів, навіщо хтось це робити? Які його застосування? Який набір навичок, крім мови С, потрібен для створення таких серверів? Мені дуже цікаво, що ці крихітні сервери мають таку маленьку оперативну пам’ять.


Ці питання дуже широкі, будь ласка, спробуйте зосередитись на конкретному технічному питанні.
Кортук

10
Голосування за повторне відкриття. Це питання досить добре.
Нік Алексєєв

"Ми очікуємо, що відповіді будуть підкріплені фактами, посиланнями або конкретною експертизою, але це питання, ймовірно, вимагатиме дискусій, аргументів, опитувань чи розширеної дискусії".
The Photon

Я радий, що нарешті я можу побачити, як ця концепція використовується в галузі. Але з цього породжується нове запитання, бачачи, що реалізація сервера на комп'ютері та створення інтерфейсу користувача, який працює в Інтернет-браузері, робить так просто, чому багато людей все ж вдаються до більш складних способів, таких як USB?
kvant231

@ quantum231 Будь ласка, поставте нове запитання, якщо у вас є свіже запитання. :-)
Аніндо Гош

Відповіді:


15

Я зробив це в кількох продуктах. Поки що причина полягала в тому, щоб дозволити просту конфігурацію поля. Кожен раз, коли продукт вже потребував підключення до Ethernet з причини його основної роботи. Тому веб-серверу було просто додано код в мікроконтролер.

Великою перевагою HTTP-сервера є те, що для представлення розумного користувальницького інтерфейсу кінцевому користувачеві не потрібно спеціальне обладнання або програмне забезпечення. У кожного вже є веб-браузер, тож це не турбує замовника. Подумайте про інші альтернативи. Ви можете надати порт RS-232, але тоді вам доведеться або надати користувальницьку програму, або пояснити комусь, як налаштувати термінальну програму з правильною швидкістю передачі, запустити біти, стоп-біти та парність. Вам також потрібно подати кабель або сподіватися, що у замовника є такий, і хтось повинен зайти до блоку та фізично підключитися до нього. USB не має тієї ж проблеми з конфігурацією, але, як правило, це означає окремий мікрофон у продукті, і там вам потрібна спеціальна програма для роботи на будь-якій платформі, у якої може бути клієнт.

Що стосується оперативної пам'яті, то це не так вже й багато проблем для HTTP-сервера. Стек протоколів TCP потребує деякої оперативної пам’яті, але HTTP-сервер насправді, за винятком додаткових ресурсів, які можуть знадобитися з мережевого стеку. Веб-серверу в основному потрібен простір для ROM, оскільки більшість кожної сторінки є постійною, зазвичай з кількома значеннями, перетвореними в текст і вставленими під час руху. Веб-сервери для невеликих мікросхем працюють з файловими системами ROM та послідовностями виходу в ті файли, які викликають виклик коду програми для створення настроюваних рядків для вставки в декількох заздалегідь визначених місцях.

Поки я використовував PIC 18 у всіх цих випадках. Хоча менше 4 кбайт оперативної пам’яті є обмеженням, все ж можна зробити багато. Простір ПЗУ навіть не було близьким до проблеми. Мій стек мережі для PIC 18 (доступний у моїй версії Інструментів розвитку PIC на веб-сайті www.embedinc.com/pic/dload.htm ) займає лише невелику частину простору ПЗУ 18F67J60, що є гарною частиною для таких речей, оскільки у нього вбудований повний MAC / PHY Ethernet. В одному випадку я маю, що PIC є сервером для 6 одночасних TCP-з'єднань. Це насправді не так важко, як думають люди.


Варто зазначити, що багато простих веб-серверів, коли вони отримують запит, одразу надсилають все, що коли-небудь надсилають у відповідь на запит, закриють з'єднання та забудуть про нього. Це зменшує вимоги до оперативної пам'яті TCP, але встановлює суворі обмеження щодо складності веб-сторінок. Можна створити TCP-сервер без стану, який може підтримувати необмежену кількість з'єднань відкритими (я це зробив), але для цього потрібен спеціальний клієнтський фронт-порт. Найпростіше тримати речі досить маленькими, щоб дозволити роботу HTTP без стану.
supercat

УВАГА: Я спробував завантажити "install_picdev.exe", але Firefox (або Windows Security Essentials) сказав, що це шкідливе програмне забезпечення. Не збирається його відкривати.
ahogen

14

Ключовим фактором недавнього зростання популярності веб-серверів на мікроконтролерах є бажання отримувати доступ до інформації фізичного сенсора (температура, вологість, рівень освітлення, наявність оксиду вуглецю тощо) віддалено, а також робити так, що відбувається у фізичному світі (перемикач на світлодіоді, спрацюйте сигнал тривоги, увімкніть аварійний витяжний вентилятор, увімкніть насос охолоджуючої рідини) також віддалено. Це програми.

Який кращий спосіб досягти загального, послідовного, незалежного від пристрою, незалежного від дизайнера віддаленого доступу, ніж всюдисущий протокол HTTP, через ще більш всюдисущу мережу IP? Фізичним рівнем зв'язку може бути WiFi, провідний Ethernet або будь-який інший зручний варіант, який підтримує мережу IP. Ось чому ведуться веб-сервери на вбудованих пристроях.

Для подальшого розуміння можна було б знайти « Інтернет речей » і побачити широкий спектр мисленнєвих процесів, які виховуються.

Що стосується " крихітних серверів, які мають таку невелику оперативну пам'ять ", то варто відзначити, що протокол HTTP досить простий, щоб його можна було реалізувати на дуже мало оперативної пам'яті, з дуже малою потужністю обробки. Також сьогоднішні мікроконтролери порівнянні з, або в деяких випадках, потужнішими, ніж процесори на ранніх персональних комп’ютерах, на яких люди реалізували не тільки Інтернет, але й виконували різноманітні інтерактивні завдання, навіть грали в ігри.


Гарна відповідь. Щодо програм я пропускаю згадку про деяку поширену побутову електроніку, до якої часто також можна отримати доступ та налаштувати за допомогою браузера. Принтери, телевізори, аудіоприймачі для домашнього кінотеатру, маршрутизатори ... Я думаю, що є навіть віддалено доступні кавові машини :) EDIT: Звичайно, деякі з них мають потужність обробки сучасного ПК та не мають мікроконтролера.
Rev1.0

Я хотів би додати, що вибір між тим, щоб щось на зразок пристрою спілкуватися через HTTP та щось інше, це, як правило, вибір між тим, щоб зробити сам прилад дещо складнішим, порівняно з тим, щоб вимагати від користувача придбання або встановлення певного обладнання або програмного забезпечення для спілкування з ним. Можливо, дешевше та енергоефективніше побудувати датчик температури, який використовує власну схему радіочастотного зв’язку для бездротового зв'язку з USB-ключем, ніж включити WiFi-адаптер у датчик температури, але останній підхід дозволяє уникнути необхідності використання ключа.
supercat

4

Багато мережевих пристроїв забезпечують веб-сервер для вивчення та встановлення параметрів конфігурації, перевірки стану пристрою тощо. Наприклад, я можу налаштувати маршрутизатор у своїй системі, вказуючи свій браузер http:///192.168.0.254(якщо я правильно пам'ятаю ...).


3
  1. Бо вони можуть.

  2. Тому що вони можуть бути дуже низькою потужністю. Як і під 1 Вт з деякими піковими нічиями. Під пів ампер. Акумулятор та сонячна енергія практичні, на відміну від великих комп'ютерів.

  3. Фізичні розміри. Мікроконтролер + wifi або мікросхема Ethernet можуть бути розміром з великим накопичувачем.

  4. Вартість. Підходящий для цього мікроконтролер може бути в діапазоні одного долара. Мережеві частини майже так само дешеві.

  5. Одноразові. Ви можете розмістити їх в одноразових проектах, і якщо вони помруть, це не так вже й погано, як якщо це дорогий комп'ютер.

  6. Просто тому що.

З появою повнофункціональних комп’ютерів на десятки доларів (безкоштовно до 100 доларів) (шреваплейки, малинові пі, смартфони, накопичувачі великих пальців linux, андроїд-палички, маршрутизатори), ви, мабуть, побачите менше веб-серверів мікроконтролерів у майбутньому, бо є більше не вартість і розмір як рушійний фактор. 35-доларовий Raspberry Pi або 45-доларовий Beaglebone можуть випереджати Arduino + Ethernet або Wifi-щит за вартістю, продуктивністю, простотою налаштування. Це ледь більше, ніж ардуїно. Єдине, що може зробити ардуїно над цим - це енергоефективність 0,1 Вт (сон від 0,5 мА до 50 мА до повної обчислювальної потужності [5 В, 16 МГц, 100% процесор] лише ATMEGA) проти 4 Вт для RPI без відсутності ethernet / hdmi / usb використання в режимі очікування.

Таким чином, веб-сервери мікроконтролерів можуть працювати від акумулятора через низьке споживання струму. Вже тоді деякі новіші Linux SoC, як кишеньковий маршрутизатор із веб-сервером, можуть бути поруч із ними.


Розглянемо також сімейство мікроконтролерів компанії Texas Instruments MSP430: Несумлінно низьке енергоспоживання та достатня можливість для веб-сервісу. 16-бітна обробка. Деякі варіанти включають бездротові мережі поза коробкою. Розмір: Повна дошка з бездротовим підключенням може вміститися в палець.
Аніндо Гош

Ці відповіді відповідають лише на одну частину запитання. Чому ми це робимо? Як щодо наступної частини; Як ми це робимо? Які набори навичок потрібні?
Аншул

1
@Anshul Вам потрібно кодувати специфікацію http-сервера, і вам потрібен мережевий стек (ip / tcp / udp) або подібний, залежно від того, яку мережеву мережу ви виберете.
Перехожий

2

Відповідь Оліна в значній мірі вражає кожну причину, коли я використовував вбудований веб-сервер. Я працюю над розробкою промислового контролю, і майже кожен продукт, який ми виробляємо, має вбудований веб-сервер.

Більшість клієнтів матиме все своє обладнання у своїй мережі вже з різних причин. Тому можливість налаштувати та / або керувати ним через веб-браузер, а не встановлювати десятки користувацьких програм, дуже бажано.

Навіть якщо вони використовують такий промисловий протокол, як PROFINET , фізичний рівень такий же, як і решта їх Ethernet, і тоді їм потрібен лише один програмний продукт (керівник PROFINET IO) для управління десятками машин. На мій досвід, цей настрій є досить стандартним для багатьох галузей.

Що стосується ресурсів (обробна потужність, оперативна пам’ять, ROM), то для їх успішного обслуговування веб-сторінки потрібне неймовірно мінімальне обладнання, коли рубається до основного вмісту ведмедя. webACE Я думаю, що є рекордом для найменшого веб-сервера. Прикро, що ти більше не можеш відвідувати сторінку, яку він розміщував.

чіп webACE кабель webACE

Програмне забезпечення

Деякі статистичні дані коду для оригінального програмного забезпечення. Я спочатку забув включити 64-байтний "байт даних eeprom" на мікросхемі в загальну суму, що призвело до цифри 1010 байт, котируваної в 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

Що стосується інших необхідних навичок, то глибоке розуміння мереж насправді не потрібно. Я ніколи не писав стек для жодного протоколу, тому що існує безліч бібліотек, які можна з'єднати і використовувати для кожної мислимої архітектури. Знання основних основних сирих HTML корисно для розробки та написання фактичної сторінки.

Окрім того, що вміти читати та розуміти журнал від Wireshark або Fiddler (мережеві аналізатори), ймовірно, буде найбільш корисним навиком, оскільки це значно допоможе у налагодженні будь-яких проблем, які у вас є. Невелике читання структури пакету будь-якого протоколу, який ви використовуєте (TCP, IP, HTTP, UDP, PROFINET тощо), підкаже, де шукати в пакеті будь-яку інформацію, яка вам потрібна. Ви можете навіть запустити один із цих аналізаторів прямо зараз і подивитися на трафік, що надходить і йде до вашого комп’ютера, щоб відчути це.


2

Однією з причин є виклик. Тим більше, що ви розробляєте плату мікроконтролера та / або пишете власне програмне забезпечення.


3
Це навряд чи великий виклик. Ви можете завантажити демонстрації з вбудованим веб-сервером.
Олін Летроп

1
Буде проблемою, якби ви написали власний стек TCP / IP з нуля ..
m.Alin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.