Агуулгын хүснэгт:

Python-GUI ба Arduino-тэй серводрайвер самбар: 5 алхам
Python-GUI ба Arduino-тэй серводрайвер самбар: 5 алхам

Видео: Python-GUI ба Arduino-тэй серводрайвер самбар: 5 алхам

Видео: Python-GUI ба Arduino-тэй серводрайвер самбар: 5 алхам
Видео: Fysetc Spider V1.1 - Servo install 2024, Арваннэгдүгээр
Anonim
Python-GUI болон Arduino-тэй Servodriver-Board
Python-GUI болон Arduino-тэй Servodriver-Board

Прототип хийх эсвэл загвар нисэх онгоц хийхдээ ихэвчлэн servo аяллыг шалгах эсвэл servos -ийг дунд байрлалд байрлуулах шаардлагатай болдог.

Хэрэв та RC систем эсвэл туршилтаа бүхэлд нь бүтээхгүй бол servo-ийг хэр зэрэг түлхэх эсвэл дунд байрлал хаана байгаа бол энэ самбар танд зориулагдсан болно! Энэ нь servo -ийг тогтоосон байрлалд шилжүүлэх, эсвэл нааш цааш аялах боломжийг олгодог.

Энэ нь нэг байрлалаас нөгөө байрлалд уралддаг 6 servo ч гэсэн гайхалтай сайн ажилладаг.

Түүнчлэн, Python-GUI ба Arduino хоёрын хооронд Serial ашиглан харилцах талаар суралцах сайхан төсөл юм.

Алхам 1: Танд хэрэгтэй зүйл…

Энэ төслийн хувьд танд дараахь зүйлс хэрэгтэй болно.

Техник хангамж

  • Ардуино нано кабельтай. Би клон ашигласан бөгөөд Python код нь CH340 чипийг клон хүлээж байна
  • Прототип хийх самбар. 7х5см хангалттай
  • Зарим 2, 54 мм -ийн толгой ба зүү
  • 1-6 servo
  • Сервүүдийн цахилгаан хангамж (би 4 батерейтай баттерей ашигласан)

Програм хангамж

  • Python 3:
  • CH340 чипсэд зориулсан USB драйвер: CH340 драйверуудын драйверуудыг зүгээр л google дээр ашиглаарай
  • Arduino IDE:

Алхам 2: Самбарыг гагнах

Самбарыг гагнах
Самбарыг гагнах

Зураг дээрх Fritzing -ийн дагуу гагнуур нь шууд урагшаа чиглэсэн байдаг. Сервүүдийг 3 зүү эгнээнд амархан залгах боломжтой эсэхийг шалгаарай.

  • 3 зүү бүхий мөрүүдийг Arduino нано дижитал зүү 3, 5, 6, 9, 10, 11-д хавсаргасан болно.
  • Улаан утас нь Arduino-ийн 5V-зүүтэй холбогдсон байна
  • Хар утас нь Arduino-ийн GND зүүтэй холбогдсон байна
  • 3 зүү бүхий эгнээний доор байрлах хос зүү нь ердийн RC хүлээн авагчийн цахилгаан тэжээлийг холбох зориулалттай бөгөөд та терминал, XT-холбогч, JST эсвэл… эсвэл… гэх мэт холбогчийг хүссэнээрээ нэмж болно.

Би хувьдаа Arduino -г оруулахын тулд эмэгтэй толгойн эгнээний эгнээнд дуртай байдаг, гэхдээ энэ нь чиний л асуудал.

Богино холбосон эмэгтэй толгойнууд нь холбогч бөгөөд туршилтын зориулалтаар Arduino-ийн 5V эх үүсвэрийг ашиглан серво нийлүүлэх боломжийг олгодог. Хэрэв та үүнийг хэт их ачаалах юм бол Arduino дахин тохируулж, зөв хурдыг нь алдах болно. Өөр тэжээлийн хангамжийг холбохын өмнө тэдгээрийг зайлуулах ёстой.

Алхам 3: Arduino -г тохируулах

Arduino IDE -ийг суулгаж, Arduino наног хавсаргасан ноорогоор нь асаана уу.

Алхам 4: Python -ийг тохируулах

Python -ийг тохируулж байна
Python -ийг тохируулж байна

Татаж авсны дараа Python 3 -ийг суулгана уу. "PATH" хувьсагч үүсгэх сонголтыг шалгаарай.

Та pip ашиглан өөр хоёр багцыг суулгах хэрэгтэй. Үүнийг хийхийн тулд "Windows" товчлуурыг дараад "cmd" гэж бичээд "enter" дарна уу. Тушаалын мөрөнд дараах тушаалуудыг бичнэ үү.

  • pip цуваа суулгах
  • piip pyserial суулгах
  • tkinter -ийг pip суулгах

