นักพัฒนาที่มีประสบการณ์เริ่มต้นด้วย IoT อย่างไร


10

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

ฉันสังเกตเห็นว่าไซต์ช็อปปิ้งระดับโลกมีฮาร์ดแวร์ IoT เช่นโมดูลรีเลย์ 2 ช่อง, บอร์ดพัฒนา nodeMCU และฮาร์ดแวร์อื่น ๆ ที่เกี่ยวข้องกับ IoT ผมมีความคิดว่าจะทำอย่างไรกับหรือเริ่มต้น

สมมติว่าฉันรู้วิธีโค้ดฉันจะเริ่มพัฒนาอุปกรณ์ IoT เครื่องแรกได้อย่างไร


อุปกรณ์ "อื่น ๆ " มีโปรเซสเซอร์หรือไมโครคอนโทรลเลอร์เช่นเดียวกับคอมพิวเตอร์ทั่วไปความแตกต่างเพียงอย่างเดียวคือประสิทธิภาพหน่วยความจำที่มีอยู่ ฯลฯ
Bence Kaulics

9
ดูเหมือนว่าฉันจะตัดการเชื่อมต่อระหว่างคำถาม 'นักพัฒนาที่มีประสบการณ์' และ 'วิธีเริ่มต้น' มันง่ายมาก ค้นหาแอปพลิเคชันที่เกี่ยวข้องกับคุณในวันนี้ (การทำความร้อนแสงสว่างระบบอัตโนมัติ) และนำไปใช้งาน เมื่อมีคำถามที่เฉพาะเจาะจงคุณควรได้รับคำตอบที่ดีที่นี่ส่วนใหญ่พวกเขาจะมาจากการปรับปรุงหรือทำซ้ำในต้นแบบเดิมของคุณ คำถามนี้ถามความเห็นจริง ๆ แล้วไม่มีคำตอบที่ชัดเจน
Sean Houlihane

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

คำตอบ:


14

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

หากคุณถามเกี่ยวกับเซ็นเซอร์การอ่านนี่คือระบบตรวจสอบระยะไกลและไม่จำเป็นต้องใช้ IoT ฉันเขียนรหัสหลายโครงการที่พีซีแบบสแตนด์อโลนอ่านและแสดงการวัดบางอย่าง

หากคุณยังต้องการไปยังตัวควบคุมฮาร์ดแวร์ที่แนบมานี้เป็นระบบ SCADA อีกครั้งมันไม่จำเป็นต้องเชื่อมต่อกับอินเทอร์เน็ต

นี่คือแผนภาพของ SCADA ซึ่งให้ความรู้สึกที่ดีมากสำหรับ IoT โดยทั่วไป โปรดทราบว่าPLCในแผนภาพเป็นเซ็นเซอร์และการควบคุมของอุปกรณ์ที่เปิดใช้งาน IoT

สถาปัตยกรรม SCADA

คุณสามารถขอ commendations ฮาร์ดแวร์สำหรับเซ็นเซอร์และตัวควบคุมที่แนะนำอุปกรณ์

และเมื่อคุณมีรหัสบางอย่างที่คุณจะได้รับคำแนะนำสำหรับปัญหาที่กองมากเกิน

โดยทั่วไปแล้ว IoT สำหรับอุตสาหกรรมนั้นเกี่ยวข้องกับรูปแบบของไคลเอนต์ / เซิร์ฟเวอร์โดยที่ไคลเอนต์วัด / ควบคุมอุปกรณ์ฮาร์ดแวร์และรายงานไปยัง / รับคำสั่งจากเซิร์ฟเวอร์ เซิร์ฟเวอร์โดยทั่วไปยังมีฐานข้อมูลและอนุญาตให้สร้างรายงานสำหรับการจัดการและการเตือนภัย (และอาจสั่งให้ฮาร์ดแวร์ระยะไกลตั้งค่า / ปิดเครื่องใหม่ตามข้อมูลที่ได้รับ)

วุ้ย นั่นคือคำนำของทาง ตอนนี้มือของเราสกปรก

