Tại sao mọi người tạo máy chủ web trên một vi điều khiển?


13

Tôi đã bắt gặp những người tạo máy chủ web bằng vi điều khiển, tại sao ai đó sẽ làm điều đó? ứng dụng của nó là gì? Kỹ năng nào được đặt ra ngoài ngôn ngữ C mà người ta cần để tạo ra các máy chủ như vậy? Tôi khá tò mò về những máy chủ nhỏ bé này có RAM nhỏ như vậy.


Câu hỏi này rất rộng, vui lòng cố gắng tập trung vào một câu hỏi kỹ thuật cụ thể.
Kortuk

10
Bỏ phiếu để mở lại. Câu hỏi này là đủ tốt.
Nick Alexeev

"Chúng tôi hy vọng câu trả lời sẽ được hỗ trợ bởi các sự kiện, tài liệu tham khảo hoặc chuyên môn cụ thể, nhưng câu hỏi này có thể sẽ thu hút tranh luận, tranh luận, bỏ phiếu hoặc thảo luận mở rộng."
Photon

Tôi vui mừng vì cuối cùng tôi cũng có thể thấy khái niệm này được sử dụng như thế nào trong ngành. Nhưng từ đây, một câu hỏi mới được tạo ra, thấy rằng việc triển khai một máy chủ trên uC và hơn là tạo giao diện người dùng chạy trên trình duyệt internet khiến mọi việc trở nên dễ dàng, tại sao nhiều người vẫn dùng đến những cách khó hơn như USB?
quantum231

@ quantum231 Vui lòng đặt câu hỏi mới nếu bạn có câu hỏi mới. :-)
Anindo Ghosh

Câu trả lời:


15

Tôi đã làm điều này trong một vài sản phẩm. Cho đến nay lý do là để cho phép cấu hình trường đơn giản. Mỗi lần sản phẩm đã được kết nối với ethernet vì lý do hoạt động chính của nó. Do đó, máy chủ web chỉ được thêm mã vào vi điều khiển.

Ưu điểm lớn của máy chủ HTTP là không yêu cầu phần cứng hoặc phần mềm đặc biệt để trình bày giao diện người dùng hợp lý cho người dùng cuối. Mọi người đều đã có trình duyệt web, vì vậy điều này không gây phiền hà cho khách hàng. Hãy suy nghĩ về các lựa chọn thay thế khác. Bạn có thể cung cấp cổng RS-232, nhưng sau đó bạn phải cung cấp ứng dụng tùy chỉnh hoặc giải thích cho ai đó cách thiết lập chương trình thiết bị đầu cuối với tốc độ truyền đúng, bit bắt đầu, bit dừng và chẵn lẻ. Bạn cũng phải cung cấp cáp hoặc hy vọng khách hàng có một cáp, và ai đó phải đến đơn vị và kết nối vật lý với nó. USB không có cùng một vấn đề cấu hình, nhưng thường có nghĩa là toàn bộ một micro riêng biệt trong sản phẩm và ở đó bạn cần một chương trình tùy chỉnh để chạy trên bất kỳ nền tảng nào mà khách hàng có thể có.

Đối với RAM, đó không phải là vấn đề đối với máy chủ HTTP. Một ngăn xếp giao thức TCP cần một số RAM, nhưng máy chủ HTTP không thực sự, ngoại trừ các tài nguyên bổ sung mà nó có thể yêu cầu từ ngăn xếp mạng. Một máy chủ web hầu hết cần không gian ROM, vì hầu hết mọi trang đều không đổi, thường có một vài giá trị được chuyển đổi thành văn bản và được chèn nhanh chóng. Các máy chủ web cho các micrô nhỏ hoạt động với các hệ thống tệp ROM và thoát các chuỗi trong các tệp khiến mã ứng dụng của bạn được gọi để tạo các chuỗi tùy chỉnh để chèn tại một số vị trí được xác định trước.

