สารบัญ:

รถ RC Bluetooth พร้อม STM32F103C และ L293D - ราคาไม่แพง: 5 ขั้นตอน
รถ RC Bluetooth พร้อม STM32F103C และ L293D - ราคาไม่แพง: 5 ขั้นตอน

วีดีโอ: รถ RC Bluetooth พร้อม STM32F103C และ L293D - ราคาไม่แพง: 5 ขั้นตอน

วีดีโอ: รถ RC Bluetooth พร้อม STM32F103C และ L293D - ราคาไม่แพง: 5 ขั้นตอน
วีดีโอ: EP.1 รถบังคับ BLUETOOTH DIY | BLUETOOTH CAR STM32F0 HC05 DIY 2024, กันยายน
Anonim
Image
Image
ทำลายผู้กินแบตเตอรี่!
ทำลายผู้กินแบตเตอรี่!

ฉันสร้าง Bluetooth Arduino Car เหมือนกับที่แสดงไว้ที่นี่ โดย Ardumotive_com ปัญหาที่ฉันมีคือแบตเตอรี่และน้ำหนักตลอดจนค่าใช้จ่าย ตั้งแต่นั้นมา ธนาคารพลังงานราคาถูกสำหรับโทรศัพท์มือถือก็มีราคาไม่แพงมาก สิ่งที่ฉันต้องทำคือลดน้ำหนัก เนื่องจากราคาถูก ฉันจึงเปลี่ยนมาใช้ไมโครคอนโทรลเลอร์ STM32F103C ไมโครคอนโทรลเลอร์ STM32F103C สามารถซื้อได้ในราคาไม่ถึง $2 และมีขนาดเล็กกว่า Arduino มาก ฉันเปลี่ยนการเข้ารหัสเล็กน้อยเพื่อทำงานกับ STM32F103C เช่นกัน

เสบียง

  • รถควบคุมระยะไกลราคาถูกที่กินแบตเตอรี่ ใช่ เช่นเดียวกับที่ Ardumotive_com ใช้ คุณจะปิดระบบและใช้แบตสำรองของโทรศัพท์แทน หากคุณมีทรัพยากรในการสร้างแชสซีของคุณเอง ฉันไปที่ร้านขายของเล่นข้างถนนและซื้อรถราคาถูกราคาต่ำกว่า 10 ดอลลาร์ รถกินแบตเตอรี่และรีโมทกินแบตเตอรี่ - สมบูรณ์แบบสำหรับการปรับปรุง
  • ธนาคารอำนาจโทรศัพท์ -- ตอนนี้ราคาถูกสุด ๆ หลงทางจากพาวเวอร์แบงค์ที่มีปุ่มเปิดปิดอยู่ด้านข้าง คุณจะไม่สามารถติดตามรถและกดปุ่มค้างไว้ได้ ที่โง่
  • ชิป L293D-- นี่คือ H-Bridge คู่ที่จะควบคุมมอเตอร์ไฟฟ้า
  • โมดูลบลูทูธ HC-06
  • สวิตช์ -- ฉันใช้สวิตช์เปิด/ปิดอย่างง่าย
  • บางสาย -- สายโทรศัพท์จะดี แต่เกจ 20 เกจขนาดใหญ่กว่าเล็กน้อยจะดีกว่า
  • Proto Board หรือชิ้นส่วนพลาสติกหรือกระดาษแข็งสำหรับติด Blue Pill และ L293D ของคุณ ฉันถูก ฉันเลยคิดระบบที่ต่างออกไปเล็กน้อย โดยใช้กระดาษลูกฟูกแบบบาง-- เช่น จากกล่องหลอดไฟ
  • สายชาร์จ USB ราคาถูกสองเส้น - สามารถซื้อได้จากต้นดอลลาร์ อย่าใช้สายการเขียนโปรแกรมที่ดีของคุณ อันหนึ่งจะถูกตัดสำหรับสวิตช์เปิด/ปิด และอีกอันหนึ่งจะทำการชาร์จแบตเตอรี่

ไม่จำเป็น

  • 4 LEDs -- ถ้าคุณต้องการไฟหน้าและไฟท้าย
  • ตัวต้านทาน 220 โอห์ม 4 ตัว สำหรับ LED ในระบบ 3.3v
  • piezo หรือลำโพงขนาดเล็กสำหรับแตร