ถ้าคุณต้องการที่จะได้รับใน nitty ทรายของการเข้ารหัสดูที่ซ็อกเก็ตและเข้าใจความแตกต่างระหว่างTCPและUDP

โชคดีที่ทศวรรษที่ผ่านมามีสิ่งที่หลอกลวงมากที่สุดในห้องสมุดและคุณควรได้รับการแนะนำให้อ่านบริการ RESTful มีแบบฝึกหัดออนไลน์หลักสูตรและวิดีโอสอนฟรีมากมายขึ้นอยู่กับภาษาของคุณ C เป็นภาษาที่ฝังตัวแบบดั้งเดิมโดยบางคนใช้ C ++ แต่แน่นอนว่าใช้สิ่งที่คุณรู้ / รู้สึกสบายใจ Python เป็นที่นิยมอย่างมากและง่ายต่อการเรียนรู้รวมทั้งเป็นภาษาที่แนะนำสำหรับ Raspberry Pi

โดยส่วนตัวแล้วฉันชอบแปลภาษามากกว่าที่จะเข้าใจเพราะมันง่ายกว่าที่จะกำจัดจุดบกพร่อง แต่ตัวเลือกนั้นขึ้นอยู่กับคุณ เพียงตรวจสอบให้แน่ใจว่ารองรับการเข้าถึงอุปกรณ์ต่อพ่วงผ่าน USB, Ethernet และยังคงเป็นเรื่องธรรมดาในอุตสาหกรรม - พอร์ตอนุกรม

สำหรับฝั่งเซิร์ฟเวอร์ 90% + ของเซิร์ฟเวอร์โลกยังคงทำงานบน PHP อย่างไรก็ตามมีการใช้ NodeJS เป็นส่วนใหญ่จากผู้ที่ใช้รหัสเบราว์เซอร์แอปซึ่งปัจจุบันสามารถทำได้ใน JavaScript เท่านั้นและไม่ต้องการเรียนรู้สองภาษา ฉันไม่แนะนำให้พัฒนาแอพ IoT ที่เป็นเบราว์เซอร์เนื่องจากข้อ จำกัด ของรหัสเบราว์เซอร์ที่เข้าถึงระบบไฟล์และอุปกรณ์ต่อพ่วง (แม้ว่าฉันจะพูดถึงCordova ที่ชอบถ้าคุณต้องการพัฒนาสำหรับสมาร์ทโฟน)

ในการเริ่มต้นฉันจะแนะนำRaspberry Pi (การเข้ารหัสใน Python หรือ C)

ราสเบอร์รี่ Pi บอร์ด

และฉันขอแนะนำหมวกเซ็นเซอร์ อันนี้เป็นเพียงตัวอย่าง แต่มันไม่แพงและมี

  • Gyroscope - เซ็นเซอร์อัตราเชิงมุม: +/- 245/500 / 2000dps Accelerometer
  • เซ็นเซอร์เร่งเชิงเส้น: +/- 2/4/8/16 g
  • Magnetometer - เซ็นเซอร์แม่เหล็ก: +/- 4/8/12/16
  • Gauss Barometer: 260 - 1260 hPa ช่วงที่แน่นอน (ความแม่นยำขึ้นอยู่กับอุณหภูมิและความดัน +/- 0.1 hPa ภายใต้สภาวะปกติ)
  • เซ็นเซอร์อุณหภูมิ (อุณหภูมิที่แม่นยำถึง +/- 2 degC ในช่วง 0-65 degC)
  • เซ็นเซอร์ความชื้นสัมพัทธ์ (ความแม่นยำถึง +/- 4.5% ในช่วง 20-80% rH, ความแม่นยำถึง +/- 0.5 degC ในช่วง 15-40 degC)
  • จอแสดงผลเมทริกซ์ LED 8x8 RGB
  • จอยสติ๊ก 5 ปุ่มขนาดเล็ก

คณะกรรมการเซ็นเซอร์

ที่จะช่วยให้คุณรวบรวมข้อมูลและรายงานไปยังเซิร์ฟเวอร์ของคุณ คุณอาจสามารถค้นหาบริการฟรีออนไลน์เพื่อรับและแสดงข้อมูลของคุณ ฉันเคยเห็นบางไซต์ SO อื่น ๆ แต่ลืมที่

