การเขียนโปรแกรม Arduinos จำนวนมากพร้อมกันด้วยการออกอากาศแบบไร้สาย


9

ฉันจะมีอุปกรณ์ที่ใช้ไมโครคอนโทรลเลอร์หลายตัวซึ่งจะเป็นอิสระจากกัน แต่ทั้งหมดจะใช้โปรแกรมเดียวกัน

ฉันต้องการอัปโหลดโปรแกรมไปยังพวกเขาทั้งหมดในเวลาเดียวกันด้วยการออกอากาศแบบไร้สาย โดยอุดมคติแล้วผู้ใช้จะเสียบตัวควบคุม USB เข้ากับคอมพิวเตอร์ของเขาและอัปโหลดโปรแกรมจากสภาพแวดล้อม Arduino ราวกับว่าเขา / เธอเขียนโปรแกรมอุปกรณ์เดียว

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

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

ฉันแค่อยากได้มุมมองจากคนที่คุ้นเคยกับ Arduinos ว่าพวกเขาคิดว่านี่เป็นไปได้หรือไม่ก่อนที่ฉันจะกระโดดเข้ามา


2
ตรวจสอบเว็บไซต์นี้lowpowerlab.com/blog/category/moteino/wireless-programming
Mikael Patel

คุณใช้แพลตฟอร์มใดในการอัพโหลดภาพร่างของคุณ
Greenonline

คำตอบ:


2

TL; DR -

คุณมีตัวเลือกของ BlueTooth หรือ XBee (เช่นอื่น ๆ : IR หรือไม่?) สำหรับการอัพโหลดแบบไร้สาย อย่างไรก็ตามฉันเชื่อว่าสามารถอัปโหลดบอร์ดได้ครั้งละหนึ่งบอร์ดเท่านั้นดังนั้นคุณจะต้องวนรอบบอร์ดครั้งละหนึ่งครั้งดูการเขียนโปรแกรม ATMegas / Arduinos หลายรายการพร้อมกัน

เมื่ออัปโหลดแบบร่างหรือใช้โปรแกรมเมอร์ (สำหรับแบบร่างหรือ bootloader) ซอฟต์แวร์ไม่เพียง แต่เขียนรหัส แต่จริงๆแล้วมันสื่อสารกับไมโครคอนโทรลเลอร์

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


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

ฮาร์ดแวร์อัพโหลดไร้สาย

ถ้าคุณใช้บลูทู ธไร้สายอัปโหลดภาพวาดของคุณแล้ววิธีนี้อาจจะมีการใช้งานแบบไร้สายโปรแกรมอัปโหลดไปยัง Arduino โดยไม่ต้องสาย โปรดทราบว่าวิธีนี้จะเชื่อมโยงพิน D0 และ D1:

แต่ระวังว่าอาจเข้ากันไม่ได้กับบางโครงการที่จำเป็นต้องใช้ D0 และ D1 เป็นฮาร์ดแวร์ UART TX, RX เนื่องจากโปรแกรมเมอร์ไร้สายจำเป็นต้องใช้หมุดทั้งสองอย่างถาวร

เมื่อมองดูแล้วจะใช้Arduino Wireless Programmer ที่กำหนดเองซึ่งคุณอาจได้รับการอ้างอิงในคำถามของคุณ อย่างไรก็ตามอย่าหลงกลโดยชื่อมันเป็นเพียงเกราะบลูทู ธ มันเป็นพื้น BT HC-05 (หรือคล้ายกัน) อุปกรณ์ยึดติดลงบน Arduino เห็นบลูทู ธ ไร้สายอัพโหลด

อีกทางเลือกหนึ่งในตัวแทนบลูทู ธ , คุณสามารถใช้XBeeอุปกรณ์ดูการเขียนโปรแกรมแบบไร้สายของ Arduino ข้อดีของการใช้ XBees คือคุณไม่จำเป็นต้องผ่านการวนลูปอุปกรณ์ใหม่ (ดูด้านล่าง) ซึ่งจะต้องใช้เมื่อใช้ BT แต่คุณเพียงแค่ต้องวนผ่าน ID เครือข่าย XBee

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

การเลือกพอร์ตและอัพโหลดภาพร่าง

คุณสามารถใช้สคริปต์พร้อมกับรุ่นบรรทัดคำสั่งของ Arduino IDE เพื่อเลือกพอร์ตที่อุปกรณ์ BT เชื่อมต่อก่อนที่จะอัปโหลดแต่ละครั้ง วิธีการที่คุณทำจะแตกต่างกันไปสำหรับแพลตฟอร์มที่คุณรวบรวมดูที่บรรทัดคำสั่ง Arduino สำหรับการรวบรวมและดาวน์โหลด สิ่งนี้สามารถทำได้โดยใช้ตัวแปรสภาพแวดล้อมARDUINO_COMPORT(ดูการสร้างบรรทัดคำสั่งของWindowsที่ล้าสมัย) หรือตัวเลือกบรรทัด arduino cmd --port <portname>(ดูหน้า man ) --upload <filename>ร่างนั้นก็จะถูกอัปโหลดโดยใช้ตัวเลือก คุณสามารถทำได้ในคราวเดียว:

arduino --upload --port <portname> FILE.ino

โปรดทราบว่าใน Windows arduino_debug.exeคุณควรใช้

หรือคุณสามารถใช้Inoหากคุณไม่ได้ใช้ Windows PC ... แต่นั่นอาจทำให้ส่วนถัดไปซึ่งเกี่ยวข้องกับการวนลูปที่ซับซ้อนกว่าที่มันต้องการ

การเลือก Arduinos แต่ละอัน (เช่นอุปกรณ์ BT)

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

ใน OS X คุณอาจใช้วิธี AppleScript ได้ดีที่สุดโปรดดูที่เชื่อมต่อกับอุปกรณ์บลูทู ธ (iPhone) ผ่านทางบรรทัดคำสั่งบน MacOSXเนื่องจากเครื่องมือบรรทัด cmd สำหรับควบคุม BT ดูเหมือนจะมีเพียงเล็กน้อย - มีBlueUtilดูวิธีควบคุมบลูทู ธ ไร้สาย วิทยุจากบรรทัดคำสั่ง? แต่ดูเหมือนว่าจะปิด BT เท่านั้น อย่างไรก็ตามการใส่ AppleScript เข้ากับสคริปต์ควบคุม Arduino IDE ที่เหลือทำให้มันซับซ้อนขึ้นอย่างรวดเร็วแม้ว่าคุณจะสามารถใส่คำสั่ง Arduino ภายใน AppleScript ได้


0

คุณสามารถใช้ ESP-LINK เพื่อตั้งโปรแกรม Arduino ผ่าน WiFi

ESP8266 เป็น Wi-Fi MCU ราคาถูกที่ใช้งานง่ายและสามารถตั้งโปรแกรมด้วย Arduino IDE

ESP-LINK เป็นเฟิร์มแวร์สำหรับ ESP8266 ที่ทำให้การกระทำ ESP เช่นการเชื่อมต่อแบบอนุกรม (USB) ไปยัง Arduino

เฟิร์มแวสามารถพบได้ที่นี่ที่ESP-LINK ESP8266


0

หนึ่งสามารถใช้บางอย่างเช่นนี้ เป็น bootloader ที่กำหนดเองเพื่ออัพเดทรหัสของ Arduino ผ่านโมดูลวิทยุ NRF24L01 +

* ใช้งานได้กับเครื่อง Linux เท่านั้น

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