การเลือกไมโครคอนโทรลเลอร์สำหรับโครงการรวบรวมข้อมูลที่ดำเนินการโดยแบตเตอรี่


18

ฉันวางแผนที่จะวัดระดับน้ำในบ่อน้ำซึ่งอยู่ลึกประมาณ 10 ม. พร้อมระดับน้ำสูงสุดไม่เกิน 5 ม. แผนของฉันคือการใช้เซ็นเซอร์อัลตราโซนิค HC SR04เพื่อวัดความลึกส่งผ่าน ZigBee ไปยัง Raspberry Pi ภายในบ้านของฉัน

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

พารามิเตอร์สำหรับการเลือกคือ:

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

  2. ราคาถูก: นี่เป็นโครงการเรียนรู้สำหรับฉันและฉันไม่ต้องการใช้เงินจำนวนมากในเรื่องนี้ดังนั้นต้นทุนที่ต่ำลงจึงดีกว่า

  3. การทำงานภายในบ่อน้ำ: โครงการทั้งหมดจะทำงานจากภายในบ่อน้ำและจะต้องเผชิญกับแสงแดดและฝนที่ตกหนัก ฉันจะให้กรณีและการป้องกันที่ดี

  4. ง่ายต่อการเขียนโปรแกรม

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


2
สิ่งนี้ให้ความรู้สึกที่ค่อนข้างกว้างหรืออาจเป็นเรื่องนอกเรื่อง MCU ขนาดเล็กใด ๆ บนบอร์ดจะเหมาะกับ หากคุณไม่ได้ตัดสินใจใช้ Zigbee ฉันขอแนะนำให้ดูที่ BBC micro: bit ซึ่งมี BLE onboard และขั้วต่อแบตเตอรี่
Sean Houlihane

2
หากคุณต้องการวิทยุ zigbee คุณควรประเมินชิ้นส่วนที่รวมเข้ากับซีพียู MCU (โดยทั่วไปคือ ARM Cortex-M) ไม่ได้หมายความว่าคุณต้องไปตามเส้นทางนั้น แต่ถ้าคุณตัดสินใจไม่ควรใช้เหตุผลนี้
Chris Stratton

2
คุณหมายถึง "Inside a well"? กรณีจะอยู่ใต้น้ำหรือไม่ อย่าคาดหวังว่าการส่งหรือรับสัญญาณจากโมดูล Xbee ใต้น้ำ หลายคนทำงานกับย่านความถี่ 2.4 GHz ซึ่งดูดซับได้ดีจากน้ำ บางแห่งใช้ความเร็วประมาณ 900 MHz ซึ่งอาจไม่สามารถเจาะน้ำได้ดีนัก หากกรณีไม่ได้อยู่ใต้น้ำผนัง 6m + ควรปรับด้วย xbees
Jonas Schäfer

"ข้างในหลุม" หมายความว่าอุปกรณ์จะถูกวางไว้ภายในบ่อน้ำ แต่อยู่เหนือน้ำ
Raj

คำตอบ:


20

