Orodha ya maudhui:

Bodi ya Servodriver na Python-GUI na Arduino: Hatua 5
Bodi ya Servodriver na Python-GUI na Arduino: Hatua 5

Video: Bodi ya Servodriver na Python-GUI na Arduino: Hatua 5

Video: Bodi ya Servodriver na Python-GUI na Arduino: Hatua 5
Video: When Student use phone in class #shortsyoutube #shorts #students #comedy #jennyslectures 2024, Novemba
Anonim
Servodriver-Bodi Na Python-GUI na Arduino
Servodriver-Bodi Na Python-GUI na Arduino

Unapofanya prototyping au ujenzi wa ndege za mfano, mara nyingi unakutana na shida, kwamba lazima uangalie kusafiri kwa servo au kuweka servos kwa nafasi ya katikati.

Ikiwa hautaki kujenga mfumo wako wote wa RC au mtihani, ni umbali gani unaweza kushinikiza servo au mahali pa katikati, basi bodi hii ni yako! Inakuruhusu kuhamisha servo kwa nafasi maalum au wacha tusafiri huko na huko.

Inafanya kazi vizuri, hata na servos 6 ambazo hukimbia kutoka nafasi moja hadi nyingine kitanzi.

Pia, ni mradi mzuri wa kujifunza juu ya mawasiliano kati ya Python-GUI na Arduino kwa kutumia Serial.

Hatua ya 1: Unachohitaji…

Kwa mradi huu, utahitaji yafuatayo:

Vifaa

  • Nano ya Arduino na kebo. Nilikuwa mkoni, na nambari ya Python inatarajia CH340-chip ya mtu
  • Bodi ya kuiga. 7x5cm inatosha
  • Baadhi ya vichwa 2, 54mm na pini
  • 1-6 servos
  • Ugavi wa umeme kwa servos (nilitumia batterypack na betri 4)

Programu

  • Python 3:
  • Dereva ya USB ya chips-CH340: google tu kwa madereva kwa madereva CH340
  • IDE ya Arduino:

Hatua ya 2: Kuunganisha bodi

Kuunganisha bodi
Kuunganisha bodi

Uuzaji ni sawa mbele moja kwa moja kulingana na Fritzing kwenye picha. Hakikisha tu, kwamba unaweza kushikamana na servos kwa urahisi kwenye safu-3 za pini.

  • Mstari wa pini-3 umeambatanishwa na pini ya dijiti 3, 5, 6, 9, 10 na 11 ya nano ya Arduino.
  • Waya nyekundu imeambatanishwa na pini 5V ya Arduino
  • Waya mweusi umeunganishwa na pini ya GND ya Arduino
  • Vipande viwili chini ya safu-pini-tatu vimekusudiwa kuambatisha umeme wa kawaida wa mpokeaji wa RC, unaweza kuongeza viunganishi jinsi unavyopenda, kama vituo vya kusokota, XT-Connectors, JST au… au… au…

Binafsi, napenda safu za vichwa vya kike kuweka Arduino, lakini hiyo ni juu yako.

Tafadhali kumbuka, kwamba vichwa vya kike vilivyopunguzwa ni kuruka, ambayo inakuwezesha kusambaza servo ukitumia chanzo cha 5V cha Arduino kwa madhumuni ya upimaji. Ikiwa unachuja sana, Arduino itaweka upya na kufungua kasi inayofaa. LAZIMA ziondolewe, kabla ya kushikamana na usambazaji mwingine wa umeme.

Hatua ya 3: Kuanzisha Arduino

Sakinisha IDE ya Arduino na uangaze nano ya Arduino na mchoro ulioambatanishwa.

Hatua ya 4: Kuweka Python

Kuanzisha Chatu
Kuanzisha Chatu

Sakinisha Python 3 baada ya kuipakua. Hakikisha uangalie chaguo la kuunda "PATH" - inayobadilika.

Unahitaji kusanikisha vifurushi vingine viwili ukitumia bomba. Kwa hilo, bonyeza kitufe cha "Windows", andika "cmd" na gonga "ingiza". Katika aina ya haraka ya amri amri zifuatazo:

  • bomba funga mfululizo
  • piip kufunga pyserial
  • pip kufunga tkinter

