ทำไมคนสร้างเว็บเซิร์ฟเวอร์บนไมโครคอนโทรลเลอร์?


13

ฉันเจอคนที่สร้างเว็บเซิร์ฟเวอร์โดยใช้ไมโครคอนโทรลเลอร์ทำไมบางคนทำอย่างนั้น แอปพลิเคชันของมันคืออะไร? ทักษะใดที่นอกเหนือจากภาษา C จำเป็นต้องมีเพื่อสร้างเซิร์ฟเวอร์ดังกล่าว ฉันค่อนข้างสงสัยเกี่ยวกับเซิร์ฟเวอร์เล็ก ๆ เหล่านี้ที่มี RAM ขนาดเล็กเช่นนั้น


คำถามนี้กว้างมากโปรดพยายามเน้นคำถามทางเทคนิคเฉพาะ
Kortuk

10
การลงคะแนนเพื่อเปิดใหม่ คำถามนี้ดีพอ
Nick Alexeev

"เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญเฉพาะด้าน แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม"
โฟตอน

ฉันดีใจที่ในที่สุดฉันก็สามารถเห็นว่าแนวคิดนี้ใช้ในอุตสาหกรรมอย่างไร แต่จากนี้คำถามใหม่ถูกสร้างขึ้นโดยเห็นว่าการใช้เซิร์ฟเวอร์บน uC และการสร้างส่วนต่อประสานผู้ใช้ที่ทำงานในอินเทอร์เน็ตเบราว์เซอร์ทำให้สิ่งต่าง ๆ เป็นเรื่องง่ายทำไมหลายคนยังหันไปใช้วิธีที่ยากกว่าเช่น USB
quantum231

@ quantum231 โปรดถามคำถามใหม่หากคุณมีคำถามใหม่ :-)
Anindo Ghosh

คำตอบ:


15

ฉันทำสิ่งนี้ในผลิตภัณฑ์ไม่กี่อย่าง จนถึงเหตุผลที่ได้รับอนุญาตสำหรับการกำหนดค่าฟิลด์อย่างง่าย ทุกครั้งที่ผลิตภัณฑ์จำเป็นต้องเชื่อมต่อกับอีเธอร์เน็ตเพื่อเหตุผลในการใช้งานหลัก เว็บเซิร์ฟเวอร์จึงถูกเพิ่มรหัสในไมโครคอนโทรลเลอร์เท่านั้น

ข้อได้เปรียบที่สำคัญของเซิร์ฟเวอร์ HTTP คือไม่จำเป็นต้องมีฮาร์ดแวร์หรือซอฟต์แวร์พิเศษในการนำเสนอส่วนต่อประสานผู้ใช้ที่สมเหตุสมผลกับผู้ใช้ปลายทาง ทุกคนมีเว็บเบราว์เซอร์อยู่แล้วดังนั้นจึงไม่เป็นปัญหาสำหรับลูกค้า คิดถึงทางเลือกอื่น ๆ คุณสามารถจัดเตรียมพอร์ต RS-232 ได้ แต่จากนั้นคุณต้องจัดเตรียมแอปที่กำหนดเองหรืออธิบายวิธีการตั้งค่าโปรแกรมเทอร์มินัลด้วยอัตรารับส่งข้อมูลที่ถูกต้องเริ่มบิตบิตหยุดและพาริตี้ นอกจากนี้คุณยังต้องจัดหาสายเคเบิลหรือหวังว่าลูกค้าจะมีสายเคเบิลและใครบางคนจะต้องไปที่หน่วยและเชื่อมต่อกับร่างกาย USB ไม่มีปัญหาการกำหนดค่าเดียวกัน แต่โดยทั่วไปจะหมายถึงไมโครแยกทั้งหมดในผลิตภัณฑ์และคุณต้องการโปรแกรมที่กำหนดเองเพื่อทำงานบนแพลตฟอร์มใดก็ตามที่ลูกค้าอาจมี

สำหรับ RAM นั่นไม่ใช่ปัญหาสำหรับเซิร์ฟเวอร์ HTTP สแต็กโปรโตคอล TCP ต้องการ RAM บางตัว แต่เซิร์ฟเวอร์ HTTP ไม่ได้จริงๆยกเว้นสำหรับทรัพยากรเพิ่มเติมที่อาจต้องใช้จากสแต็กเครือข่าย เว็บเซิร์ฟเวอร์ส่วนใหญ่ต้องการพื้นที่ ROM เนื่องจากส่วนใหญ่ของทุกหน้าเป็นค่าคงที่โดยปกติจะมีค่าไม่กี่ค่าที่แปลงเป็นข้อความและแทรกได้ทันที เว็บเซิร์ฟเวอร์สำหรับ micros ขนาดเล็กทำงานกับระบบไฟล์ ROM และ escape sequences ในไฟล์เหล่านั้นที่ทำให้โค้ดแอปพลิเคชันของคุณถูกเรียกให้สร้างสตริงที่ปรับแต่งได้สำหรับการแทรกในสถานที่ที่กำหนดไว้ล่วงหน้าไม่กี่แห่ง

จนถึงตอนนี้ฉันได้ใช้ PIC 18 ในทุกกรณีเหล่านี้ ในขณะที่ RAM น้อยกว่า 4 kbytes เป็นข้อ จำกัด แต่ก็ยังมีอีกมากที่คุณสามารถทำได้ พื้นที่ ROM ยังไม่ได้ใกล้เคียงกับปัญหา เครือข่ายสแต็คของฉันสำหรับ PIC 18 (มีให้บริการใน PIC เครื่องมือพัฒนาของฉันที่www.embedinc.com/pic/dload.htm ) ใช้พื้นที่ ROM เพียงเล็กน้อยเพียงเล็กน้อยของ 18F67J60 ซึ่งเป็นส่วนที่ดีสำหรับสิ่งต่าง ๆ ตั้งแต่นั้นมา มันมีอีเธอร์เน็ตที่สมบูรณ์แบบ MAC / PHY ในตัวในกรณีหนึ่งฉันมี PIC ที่เป็นเซิร์ฟเวอร์สำหรับ 6 การเชื่อมต่อ TCP พร้อมกัน มันไม่ได้หนาอย่างที่คิด


เป็นเรื่องน่าสังเกตว่าเว็บเซิร์ฟเวอร์แบบธรรมดาจำนวนมากเมื่อพวกเขาได้รับคำขอจะส่งทุกสิ่งที่พวกเขาจะส่งเพื่อตอบสนองต่อคำขอปิดการเชื่อมต่อและลืมมันทันที สิ่งนี้ช่วยลดความต้องการ TCP RAM แต่ทำให้มีข้อ จำกัด อย่างมากเกี่ยวกับความซับซ้อนของเว็บเพจ เป็นไปได้ที่จะออกแบบเซิร์ฟเวอร์ TCP แบบไร้รัฐซึ่งสามารถเปิดการเชื่อมต่อได้ไม่ จำกัด จำนวน (ฉันทำไปแล้ว) แต่สิ่งนั้นจะต้องใช้ Front-End ฝั่งไคลเอ็นต์แบบกำหนดเอง มันง่ายที่สุดที่จะทำให้เล็กพอที่จะยอมให้มีการดำเนินการ HTTP แบบไร้รัฐ
supercat

ข้อสังเกต: ฉันพยายามดาวน์โหลด "install_picdev.exe" แต่ Firefox (หรือ Windows Security Essentials) บอกว่ามันเป็นมัลแวร์ จะไม่เปิดมัน
ahogen

14

ปัจจัยสำคัญที่ทำให้ความนิยมของเว็บเซิร์ฟเวอร์บนไมโครคอนโทรลเลอร์เพิ่มขึ้นเมื่อเร็ว ๆ นี้คือความต้องการในการเข้าถึงข้อมูลเซ็นเซอร์ทางกายภาพ (อุณหภูมิ, ความชื้น, ระดับแสง, การปรากฏตัวของคาร์บอนมอนอกไซด์ ฯลฯ ) จากระยะไกลเช่นเดียวกับทำให้สิ่งต่าง ๆ เกิดขึ้นในโลกทางกายภาพ บน LED เรียกปลุกเปิดพัดลมไอเสียฉุกเฉินเปิดปั๊มน้ำหล่อเย็น) จากระยะไกล นั่นคือแอปพลิเคชั่น

จะมีวิธีใดที่ดีกว่าในการบรรลุการเข้าถึงระยะไกลแบบทั่วไปที่สอดคล้องและไม่ขึ้นกับนักออกแบบที่เป็นอิสระกว่าโปรโตคอล HTTP ที่แพร่หลายในเครือข่าย IP ที่แพร่หลายยิ่งกว่าเดิม? ชั้นของการสื่อสารทางกายภาพอาจเป็น WiFi, Ethernet แบบผ่านสายหรือตัวเลือกที่สะดวกอื่น ๆ ที่รองรับเครือข่าย IP นั่นคือเหตุผลที่เว็บเซิร์ฟเวอร์ในอุปกรณ์ฝังตัวกำลังดำเนินการอยู่

สำหรับข้อมูลเชิงลึกเพิ่มเติมเราสามารถค้นหา " Internet of Things " และดูกระบวนการคิดที่หลากหลายที่เกิดขึ้น

เกี่ยวกับ " เซิร์ฟเวอร์ขนาดเล็กที่มี RAM ขนาดเล็ก " เป็นสิ่งที่น่าสังเกตว่าโปรโตคอล HTTP นั้นง่ายพอที่จะนำไปใช้กับ RAM ขนาดเล็กมากได้ด้วยพลังการประมวลผลที่น้อยมาก นอกจากนี้ไมโครคอนโทรลเลอร์ในปัจจุบันสามารถเทียบเคียงได้หรือในบางกรณีมีประสิทธิภาพมากกว่าโปรเซสเซอร์ในคอมพิวเตอร์ส่วนบุคคลรุ่นแรกที่ผู้คนใช้งานไม่เพียง แต่เว็บ แต่ยังทำงานแบบโต้ตอบที่หลากหลายแม้กระทั่งเล่นเกม


คำตอบที่ดี. เกี่ยวกับแอปพลิเคชันฉันพลาดการกล่าวถึงอุปกรณ์อิเล็กทรอนิกส์ทั่วไปบางอย่างที่มักจะสามารถเข้าถึงและกำหนดค่าโดยใช้เบราว์เซอร์ เครื่องพิมพ์, ชุดทีวี, เครื่องรับสัญญาณเสียงในโรงภาพยนตร์, เราเตอร์ ... ฉันคิดว่ามีเครื่องชงกาแฟที่สามารถเข้าถึงได้จากระยะไกล :) แก้ไข: ได้รับบางส่วนมีอำนาจการประมวลผลของพีซีที่ทันสมัยและไม่ได้เป็นไมโครคอนโทรลเลอร์
Rev1.0

ฉันจะเพิ่มว่าตัวเลือกระหว่างการมีอุปกรณ์อย่างเช่นอุปกรณ์สื่อสารผ่าน HTTP กับสิ่งอื่นโดยทั่วไปแล้วเป็นทางเลือกระหว่างการทำให้อุปกรณ์นั้นซับซ้อนขึ้นเล็กน้อยเมื่อเทียบกับที่ผู้ใช้ต้องซื้อหรือติดตั้งฮาร์ดแวร์หรือซอฟต์แวร์เฉพาะเพื่อสื่อสารกับมัน อาจมีราคาถูกและประหยัดพลังงานกว่าในการสร้างเซ็นเซอร์วัดอุณหภูมิที่ใช้รูปแบบ RF ที่เป็นกรรมสิทธิ์ในการสื่อสารแบบไร้สายกับดองเกิล USB มากกว่าที่จะรวมอะแดปเตอร์ WiFi ในเซ็นเซอร์อุณหภูมิ แต่วิธีหลังช่วยหลีกเลี่ยงความต้องการดองเกิล
supercat

4

อุปกรณ์เครือข่ายจำนวนมากมีเว็บเซิร์ฟเวอร์สำหรับตรวจสอบและตั้งค่าพารามิเตอร์ตรวจสอบสถานะของอุปกรณ์ ฯลฯ ตัวอย่างเช่นฉันสามารถกำหนดค่าเราเตอร์ในระบบของฉันโดยชี้เบราว์เซอร์ของฉันที่http:///192.168.0.254(ถ้าจำไม่ผิด ... )


