สารบัญ:
- ขั้นตอนที่ 1: สิ่งที่คุณต้องการ…
- ขั้นตอนที่ 2: การบัดกรีบอร์ด
- ขั้นตอนที่ 3: การตั้งค่า Arduino
- ขั้นตอนที่ 4: การตั้งค่า Python
- ขั้นตอนที่ 5: ที่เวทมนตร์เกิดขึ้น
วีดีโอ: Servodriver-Board พร้อม Python-GUI และ Arduino: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
เมื่อทำการสร้างต้นแบบหรือสร้างเครื่องบินจำลอง คุณมักจะพบปัญหาที่คุณต้องตรวจสอบการเคลื่อนที่ของเซอร์โวหรือตั้งค่าเซอร์โวไว้ที่ตำแหน่งกึ่งกลาง
ในกรณีที่คุณไม่คุ้นเคยกับการสร้างระบบ RC หรือการทดสอบทั้งหมด คุณสามารถผลักเซอร์โวได้ไกลแค่ไหนหรือตำแหน่งกึ่งกลาง บอร์ดนี้เหมาะสำหรับคุณ! ช่วยให้คุณสามารถย้ายเซอร์โวไปยังตำแหน่งที่ระบุหรือเดินทางไปมา
มันใช้งานได้ดีอย่างน่าประหลาดใจ แม้จะมีเซอร์โว 6 ตัวที่แข่งจากตำแหน่งหนึ่งไปอีกตำแหน่งหนึ่งในลูป
นอกจากนี้ยังเป็นโครงการที่ดีในการเรียนรู้เกี่ยวกับการสื่อสารระหว่าง Python-GUI และ Arduino โดยใช้ Serial
ขั้นตอนที่ 1: สิ่งที่คุณต้องการ…
สำหรับโครงการนี้ คุณจะต้องมีสิ่งต่อไปนี้:
ฮาร์ดแวร์
- Arduino นาโนพร้อมสายเคเบิล ฉันใช้โคลนและรหัส Python คาดหวังชิป CH340 ของโคลน
- บอร์ดต้นแบบ. 7x5cm ก็พอ
- ส่วนหัวและหมุด 2, 54 มม. บางตัว
- 1-6 เซอร์โว
- แหล่งจ่ายไฟสำหรับเซอร์โว (ฉันใช้แบตเตอรี่แพ็คที่มีแบตเตอรี่ 4 ก้อน)
ซอฟต์แวร์
- หลาม 3:
- ไดรเวอร์ USB สำหรับชิป CH340: เพียง google สำหรับไดรเวอร์สำหรับไดรเวอร์ CH340
- Arduino IDE:
ขั้นตอนที่ 2: การบัดกรีบอร์ด
การบัดกรีนั้นตรงไปตรงมาตาม Fritzing ในภาพ เพียงตรวจสอบให้แน่ใจว่าคุณสามารถต่อเซอร์โวเข้ากับแถว 3 พินได้อย่างง่ายดาย
- 3-pin-rows ต่อเข้ากับขาดิจิตอล 3, 5, 6, 9, 10 และ 11 ของ Arduino nano
- สายสีแดงติดอยู่ที่ขา 5V ของ Arduino
- สายสีดำเชื่อมต่อกับขา GND ของ Arduino
- หมุดคู่ด้านล่างแถว 3 พินมีไว้เพื่อต่อแหล่งจ่ายไฟเครื่องรับ RC ทั่วไป คุณสามารถเพิ่มขั้วต่อได้ตามต้องการ เช่น ขั้วต่อแบบขันเกลียว ขั้วต่อ XT, JST หรือ… หรือ…
โดยส่วนตัวแล้วฉันชอบแถวส่วนหัวของเพศหญิงเพื่อใส่ Arduino แต่นั่นก็ขึ้นอยู่กับคุณ
โปรดทราบว่าส่วนหัวของตัวเมียแบบสั้นนั้นเป็นจัมเปอร์ ที่ให้คุณจัดหาเซอร์โวโดยใช้แหล่งจ่าย 5V ของ Arduino เพื่อวัตถุประสงค์ในการทดสอบ หากคุณเครียดมากเกินไป Arduino จะรีเซ็ตและปล่อยจังหวะที่เหมาะสม ต้องถอดออกก่อนที่จะต่อแหล่งจ่ายไฟอื่น
ขั้นตอนที่ 3: การตั้งค่า Arduino
ติดตั้ง Arduino IDE และแฟลช Arduino nano พร้อมภาพร่างที่แนบมา
ขั้นตอนที่ 4: การตั้งค่า Python
ติดตั้ง Python 3 หลังจากดาวน์โหลด ตรวจสอบให้แน่ใจว่าได้เลือกตัวเลือกเพื่อสร้างตัวแปร "เส้นทาง"
คุณต้องติดตั้งอีกสองแพ็คเกจโดยใช้ pip หากต้องการทำเช่นนั้นให้กดปุ่ม "Windows" พิมพ์ "cmd" แล้วกด "Enter" ในพรอมต์คำสั่งพิมพ์คำสั่งต่อไปนี้:
- pip ติดตั้งซีเรียล
- piip ติดตั้ง pyserial
- pip ติดตั้ง tkinter
อย่างที่คุณเห็น ฉันต้องการโมดูลซีเรียลและไพซีเรียล ซึ่งไม่น่าจะมีประสิทธิภาพมากที่สุด เนื่องจาก pyserial ควรแทนที่ซีเรียล อย่างไรก็ตามมันใช้งานได้และฉันเพิ่งเริ่มเรียนรู้;)
เปิด Python-Script ใน IDE แล้วเรียกใช้ หรือเรียกใช้จากเทอร์มินัลโดยตรง
ในเมนูแบบเลื่อนลง คุณสามารถเลือกระหว่างสองโหมด "ตรงไป" และ "ปิงปอง":
- ตรงไป: ป้อนตำแหน่งเซอร์โวในหน่วยไมโครวินาทีในคอลัมน์แรก แล้วกด "เริ่ม" เพื่อให้เซอร์โวเคลื่อนที่ไปยังตำแหน่งที่ระบุ
- ปิงปอง: ป้อนขอบเขตล่างและขอบเขตบนในคอลัมน์ที่สองและสาม นั่นคือตำแหน่งล่างและบน ระหว่างที่เซอร์โวจะกลับไปมา ในคอลัมน์ "เวลาปิงปอง" คุณสามารถระบุเวลาเป็นมิลลิวินาที ที่เซอร์โวจะรอเมื่อถึงตำแหน่งบนหรือล่าง กด "Start" และเซอร์โวจะเริ่มเคลื่อนที่ไปมา กด "หยุด" และเซอร์โวจะหยุด
ขั้นตอนที่ 5: ที่เวทมนตร์เกิดขึ้น
สุดท้ายแต่ไม่ท้ายสุด ฉันต้องการจะชี้ให้เห็นรายละเอียดบางอย่างในโค้ดสำหรับผู้ที่ต้องการเข้าถึงการสื่อสารแบบอนุกรมระหว่าง Python และ Arduino
ทีนี้ จะเกิดอะไรขึ้นในโปรแกรม Python
ก่อนอื่นโปรแกรมจะตรวจสอบสิ่งที่แนบกับพอร์ต COM ในบรรทัดนี้และบันทึกลงในรายการ:
self. COMPortsList = รายการ (serial.tools.list_ports.comports ())
จากนั้นจะวนซ้ำในรายการจนกว่าจะพบชิป CH340 ที่มีชื่อเสียง บันทึก และสร้างการเชื่อมต่อแบบอนุกรมหลังจาก for-loop โปรดทราบว่า for-loop จะขาดทันทีที่พบ CH340 ตัวแรก
สำหรับ p ใน self. COMPortsList: ถ้า "CH340" ใน p[1]: # กำลังมองหา Arduino Clone self. COMPort = p[0] อย่างอื่น: pass self. Ser = serial. Serial (self. COMPort, 57600)
การเชื่อมต่อแบบอนุกรมถูกสร้างขึ้นด้วยพอร์ต COM โดยมีบอดเรต 57600
และรหัส Arduino ทำอะไร? เนื่องจาก Arduino มีพอร์ต COM เพียงพอร์ตเดียว การเชื่อมต่อแบบอนุกรมจึงมีเพียงบรรทัดเดียว:
Serial.begin(57600);
ตอนนี้ เราสามารถใช้พอร์ตทั้งสองเพื่อสื่อสารกันได้ ในกรณีนี้ มีเพียงข้อความจาก Python ถึง Arduino ข้อความถูกส่งมาที่นี่จาก Python การเชื่อมต่อแบบอนุกรมส่งไบต์เป็นค่าเริ่มต้น นั่นเป็นวิธีที่เร็วที่สุดในการส่งข้อมูลและเท่าที่ฉันรู้ก็ยังค่อนข้างแพร่หลาย ดังนั้น ints สำหรับจำนวนของเซอร์โว (เพื่อให้ Arduino รู้ว่าเซอร์โวตัวใดที่จะย้าย) และตำแหน่งในไมโครวินาทีจะถูกเปลี่ยนเป็นไบต์
Command = struct.pack('>B', self. Place) # ตัวแปร int "self. Place" ถูกเปลี่ยนเป็นไบต์
self. Ser.write(Command) # การเขียนไบต์บนคำสั่ง Serial-Port = int(self. ServoPos.get())//10 # กำลังอ่านอินพุตจากฟิลด์และเปลี่ยนคำสั่ง int = struct.pack(' >B', Command) # เปลี่ยน int เป็นไบต์ด้วยตนเอง Ser.write (Command) # การเขียนไบต์บน Serial-Port
นอกจากนี้ การแยกวิเคราะห์ข้อมูลต้องใช้เวลา (เช่น การตีความสี่ไบต์ "1", "2", "3" และ "0" เป็น int 1230 ไม่ใช่สี่ตัวอักษรที่แตกต่างกัน) และจะดีกว่าถ้าไม่ใช้ Arduino
ด้าน Arduino ข้อมูลที่ส่งจะถูกหยิบขึ้นมาดังนี้:
if(Serial.available()>1){ // หากมีข้อมูล serial ให้ทำการวนซ้ำ c = Serial.read(); // ไบต์แรก (จำนวนเซอร์โว) ถูกบันทึกลงในตัวแปร Micros = Serial.read(); // บันทึกตำแหน่งของเซอร์โวไว้ที่นี่ Micros = Micros * 10; }
แนะนำ:
IOT DMX Controller พร้อม Arduino และ Stage Monster Live: 6 ขั้นตอน
ตัวควบคุม IOT DMX ด้วย Arduino และ Stage Monster Live: ควบคุมไฟเวทีและอุปกรณ์ DMX อื่น ๆ จากโทรศัพท์ของคุณหรืออุปกรณ์ที่เปิดใช้งานเว็บอื่น ๆ ฉันจะแสดงวิธีสร้างคอนโทรลเลอร์ DMX ของคุณเองอย่างรวดเร็วและง่ายดายซึ่งทำงานบนแพลตฟอร์ม Stage Monster Live โดยใช้ Arduino Mega
All Band Receiver พร้อม SI4732 / SI4735 (FM / RDS, AM และ SSB) พร้อม Arduino: 3 ขั้นตอน
All Band Receiver พร้อม SI4732 / SI4735 (FM / RDS, AM และ SSB) พร้อม Arduino: เป็นโปรเจ็กต์เครื่องรับย่านความถี่ทั้งหมด ใช้ห้องสมุด Arduino Si4734 ห้องสมุดนี้มีตัวอย่างมากกว่า 20 ตัวอย่าง คุณสามารถฟัง FM ด้วย RDS สถานี AM (MW) ในพื้นที่ SW และสถานีวิทยุสมัครเล่น (SSB) เอกสารทั้งหมดที่นี่
อินเทอร์เฟซ ESP32 พร้อม SSD1306 Oled พร้อม MicroPython: 5 ขั้นตอน
อินเทอร์เฟซ ESP32 พร้อม SSD1306 Oled พร้อม MicroPython: Micropython เป็นการเพิ่มประสิทธิภาพของ python และมีขนาดเล็กของ python ซึ่งหมายถึงการสร้างสำหรับอุปกรณ์ฝังตัวซึ่งมีข้อจำกัดด้านหน่วยความจำและใช้พลังงานต่ำ Micropython สามารถใช้ได้กับคอนโทรลเลอร์หลายตระกูล ซึ่งรวมถึง ESP8266, ESP32, Ardui
PWM พร้อม ESP32 - Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: 6 ขั้นตอน
PWM พร้อม ESP32 | Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: ในคำแนะนำนี้เราจะดูวิธีสร้างสัญญาณ PWM ด้วย ESP32 โดยใช้ Arduino IDE & โดยทั่วไปแล้ว PWM จะใช้เพื่อสร้างเอาต์พุตแอนะล็อกจาก MCU ใดๆ และเอาต์พุตแอนะล็อกนั้นอาจเป็นอะไรก็ได้ระหว่าง 0V ถึง 3.3V (ในกรณีของ esp32) & จาก
โมดูล GPS Ublox LEA 6h 02 พร้อม Arduino และ Python: 4 ขั้นตอน
โมดูล GPS Ublox LEA 6h 02 พร้อม Arduino และ Python: การเชื่อมต่อโมดูล GPS โดยใช้ Arduino UNO (หรืออุปกรณ์ Arduino อื่น ๆ ) และคำนวณละติจูดและลองจิจูดเพื่อแสดงบนหน้าต่างแอปพลิเคชันที่เขียนด้วย Python