- Маленькие начало
- Led — контролируя яркость светодиода с использованием pwm
- Биплан pitts python из депрона и потолочки
- Волшебная смазка
- Двигатель постоянного тока — управление скоростью двигателя с использованием двигателей pwm
- Зуммер — генерирует звуковой сигнал тревоги
- Интерфейс
- Исходный код
- Как это случилось
- Код python
- Код для компьютера
- Мигающие огни и другие откровения
- Настройка вашего arduino для python
- Скетч для arduino
- Соединения
- Ссылки
- Установка
- Выводы
Маленькие начало
Этот проект стал началом взаимодействия между Python и платой Arduino. Этот подход сильно отличается от обычного рабочего процесса загрузки скриптов в сам Arduino, но он открывает совершенно новый способ работы с платформой, особенно если вам нравится язык программирования Python.
Если вы используете сервер Linux дома, этот метод связи с платами Arduino может превратить этот сервер в полноценную систему домашней автоматизации DIY. Комбинируя скрипты Python, управляющие микроконтроллером, со схемой автоматизации «Сделай сам , ваш ящик для хранения NAS может взять на себя целый ряд новых полезных функций.
Чтобы сделать его незабываемым, почему бы не создать свой собственный NAS- и использовать его для управления своими приборами? Представьте, как здорово было бы нажать кнопку воспроизведения на Plex. сервера и имейте света выключите автоматически!
Вы уже управляете Arduino с помощью Python?Есть ли удивительные обходные пути, о которых мы просто еще не знаем?Дайте нам знать в разделе комментариев ниже!
Led — контролируя яркость светодиода с использованием pwm
В предыдущем шаблоне мы контролировали скорость двигателя постоянного тока с помощью PWM. Аналогичным образом можно управлять яркостью светодиода. Вместо того, чтобы просить пользователя вводить яркость, мы будем использовать модуль Python случайным образом в этом шаблоне.
Будем использовать этот модуль для генерации случайного числа от 1 до 100, которое позже будет использовано для записи этого значения на выводе и случайного изменения яркости светодиода.
Эта функция randint () — действительно полезная функция, предоставляемая случайным модулем, и она широко используется при тестировании прототипов путем быстрой отправки случайных сигналов.
Биплан pitts python из депрона и потолочки
Начнем с чертежа, в формате PDF.
(Чертеж.rar)
Тут все просто – распечатать, склеить, вырезать детали. Сразу оговорюсь, не все детали в данных чертежах присутствуют, кое-что пришлось додумывать и переделывать, но об этом чуть ниже.
Фюзеляж, хвостовое оперение и прочее – из подложки под ламинат. А материалом для крыльев я выбрал все же потолочку, – она потолще и попрочней.
Итак, приступим!
Думаю, очень многое будет понятно непосредственно из фотографий, но кое-где буду вставлять поясняющие комментарии.
Из депрона вырезаем детали фюзеляжа, хвостового оперения и распорок.
Все (ну, почти все) детали из депрона вырезаны, переходим к потолочке (то есть к крыльям). Их лично мне удобней было просто начертить на потолочке, сняв размеры с чертежа.
Теперь переходим к деталям из “апельсиновой” фанеры, а это у нас моторама и шпангоут, которому будет прикручена стойка шасси.
Все детали вырезаны, можно приступать к постепенному созданию самолетика.
Вертикальные распорки крыльев и горизонтальное хвостовое оперение усиливаем бамбуком
Да, бамбук хорошо гнется над зажигалкой или плитой.
Начинаем склеивать фюзеляж
Чтобы закрепить хвостовые сервы, из потолочки вырезаем дополнительный стрингер (вроде бы так это называется).
Делаем шасси
И мотораму
Вырезаем и вешаем на петли из скотча крышку мотоотсека в верхней части фюзеляжа
Сервы хвоста хоть и весьма плотно друг к другу, но качалки друг другу не мешают, – проверено. Да, доступ к сервам будет через небольшой “одноразовый” между кабиной и крылом сверху, но об этом еще будет ниже.
А вот одна из деталей, которая была весьма ощутимо переделана.
Отверстия в боковинах – это для того, чтобы подлезть отверткой к болтам крепления мотора.
Фюзеляж в целом готов, можно переходить к крыльям.
Для начала распускаем на минициркулярке или ножом деревянную линейку на полоски шириной 4 мм (ну, или 3 мм, если захотите крылья из депрона). Из них будут склеены лонжероны. А дальше все понятно на фото.
Усиление нижнего крыла (полоска потолочки по ширине внутренней части фюзеляжа) и еще один квадратик потолочки для усиления сервы элеронов.
Все, крылья готовы. Элероны будут по стандартной схеме навешены на петли из скотча.
Начинаем художественную обклейку модели скотчем. Я немного поискал в интернете и нашел парочку понравившихся расскрасок, которые и взял за основу. Низ нижнего крыла и стабилизатора с рулем высоты – в черно-белую полоску для читаемости в воздухе.
Начинаем с хвоста – точнее с руля направления в шашечку
Черные квадратики из скотча проще всего делать на специальной бумаге – основе самоклеющихся плакатов, ценников (не реклама, например в Спортмастере). Я с прошлой работы натаскал их в избытке.
Границы цветов и кабины (по шаблону) на фюзеляже расчертил заранее.
Фюзеляж обклеен, можно переходить к сборке модели в единое целое. Да, модель не разборная, а потому все на клею.
Тяги, боудены и прочее дерево красил маркером специальным – вонючий только сильно и потолочку разъедает, так что с ним аккуратней надо.
Боудены вклеиваем на эпоксидку-пятиминутку, впрочем, кабанчики тоже.
Тяги элеронов из проволоки, хотя есть мысль заменить их такими же бамбуковыми для большей жесткости.
Вместо хвостового колесика этакая мини-лыжа их потолочки завернутая в скотч.
Крышка мотоотсека на болтике, гайка внутри – на эпоксидке.
Синхронизаторы из бамбучин и термоусадки. Думал, на морозе заклинит – нет, работают.
В целом модель уже готова, осталось только сделать лыжи (зима у нас еще долго, до колес может самолет вообще не доживет)
Вот тут чуть подробней. Нитками на клею ПВА обматываем ось шасси, потом прижимаем брусочком пеноплекса шайбочку и заливаем эпоксидкой. Надежно, универсально, не откручивается.
Все, биплан готов!
Характеристики модели:
Размах крыла – 850 мм
Вес без АКБ – 365 грамм
Полетный вес – 450-470 грамм (у меня АКБ разной емкости)
Электронику использовал следующую:
Мотор http://www.radiocopter.ru/108769/product/5354
Регулятор http://www.radiocopter.ru/108769/product/102843
Сервоприводы http://www.radiocopter.ru/108769/product/9549
Цанга http://www.radiocopter.ru/108769/product/103270
Пропеллеры http://www.radiocopter.ru/108769/product/9845 (или на 8 дюймов)
Фиксаторы тяг http://www.radiocopter.ru/108769/product/8519
Аккумуляторы http://www.radiocopter.ru/108769/product/1520402 (для медленных полетов можно 2S)
Видео первого полета тоже есть. но очень маленькое, потому что ветер был абсолютно не для полетов на легкой модели, но тем не менее.
На данный момент заказываю все-таки 9 дюймовый винт, а кроме того перемотал двигатель, чтобы оборотов было меньше. Что из этого выйдет – в виде видео добавлю в комментарии.
Всем спасибо за то, что прочитали-просмотрели статью! И пусть количество взлетов равняется количеству посадок!
§
Начнем с чертежа, в формате PDF.
(Чертеж.rar)
Тут все просто – распечатать, склеить, вырезать детали. Сразу оговорюсь, не все детали в данных чертежах присутствуют, кое-что пришлось додумывать и переделывать, но об этом чуть ниже.
Фюзеляж, хвостовое оперение и прочее – из подложки под ламинат. А материалом для крыльев я выбрал все же потолочку, – она потолще и попрочней.
Итак, приступим!
Думаю, очень многое будет понятно непосредственно из фотографий, но кое-где буду вставлять поясняющие комментарии.
Из депрона вырезаем детали фюзеляжа, хвостового оперения и распорок.
Все (ну, почти все) детали из депрона вырезаны, переходим к потолочке (то есть к крыльям). Их лично мне удобней было просто начертить на потолочке, сняв размеры с чертежа.
Теперь переходим к деталям из “апельсиновой” фанеры, а это у нас моторама и шпангоут, которому будет прикручена стойка шасси.
Все детали вырезаны, можно приступать к постепенному созданию самолетика.
Вертикальные распорки крыльев и горизонтальное хвостовое оперение усиливаем бамбуком
Да, бамбук хорошо гнется над зажигалкой или плитой.
Начинаем склеивать фюзеляж
Чтобы закрепить хвостовые сервы, из потолочки вырезаем дополнительный стрингер (вроде бы так это называется).
Делаем шасси
И мотораму
Вырезаем и вешаем на петли из скотча крышку мотоотсека в верхней части фюзеляжа
Сервы хвоста хоть и весьма плотно друг к другу, но качалки друг другу не мешают, – проверено. Да, доступ к сервам будет через небольшой “одноразовый” между кабиной и крылом сверху, но об этом еще будет ниже.
А вот одна из деталей, которая была весьма ощутимо переделана.
Отверстия в боковинах – это для того, чтобы подлезть отверткой к болтам крепления мотора.
Фюзеляж в целом готов, можно переходить к крыльям.
Для начала распускаем на минициркулярке или ножом деревянную линейку на полоски шириной 4 мм (ну, или 3 мм, если захотите крылья из депрона). Из них будут склеены лонжероны. А дальше все понятно на фото.
Усиление нижнего крыла (полоска потолочки по ширине внутренней части фюзеляжа) и еще один квадратик потолочки для усиления сервы элеронов.
Все, крылья готовы. Элероны будут по стандартной схеме навешены на петли из скотча.
Начинаем художественную обклейку модели скотчем. Я немного поискал в интернете и нашел парочку понравившихся расскрасок, которые и взял за основу. Низ нижнего крыла и стабилизатора с рулем высоты – в черно-белую полоску для читаемости в воздухе.
Начинаем с хвоста – точнее с руля направления в шашечку
Черные квадратики из скотча проще всего делать на специальной бумаге – основе самоклеющихся плакатов, ценников (не реклама, например в Спортмастере). Я с прошлой работы натаскал их в избытке.
Границы цветов и кабины (по шаблону) на фюзеляже расчертил заранее.
Фюзеляж обклеен, можно переходить к сборке модели в единое целое. Да, модель не разборная, а потому все на клею.
Тяги, боудены и прочее дерево красил маркером специальным – вонючий только сильно и потолочку разъедает, так что с ним аккуратней надо.
Боудены вклеиваем на эпоксидку-пятиминутку, впрочем, кабанчики тоже.
Тяги элеронов из проволоки, хотя есть мысль заменить их такими же бамбуковыми для большей жесткости.
Вместо хвостового колесика этакая мини-лыжа их потолочки завернутая в скотч.
Крышка мотоотсека на болтике, гайка внутри – на эпоксидке.
Синхронизаторы из бамбучин и термоусадки. Думал, на морозе заклинит – нет, работают.
В целом модель уже готова, осталось только сделать лыжи (зима у нас еще долго, до колес может самолет вообще не доживет)
Вот тут чуть подробней. Нитками на клею ПВА обматываем ось шасси, потом прижимаем брусочком пеноплекса шайбочку и заливаем эпоксидкой. Надежно, универсально, не откручивается.
Все, биплан готов!
Характеристики модели:
Размах крыла – 850 мм
Вес без АКБ – 365 грамм
Полетный вес – 450-470 грамм (у меня АКБ разной емкости)
Электронику использовал следующую:
Мотор http://www.radiocopter.ru/108769/product/5354
Регулятор http://www.radiocopter.ru/108769/product/102843
Сервоприводы http://www.radiocopter.ru/108769/product/9549
Цанга http://www.radiocopter.ru/108769/product/103270
Пропеллеры http://www.radiocopter.ru/108769/product/9845 (или на 8 дюймов)
Фиксаторы тяг http://www.radiocopter.ru/108769/product/8519
Аккумуляторы http://www.radiocopter.ru/108769/product/1520402 (для медленных полетов можно 2S)
Видео первого полета тоже есть. но очень маленькое, потому что ветер был абсолютно не для полетов на легкой модели, но тем не менее.
На данный момент заказываю все-таки 9 дюймовый винт, а кроме того перемотал двигатель, чтобы оборотов было меньше. Что из этого выйдет – в виде видео добавлю в комментарии.
Всем спасибо за то, что прочитали-просмотрели статью! И пусть количество взлетов равняется количеству посадок!
§
Начнем с чертежа, в формате PDF.
(Чертеж.rar)
Тут все просто – распечатать, склеить, вырезать детали. Сразу оговорюсь, не все детали в данных чертежах присутствуют, кое-что пришлось додумывать и переделывать, но об этом чуть ниже.
Фюзеляж, хвостовое оперение и прочее – из подложки под ламинат. А материалом для крыльев я выбрал все же потолочку, – она потолще и попрочней.
Итак, приступим!
Думаю, очень многое будет понятно непосредственно из фотографий, но кое-где буду вставлять поясняющие комментарии.
Из депрона вырезаем детали фюзеляжа, хвостового оперения и распорок.
Все (ну, почти все) детали из депрона вырезаны, переходим к потолочке (то есть к крыльям). Их лично мне удобней было просто начертить на потолочке, сняв размеры с чертежа.
Теперь переходим к деталям из “апельсиновой” фанеры, а это у нас моторама и шпангоут, которому будет прикручена стойка шасси.
Все детали вырезаны, можно приступать к постепенному созданию самолетика.
Вертикальные распорки крыльев и горизонтальное хвостовое оперение усиливаем бамбуком
Да, бамбук хорошо гнется над зажигалкой или плитой.
Начинаем склеивать фюзеляж
Чтобы закрепить хвостовые сервы, из потолочки вырезаем дополнительный стрингер (вроде бы так это называется).
Делаем шасси
И мотораму
Вырезаем и вешаем на петли из скотча крышку мотоотсека в верхней части фюзеляжа
Сервы хвоста хоть и весьма плотно друг к другу, но качалки друг другу не мешают, – проверено. Да, доступ к сервам будет через небольшой “одноразовый” между кабиной и крылом сверху, но об этом еще будет ниже.
А вот одна из деталей, которая была весьма ощутимо переделана.
Отверстия в боковинах – это для того, чтобы подлезть отверткой к болтам крепления мотора.
Фюзеляж в целом готов, можно переходить к крыльям.
Для начала распускаем на минициркулярке или ножом деревянную линейку на полоски шириной 4 мм (ну, или 3 мм, если захотите крылья из депрона). Из них будут склеены лонжероны. А дальше все понятно на фото.
Усиление нижнего крыла (полоска потолочки по ширине внутренней части фюзеляжа) и еще один квадратик потолочки для усиления сервы элеронов.
Все, крылья готовы. Элероны будут по стандартной схеме навешены на петли из скотча.
Начинаем художественную обклейку модели скотчем. Я немного поискал в интернете и нашел парочку понравившихся расскрасок, которые и взял за основу. Низ нижнего крыла и стабилизатора с рулем высоты – в черно-белую полоску для читаемости в воздухе.
Начинаем с хвоста – точнее с руля направления в шашечку
Черные квадратики из скотча проще всего делать на специальной бумаге – основе самоклеющихся плакатов, ценников (не реклама, например в Спортмастере). Я с прошлой работы натаскал их в избытке.
Границы цветов и кабины (по шаблону) на фюзеляже расчертил заранее.
Фюзеляж обклеен, можно переходить к сборке модели в единое целое. Да, модель не разборная, а потому все на клею.
Тяги, боудены и прочее дерево красил маркером специальным – вонючий только сильно и потолочку разъедает, так что с ним аккуратней надо.
Боудены вклеиваем на эпоксидку-пятиминутку, впрочем, кабанчики тоже.
Тяги элеронов из проволоки, хотя есть мысль заменить их такими же бамбуковыми для большей жесткости.
Вместо хвостового колесика этакая мини-лыжа их потолочки завернутая в скотч.
Крышка мотоотсека на болтике, гайка внутри – на эпоксидке.
Синхронизаторы из бамбучин и термоусадки. Думал, на морозе заклинит – нет, работают.
В целом модель уже готова, осталось только сделать лыжи (зима у нас еще долго, до колес может самолет вообще не доживет)
Вот тут чуть подробней. Нитками на клею ПВА обматываем ось шасси, потом прижимаем брусочком пеноплекса шайбочку и заливаем эпоксидкой. Надежно, универсально, не откручивается.
Все, биплан готов!
Характеристики модели:
Размах крыла – 850 мм
Вес без АКБ – 365 грамм
Полетный вес – 450-470 грамм (у меня АКБ разной емкости)
Электронику использовал следующую:
Мотор http://www.radiocopter.ru/108769/product/5354
Регулятор http://www.radiocopter.ru/108769/product/102843
Сервоприводы http://www.radiocopter.ru/108769/product/9549
Цанга http://www.radiocopter.ru/108769/product/103270
Пропеллеры http://www.radiocopter.ru/108769/product/9845 (или на 8 дюймов)
Фиксаторы тяг http://www.radiocopter.ru/108769/product/8519
Аккумуляторы http://www.radiocopter.ru/108769/product/1520402 (для медленных полетов можно 2S)
Видео первого полета тоже есть. но очень маленькое, потому что ветер был абсолютно не для полетов на легкой модели, но тем не менее.
На данный момент заказываю все-таки 9 дюймовый винт, а кроме того перемотал двигатель, чтобы оборотов было меньше. Что из этого выйдет – в виде видео добавлю в комментарии.
Всем спасибо за то, что прочитали-просмотрели статью! И пусть количество взлетов равняется количеству посадок!
Волшебная смазка
Вам понадобится один последний кусочек головоломки, чтобы Python хорошо говорил с нашим Arduino. Это происходит в форме интерфейса Python, называемого pyFirmata . Этот интерфейс, созданный Tino de Bruijn, доступен для загрузки с github, хотя вы можете установить его прямо из командной строки, набрав:
pip install pyfirmata
Все хорошо, он должен установить и выглядеть так:
Если это не удается, перейдите к добавлению Python в раздел Переменная среды и убедитесь, что вы указали правильный путь к каталогу Python.
Двигатель постоянного тока — управление скоростью двигателя с использованием двигателей pwm
DC [3] широко используется в робототехнических приложениях. Они доступны в широком диапазоне характеристик напряжения, в зависимости от применения.
В этом примере используем электродвигатель постоянного тока 5 В, потому что мы хотим подавать питание с помощью самой платы Arduino. Поскольку цифровой вывод Arduino может иметь только два состояния, то есть HIGH ( 5V) или LOW (0V), невозможно управлять скоростью двигателя, используя только режим OUTPUT.
В качестве решения мы собираемся реализовать режим PWM с помощью цифровых выводов, которые способны поддерживать PWM. При использовании pyFirmata выводы, сконфигурированные в режиме PWM, принимают любые значения ввода с плавающей точкой от 0 до 1.0, которые представляют 0 и 5 В. соответственно.
Зуммер — генерирует звуковой сигнал тревоги
Зумер [1]. выдает звук, когда снабжен цифровым значением HIGH (то есть, 5 В), которое может быть обеспечено с помощью цифровых выводов Arduino [2].
Однако, вместо того, чтобы выполнять простой цифровой вывод, как было выполнено с датчиком движения реализуем трюки программирования Python для генерации различных звуковых паттернов и создания различных звуковых эффектов.
Интерфейс
Поскольку данная программа предназначена скорее, для демонстрации возможностей, пользователь может выбрать порт из предложенных, а так же скорость, с которой будет происходить общение.
Исходный код
Вся работа с устройством происходит благодаря библиотеке PySerial. Но есть несколько нюансов. Например, как узнать, в какой из портов подключено устройство?
На всем прекрасно известном сайте stackoverflow, пользователь с ником Thomas предложил уже готовое решение, которое я и использовал.
def serial_ports():
""" Lists serial port names
:raises EnvironmentError:
On unsupported or unknown platforms
:returns:
A list of the serial ports available on the system
"""
if sys.platform.startswith('win'):
ports = ['COM%s' % (i 1) for i in range(256)]
elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
# this excludes your current terminal "/dev/tty"
ports = glob.glob('/dev/tty[A-Za-z]*')
elif sys.platform.startswith('darwin'):
ports = glob.glob('/dev/tty.*')
else:
raise EnvironmentError('Unsupported platform')
result = []
for port in ports:
try:
s = serial.Serial(port)
s.close()
result.append(port)
except (OSError, serial.SerialException):
pass
return result
Кроме этого необходимо хранить список доступных скоростей:
speeds = ['1200','2400', '4800', '9600', '19200', '38400', '57600', '115200']
А теперь соберём вместе
дизайн
(созданный в QtDesigner и сконвертированный с помощью утилиты pyuic5 в .py файл),
функции для сканирования портовосновной код программы
Основной класс, содержащий в себе всю логику программы
class LedApp(QtWidgets.QMainWindow, design.Ui_Form):
def __init__(self):
super().__init__()
self.setupUi(self)
self.Port.addItems(serial_ports())
self.Speed.addItems(speeds)
self.realport = None
self.ConnectButton.clicked.connect(self.connect)
self.EnableBtn.clicked.connect(self.send)
def connect(self):
try:
self.realport = serial.Serial(self.Port.currentText(),int(self.Speed.currentText()))
self.ConnectButton.setStyleSheet("background-color: green")
self.ConnectButton.setText('Подключено')
except Exception as e:
print(e)
def send(self):
if self.realport:
self.realport.write(b'b')
Переменные
self.Portself.Speed
— это выпадающие списки, содержащие в себе значения доступных портов и скоростей.
При нажатии на кнопку self.ConnectButton вызывается функция connect, в которой производится попытка подключения к заданному порту с заданной скоростью. Если подключение успешно, то кнопка окрашивается в зелёный цвет, и меняется надпись.
Функция send отправляет в наш порт байтовую строку — заставляющую включить режим мигания.
Таким образом можно управлять различными устройствами, подключёнными к USB.
Данная статья является вводной и обзорной, более полную информацию можно найти например тут:
Полный исходный код, как скетча для Arduino, так и программы размещён на
Как это случилось
Теперь все настроено, и вы можете создать программу на Python для своего Arduino, чтобы протестировать ее. Откройте IDE по вашему выбору. Мы будем использовать Eclipse сегодня, но вы также можете легко использовать любой текстовый редактор или даже IDE в облаке.
Код python
Чтобы выполнить эти действия, мы собираемся реализовать специальную функцию Python, которая будет принимать номер пина, время повторения и номер образца в качестве входных данных.
Прежде чем перейти к объяснению кода, необходимо открыть файл программы, buzzerPattern.py, из папки кода. В начале кода можно найти функцию Python buzzerPattern (), которая будет вызываться из основной программы с соответствующими параметрами. Эта функция является ядром всей программы.
Функция содержит два массива массивов с жестким кодом, pattern1 и pattern2. Каждый из них содержит время включения и выключения зуммера в течение секунды, которое является рабочим циклом шаблона.
Например, в pattern1 0,8 представляет время, в течение которого зуммер должен быть включен, а 0,2 представляет противоположное.
Функция будет повторять этот шаблон зуммера для периодов повторения, заданных аргументом функции. После запуска цикла for со значением повторения функция проверяет номер шаблона из аргумента функции и выполняет шаблон.
Как только весь цикл повторения завершен, снова полностью отключим зуммер, если он включен, и безопасно отключим плату с помощью метода exit ():
def buzzerPattern(pin, recurrence, pattern):
pattern1 = [0.8, 0.2]
pattern2 = [0.2, 0.8]
flag = True
for i in range(recurrence):
if pattern == 1:
p = pattern1
elif pattern == 2:
p = pattern2
else:
print "Please enter valid pattern. 1 or 2."
exit
for delay in p:
if flag is True:
board.digital[pin].write(1)
flag = False
sleep(delay)
else:
board.digital[pin].write(0)
flag = True
sleep(delay)
board.digital[pin].write(0)
board.exit()
Остальная часть программы относительно проста, поскольку содержит код для им-порта библиотек и инициализации платы Arduino. Как только плата инициализируется, выполним функцию buzzerPattern () с входным аргументом (2, 10, 1). Этот аргумент попросит функцию воспроизвести pattern1 10 раз на контакте номер 2:
from pyfirmata import Arduino
from time import sleep
port = '/dev/cu.usbmodemfa1331'
board = Arduino(port)
sleep(5)
buzzerPattern(2, 10, 1)
Код для компьютера
Одним из достоинств Python, кроме его кроссплатформенности — наличие гигантского числа библиотек. Нам понадобятся:
Мигающие огни и другие откровения
Все готово к работе, все, что вам нужно сделать, это перейти туда, где находится скрипт, и запустить его. Для этого введите cd [путь к каталогу скрипта], а затем введите python blink.py .
Все в порядке, ваша программа запустится с небольшой задержкой, так как Arduino инициализирует, запросит у вас номер, а затем мигнет много раз, используя встроенный светодиод.
Вывод программы должен выглядеть так:
Как только вы нажмете Enter после выбранного количества миганий, Arduino выполнит ваши заказы.
Настройка вашего arduino для python
Для сегодняшнего проекта мы будем использовать Arduino Uno вместе с интерфейсом pyFirmata для Python. Для этого вы можете использовать практически любую Arduino-совместимую плату, хотя на момент написания интерфейса PyFfirmata поддерживались только Arduino Uno, Mega, Due и Nano.
Если вы этого еще не сделали, установите Arduino IDE. Если вы совершенно новичок в мире микроконтроллеров, наше руководство для начинающих по Arduinoруководство для поможет вам все на месте.
Подключите плату Arduino и откройте IDE. Убедитесь, что в меню « Инструменты» выбраны правильные плата и порт. Загрузите пример эскиза StandardFirmata и загрузите его на доску. Это позволит вам напрямую управлять Arduino, если он подключен к компьютеру через USB. Если эскиз загружен на вашу доску без ошибок, вы готовы двигаться дальше.
Скетч для arduino
В качестве примера будет использоваться скетч, включающий и выключающий светодиод, по команде из Serial-порта.
WARNING
Светодиод в Arduino SS Micro висит на порте SS, и поэтому он автоматически выключается. Не смотря на это, стандартный пример Blink — мигающий светодиод работает.
char inChar;
#define LED_PIN SS
void setup() {
pinMode(LED_PIN, OUTPUT); // Инициализация светодиода
Serial.begin(115200); // Инициализация Serial - порта
}
void loop() {
if (Serial.available() > 0)
{
inChar = Serial.read();
if (inChar=='e') // e - Enable - включить
{
digitalWrite(LED_PIN,HIGH);
}
}
else if (inChar=='d') // d - Disable - выключить
{
digitalWrite(LED_PIN,LOW);
}
else if (inChar=='b') // b - Blink - выключить режим мигания
{
while (true){
digitalWrite(LED_PIN,HIGH);
delay(1000);
digitalWrite(LED_PIN,LOW);
delay(1000);
}
}
}
Если вы будете использовать другую Arduino — не забудьте сменить пин светодиода.
Соединения
Чтобы не повредить плату Arduino из-за большой случайной потери тока, мы будем использовать транзистор в качестве переключателя, который использует только небольшое количество тока для управления большим током в двигателе постоянного тока.
Для завершения соединения цепи, как показано на следующей схеме, понадобятся NPN-транзистор (TIP120, N2222 или аналогичный), один диод (1N4001 или аналогичный) и резистор на 220 Ом с DC-двигателем.
Подключите базу транзистора к цифровому выводу 3, который также поддерживает режим PWM. Соедините остальные компоненты, как показано на схеме:
Ссылки
- Зуммер (Trema-модуль).
- Книга: «Arduino Basic Connections».
- Arduino и двигатели.
Установка
Для установки, воспользуемся встроенным менеджером пакетов — pip.
pip install pyserial pyqt5
Для удобства создания GUI можно установить программу QTDesigner.
Выводы
В этой публикации на простых примерах раскрыт самый распространенный подход к программированию датчиков, управляющих устройств к ним. Представлены коды Python которые легко можно использовать в собственных проектах Arduino. Для наглядности примеров использованы различные датчики и шаблоны кода.