Cho đến nay tôi đã sử dụng PIC 18 trong tất cả các trường hợp này. Mặc dù RAM ít hơn 4 kbyte là một hạn chế, nhưng vẫn còn rất nhiều điều bạn có thể làm. Không gian ROM thậm chí không gần với một vấn đề. Ngăn xếp mạng của tôi cho PIC 18 (có sẵn trong bản phát hành Công cụ phát triển PIC của tôi tại www.embedinc.com/pic/dload.htm ) chỉ chiếm một phần nhỏ không gian ROM của 18F67J60, một phần tuyệt vời cho những thứ đó nó có một MAC / PHY ethernet hoàn chỉnh được tích hợp. Trong một trường hợp tôi có PIC đó là một máy chủ cho 6 kết nối TCP đồng thời. Nó thực sự không nặng như mọi người nghĩ.


Điều đáng chú ý là nhiều máy chủ web đơn giản, khi họ nhận được yêu cầu, sẽ gửi ngay lập tức mọi thứ họ sẽ gửi để đáp lại yêu cầu, đóng kết nối và quên nó đi. Điều này làm giảm các yêu cầu RAM TCP, nhưng đặt một số giới hạn nghiêm trọng về độ phức tạp của trang web. Có thể thiết kế một máy chủ TCP không trạng thái có thể mở số lượng kết nối không giới hạn (tôi đã thực hiện), nhưng một việc như vậy sẽ yêu cầu giao diện người dùng phía khách hàng tùy chỉnh. Thật đơn giản để giữ mọi thứ đủ nhỏ để cho phép hoạt động HTTP không trạng thái.
supercat

THÔNG BÁO: Tôi đã thử tải xuống "install_picdev.exe" nhưng Firefox (hoặc Windows Security Essentials) cho biết đây là phần mềm độc hại. Sẽ không mở nó.
ahogen

14

Một đóng góp quan trọng cho sự gia tăng phổ biến gần đây của các máy chủ web trên vi điều khiển là mong muốn truy cập thông tin cảm biến vật lý (nhiệt độ, độ ẩm, mức độ ánh sáng, sự hiện diện của carbon monoxide, v.v.), cũng như làm cho mọi thứ xảy ra trong thế giới vật lý (chuyển đổi trên đèn LED, kích hoạt báo động, bật quạt hút khẩn cấp, bật bơm làm mát) cũng từ xa. Đó là những ứng dụng.

Còn cách nào tốt hơn để đạt được truy cập từ xa chung, nhất quán, độc lập với thiết bị, độc lập với thiết kế hơn giao thức HTTP phổ biến, qua mạng IP phổ biến hơn nữa? Lớp giao tiếp vật lý có thể là WiFi, Ethernet có dây hoặc bất kỳ tùy chọn tiện lợi nào khác hỗ trợ kết nối mạng IP. Đó là lý do tại sao các máy chủ web trên các thiết bị nhúng đang được thực hiện.

Để hiểu rõ hơn, người ta có thể tìm kiếm " Internet vạn vật " và thấy một loạt các quá trình suy nghĩ đưa ra.

Về " các máy chủ nhỏ có RAM nhỏ như vậy ", điều đáng chú ý là giao thức HTTP đủ đơn giản để có thể thực hiện được trên rất ít RAM, với rất ít sức mạnh xử lý. Ngoài ra, các bộ vi điều khiển ngày nay có thể so sánh với, hoặc trong một số trường hợp mạnh hơn các bộ xử lý trên các máy tính cá nhân đầu tiên mà mọi người đã thực hiện không chỉ trên web mà còn thực hiện nhiều tác vụ tương tác, thậm chí là chơi game.


Câu trả lời tốt. Về các ứng dụng tôi bỏ lỡ việc đề cập đến một số thiết bị điện tử tiêu dùng thông thường cũng có thể được truy cập và định cấu hình bằng trình duyệt. Máy in, TV, máy thu âm thanh rạp chiếu phim tại nhà, bộ định tuyến ... Tôi cá là thậm chí còn có máy pha cà phê có thể truy cập từ xa :) EDIT: Được cấp, một số máy có khả năng xử lý của PC hiện đại và không dựa trên bộ điều khiển vi mô.
Rev1.0