กระบวนการทั่วไปของการเลือกไมโครคอนโทรลเลอร์

  1. สรุปความต้องการของคุณที่มีต่อไมโครคอนโทรลเลอร์ ตัวอย่างเช่นในกรณีนี้:

    • 1 ตัวจับเวลาฮาร์ดแวร์เพื่อวัดเวลาระหว่างทริกเกอร์และเสียงสะท้อน
    • GPIO 2 พินเพื่อเชื่อมต่อเซนเซอร์ Echo และพินทริกเกอร์
    • อาจเป็นUARTเพื่อเชื่อมต่อโมดูลการสื่อสาร RF
    • 1 อินพุต ADCเพื่อตรวจสอบแรงดันแบตเตอรี่


    คุณสามารถใช้งานร่วมกับคอนโทรลเลอร์ 8 พินได้ซึ่งอาจต้องใช้ขาโปรแกรมเมอร์เพื่อวัตถุประสงค์ทั่วไปเช่นกัน

  2. ตัดสินใจที่จำเป็นต้องใช้ประสิทธิภาพของ CPUและหน่วยความจำความต้องการ มันเพียงพอที่จะใช้ 8-bit MCU หรือคุณต้องการ 32- บิตหนึ่งแทน? ความเร็วสัญญาณนาฬิกาของ CPU ใดที่ยอมรับได้สิบ MHz หรือ 1 MHz ก็เพียงพอแล้ว จำเป็นต้องใช้หน่วยความจำของโปรแกรม, RAM และ ROM เท่าไร?

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

  3. พลังงานต่ำ เมื่อไม่สำคัญคุณสามารถใช้คอนโทรลเลอร์เกือบทุกชนิดโดยใช้โหมดพลังงานต่ำที่มีแรงดันไฟฟ้าต่ำสุดและความถี่สัญญาณนาฬิกาของระบบ หากมีความสำคัญยิ่งขึ้นคุณสามารถเริ่ม จำกัด รายการค้นหาของคุณให้แคบลงโดยเริ่มจากคอร์ MCU ที่ใช้พลังงานต่ำโดยเฉพาะเช่น (ARM®Cortex®-M0 หรือ M0 + คอร์ CPU) โดยปกติแล้วแผ่นข้อมูลประกอบด้วยตารางสำหรับโหมดพลังงานต่ำ / VCC / SysClk ความถี่ส่วนใหญ่คนที่ดีกว่าจะแสดงรายการปริมาณการใช้อุปกรณ์ต่อพ่วงแต่ละตัวเช่นกัน

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

ในฐานะที่เป็น @Sean ได้ชี้ให้เห็นในความคิดเห็นวิธีการแก้ปัญหาที่เป็นไปได้และประหยัดค่าใช้จ่ายคือการค้นหาโมดูล RF ดังกล่าวที่มาพร้อมกับแอปพลิเคชัน MCU แบบรวมโปรแกรมซึ่งสามารถเรียกใช้เฟิร์มแวร์ของคุณ มีโมดูลดังกล่าวสำหรับ BLE, WiFi และ ZigBee และอาจเป็นไปได้สำหรับเทคโนโลยีอื่น ๆ อีกมากมาย

นอกจากนี้เกี่ยวกับวิธีการที่ MCU จะอยู่รอดได้ดี ทุกอย่างจะลงมาบนกล่องหุ้มที่คุณเตรียมไว้สำหรับอุปกรณ์ ตัวอย่างเช่นมันจะไม่สำคัญว่า MCU ตัวไหนที่คุณจะเลือกถ้ากล่องหุ้มนั้นไม่กันน้ำได้ 100%


TL; DR; ที่นี่ส่วนเฉพาะของผลิตภัณฑ์มา

  1. คุณสามารถเลือกATtiny25ซึ่งมีราคา0.87 $ / 1 ชิ้นที่ Farnell 8-bit, 8-pin ดังนั้นจะไม่ใช้พื้นที่มาก ในโหมดปิดเครื่องจะใช้ 0.2 μAกับ watchdog ที่ปิดใช้งานที่ 3 V. 2-4 μAหากเปิดใช้งาน watchdog มันเข้ากันได้กับ Arduinoดังนั้นการเขียนโปรแกรมจะไม่เสียค่าใช้จ่ายมากนัก (USBasp หรือ AVRdude โปรแกรมเมอร์เสียค่าใช้จ่ายประมาณ 2 $ บน eBay) ( หมายเหตุ : คุณควรใช้ Arduino ซอฟท์แวห้องสมุดอนุกรมเพื่อเชื่อมต่อโมดูลการสื่อสาร RF เป็น MCU นี้มีเพียง SPI ฮาร์ดแวร์.) ทั้งหมดในทุกมันมีขนาดเล็กราคาถูก, มีการใช้พลังงานค่อนข้างต่ำ แต่บิตกระแทก UART อาจแม้ว่ามันจะซับซ้อน มีหน่วยความจำโปรแกรม 2 kB ซึ่งควรจะเพียงพอสำหรับคุณ

  2. หรือไปกับ ARM Cortex M0 ซึ่งกิน 2 μAในโหมดสแตนด์บายและ 5 μAในโหมด Stop MCU ดังกล่าวเป็นตัวอย่างSTM32F030F4ซึ่งค่าใช้จ่าย1.09 $ / 1 ชิ้น มันเป็นคอนโทรลเลอร์แบบ 32 บิตที่ทรงพลังกว่าพร้อมด้วยความถี่สัญญาณนาฬิการะบบสูงสุด 48 MHz แต่คุณสามารถดูได้เพียง + 0.2 $ มันมาพร้อมกับหน่วยความจำโปรแกรม 16 kB ซึ่งมากพอสำหรับงานง่าย ๆ นี้ มันมี SPI, UART, I2C และอุปกรณ์ต่อพ่วงอื่น ๆ อีกมากมาย การเขียนโปรแกรมมันจะมีค่าใช้จ่ายมากขึ้นโปรแกรมเมอร์เฉพาะราคา 20 $ ที่ Farnell ในความคิดของฉันไม่คุ้มค่า แต่คุณสามารถลงทุนในคณะกรรมการพัฒนาการสำหรับครอบครัว F0 ที่มีโปรแกรมเมอร์ on-board (ST-LINK) STM32F0 การค้นพบบอร์ดราคา~ 10 $. คุณสามารถเริ่มต้นแบบกับบอร์ดนี้และใช้เป็นโปรแกรมเมอร์ในภายหลัง