แต่คุณอาจต้องการรหัสเซิร์ฟเวอร์ของคุณเอง ฉันจะแนะนำ PHP เป็นภาษาการเขียนโปรแกรม สำหรับ Linux คุณได้รับLAMP (Linux, Apache, Mysql & PHP) เป็นอย่างดี สำหรับ Windows คุณต้องติดตั้งWAMP (Windows …และอื่น ๆ )

คุณสามารถเลือกของคุณ ฉันใช้XAMPPในงานอุตสาหกรรมมานานกว่าทศวรรษ คุณไม่ได้ใช้ Mysql, Sqlite ก็สามารถให้บริการได้เช่นกัน (shaless plug สำหรับคำถาม SO ของฉันเมื่อ 6 ปีที่แล้ว,“ Sqlite หรือ MySql? จะตัดสินใจได้อย่างไร? ”) นอกจากนี้คุณยังจะต้องเรียนรู้เกี่ยวกับCRUD

จากข้อมูลที่ได้รับจากไคลเอนต์ / เซ็นเซอร์คุณอาจต้องการส่งคำสั่งกลับแม้เพียงอย่างง่าย (จอแสดงผล: "อุณหภูมิสูงเกินไป" ซึ่งอาจแปลเป็นการปิดวาล์วในระบบอุตสาหกรรม)

คุณอาจต้องการส่งสัญญาณเตือนตามเวลาจริง (ส่งอีเมลแจ้งว่าอุณหภูมิสูงเกินไป)

และคุณอาจต้องการคิดเกี่ยวกับการสร้างรายงาน เริ่มต้นด้วยตารางที่แสดงข้อมูลที่ได้รับ พิจารณาแผนภูมิหรือสิ่งที่นักเล่น เพิ่มตัวเลือกในการส่งออกไปยังComma Separated Values (CSV) ซึ่งช่วยให้ผู้ใช้ปลายทางนำเข้าข้อมูลไปยังสเปรดชีตสำหรับการวิเคราะห์และการจัดการต่อไป

หากคุณไม่ตัดสินใจว่าคุณต้องการรายงานแฟนซีคุณสามารถทำมันใน PHP แต่หลังจากไม่กี่ทศวรรษที่ผ่านมาจากการที่ผมได้ย้ายในขณะนี้เพื่อทำมากของฝั่งไคลเอ็นต์สิ่งที่รายงานในเบราว์เซอร์

สำหรับหลักการโดยทั่วไปได้รับภาพรวมของ หน้าเดียวแอพลิเคชันและAJAX ส่วนตัวแล้วฉันทำการค้นคว้ามากมายและเลือกAngularJSของ Google เป็นภาษาโปรแกรมของฉัน (มีจำนวนมากแบบฝึกหัดและการสนับสนุนที่ยอดเยี่ยม) แต่คุณสามารถใช้ JS, Jquery และอื่น ๆ ได้ตามต้องการ

หากคุณตัดสินใจที่จะรหัสสิ่งเบราว์เซอร์เช่นกันและคุณอาจจะใช้ NodeJsทางฝั่งเซิร์ฟเวอร์เพื่อที่คุณจะได้เรียนรู้ภาษาการเขียนโปรแกรมใหม่เพียงภาษาเดียวเท่านั้น