Kama unavyoona, ninahitaji moduli za serial pamoja na pyserial, ambayo inawezekana sio bora zaidi, kwani pyserial inapaswa kuchukua nafasi ya serial. Walakini inafanya kazi na ninaanza kujifunza;).

Fungua Hati-ya-Python kwenye IDE na uiendeshe, au uiendeshe moja kwa moja kutoka kwa wastaafu.

Katika menyu kunjuzi, unaweza kuchagua kati ya njia mbili, "Nenda Sawa" na "Ping Pong":

  • Nenda Sawa: Ingiza Nafasi ya Servo kwenye microseconds kwenye safu ya kwanza na gonga "Anza" ili kufanya servo iende kwenye nafasi iliyoainishwa.
  • Ping Pong: Ingiza mpaka wa chini na mpaka wa juu kwenye safu ya pili na ya tatu. Hiyo ndio nafasi ya chini na ya juu, kati ya ambayo servo itarudi huko na huko. Kwenye safu "Saa ya Ping Pong" unaweza kutaja wakati katika milliseconds, kwamba servo itasubiri ikiwa imefikia nafasi ya juu au ya chini. Piga "Anza" na servo itaanza kurudi nyuma na nyuma, piga "Stop" na servo itaacha.

Hatua ya 5: Ambapo Uchawi Hutokea

Mwisho lakini sio uchache, ninataka kuelezea maelezo kadhaa kwa nambari hiyo kwa wale, ambao wanataka kuingia katika mawasiliano kidogo kati ya Python na Arduino.

Sasa, ni nini hufanyika katika programu ya Python?

Kwanza kabisa, programu inakagua, ni nini kinachoambatanishwa na bandari za COM kwenye mstari huu na kuihifadhi kwenye orodha:

self. COMPortsList = orodha (serial.tools.list_ports.comports ())

Halafu inapita kwenye orodha hadi ipate CH340-chip, inaiokoa na kisha inaanzisha unganisho la serial baada ya kitanzi. Kumbuka, kwamba mapumziko ya kitanzi mara tu CH340 ya kwanza inapatikana.

kwa p katika kibinafsi. COMPortsList: ikiwa "CH340" katika p [1]: # Kutafuta Arduino Clone self. COMPort = p [0] kuvunja kingine: kupita self. Ser = serial. Serial (self. COMPort, 57600)

Uunganisho wa serial umeanzishwa na bandari ya COM na baudrate ya 57600.

Je! Nambari ya Arduino inafanya nini? Kweli, kwani Arduino ina Port-COM moja tu, unganisho la serial ni laini moja tu:

Serial. Kuanza (57600);

Sasa, tunaweza kutumia bandari zote mbili kuwasiliana. Kwa hali hii, ujumbe tu kutoka kwa chatu hadi Arduino. Ujumbe huo umetumwa hapa kutoka kwa chatu. Uunganisho wa serial hupitisha ka kama chaguo-msingi. Hiyo pia ni njia ya haraka zaidi ya kutuma data na kadiri ninavyojua pia bado imeenea sana. Kwa hivyo ints ya idadi ya servo (kwa hivyo Arduino anajua ni servo ipi inayoweza kusonga) na msimamo katika microsecond hubadilishwa kuwa ka.

Amri = muundo.

andika mwenyewe. >"

Pia, kuchanganua data kunachukua muda (kwa mfano kutafsiri ka nne "1", "2", "3" na "0" kama int 1230, sio kama chars nne tofauti) na ni bora kuifanya sio kwenye Arduino.

Kwenye upande wa Arduino, habari iliyotumwa huchukuliwa kama ifuatavyo:

ikiwa (Serial haipatikani ()> 1) {// Ikiwa data ya serial inapatikana, basi kitanzi kimeingizwa c = Serial.read (); // Baiti ya kwanza (idadi ya servo) imehifadhiwa kwa Micros = Serial.read (); // Msimamo wa servo umehifadhiwa hapa Micros = Micros * 10; }

Ilipendekeza: