Съдържание:
- Стъпка 1: Какво ви трябва …
- Стъпка 2: Запояване на дъската
- Стъпка 3: Настройка на Arduino
- Стъпка 4: Настройка на Python
- Стъпка 5: Където се случва магията
Видео: Серводривърска платка с Python-GUI и Arduino: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Когато правите прототипи или изграждате модели самолети, често срещате проблема, че трябва да проверите пътуването на серво или да настроите сервомоторите в средна позиция.
В случай, че не искате да изградите цялата си RC система или тест, докъде можете да натиснете серво или къде е средната позиция, тогава тази платка е за вас! Тя ви позволява да премествате серво в определени позиции или да пътуваме напред -назад.
Работи изненадващо добре, дори с 6 сервомотора, които се движат от една позиция на друга в цикъла.
Също така, това е хубав проект за научаване на комуникацията между Python-GUI и Arduino с помощта на Serial.
Стъпка 1: Какво ви трябва …
За този проект ще ви трябва следното:
Хардуер
- Arduino nano с кабел. Използвах клонинг и кодът на Python всъщност очаква CH340-чип на клонинг
- Съвет за прототипи. 7x5 см са достатъчни
- Някои 2, 54 мм заглавки и щифтове
- 1-6 серво
- Захранване за сервомоторите (използвах комплект батерии с 4 батерии)
Софтуер
- Python 3:
- USB драйвер за чипове CH340: Просто потърсете в Google драйвери за драйвери CH340
- Arduino IDE:
Стъпка 2: Запояване на дъската
Запояването всъщност е право напред според Fritzing на снимката. Просто се уверете, че можете лесно да свържете сервомоторите към 3-пиновите редове.
- 3-пиновите редове са прикрепени към цифров пин 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, след като го изтеглите. Не забравяйте да проверите опцията за създаване на "PATH" -променлива.
Трябва да инсталирате още два пакета с помощта на pip. За целта натиснете клавиша „Windows“, въведете „cmd“и натиснете „enter“. В командния ред въведете следните команди:
- pip install serial
- piip инсталирайте pyserial
- pip инсталирайте tkinter
Както можете да видите, имам нужда от модулите сериен, както и pyserial, което най -вероятно не е най -ефективният, тъй като pyserial трябва да замени серийния. Въпреки това работи и тепърва започвам да уча;).
Отворете Python-Script в IDE и го стартирайте или го стартирайте направо от терминала.
В падащото меню можете да избирате между два режима „Go Straight“и „Ping Pong“:
- Отидете направо: Въведете Servo-позиция за микросекунди в първата колона и натиснете "Старт", за да накарате серво да се премести в определената позиция.
- Пинг -понг: Въведете долна граница и горна граница във втората и третата колона. Това са долната и горната позиция, между които сервото ще се върти напред -назад. В колоната "Време за пинг -понг" можете да зададете време в милисекунди, което сервото ще чака, когато достигне горната или долната позиция. Натиснете "Старт" и сервото ще започне да се движи напред -назад, натиснете "Стоп" и сервото ще спре.
Стъпка 5: Където се случва магията
Не на последно място, искам да посоча някои от детайлите в кода за тези, които искат да влязат в малко серийна комуникация между Python и Arduino.
Какво се случва в програмата Python?
На първо място, програмата проверява какво е прикрепено към COM-портовете в този ред и го записва в списък:
self. COMPortsList = списък (serial.tools.list_ports.comports ())
След това той преминава през списъка, докато намери прословут CH340-чип, записва го и след това установява серийна връзка след for-цикъла. Имайте предвид, че for-цикълът се прекъсва веднага щом бъде намерен първият CH340.
for p в self. COMPortsList: if "CH340" in p [1]: # Търся Arduino Clone self. COMPort = p [0] break else: 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 Command = struct.pack (' > B ', Command) # Превръщане на int в байт self. Ser.write (Command) # Записване на байта на Serial-Port
Също така, анализирането на данни отнема време (например тълкуването на четири байта "1", "2", "3" и "0" като int 1230, а не като четири различни символа) и е по -добре да го направите не на Arduino.
От страна на Arduino изпратената информация се събира, както следва:
if (Serial.available ()> 1) {// Ако са налични серийни данни, тогава цикълът се въвежда c = Serial.read (); // Първият байт (брой серво) се записва в променлива Micros = Serial.read (); // Позицията на серво се запаметява тук Micros = Micros * 10; }
Препоръчано:
Bare Minimum - Arduino на платка: 5 стъпки
Bare Minimum - Arduino on Breadboard: Arduino използва чипа ATMega328p. Можем да го получим във формат SMD (ATMega328p-AU) или DIP формат за запояване на отвори (ATMega328p-PU). Но чипът сам по себе си не може да работи. Нуждае се от още няколко компонента и всички заедно се наричат голи
Точков заварчик 1-2-3 Arduino печатна платка: 4 стъпки
Точков заварчик 1-2-3 Arduino печатна платка: Преди време написах инструкция, в която обясних как да управлявам точков заварчик по сложен начин, използвайки Arduino и общодостъпните части. Много хора изградиха веригата за управление и получих доста окуражаващи отзиви. Това е
Arduino Nano часовник с адаптивна яркост, използващ прототипна печатна платка от NextPCB.com: 11 стъпки
Arduino Nano часовник с адаптивна яркост, използващ прототипна печатна платка от NextPCB.com: Всеки искаше часовник, който показва времето и датата заедно Така че, в този проект ще ви покажа как можете да изградите нано часовник arduino с адаптивна яркост, използвайки RTC и дизайн PCB от NextPCB
Модулна неопикселова пробивна платка с отворен код, подходяща за създаване на платка: 4 стъпки (със снимки)
Модулна неопикселова пробивна платка с отворен код, подходяща за създаване на платка: Тази инструкция е за малка (8 мм х 10 мм) лесна за разбиване дъска за неопикселови светодиоди, която може да се подрежда и споява една върху друга, но също така осигурява много по-структурна твърдост от тънката LED лента в много по -малка форма фактически
Издушете вашата платка (как да добавите LED индикатор за захранване към прозрачна платка на Solarbotics): 7 стъпки
Издушете вашата платка (как да добавите LED индикатор за захранване към прозрачна платка на Solarbotics): Тези прозрачни дъски са много подобни на всяка друга електроника, но са ясни! И така, какво може да се направи с ясна таблица? Мисля, че очевидният отговор е добавяне на светодиоди за захранване