ทางเลือกมากเกินไป? ขอโทษ :-(

ฉันหวังว่าสิ่งนี้จะให้คำแนะนำแก่คุณ แต่อย่าลังเลที่จะถามคำถามและแจ้งให้เราทราบหากมีคำแนะนำทั่วไปหายไปที่นี่


1
ขอบคุณ Mawg สิ่งที่คุณพูดส่วนใหญ่แล้วฉันรู้แล้วและไม่ใช่คำถามที่น่าสนใจฉันทำงานกับ PHP และ Javascript รวมถึง Corodva มาหลายปี ฉันคิดว่าฉันจะเริ่มซื้อ UNO R3 และดูว่าฉันจะทำต่อจากที่นั่นได้อย่างไร
TheUnreal

1
ฉันเริ่มเขียนและไม่สามารถหยุด :-) ฉันหวังว่ามันจะช่วยเหลือผู้อื่น ฉันไม่รู้ Cordova ดีพอ เป็นสิ่งที่ดีสำหรับการเข้าถึงฮาร์ดแวร์โทรศัพท์กล้องมะนาวซิมเซ็นเซอร์เอียง แต่สามารถเข้าถึงพอร์ตอนุกรมได้หรือไม่ เพราะมันถูกใช้อย่างมากในอุตสาหกรรม คุณสามารถใช้ USB เพื่อแปลงอนุกรมซึ่งเป็นสิ่งที่เราใช้สำหรับแล็ปท็อป แต่ Cordova สามารถส่งข้อมูลผ่าน USB ได้หรือไม่ และอีเธอร์เน็ต? ดำเนินการต่อ ...
Mawg พูดว่าคืนสถานะโมนิก้า

1
... คุณรู้จัก JS แต่ฉันไม่แนะนำให้ใช้กับโปรเซสเซอร์ที่ฝังตัว คุณทำได้แต่มันไม่ปกติ อาจถึงเวลารับ Python สักตัวหรือ C? หรือคุณอาจหมายถึงเบราว์เซอร์ UNO R3 <--> เซิร์ฟเวอร์ <--> ติดกับ Arduino ถ้าคุณรู้แล้วโดยทั้งหมด ฉันเปลี่ยนเป็น R Pi แต่นั่นเป็นเพียงความชอบส่วนตัวของฉัน . คุณมีโครงการเรียนรู้อยู่ในใจหรือไม่? คำแนะนำ… iot.stackexchange.com/questions/675/ … :-)
Mawg พูดว่าการคืนสถานะโมนิก้า

9

ในฐานะนักพัฒนาที่มีประสบการณ์คุณมีความสามารถในการเข้าใจตรรกะอ่านและเขียนโค้ดคิดออกและทักษะที่สำคัญอื่น ๆ สิ่งที่คุณอาจไม่มีคือความเข้าใจเกี่ยวกับอุปกรณ์อิเล็กทรอนิกส์ขั้นพื้นฐานและศิลปะการรับโค้ดจากเดสก์ท็อปของคุณที่ทำงานบนอุปกรณ์ขนาดเล็ก

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

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

ฉันขอแนะนำให้คุณเริ่มต้นด้วยชุดเริ่มต้นอย่างเป็นทางการของArduinoชุดเริ่มต้นในขณะที่มันง่ายมากคำแนะนำนั้นง่ายและคุณจะได้รับบิตและชิ้นส่วนอิเล็กทรอนิกส์ที่มีประโยชน์ (เขียงหั่นขนมสายจัมเปอร์ไฟ LED ฯลฯ ) ที่ยังคงมีประโยชน์

อย่าถูกเลื่อนออกไปโดยพื้นฐานของ Arduino รับความกระตือรือร้นที่จะเป็นอันดับแรกสำหรับอุปกรณ์อิเล็กทรอนิกส์และภาคปฏิบัติก่อนที่จะลองทำอะไรที่ซับซ้อนเกินไป หากคุณพบว่าอุปกรณ์อิเล็กทรอนิกส์น่าสนใจและต้องการทำมากกว่านี้ให้ติดกับ Arduino และรับชุดอุปกรณ์ที่ซับซ้อนมากขึ้น ฉันซื้อหุ่นยนต์ BOE Shield-Botหุ่นยนต์ มันอาจจะไม่ใช่หุ่นยนต์ที่ดีที่สุดหรือถูกที่สุด แต่มีการสอนที่ดีมากซึ่งมีรายละเอียดเกี่ยวกับวิธีการควบคุมเซอร์โวและสิ่งนั้น คุณยังที่ดินด้วยบิตที่มีประโยชน์มากขึ้นทั้งหมด

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