Таны харж байгаагаар надад сериал модуль болон pyserial хэрэгтэй бөгөөд энэ нь хамгийн үр дүнтэй биш байх болно, учир нь pyserial нь цувралыг орлох ёстой. Гэсэн хэдий ч энэ нь ажилладаг бөгөөд би дөнгөж сурч байна;).

Python-Script-ийг IDE дээр нээгээд ажиллуул эсвэл терминалаас шууд ажиллуулна уу.

Унтраах цэсэнд та "Шулуун явах" ба "Ширээний теннис" гэсэн хоёр горимыг сонгох боломжтой.

  • Шулуун явах: Серво-байрлалыг микросекундээр эхний баганад оруулаад "Эхлүүлэх" дээр дарж servo-ийг заасан байрлал руу шилжүүлнэ.
  • Ширээний теннис: Хоёр, гурав дахь баганад доод хил, дээд хязгаарыг оруулна уу. Энэ бол доод ба дээд байрлал бөгөөд тэдгээрийн хооронд servo буцаж, нааш цааш явах болно. "Ширээний теннисний цаг" баганад сервис дээд эсвэл доод байрлалд хүрэхэд хүлээх хугацааг миллисекундээр зааж өгч болно. "Эхлүүлэх" товчийг дарахад servo нааш цааш хөдөлж эхлэх бөгөөд "Stop" товчлуурыг дарахад servo зогсох болно.

Алхам 5: Ид шид хаана тохиолддог

Эцэст нь хэлэхэд, Python болон Arduino -ийн хооронд бага зэрэг цуваа холбоо тогтоохыг хүссэн хүмүүст зориулсан кодын зарим нарийн ширийн зүйлийг тодруулахыг хүсч байна.

Одоо Python програм дээр юу болох вэ?

Нэгдүгээрт, програм нь энэ мөрөнд байгаа COM портуудад хавсаргасан зүйлийг шалгаж, жагсаалтад хадгална.

self. COMPortsList = жагсаалт (serial.tools.list_ports.comports ())

Дараа нь тэр алдартай CH340 чипийг олж, хадгалаад дараа нь давталтын дараа цуваа холболт хийх хүртэл жагсаалтыг тойрон гарна. Эхний CH340-ийг олсон даруйд давталт тасардаг болохыг анхаарна уу.

for in in.

Цуваа холболтыг 57600 бауд хурдтай COM-порттой холбосон.

Тэгээд Arduino код юу хийдэг вэ? Arduino нь зөвхөн нэг COM порттой тул цуваа холболт нь зөвхөн нэг мөр юм.

Цуваа.begin (57600);

Одоо бид хоёр портыг ашиглан харилцах боломжтой боллоо. Энэ тохиолдолд зөвхөн Python -аас Arduino руу мессеж илгээдэг. Мессежүүдийг энд Python -ээс илгээдэг. Цуваа холболт нь байтыг анхдагч байдлаар дамжуулдаг. Энэ бол өгөгдөл илгээх хамгийн хурдан арга бөгөөд миний мэдэж байгаагаар нэлээд өргөн тархсан хэвээр байна. Тиймээс servo -ийн тоонууд (ингэснээр Arduino аль servo шилжихийг мэддэг) ба микросекунд дахь байрлалыг байт болгон хувиргадаг.

Command = struct.pack ('> B', self. Place) # "self. Place" int хувьсагчийг байт болгон хувиргадаг

self. Ser.write (Command) # Цуваа порт порт дээр байт бичих = int (self. ServoPos.get ()) // 10 # Талбараас оролтыг уншиж, int Command = struct.pack (' > B ', Command) # int байтыг өөртөө эргүүлэх. Ser.write (Command) # Цуваа порт дээр байт бичих

Түүнчлэн өгөгдлийг задлан шинжлэхэд цаг хугацаа шаардагддаг (жишээлбэл дөрвөн байтыг "1", "2", "3" ба "0" -ийг дөрвөн өөр тэмдэгт биш int 1230 гэж тайлбарлах), үүнийг Arduino дээр хийхгүй байх нь дээр.

Arduino талд илгээсэн мэдээллийг дараах байдлаар авна.

if (Serial.available ()> 1) {// Хэрэв цуваа өгөгдөл байгаа бол давталтыг оруулна c = Serial.read (); // Эхний байт (servo тоо) нь Micros = Serial.read () хувьсагчид хадгалагдана; // Сервогийн байрлалыг энд хадгална Micros = Micros * 10; }

Зөвлөмж болгож буй: