Управляем Arduino через Python 3

В этом небольшом уроке мы научимся отправлять команды на Ардуино через Python 3-ей версии.

Описание

В этом проекте мы будем посылать команды через Python 3 на плату Arduino, что сделает поможет нам понять взаимодействие между Python и Arduino.

Мы создадим что-то вроде "Hello world" для платформы Arduino, т.е. мы планируем включить и выключить встроенный светодиод на Arduino Uno.

В интернете большинство пособий на эту тему используют 2-ю версию Python, но мы установим версию Python 3.7.2. Существует небольшая разница между Python 2 и Python 3, когда вы используете этот язык для управления Arduino.

Комплектующие

Собственно, нам нужны всего лишь:

  1. Arduino UNO
  2. USB-кабель

Установка Python и PySerial

Наша задача сперва установить 3-ю версию Python и пакет PySerial. Для этого есть много уроков в интернете и процесс довольно простой.

Нужно скачать python на свой компьютер с официального сайта "Питона" отсюда.

Далее нам нужно установить пакет PySerial.

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

Нажмите на Pyserial Windows (ссылка), чтобы загрузить PySerial.

В результате вы получите исполняемый exe-файл, который можно установить напрямую. Не меняйте никаких настроек во время установки. Оставьте его в каталоге по умолчанию и с настройками по умолчанию.

Теперь давайте проверим, правильно ли установлен PySerial. Для этого снова откройте Python Shell и введите:

import serial

Если библиотека была успешно установлена, вы не должны получить никаких сообщений об ошибках.

Код для Python и Arduino

Далее приведу нужные скетчи для работы. Убедитесь, что сначала вы загружаете скетч Arduino, а затем код Python.

Код Ардуино:

int datafromUser=0;
void setup() {
  // код для настроек
  pinMode( LED_BUILTIN , OUTPUT );
  Serial.begin(9600);
}

void loop() {
  // код для повторения в цикле
  if(Serial.available() > 0)
  {
    datafromUser=Serial.read();
  }

  if(datafromUser == '1')
  {
    digitalWrite( LED_BUILTIN , HIGH );
  }
  else if(datafromUser == '0')
  {
    digitalWrite( LED_BUILTIN, LOW);
  }
  
}

Код Python:

import serial
import time

arduino=serial.Serial('COM1', 9600)
time.sleep(2)

print("Enter 1 to turn ON LED and 0 to turn OFF LED")

while 1:
    
    datafromUser=input()

    if datafromUser == '1':
        arduino.write(b'1')
        print("LED  turned ON")
    elif datafromUser == '0':
        arduino.write(b'0')
        print("LED turned OFF")
11 июля 2020 в 13:43
Опубликовано: | Оригинал
Уроки, ,

Добавить комментарий

Ваш E-mail не будет никому виден. Обязательные поля отмечены *