ฉันจะไม่แนะนำให้ใช้ Pi เร็วเกินไป มันเป็นคอมพิวเตอร์มากกว่าสิ่งหนึ่งและไม่มีคุณสมบัติที่สำคัญที่จำเป็นในการเริ่มต้นการเดินทางของความเข้าใจของคุณ (เช่นอินพุตแบบอะนาล็อก) คุณจะเร็วกว่า Arduino อย่างรวดเร็ว (มันไม่ได้เชื่อมต่อกับอินเทอร์เน็ตได้อย่างง่ายดายมาก) แต่มันเป็นสถานที่ที่ดีในการดูว่านี่จะเป็นสิ่งที่คุณชอบหรือไม่


1
นี่คือคำตอบที่ใกล้เคียงที่สุดสำหรับคำถามของฉัน ขอบคุณ.
TheUnreal

6

ฉันจะตอบคำถามแรกของคุณต่อไป

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

คุณจะต้องตัดสินใจว่าอะไรคือสิ่งที่คุณต้องการสร้าง นี่คือแรงบันดาลใจและแนวคิดดีๆที่จะเริ่มต้น:

โครงการ Arduino -> ไมโครคอนโทรลเลอร์

โครงการ Raspberry Pi -> ไมโครโปรเซสเซอร์ (มีประสิทธิภาพยิ่งขึ้น)

hackaday.com -> ส่วนประกอบผสม

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

ในขณะที่คุณสามารถดูอุปกรณ์ที่นิยมมากที่สุดคือArduino , Raspberrypiและญาติอื่น ๆ ทั้งหมด, สายสืบสีดำ , หัวหอม , ฯลฯ มีอีกมากมายความแตกต่างคือราคาความเข้ากันได้กับเซ็นเซอร์อื่น ๆ และความนิยม คนยอดนิยมนั้นเข้ากันได้มากกว่าและมีการสนับสนุนเพิ่มเติมในฟอรัม

เราช่วยเหลือคุณด้วยความต้องการตามโครงการของคุณ โชคดี!


ฉันมีความคิดอยู่แล้ว แต่ฉันต้องการสัมผัสโลกนี้ก่อนที่จะกระโดดเข้ามา ฉันคิดว่าฉันจะเริ่มซื้อ Uno R3 และโพสต์คำถามทันทีที่ฉันไป
TheUnreal

1
Arduino Uno นั้นดีสำหรับการควบคุมไอเท็มทางกายภาพ แต่มันแพงในการปรับให้เข้ากับโปรโตคอลเครือข่ายเนื่องจากโดยทั่วไปคุณต้องเพิ่มไมโครคอนโทรลเลอร์หรือคอมพิวเตอร์ที่ดีกว่าให้ทำ บางครั้งคุณสามารถหาส่วนหนึ่งที่ทำทั้งสองอย่างอื่นบางครั้งคุณมีระบบเครือข่ายที่มอบหมายงานควบคุมไฟฟ้าให้กับสิ่งที่ต้องการ Arduino
Chris Stratton

2

คนอื่น ๆ ให้ความสำคัญกับคำถามแรกของคุณ ฉันจะมุ่งเน้นไปที่หลัง คุณถามว่าทุกคนสามารถเข้า IoT ได้หรือไม่ถ้าคุณต้องเป็น บริษัท ใหญ่ที่มีทรัพยากรมากมาย

หากคุณเรียกดูแท็กคุณจะเห็นว่ามีอุปกรณ์ IoT ที่ทำให้ฝั่งเซิร์ฟเวอร์ทั้งหมดทำเพื่อคุณแล้ว มีอุปกรณ์ IoT มากมายที่ "ใครก็ได้" สามารถซื้อได้รวมถึง Nest cam, thermostat และอื่น ๆ เช่น Amazon Echo, Google Home, Google Home, เตาอบอัจฉริยะ, ตู้เย็น ฯลฯ

แม้แต่รถยนต์ใหม่ ๆ หลายรุ่นก็ยังมีคุณสมบัติเป็นวัตถุที่ต้องสัมผัสหรือควบคุมได้จากระยะไกล ... แม้ว่าอาจจะยังไม่ได้เป็นส่วนควบคุมก็ตาม :)

สิ่งนี้นำไปสู่คำตอบของคำถามแรกของคุณ:

ฉันจะเริ่มฝึกพัฒนาอุปกรณ์ IoT เครื่องแรกได้อย่างไร

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


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