ฉันเจอคนที่สร้างเว็บเซิร์ฟเวอร์โดยใช้ไมโครคอนโทรลเลอร์ทำไมบางคนทำอย่างนั้น แอปพลิเคชันของมันคืออะไร? ทักษะใดที่นอกเหนือจากภาษา C จำเป็นต้องมีเพื่อสร้างเซิร์ฟเวอร์ดังกล่าว ฉันค่อนข้างสงสัยเกี่ยวกับเซิร์ฟเวอร์เล็ก ๆ เหล่านี้ที่มี RAM ขนาดเล็กเช่นนั้น
ฉันเจอคนที่สร้างเว็บเซิร์ฟเวอร์โดยใช้ไมโครคอนโทรลเลอร์ทำไมบางคนทำอย่างนั้น แอปพลิเคชันของมันคืออะไร? ทักษะใดที่นอกเหนือจากภาษา C จำเป็นต้องมีเพื่อสร้างเซิร์ฟเวอร์ดังกล่าว ฉันค่อนข้างสงสัยเกี่ยวกับเซิร์ฟเวอร์เล็ก ๆ เหล่านี้ที่มี RAM ขนาดเล็กเช่นนั้น
คำตอบ:
ฉันทำสิ่งนี้ในผลิตภัณฑ์ไม่กี่อย่าง จนถึงเหตุผลที่ได้รับอนุญาตสำหรับการกำหนดค่าฟิลด์อย่างง่าย ทุกครั้งที่ผลิตภัณฑ์จำเป็นต้องเชื่อมต่อกับอีเธอร์เน็ตเพื่อเหตุผลในการใช้งานหลัก เว็บเซิร์ฟเวอร์จึงถูกเพิ่มรหัสในไมโครคอนโทรลเลอร์เท่านั้น
ข้อได้เปรียบที่สำคัญของเซิร์ฟเวอร์ 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 พร้อมกัน มันไม่ได้หนาอย่างที่คิด
ปัจจัยสำคัญที่ทำให้ความนิยมของเว็บเซิร์ฟเวอร์บนไมโครคอนโทรลเลอร์เพิ่มขึ้นเมื่อเร็ว ๆ นี้คือความต้องการในการเข้าถึงข้อมูลเซ็นเซอร์ทางกายภาพ (อุณหภูมิ, ความชื้น, ระดับแสง, การปรากฏตัวของคาร์บอนมอนอกไซด์ ฯลฯ ) จากระยะไกลเช่นเดียวกับทำให้สิ่งต่าง ๆ เกิดขึ้นในโลกทางกายภาพ บน LED เรียกปลุกเปิดพัดลมไอเสียฉุกเฉินเปิดปั๊มน้ำหล่อเย็น) จากระยะไกล นั่นคือแอปพลิเคชั่น
จะมีวิธีใดที่ดีกว่าในการบรรลุการเข้าถึงระยะไกลแบบทั่วไปที่สอดคล้องและไม่ขึ้นกับนักออกแบบที่เป็นอิสระกว่าโปรโตคอล HTTP ที่แพร่หลายในเครือข่าย IP ที่แพร่หลายยิ่งกว่าเดิม? ชั้นของการสื่อสารทางกายภาพอาจเป็น WiFi, Ethernet แบบผ่านสายหรือตัวเลือกที่สะดวกอื่น ๆ ที่รองรับเครือข่าย IP นั่นคือเหตุผลที่เว็บเซิร์ฟเวอร์ในอุปกรณ์ฝังตัวกำลังดำเนินการอยู่
สำหรับข้อมูลเชิงลึกเพิ่มเติมเราสามารถค้นหา " Internet of Things " และดูกระบวนการคิดที่หลากหลายที่เกิดขึ้น
เกี่ยวกับ " เซิร์ฟเวอร์ขนาดเล็กที่มี RAM ขนาดเล็ก " เป็นสิ่งที่น่าสังเกตว่าโปรโตคอล HTTP นั้นง่ายพอที่จะนำไปใช้กับ RAM ขนาดเล็กมากได้ด้วยพลังการประมวลผลที่น้อยมาก นอกจากนี้ไมโครคอนโทรลเลอร์ในปัจจุบันสามารถเทียบเคียงได้หรือในบางกรณีมีประสิทธิภาพมากกว่าโปรเซสเซอร์ในคอมพิวเตอร์ส่วนบุคคลรุ่นแรกที่ผู้คนใช้งานไม่เพียง แต่เว็บ แต่ยังทำงานแบบโต้ตอบที่หลากหลายแม้กระทั่งเล่นเกม
อุปกรณ์เครือข่ายจำนวนมากมีเว็บเซิร์ฟเวอร์สำหรับตรวจสอบและตั้งค่าพารามิเตอร์ตรวจสอบสถานะของอุปกรณ์ ฯลฯ ตัวอย่างเช่นฉันสามารถกำหนดค่าเราเตอร์ในระบบของฉันโดยชี้เบราว์เซอร์ของฉันที่http:///192.168.0.254
(ถ้าจำไม่ผิด ... )
เพราะพวกเขาสามารถ
เพราะพวกเขาสามารถใช้พลังงานต่ำมาก เช่นต่ำกว่า 1W กับการดึงสูงสุด ต่ำกว่าครึ่งแอมป์ แบตเตอรี่และพลังงานแสงอาทิตย์นั้นใช้งานได้จริงไม่เหมือนกับคอมพิวเตอร์ขนาดใหญ่
ขนาดทางกายภาพ ไมโครคอนโทรลเลอร์ + wifi หรือชิปอีเธอร์เน็ตอาจมีขนาดเท่าไดรฟ์หัวแม่มือ
ราคา ไมโครคอนโทรลเลอร์ที่เหมาะสมสำหรับสิ่งนี้อาจอยู่ในช่วงดอลลาร์เดียว ส่วนเครือข่ายราคาถูกเกือบเป็น
ทิ้ง คุณสามารถใส่พวกเขาในหนึ่งโครงการและถ้าพวกเขาตายมันไม่ได้เลวร้ายเหมือนคอมพิวเตอร์ราคาแพงทำ
เพียงแค่ทำให้
ด้วยการถือกำเนิดของคอมพิวเตอร์เป่าเต็มราคาหลายสิบเหรียญ (ฟรีถึง $ 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 บางตัวเช่นพ็อตเราท์เตอร์ที่มีเว็บเซิร์ฟเวอร์สามารถอยู่ใกล้กับพวกเขาได้
คำตอบของแลงค่อนข้างฮิตในทุก ๆ เหตุผลที่ฉันใช้เว็บเซิร์ฟเวอร์ในตัว ฉันทำงานพัฒนาระบบควบคุมทางอุตสาหกรรมและเกือบทุกผลิตภัณฑ์ที่เราผลิตมีเว็บเซิร์ฟเวอร์ในตัว
ลูกค้าส่วนใหญ่จะมีอุปกรณ์ทั้งหมดในเครือข่ายอยู่แล้วด้วยเหตุผลต่างๆ ดังนั้นความสามารถในการกำหนดค่าและ / หรือควบคุมผ่านเว็บเบราว์เซอร์แทนที่จะติดตั้งโปรแกรมที่กำหนดเองหลายสิบรายการเป็นที่ต้องการอย่างมาก
แม้ว่าพวกเขาจะใช้โปรโตคอลอุตสาหกรรมเช่นPROFINETเลเยอร์ทางกายภาพก็เหมือนกับส่วนที่เหลือของอีเทอร์เน็ตและจากนั้นพวกเขาต้องการเพียงหนึ่งชิ้นส่วนของซอฟต์แวร์ (ผู้ควบคุมดูแล PROFINET IO) เพื่อควบคุมเครื่องหลายสิบเครื่อง จากประสบการณ์ของฉันการตั้งค่านี้ค่อนข้างเป็นมาตรฐานในหลายอุตสาหกรรม
เกี่ยวกับทรัพยากร (พลังการประมวลผล, RAM, ROM), เมื่อตัดลงไปถึงสิ่งจำเป็นสำหรับการแบกฮาร์ดแวร์ที่จำเป็นน้อยที่สุดอย่างไม่น่าเชื่อที่จะให้บริการหน้าเว็บได้สำเร็จ 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 และอื่น ๆ ) จะบอกให้คุณทราบถึงตำแหน่งที่จะค้นหาแพ็คเก็ตสำหรับข้อมูลที่คุณต้องการ คุณสามารถเพิ่มจำนวนนักวิเคราะห์ได้ทันทีและดูปริมาณข้อมูลที่เข้ามาและไปที่คอมพิวเตอร์ของคุณเพื่อรับความรู้สึก
หนึ่งในเหตุผลคือความท้าทาย มากกว่านั้นถ้าคุณพัฒนาบอร์ดไมโครคอนโทรลเลอร์และ / หรือเขียนซอฟต์แวร์ของคุณเอง