3
โปรดทราบว่า ST-LINK ของบอร์ดการค้นพบและบอร์ดนิวคลีโอสามารถใช้กับ MCU อื่น ๆ ได้มากกว่าบอร์ดบนบอร์ด ไม่แน่ใจเกี่ยวกับบอร์ดเฉพาะนั้น แต่จากลักษณะของมันมันใช้ SWD และสามารถตัดการเชื่อมต่อโดยใช้จัมเปอร์ทางด้านขวา สิ่งที่ดีเกี่ยวกับเรื่องนี้ก็คือ ST-LINK ไม่ได้เป็นเพียงโปรแกรมเมอร์ แต่เป็นdebuggersในวงจรทำให้การพัฒนาง่ายขึ้นมาก
Jonas Schäfer

3
นอกจากนี้หากคุณไม่สนใจคำตอบจาก XBEE คุณสามารถใช้ Universal Serial Interface ของ ATtiny เพื่อรับ UART ซึ่งเร็วกว่าการปรับใช้ซอฟต์แวร์ที่มีการเปลี่ยนแปลงเล็กน้อย
Jonas Schäfer

3
น่าสังเกตว่าโมดูลวิทยุมักมาพร้อมกับทรัพยากร MCU ที่ไม่ได้ทุ่มเท (และโมดูลมีอยู่เพื่อทำให้การอนุมัติประเภทง่ายขึ้น) โดยทั่วไปแล้วซีพียูจะใช้ร่วมกับสแต็ค RF ดังนั้นคุณต้องยอมรับการขัดจังหวะเป็นระยะ ฯลฯ
Sean Houlihane

3
ULPBENCHเป็นทรัพยากรที่ดีเมื่อการใช้พลังงานต่ำ (แบตเตอรี่) มีความสำคัญ
neonze ใน

5

ดูความง่ายในการเขียนโปรแกรมและราคาถูกฉันอาจเริ่มต้นด้วยโมดูล Arduino บางชนิด (หรือโคลนราคาต่ำ) รหัสสำหรับเซ็นเซอร์อัลตราโซนิคของคุณมีอยู่แล้วเช่นเดียวกับโค้ดตัวอย่างสำหรับ ZigBee เช่นใช้โมดูล Digi XBee ในส่วนหลังคุณเชื่อมต่อ XBee เข้ากับพอร์ตอนุกรมและหลังจากทำการเชื่อมต่อกับอินเตอร์เฟสคำสั่ง "AT" เก่าที่น่าเคารพคุณจะมีช่องสัญญาณแบบจุดต่อจุดที่คุณสามารถส่งข้อความใด ๆ ลงไปที่ Raspberry Pi ของคุณ ) ZigBee ไม่ใช่การสื่อสารระยะสั้นที่ถูกที่สุด แต่โมดูล XBee ได้ลดลงตามราคาจริงในระยะ 5 ปีที่ผ่านมา

ฉันรู้ว่าบางคนมีปัญหากับภาษา C / C ++ ที่ใช้บน Arduino แต่ในกรณีนี้คุณส่วนใหญ่จะรวมเข้าด้วยกันสคริปต์ที่มีอยู่แล้วจากผู้ใช้รายอื่น

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


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