Python arduino projects

Содержание

Python & Arduino. Просто, быстро и красиво

Оборудование


Недавно я заполучил очень интересную плату: Arduino SS Micro. Эта плата, внешне напоминающая Digispark Attiny 85, тем не менее является китайской версией Arduino Micro, с выведенным выходом USB.

Подробно рассказывать о ней я не буду, ведь это уже сделал пользователь YouTube с ником iomoio, и его обзор можно посмотреть здесь.

Как мне кажется — это довольно крутое и удобное устройство для небольших домашних проектов, ведь у проводов есть супер-свойство: теряться в самый неподходящий момент.

В качестве управляющего компьютера был использован MacBook Pro с операционной системой macOS Mojave, но не надо закрывать статью, если вы используете Windows или Linux — всё описанное в статье будет работать без изменений на любой операционной системе.

Скетч для Arduino

В качестве примера будет использоваться скетч, включающий и выключающий светодиод, по команде из Serial-порта.

Светодиод в Arduino SS Micro висит на порте SS, и поэтому он автоматически выключается. Не смотря на это, стандартный пример Blink — мигающий светодиод работает.

Если вы будете использовать другую Arduino — не забудьте сменить пин светодиода.

Код для компьютера

Одним из достоинств Python, кроме его кроссплатформенности — наличие гигантского числа библиотек. Нам понадобятся:

  • PySerial — библиотека для работы с Serial-портом
  • PyQT5 — библиотека для создания графического интерфейса

Установка

Для установки, воспользуемся встроенным менеджером пакетов — pip.

Для удобства создания GUI можно установить программу QTDesigner.

Интерфейс

Поскольку данная программа предназначена скорее, для демонстрации возможностей, пользователь может выбрать порт из предложенных, а так же скорость, с которой будет происходить общение.

Исходный код

Вся работа с устройством происходит благодаря библиотеке PySerial. Но есть несколько нюансов. Например, как узнать, в какой из портов подключено устройство?

На всем прекрасно известном сайте stackoverflow, пользователь с ником Thomas предложил уже готовое решение, которое я и использовал.

Кроме этого необходимо хранить список доступных скоростей:

А теперь соберём вместе дизайн(созданный в QtDesigner и сконвертированный с помощью утилиты pyuic5 в .py файл), функции для сканирования портов и основной код программы.

Основной класс, содержащий в себе всю логику программы

Переменные self.Port и self.Speed — это выпадающие списки, содержащие в себе значения доступных портов и скоростей.

При нажатии на кнопку self.ConnectButton вызывается функция connect, в которой производится попытка подключения к заданному порту с заданной скоростью. Если подключение успешно, то кнопка окрашивается в зелёный цвет, и меняется надпись.

Функция send отправляет в наш порт байтовую строку — заставляющую включить режим мигания.

Таким образом можно управлять различными устройствами, подключёнными к USB.

Данная статья является вводной и обзорной, более полную информацию можно найти например тут:

Источник

30 python projects

Track your face using OpenCV’s facial recognition.

Face Tracker Using OpenCV and Arduino

Project showcase by Shubham Santosh

  • 82,331 views
  • 58 comments
  • 147 respects

Python does the image processing, Arduino controls the servos.

Face Tracking Using Arduino

Project tutorial by Harsh Dethe

  • 55,935 views
  • 15 comments
  • 38 respects

Uses a smartphone application to control a cursor.

Smartphone Controlled Mouse

Project tutorial by Shubham Santosh

  • 14,340 views
  • 18 comments
  • 34 respects

Using the power of Python and Arduino, this detector measures and records user temperature.

COVID-19 Detector: The Need of the Crisis

Project tutorial by Raunak Singh

  • 13,141 views
  • 13 comments
  • 16 respects

In this tutorial, we are going to learn how we can install python on our computer and how to use it with Arduino,It allows us to send data.

Programming Arduino Using Python.

  • 141,847 views
  • 7 comments
  • 31 respects

Smart lighting is a catalyst for the IoT. In this tutorial we’ll see how to control NeoPixel LEDs via mobile using the Zerynth App.

IoT Ambient Light: Zerynth Lamp

  • 15,585 views
  • 10 comments
  • 39 respects

Automated T-Rex player using arduino and python.

Automated Dino game using arduino

Project tutorial by Rafi Rasheed T C

In this project, I’ve interfaced RFID-RC522 with Arduino and then sent RFID data to phpMyAdmin database using Python.

Attendance System Using Arduino and RFID with Python

This is an autonomous Robot Arm that can play chess using image processing and machine vision.

Autonomous Chess Playing Robotic Arm

Project showcase by Varun walimbe

Arduino and Python-based project that will help us read the sensor values and plot it on Python.

Arduino Real-Time Plotting with Python

HK RFID Monitor is basically a Python based software for RFID. It reads the data coming to COM port and displays it on your laptop screen.

Python Software for Arduino RFID

Project tutorial by Hamza Khalid

Make a terminal chat client powered by the same technology as the Facebook Messenger mobile app and display your messages on your Arduino!

Источник

Прототипирование в среде Python-Arduino

Привет, Хабр! Хочу на примерах рассказать о самом простом способе создания чего то сложного. Суть страшного слова «прототипирование» сводится к использованию аналогий или шаблонов в проекте Arduino.

Не хочу пугать длинными словами начинающих пользователей Python-Arduino, по-этому идем сразу по примерам.

Зуммер — генерирует звуковой сигнал тревоги

Зумер [1]. выдает звук, когда снабжен цифровым значением HIGH (то есть, +5 В), которое может быть обеспечено с помощью цифровых выводов Arduino [2].

Однако, вместо того, чтобы выполнять простой цифровой вывод, как было выполнено с датчиком движения реализуем трюки программирования Python для генерации различных звуковых паттернов и создания различных звуковых эффектов.

Соединения

Код Python

Чтобы выполнить эти действия, мы собираемся реализовать специальную функцию Python, которая будет принимать номер пина, время повторения и номер образца в качестве входных данных.

Прежде чем перейти к объяснению кода, необходимо открыть файл программы, buzzerPattern.py, из папки кода. В начале кода можно найти функцию Python buzzerPattern (), которая будет вызываться из основной программы с соответствующими параметрами. Эта функция является ядром всей программы.

Функция содержит два массива массивов с жестким кодом, pattern1 и pattern2. Каждый из них содержит время включения и выключения зуммера в течение секунды, которое является рабочим циклом шаблона.

Например, в pattern1 0,8 представляет время, в течение которого зуммер должен быть включен, а 0,2 представляет противоположное.

Функция будет повторять этот шаблон зуммера для периодов повторения, заданных аргументом функции. После запуска цикла for со значением повторения функция проверяет номер шаблона из аргумента функции и выполняет шаблон.

Как только весь цикл повторения завершен, снова полностью отключим зуммер, если он включен, и безопасно отключим плату с помощью метода exit ():

Остальная часть программы относительно проста, поскольку содержит код для им-порта библиотек и инициализации платы Arduino. Как только плата инициализируется, выполним функцию buzzerPattern () с входным аргументом (2, 10, 1). Этот аргумент попросит функцию воспроизвести pattern1 10 раз на контакте номер 2:

Двигатель постоянного тока — управление скоростью двигателя с использованием двигателей PWM

DC [3] широко используется в робототехнических приложениях. Они доступны в широком диапазоне характеристик напряжения, в зависимости от применения.

В этом примере используем электродвигатель постоянного тока 5 В, потому что мы хотим подавать питание с помощью самой платы Arduino. Поскольку цифровой вывод Arduino может иметь только два состояния, то есть HIGH (+ 5V) или LOW (0V), невозможно управлять скоростью двигателя, используя только режим OUTPUT.

В качестве решения мы собираемся реализовать режим PWM с помощью цифровых выводов, которые способны поддерживать PWM. При использовании pyFirmata выводы, сконфигурированные в режиме PWM, принимают любые значения ввода с плавающей точкой от 0 до 1.0, которые представляют 0 и 5 В. соответственно.

Соединения

Чтобы не повредить плату Arduino из-за большой случайной потери тока, мы будем использовать транзистор в качестве переключателя, который использует только небольшое количество тока для управления большим током в двигателе постоянного тока.

Для завершения соединения цепи, как показано на следующей схеме, понадобятся NPN-транзистор (TIP120, N2222 или аналогичный), один диод (1N4001 или аналогичный) и резистор на 220 Ом с DC-двигателем.

Подключите базу транзистора к цифровому выводу 3, который также поддерживает режим PWM. Соедините остальные компоненты, как показано на схеме:

Код Python

Пользовательская функция, dcMotorControl (), принимает скорость и длительность двигателя в качестве входных параметров, как описано в следующем фрагменте кода:

Используем аналогичный код для импорта необходимой библиотеки и инициализации платы Arduino.

После инициализации мы назначаем режим цифрового вывода 3 как PWM, что видно из использования метода get_pin (‘d: 3: p’). Этот код отражает косвенный режим назначения пинрежима, о котором мы узнали в предыдущем разделе:

В процессе сбора ручных данных от пользователя мы запускаем комбинацию опера-тора try / except (чтобы освободить плату при выходе) и инструкцию while (чтобы получить непрерывные данные от пользователя).

Шаблон кода вводит метод input () для получения пользовательских значений (скорости двигателя и продолжительности запуска двигателя) из интерактивного терминала Python. Как только эти значения получены от пользователя, программа вызывает функцию dcMotorControl () для выполнения моторного действия: try:

LED — контролируя яркость светодиода с использованием PWM

В предыдущем шаблоне мы контролировали скорость двигателя постоянного тока с помощью PWM. Аналогичным образом можно управлять яркостью светодиода. Вместо того, чтобы просить пользователя вводить яркость, мы будем использовать модуль Python случайным образом в этом шаблоне.

Будем использовать этот модуль для генерации случайного числа от 1 до 100, которое позже будет использовано для записи этого значения на выводе и случайного изменения яркости светодиода.

Эта функция randint () — действительно полезная функция, предоставляемая случайным модулем, и она широко используется при тестировании прототипов путем быстрой отправки случайных сигналов.

Соединения

Понадобится подтягивающий резистор для подключения светодиода к контакту Arduino. Необходимо подключить анод светодиода (более длинный нож) к цифровому вы-воду 11 через один резистор с сопротивлением 220 Ом и соединить катод (более короткая нога) с землей:

Важно отметить, что цифровой контакт 11 на Arduino Uno также способен выполнять PWM вместе с цифровыми булавками 3, 5, 6, 9 и 10.

Код Python

Используем код Python с названием ledBrightnessPWM.py Значение float между 0 и 1.0 выбирается случайным образом, прежде чем передавать его на вывод PWM.
Первые несколько строк кода импортируют необходимые библиотеки и инициализируют плату.

В этом примере мы используем прямой метод назначения пин-режима. В следующем фрагменте кода, цифровой пин 11 назначается для режима PWM:

После конца цикла нужно безопасно отключить плату Arduino после выключения светодиода в последний раз.

Выводы

В этой публикации на простых примерах раскрыт самый распространенный подход к программированию датчиков, управляющих устройств к ним. Представлены коды Python которые легко можно использовать в собственных проектах Arduino. Для наглядности примеров использованы различные датчики и шаблоны кода.

Источник

30 python projects page 1

Track your face using OpenCV’s facial recognition.

Face Tracker Using OpenCV and Arduino

Project showcase by Shubham Santosh

  • 82,331 views
  • 58 comments
  • 147 respects

Python does the image processing, Arduino controls the servos.

Face Tracking Using Arduino

Project tutorial by Harsh Dethe

  • 55,935 views
  • 15 comments
  • 38 respects

Uses a smartphone application to control a cursor.

Smartphone Controlled Mouse

Project tutorial by Shubham Santosh

  • 14,340 views
  • 18 comments
  • 34 respects

Using the power of Python and Arduino, this detector measures and records user temperature.

COVID-19 Detector: The Need of the Crisis

Project tutorial by Raunak Singh

  • 13,141 views
  • 13 comments
  • 16 respects

In this tutorial, we are going to learn how we can install python on our computer and how to use it with Arduino,It allows us to send data.

Programming Arduino Using Python.

  • 141,847 views
  • 7 comments
  • 31 respects

Smart lighting is a catalyst for the IoT. In this tutorial we’ll see how to control NeoPixel LEDs via mobile using the Zerynth App.

IoT Ambient Light: Zerynth Lamp

  • 15,585 views
  • 10 comments
  • 39 respects

Automated T-Rex player using arduino and python.

Automated Dino game using arduino

Project tutorial by Rafi Rasheed T C

In this project, I’ve interfaced RFID-RC522 with Arduino and then sent RFID data to phpMyAdmin database using Python.

Attendance System Using Arduino and RFID with Python

This is an autonomous Robot Arm that can play chess using image processing and machine vision.

Autonomous Chess Playing Robotic Arm

Project showcase by Varun walimbe

Arduino and Python-based project that will help us read the sensor values and plot it on Python.

Arduino Real-Time Plotting with Python

HK RFID Monitor is basically a Python based software for RFID. It reads the data coming to COM port and displays it on your laptop screen.

Python Software for Arduino RFID

Project tutorial by Hamza Khalid

Make a terminal chat client powered by the same technology as the Facebook Messenger mobile app and display your messages on your Arduino!

Источник

Adblock
detector