3
  1. เพราะพวกเขาสามารถ

  2. เพราะพวกเขาสามารถใช้พลังงานต่ำมาก เช่นต่ำกว่า 1W กับการดึงสูงสุด ต่ำกว่าครึ่งแอมป์ แบตเตอรี่และพลังงานแสงอาทิตย์นั้นใช้งานได้จริงไม่เหมือนกับคอมพิวเตอร์ขนาดใหญ่

  3. ขนาดทางกายภาพ ไมโครคอนโทรลเลอร์ + wifi หรือชิปอีเธอร์เน็ตอาจมีขนาดเท่าไดรฟ์หัวแม่มือ

  4. ราคา ไมโครคอนโทรลเลอร์ที่เหมาะสมสำหรับสิ่งนี้อาจอยู่ในช่วงดอลลาร์เดียว ส่วนเครือข่ายราคาถูกเกือบเป็น

  5. ทิ้ง คุณสามารถใส่พวกเขาในหนึ่งโครงการและถ้าพวกเขาตายมันไม่ได้เลวร้ายเหมือนคอมพิวเตอร์ราคาแพงทำ

  6. เพียงแค่ทำให้

ด้วยการถือกำเนิดของคอมพิวเตอร์เป่าเต็มราคาหลายสิบเหรียญ (ฟรีถึง $ 100) (shrevaplugs, ราสเบอร์รี่ pi, สมาร์ทโฟน, ไดรฟ์หัวแม่มือ linux, android sticks, ROUTERS) คุณอาจจะเห็นไมโครคอนโทรลเลอร์เว็บเซิร์ฟเวอร์ในอนาคตน้อยลง ไม่เสียค่าใช้จ่ายและขนาดเป็นปัจจัยขับเคลื่อนอีกต่อไป ราสเบอร์รี่ Pi 35 ดอลลาร์หรือ Beaglebone 45 ดอลลาร์สามารถมีประสิทธิภาพเหนือกว่า Arduino + Ethernet หรือ Wifi shield ในราคาประสิทธิภาพการติดตั้งที่ง่ายดาย มันใหญ่กว่า arduino แทบจะไม่ สิ่งเดียวที่ Arduino สามารถทำได้คือประสิทธิภาพการใช้พลังงาน 0.1W (0.5mA ถึง 50 mA เพื่อการใช้พลังงานคอมพิวเตอร์เต็มรูปแบบ [5v, 16mhz, 100% cpu] โดย ATMEGA เพียงอย่างเดียว) vs 4W สำหรับ RPI โดยไม่มีอีเธอร์เน็ต / hdmi / usb การใช้งานที่ไม่ได้ใช้งาน

ดังนั้นผู้ดูแลเว็บไมโครคอนโทรลเลอร์จึงสามารถใช้พลังงานจากแบตเตอรี่เนื่องจากใช้พลังงานน้อย ถึงอย่างนั้น linux ที่ใหม่กว่า SoC บางตัวเช่นพ็อตเราท์เตอร์ที่มีเว็บเซิร์ฟเวอร์สามารถอยู่ใกล้กับพวกเขาได้


พิจารณาไมโครคอนโทรลเลอร์ตระกูล Texas Instruments MSP430: การใช้พลังงานต่ำอย่างไม่น่าเชื่อและความสามารถที่เพียงพอสำหรับการให้บริการเว็บ การประมวลผล 16 บิต ตัวเลือกบางอย่างรวมถึงเครือข่ายไร้สายนอกกรอบ ขนาด: บอร์ดที่สมบูรณ์พร้อมการเชื่อมต่อไร้สายสามารถใส่ลงใน thumb drive ได้
Anindo Ghosh

คำตอบเหล่านี้เพียงตอบคำถามส่วนหนึ่ง ทำไมเราถึงทำอย่างนั้น? ส่วนต่อไปคืออะไร เราจะทำอย่างไร? ทักษะชุดใดที่จำเป็น?
Anshul

1
@Anshul คุณต้องใช้รหัสในการกำหนดเซิร์ฟเวอร์ http และคุณต้องมีเครือข่ายสแต็ค (ip / tcp / udp) หรือคล้ายกันขึ้นอยู่กับ IC เครือข่ายที่คุณเลือก
Passerby

2

คำตอบของแลงค่อนข้างฮิตในทุก ๆ เหตุผลที่ฉันใช้เว็บเซิร์ฟเวอร์ในตัว ฉันทำงานพัฒนาระบบควบคุมทางอุตสาหกรรมและเกือบทุกผลิตภัณฑ์ที่เราผลิตมีเว็บเซิร์ฟเวอร์ในตัว