Tôi sẽ nói thêm rằng lựa chọn giữa việc một thiết bị nào đó giao tiếp qua HTTP so với thứ khác thường là lựa chọn giữa việc làm cho thiết bị trở nên phức tạp hơn một chút, so với yêu cầu người dùng mua hoặc cài đặt một số phần cứng hoặc phần mềm chuyên dụng để giao tiếp với nó. Có thể rẻ hơn và tiết kiệm năng lượng hơn khi chế tạo cảm biến nhiệt độ sử dụng sơ đồ RF độc quyền để giao tiếp không dây với khóa USB hơn là bao gồm bộ điều hợp WiFi trong cảm biến nhiệt độ, nhưng cách tiếp cận sau sẽ tránh được nhu cầu sử dụng khóa.
supercat

4

Nhiều thiết bị nối mạng cung cấp một máy chủ web để kiểm tra và cài đặt các tham số cấu hình, kiểm tra trạng thái của thiết bị, v.v. Ví dụ: tôi có thể định cấu hình bộ định tuyến trong hệ thống của mình bằng cách trỏ trình duyệt của mình vào http:///192.168.0.254(nếu tôi nhớ chính xác ...).


3
  1. Bởi vì họ có thể.

  2. Bởi vì họ có thể có sức mạnh rất thấp. Giống như dưới 1W với một số trận hòa đỉnh. Dưới một nửa amp. Pin và năng lượng mặt trời là thiết thực, không giống như các máy tính lớn hơn.

  3. Kích thước vật lý. Một vi điều khiển + wifi hoặc chip ethernet có thể có kích thước của một ổ USB.

  4. Giá cả. Một bộ vi điều khiển phù hợp cho việc này có thể nằm trong phạm vi một đô la. Các bộ phận mạng gần như rẻ.

  5. Dùng một lần. Bạn có thể đưa chúng vào một dự án và nếu chúng chết, điều đó không tệ như thể một chiếc máy tính đắt tiền.

  6. Chỉ cần gây ra.

Với sự ra đời của máy tính thổi toàn bộ với giá hàng chục đô la (miễn phí đến 100 đô la) (shrevaplugs, raspberry pi, điện thoại thông minh, ổ đĩa linux, gậy android, ROUTERS), bạn có thể sẽ thấy ít máy chủ web vi điều khiển hơn trong tương lai, bởi vì có không còn CHI PHÍ và Kích thước như một yếu tố lái xe. Một Raspberry Pi 35 đô la hoặc Beaglebone 45 đô la có thể vượt trội hơn một lá chắn Arduino + Ethernet hoặc Wifi về chi phí, hiệu suất, dễ cài đặt. Nó chỉ lớn hơn arduino. Điều duy nhất mà arduino có thể làm được đó là hiệu suất năng lượng 0,1W (ngủ 0,5mA đến 50 mA đến toàn bộ sức mạnh tính toán [5v, 16mhz, 100% cpu] chỉ bằng ATMEGA) so với 4W cho RPI không có ethernet / hdmi / usb sử dụng lúc nhàn rỗi.

Vì vậy, máy chủ web vi điều khiển có thể được cung cấp năng lượng pin do mức tiêu thụ hiện tại thấp. Thậm chí sau đó, một số SoC linux mới hơn như bộ định tuyến bỏ túi với máy chủ web có thể gần với chúng.


Cũng xem xét nhóm vi điều khiển MSP430 của Texas: Tiêu thụ năng lượng cực kỳ thấp và khả năng phục vụ web rộng rãi. Xử lý 16 bit. Một số tùy chọn bao gồm kết nối mạng không dây. Kích thước: Một bảng hoàn chỉnh với kết nối không dây có thể vừa với ổ ngón tay cái.
Anindo Ghosh