เครื่องมือ

  • หัวแร้งและหัวแร้ง
  • ปืนกาวร้อน - ลูกสาวของฉันเป็นนินจาปืนกาวร้อน!
  • เครื่องปอกสายไฟและสนิป
  • หมายเหตุ: หากคุณใช้เทคนิคกระดาษแข็งที่ฉันใช้แทนบอร์ดโปรโต คุณจะต้องใช้เดรเมลหรือสว่านขนาดเล็ก

ขั้นตอนที่ 1: ทำลายผู้กินแบตเตอรี่

ทำลายผู้กินแบตเตอรี่!
ทำลายผู้กินแบตเตอรี่!

ได้เวลาสนุกไปกับการทำลายตัวกินแบตเตอรี่แล้ว! ใช่ GUT สิ่งนั้น! รู้สึกภาคภูมิใจที่คุณได้ทำส่วนของคุณในการทำให้โลกนี้เป็นมิตรกับสิ่งแวดล้อมมากขึ้น โอเค นั่นเป็นเรื่องที่ยืดเยื้อ แต่อย่างไรก็ตาม… ไปที่เฟรม

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

เมื่อคุณมีโครงพร้อมมอเตอร์และพวงมาลัยเปล่าแล้ว ให้ค้นหาว่าขั้วมอเตอร์ด้านใดอยู่ด้านใด ใช้แบตเตอรี่หรือเครื่องชาร์จ 5v เพื่อทดสอบมอเตอร์

บนมอเตอร์บังคับเลี้ยว เมื่อล้อเลี้ยวขวา ให้ติดฉลากสายแบตเตอรี่บวก "3" และสายลบ "6"

บนมอเตอร์ขับเคลื่อน เมื่อล้อหมุนไปข้างหน้า ให้ติดฉลากสายแบตเตอรี่บวก "14" และลวดลบ "11"

ขั้นตอนที่ 2: รหัสใน Arduino IDE

รหัสใน Arduino IDE
รหัสใน Arduino IDE
รหัสใน Arduino IDE
รหัสใน Arduino IDE

อาจเป็นการดีที่สุดถ้าคุณสร้างต้นแบบอุปกรณ์อิเล็กทรอนิกส์ในรถยนต์ของคุณบนเขียงหั่นขนม

ตกลงนี่เป็นหนึ่งในส่วนที่ยุ่งยาก ไม่สามารถตั้งโปรแกรม "Blue Pill" ผ่านพอร์ต USB ได้ ฉันไม่พบคำอธิบายการเขียนโปรแกรมของ "Blue Pill" ที่ง่ายกว่าวิดีโอ Youtube ของ Joop Brokking มันอธิบายทุกสิ่งที่คุณจำเป็นต้องรู้รวมถึงห้องสมุด STMduino ของ Roger Clarke มีวิธีการติดตั้ง bootloader เพื่อให้คุณสามารถใช้ USB เพื่อตั้งโปรแกรม "Blue Pill" ได้ แต่คุณต้องตั้งโปรแกรม bootloader ผ่าน Serial Bus อยู่ดี

ขออภัย Serial Bus ถูกใช้โดยอแด็ปเตอร์ Bluetooth เช่นกัน ต้องติดตั้งโปรแกรมผ่านพิน Serial Bus, PA9 และ PA10 ผ่าน FTDI ก่อน จากนั้นคุณสามารถตรวจสอบการตั้งค่าทั้งหมดของคุณด้วยอะแดปเตอร์ Bluetooth

ใช้เขียงหั่นขนมและจัดวางทุกอย่างบนเขียงหั่นขนมเช่นเดียวกับภาพสเก็ตช์ด้านบน ถอดสาย Serial TX และ RX ของอะแดปเตอร์ Bluetooth บนพิน PA9 และ PA10 ของ STM32F103C ขอ FTDI และโปรแกรมของคุณ ตรวจสอบให้แน่ใจว่าได้ข้ามเส้น Serial Bus, RX to Tx และ Tx to RX คนหนึ่งรับ อีกคนให้

เมื่อโหลดโปรแกรมแล้ว คุณสามารถเปิดคอนโซลซีเรียลแล้วส่ง