ลูกค้าส่วนใหญ่จะมีอุปกรณ์ทั้งหมดในเครือข่ายอยู่แล้วด้วยเหตุผลต่างๆ ดังนั้นความสามารถในการกำหนดค่าและ / หรือควบคุมผ่านเว็บเบราว์เซอร์แทนที่จะติดตั้งโปรแกรมที่กำหนดเองหลายสิบรายการเป็นที่ต้องการอย่างมาก

แม้ว่าพวกเขาจะใช้โปรโตคอลอุตสาหกรรมเช่นPROFINETเลเยอร์ทางกายภาพก็เหมือนกับส่วนที่เหลือของอีเทอร์เน็ตและจากนั้นพวกเขาต้องการเพียงหนึ่งชิ้นส่วนของซอฟต์แวร์ (ผู้ควบคุมดูแล PROFINET IO) เพื่อควบคุมเครื่องหลายสิบเครื่อง จากประสบการณ์ของฉันการตั้งค่านี้ค่อนข้างเป็นมาตรฐานในหลายอุตสาหกรรม

เกี่ยวกับทรัพยากร (พลังการประมวลผล, RAM, ROM), เมื่อตัดลงไปถึงสิ่งจำเป็นสำหรับการแบกฮาร์ดแวร์ที่จำเป็นน้อยที่สุดอย่างไม่น่าเชื่อที่จะให้บริการหน้าเว็บได้สำเร็จ webACEฉันคิดว่าเก็บบันทึกสำหรับเว็บเซิร์ฟเวอร์ที่เล็กที่สุด เป็นความอัปยศที่คุณไม่สามารถเยี่ยมชมหน้าที่โฮสต์ไว้ได้อีกต่อไป

ชิป webACE สายเคเบิล webACE

ซอฟต์แวร์

สถิติรหัสบางอย่างสำหรับซอฟต์แวร์ต้นฉบับ ฉันลืมที่จะรวม 64-byte "data eeprom" ในชิพไว้ในผลรวมซึ่งนำไปสู่ตัวเลข 1,010 ไบต์ที่ยกมาบน 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

สำหรับทักษะอื่น ๆ ที่จำเป็นความเข้าใจอย่างลึกซึ้งเกี่ยวกับเครือข่ายนั้นไม่จำเป็นจริงๆ ฉันไม่เคยเขียน stack สำหรับโพรโทคอลใด ๆ เนื่องจากมีไลบรารีที่พร้อมใช้งานสำหรับการเชื่อมโยงและใช้สำหรับสถาปัตยกรรมที่เป็นไปได้ทั้งหมด การรู้ HTML พื้นฐานบางอย่างนั้นมีประโยชน์สำหรับการออกแบบและการเขียนหน้าจริง

นอกเหนือจากที่สามารถอ่านและทำความเข้าใจบันทึกจากWiresharkหรือFiddler (เครื่องมือวิเคราะห์เครือข่าย) อาจเป็นทักษะที่มีประโยชน์มากที่สุดเพราะจะช่วยในการแก้ไขข้อบกพร่องของปัญหาที่คุณมี การอ่านโครงสร้างแพ็กเก็ตของโพรโทคอลใดก็ตามที่คุณกำลังใช้ (TCP, IP, HTTP, UDP, PROFINET และอื่น ๆ ) จะบอกให้คุณทราบถึงตำแหน่งที่จะค้นหาแพ็คเก็ตสำหรับข้อมูลที่คุณต้องการ คุณสามารถเพิ่มจำนวนนักวิเคราะห์ได้ทันทีและดูปริมาณข้อมูลที่เข้ามาและไปที่คอมพิวเตอร์ของคุณเพื่อรับความรู้สึก


2

หนึ่งในเหตุผลคือความท้าทาย มากกว่านั้นถ้าคุณพัฒนาบอร์ดไมโครคอนโทรลเลอร์และ / หรือเขียนซอฟต์แวร์ของคุณเอง


3
มันเป็นเรื่องที่ท้าทายไม่มาก คุณสามารถดาวน์โหลดการสาธิตที่มีเว็บเซิร์ฟเวอร์ในตัวได้
Olin Lathrop

1
มันจะเป็นสิ่งที่ท้าทายถ้าคุณต้องการเขียนของคุณเอง TCP / IP สแต็คจากรอยขีดข่วน ..
m.Alin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.