Những câu trả lời chỉ trả lời một phần của câu hỏi. Tại sao chúng ta làm điều đó? Những gì về phần tiếp theo; Chúng ta làm điều đó như thế nào? Những bộ kỹ năng được yêu cầu?
Anshul

1
@Anshul Bạn cần mã theo đặc tả máy chủ http và bạn cần một ngăn xếp mạng (ip / tcp / udp) hoặc tương tự, tùy thuộc vào IC mạng bạn chọn.
Người qua đường

2

Câu trả lời của Olin khá nhiều lần vì mọi lý do tôi đã sử dụng máy chủ web nhúng. Tôi làm việc phát triển các điều khiển công nghiệp và hầu hết mọi sản phẩm chúng tôi sản xuất đều có máy chủ web nhúng.

Hầu hết khách hàng sẽ có tất cả các thiết bị của họ trên mạng vì nhiều lý do. Vì vậy, việc có thể định cấu hình và / hoặc kiểm soát nó thông qua trình duyệt web thay vì cài đặt hàng tá chương trình tùy chỉnh là rất mong muốn.

Ngay cả khi họ đang sử dụng một giao thức công nghiệp như PROFINET , lớp vật lý cũng giống như phần còn lại của Ethernet và sau đó họ chỉ cần một phần mềm (trình giám sát IO PROFINET) để điều khiển hàng tá máy. Theo kinh nghiệm của tôi, thiết lập này là khá chuẩn trong nhiều ngành công nghiệp.

Liên quan đến tài nguyên (sức mạnh xử lý, RAM, ROM), khi được cắt giảm các yếu tố cần thiết, cần có phần cứng cực kỳ nhỏ để phục vụ thành công một trang web. webACE Tôi nghĩ giữ kỷ lục cho máy chủ web nhỏ nhất. Thật xấu hổ khi bạn không còn có thể truy cập trang được lưu trữ.

chip webACE cáp mạng

Phần mềm

Một số thống kê mã cho phần mềm gốc. Ban đầu, tôi đã quên bao gồm "dữ liệu eeprom" 64 byte trên chip trong tổng số, dẫn đến con số 1010 byte được trích dẫn trên 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

Đối với các kỹ năng khác cần thiết, một sự hiểu biết sâu sắc về mạng là không thực sự cần thiết. Tôi chưa bao giờ viết một ngăn xếp cho bất kỳ giao thức nào vì có rất nhiều thư viện có sẵn để được liên kết và sử dụng cho mọi kiến ​​trúc có thể hiểu được. Biết một số HTML thô cơ bản rất hữu ích cho việc thiết kế và viết trang thực tế.

Ngoài ra, việc có thể đọc và hiểu nhật ký từ Wireshark hoặc Fiddler (máy phân tích mạng) có thể sẽ là kỹ năng hữu ích nhất vì nó sẽ hỗ trợ rất nhiều trong việc gỡ lỗi mọi vấn đề bạn gặp phải. Đọc một chút về cấu trúc gói của bất kỳ giao thức nào bạn đang sử dụng (TCP, IP, HTTP, UDP, PROFINET, v.v.) sẽ cho bạn biết nơi tìm trong gói để biết bất kỳ thông tin nào bạn cần. Bạn thậm chí có thể kích hoạt một trong những máy phân tích đó ngay bây giờ và xem lưu lượng truy cập đến và đi đến máy tính của bạn để cảm nhận về nó.


2

Một trong những lý do là cho thử thách. Hơn nữa nếu bạn phát triển bảng vi điều khiển và / hoặc viết phần mềm của riêng bạn.


3
Đó không phải là một thách thức nhiều. Bạn có thể tải xuống các bản demo có tích hợp máy chủ web.
Olin Lathrop

1
Sẽ là một thách thức nếu bạn viết ngăn xếp TCP / IP của riêng mình từ đầu ..
m.Alin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.