เพื่อดูว่าไฟทำงานหรือไม่ ถ้าไฟทำงานส่งได้

อีกครั้งเพื่อปิดเครื่อง

ใส่รถของคุณในบล็อกเพื่อยกยางและส่ง

ล้อควรไปข้างหน้า หากไม่เป็นเช่นนั้น ให้กลับสายไฟ โปรดจำไว้ว่าเราติดฉลากสายไฟไว้ก่อนหน้านี้อย่างไร หมุดที่สอดคล้องกันของ L293D ควรตรงกัน

หากต้องการหยุด ส่ง

มาดูการเปลี่ยนแปลงที่สำคัญในโค้ดกัน

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

/* * สร้างโดย Vasilakis Michalis // 12-12-2014 ver.2

* โครงการ: ควบคุมรถ RC ผ่าน Bluetooth ด้วยสมาร์ทโฟน Android * ข้อมูลเพิ่มเติมได้ที่ https://www.ardumotive.com * * เปลี่ยนรหัสนี้ให้พอดีกับ STM32F103 โดย Jim Garbe, [email protected] * ข้อมูลเพิ่มเติมได้ที่ https://github.com/jgarbe/RCCAR_STM32F103C * โปรดทราบว่าค่า 8 บิต 0-255 ถูกเปลี่ยนเป็น * สะท้อนค่า 16 บิต 0-65535 */ /****************** ********* * บน STM32 การเขียนแบบอะนาล็อกยังคงทำงานที่ 8 บิต 255 * แต่คุณสามารถรับฟังก์ชันเต็มรูปแบบของช่วง PWM ที่ 0-65535 โดยการประกาศพินเป็น PWM *AND ใช้ pwmWrite() แทน analogWrite() ****************************/

ที่โดดเด่นที่สุดคือ หมุดไม่ได้ตั้งชื่อแบบเดียวกันระหว่าง Arduino และ STM32F103C เราประกาศพินโดยใช้ชุดบรรทัดถัดไป มีพินเหลืออยู่หนึ่งพินที่ประกาศลงมาในลูป ในบรรทัดที่ 197 ใช้ PA5 เพื่ออ่านระดับแบตเตอรี่

////L293 การเชื่อมต่อ

const int motorA1 = PB6; // ถึง Pin 15 ของ L293 const int motorA2 = PB7; // ถึง Pin 10 ของ L293 const int motorB1 = PB8; // ถึงพิน 7 ของ L293 const int motorB2 = PB9; // ถึง Pin 2 ของ L293 // Leds ที่เชื่อมต่อกับ STM32F103C Pin A12 const int lights = PA12; // Buzzer / Speaker ไปยัง Arduino UNO Pin A8 const int buzzer = PA8; //บลูทูธ (HC-06 JY-MCU) สถานะพินบนพิน A11 ของ STM32F103C const int BTState = PA11;

นอกจากนี้ การใช้ analogWrite(); จะยังคงทำงานบน "BluePill" แต่เป็นการดีกว่าที่จะประกาศพิน PWM โดยใช้

โหมดพิน (, PWM);

แล้วใช้

pwmWrite(,);

หมายเหตุ: 8-bit = 0-255, 16-bit=0-65535

สาย 32-44 มีการเปลี่ยนแปลงแบตเตอรี่ หากคุณกำลังจะใช้การตรวจสอบระดับแบตเตอรี่ คุณต้องใช้ตัวแบ่งกระแสไฟสำหรับแบตเตอรี่ที่คุณมี ส่วนนี้ไม่ได้สะท้อนอยู่ในภาพร่าง Fritzing มีคำอธิบายมากมายเกี่ยวกับวิธีสร้างตัวแบ่งแรงดันไฟบน Youtube เนื่องจาก STM32F103C เป็นชิป 3.3v ฉันจึงแก้ไขโค้ดที่นี่เพื่อใช้ตัวแบ่งแรงดันไฟฟ้าทางกายภาพ Arduino สามารถทนต่อแรงดันไฟฟ้าที่สูงขึ้นผ่าน ADC ที่ให้มา แต่ "Blue Pill" ไม่สามารถทำได้

/* ระดับแบตเตอรี่จะถูกตรวจสอบที่ Pin PA5

* เปลี่ยนบรรทัดถัดไปสำหรับ STM32F103C เพราะ ADC ไม่สามารถจัดการได้ * อะไรที่เกิน 3.3v * ฉันเพิ่งแสดงความคิดเห็นออก * ต้องคำนวณและใช้ตัวแบ่งแรงดันไฟฟ้าโดยใช้ตัวต้านทานสองตัว * เพื่อวัดอินพุต ADC ลงไปอีกในโค้ด * ตัวอย่าง: * ตัวต้านทาน GND---2K ----- ตัวต้านทาน 1K ------5v * | * | * 3.3v */ // const float maxBattery = 3.3; // เปลี่ยนค่าเป็นระดับแรงดันแบตเตอรี่สูงสุดของคุณ!

ขั้นตอนที่ 3: รวมทุกอย่างเข้าด้วยกัน

รวมทุกอย่างไว้ด้วยกัน
รวมทุกอย่างไว้ด้วยกัน
รวมทุกอย่างไว้ด้วยกัน
รวมทุกอย่างไว้ด้วยกัน
รวมทุกอย่างไว้ด้วยกัน
รวมทุกอย่างไว้ด้วยกัน
รวมทุกอย่างไว้ด้วยกัน
รวมทุกอย่างไว้ด้วยกัน

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

ฉันเลือกวิธีไฮบริดนี้เพื่อทำให้อุปกรณ์สะอาดและน้ำหนักเบา และแน่นอน ราคาถูก!

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

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

หากคุณยังไม่ได้สังเกต ฉันมีไฟเป็นปลั๊กอุปกรณ์เสริมบนบอร์ดเท่านั้น ฉันไม่ได้ใช้ไฟแสดงสถานะแบตเตอรี่หรือเสียงบี๊บ เป็นเพราะโครงการของฉันมีจุดประสงค์อื่น มันจะอธิบายได้เองเมื่อคุณเห็นผลที่เสร็จแล้วกับตัวรถ …แต่นี่ทำให้เกิดความคิดอื่น มีหมุดที่ไม่ได้ใช้จำนวนมากในโครงการนี้ อาจจะเป็นที่เปิดประตูรถ ที่เปิดประตูรถ ระเบิดแคร็กเกอร์ … …หรือแม้แต่เครื่องกำเนิดอากาศรบกวนขนาดเล็ก Galvani-Edison Luminiferous Aether!

เมื่อบัดกรีเสร็จเรียบร้อยแล้ว ให้ทดสอบก่อนทำการติดกาวที่ข้อต่อเพื่อคลายความเครียดที่สายไฟ

ฉันใช้แอพ Android เดียวกันกับ Ardumotive สามารถพบได้ที่

เมื่อคุณทดสอบการทำงานของรถแล้ว ก็ถึงเวลาวางแบตเตอรี่และสวิตช์ ไปที่ขั้นตอนต่อไป

ขั้นตอนที่ 4: แบตเตอรี่และสวิตช์

ตกลง นี่คือที่ที่คุณไม่สามารถทำตามแผนของฉันได้อย่างแน่นอน

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

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

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

ขั้นตอนที่ 5: ใส่ตัวถังรถของคุณบนเฟรม

ตกลง ฉันบอกว่าฉันตั้งใจใหม่กับ Arduino เวอร์ชันดั้งเดิมของรถคันนี้ ผลิตภัณฑ์ขั้นสุดท้ายที่แท้จริงคืออุปกรณ์ประกอบฉากสำหรับบัลเล่ต์ "The Nutcracker" ที่ดำเนินการโดยบริษัทบัลเล่ต์ในพื้นที่ของเรา ในฉากเปิด หนูตัวหนึ่งวิ่งข้ามเวทีพร้อมกับเวทมนตร์ที่บังเอิญของดรอสเซลเมเยอร์ ฉันใช้หนูอิเกียและติดตั้งบนโครง Arduino และก้อนแบตเตอรี่ที่ใหญ่กว่ามาก เสานั้นหนักและไม่สามารถชาร์จใหม่ได้ นี้จะดีกว่ามาก!

ขอให้สนุกกับรถของคุณ จำไว้ว่ายังมีพินอีกมากมายบน STM32F103C ที่สามารถใช้ได้ อาจเป็นตัวเหม็นคล้ายกับใน "Toy Story 4"

แนะนำ: