Как программировать Arduino с использованием Python

Как программировать arduino на python

Как программировать arduino на python

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

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

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

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

Установка необходимого ПО для работы с Arduino и Python

Установка необходимого ПО для работы с Arduino и Python

Для начала работы с Arduino через Python потребуется установить несколько программных компонентов. Прежде всего, нужно установить Arduino IDE, которая необходима для загрузки прошивок на микроконтроллер и тестирования базового кода. Загрузить последнюю версию можно с официального сайта https://www.arduino.cc/en/software. Установите IDE, следуя инструкциям для вашей операционной системы.

Следующий шаг – установка Python. Рекомендуется использовать последнюю стабильную версию Python, которую можно скачать с официального сайта https://www.python.org/downloads/. Во время установки обязательно отметьте опцию Add Python to PATH, чтобы не возникло проблем с запуском Python из командной строки.

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

pip install pyserial

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

pip install pyfirmata

После установки всех компонентов, убедитесь, что Arduino подключен к компьютеру через USB и правильно определён в операционной системе. Для этого откройте Arduino IDE и выберите нужный порт в разделе Инструменты > Порт.

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

Настройка среды для работы с библиотеками Python для Arduino

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

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

pip install pyserial

Следующий этап – это установка библиотеки PyFirmata, которая позволяет управлять входами и выходами на Arduino напрямую из Python. Установите её с помощью команды:

pip install pyfirmata

После этого важно проверить корректную работу библиотек. Подключите Arduino к компьютеру и запустите следующий код для тестирования соединения:

from pyfirmata import Arduino, util
board = Arduino('/dev/ttyUSB0')  # Замените на ваш порт, например, COM3 на Windows
it = util.Iterator(board)
it.start()

Если код не вызывает ошибок, значит, библиотеки настроены правильно и связь с Arduino установлена.

Для удобства работы с библиотеками и кода, можно создать виртуальное окружение для Python, чтобы изолировать зависимости и избежать конфликтов. Создайте виртуальное окружение командой:

python -m venv arduino_env

Активируйте окружение:

Windows: arduino_env\Scripts\activate
Linux/MacOS: source arduino_env/bin/activate

После активации окружения установите все необходимые библиотеки, повторив команды для PySerial и PyFirmata. Теперь ваш проект будет использовать эти библиотеки в изолированном окружении, что значительно упростит управление зависимостями.

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

Как подключить Arduino к компьютеру для использования с Python

Как подключить Arduino к компьютеру для использования с Python

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

1. Подключите Arduino к компьютеру с помощью USB-кабеля. Убедитесь, что на вашем устройстве установлены драйверы, которые автоматически подбираются операционной системой. Для Windows драйверы можно найти на официальном сайте Arduino, если они не установились автоматически.

2. После подключения откройте Arduino IDE и выберите правильный порт. В разделе Инструменты > Порт вы увидите список доступных портов. Например, для Windows это будет COM3, а для Linux – что-то вроде /dev/ttyUSB0.

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

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

Пример кода для подключения Arduino через Python:

import serial
import time
# Замените COM3 на ваш порт
ser = serial.Serial('COM3', 9600, timeout=1)
time.sleep(2)  # Даем время на подключение
# Отправляем данные на Arduino
ser.write(b'Hello Arduino')
ser.close()

Для Linux или Mac используйте путь, например, /dev/ttyUSB0, вместо COM3.

5. Если при попытке подключения возникают ошибки, убедитесь, что порт не занят другой программой, и что драйверы Arduino корректно установлены. В случае с Linux вам может потребоваться добавить вашего пользователя в группу dialout, чтобы получить доступ к последовательным портам:

sudo usermod -aG dialout $USER

Перезагрузите систему после этой команды.

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

Использование библиотеки PySerial для связи с Arduino

1. Установка PySerial

  • Откройте терминал или командную строку.
  • Введите команду для установки библиотеки:
  • pip install pyserial
  • После завершения установки, библиотека готова к использованию.

2. Подключение к последовательному порту

Для начала работы с Arduino через PySerial необходимо правильно указать порт, к которому подключено устройство. В зависимости от операционной системы, это может быть COM-порт (для Windows) или устройство типа /dev/ttyUSB0 (для Linux/Mac). Пример кода для установления соединения:

import serial
# Замените 'COM3' на ваш порт
ser = serial.Serial('COM3', 9600, timeout=1)

Для Linux или Mac используйте, например, ‘/dev/ttyUSB0’ вместо ‘COM3’. Параметр 9600 указывает скорость передачи данных, которая должна совпадать с настройками на Arduino.

3. Отправка данных с Python на Arduino

Для отправки данных на Arduino через последовательный порт используйте метод write(). Пример отправки команды на Arduino:

ser.write(b'Hello Arduino')  # Отправляем строку

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

4. Чтение данных с Arduino

Для получения данных от Arduino используйте метод read() или readline(), который позволяет читать строку до символа новой строки:

data = ser.readline()  # Чтение строки до символа новой строки
print(data.decode('utf-8'))  # Декодируем байты в строку

5. Закрытие соединения

После завершения работы с портом, не забудьте закрыть соединение с Arduino:

ser.close()

6. Обработка ошибок

При работе с PySerial важно обрабатывать возможные ошибки, такие как отсутствие соединения с портом. Для этого можно использовать конструкцию try-except:

try:
ser = serial.Serial('COM3', 9600, timeout=1)
except serial.SerialException as e:
print(f"Ошибка подключения: {e}")

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

Отправка и получение данных между Arduino и Python

Отправка и получение данных между Arduino и Python

1. Настройка Arduino для отправки и получения данных

Для начала создайте скетч на Arduino, который будет получать данные от Python, обрабатывать их и отправлять обратно. Пример скетча:


void setup() {
Serial.begin(9600);  // Настройка последовательного порта
}
void loop() {
if (Serial.available() > 0) {
char incomingByte = Serial.read();  // Чтение одного байта
Serial.write(incomingByte);  // Отправка того же байта обратно на Python
}
}

Этот скетч читает данные, поступающие через последовательный порт, и сразу отправляет их обратно на Python.

2. Отправка данных с Python на Arduino

Для отправки данных с Python используйте метод write() библиотеки PySerial. Пример кода на Python, который отправляет данные на Arduino:


import serial
import time
# Открытие порта
ser = serial.Serial('COM3', 9600, timeout=1)
# Даем время для установления соединения
time.sleep(2)
# Отправка данных
ser.write(b'Hello Arduino')
# Закрытие порта
ser.close()

Замените ‘COM3’ на порт вашего устройства. Данные отправляются в виде байтов (поэтому используется префикс для строки).

3. Чтение данных от Arduino в Python

Для получения данных с Arduino используйте метод read() или readline(), в зависимости от того, как организована передача данных на Arduino. Пример получения данных:


import serial
# Открытие порта
ser = serial.Serial('COM3', 9600, timeout=1)
# Чтение одного байта
incoming_data = ser.read()  # Чтение 1 байта
print(incoming_data)
# Чтение строки до символа новой строки
line = ser.readline()
print(line.decode('utf-8'))  # Декодирование байтов в строку
ser.close()

Метод read() считывает данные по одному байту, а readline() читает до символа новой строки. Для удобства данные декодируются в строку с помощью decode(‘utf-8’).

4. Важные моменты при обмене данными

  • Убедитесь, что скорость передачи данных на Arduino и Python совпадает (в примере указано 9600 бод).
  • Внимательно следите за типами данных. Arduino и Python могут передавать данные в разных форматах (байты, строки и т.д.), поэтому важно правильно их кодировать и декодировать.
  • Для стабильной работы убедитесь, что последовательный порт не занят другими программами во время работы с Python.

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

Как контролировать компоненты Arduino с помощью Python (светодиоды, моторы)

Как контролировать компоненты Arduino с помощью Python (светодиоды, моторы)

1. Управление светодиодом

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


int ledPin = 13;  // Пин для подключения светодиода
void setup() {
pinMode(ledPin, OUTPUT);  // Устанавливаем пин как выход
Serial.begin(9600);  // Инициализация последовательного порта
}
void loop() {
if (Serial.available() > 0) {
char incomingByte = Serial.read();  // Чтение байта данных от Python
if (incomingByte == '1') {
digitalWrite(ledPin, HIGH);  // Включаем светодиод
} else if (incomingByte == '0') {
digitalWrite(ledPin, LOW);  // Выключаем светодиод
}
}
}

Теперь на Python можно отправить данные на Arduino для управления светодиодом:


import serial
import time
# Открытие порта
ser = serial.Serial('COM3', 9600, timeout=1)
time.sleep(2)
# Включение светодиода
ser.write(b'1')
# Ожидание 2 секунды
time.sleep(2)
# Выключение светодиода
ser.write(b'0')
ser.close()

Этот код отправляет символы ‘1’ и ‘0’ для включения и выключения светодиода соответственно.

2. Управление мотором

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


int motorPin = 9;  // Пин для управления мотором
void setup() {
pinMode(motorPin, OUTPUT);  // Устанавливаем пин как выход
Serial.begin(9600);  // Инициализация последовательного порта
}
void loop() {
if (Serial.available() > 0) {
char incomingByte = Serial.read();  // Чтение байта данных от Python
if (incomingByte == '1') {
digitalWrite(motorPin, HIGH);  // Включаем мотор
} else if (incomingByte == '0') {
digitalWrite(motorPin, LOW);  // Выключаем мотор
}
}
}

На Python код для управления мотором будет следующим:


import serial
import time
# Открытие порта
ser = serial.Serial('COM3', 9600, timeout=1)
time.sleep(2)
# Включение мотора
ser.write(b'1')
# Ожидание 5 секунд
time.sleep(5)
# Выключение мотора
ser.write(b'0')
ser.close()

Этот код отправляет команды для включения и выключения мотора. Замените пин motorPin в скетче Arduino на тот, к которому подключен ваш драйвер или реле для управления мотором.

3. Использование аналоговых пинов для управления яркостью светодиода

Для управления яркостью светодиода можно использовать аналоговые пины на Arduino, отправляя значения в диапазоне от 0 до 255. Пример кода для управления яркостью:


int ledPin = 9;  // Пин для подключения светодиода
void setup() {
pinMode(ledPin, OUTPUT);  // Устанавливаем пин как выход
Serial.begin(9600);  // Инициализация последовательного порта
}
void loop() {
if (Serial.available() > 0) {
int brightness = Serial.parseInt();  // Чтение значения яркости от Python
analogWrite(ledPin, brightness);  // Установка яркости
}
}

На Python код для отправки значения яркости будет следующим:


import serial
import time
# Открытие порта
ser = serial.Serial('COM3', 9600, timeout=1)
time.sleep(2)
# Отправка значения яркости от 0 до 255
ser.write(b'128')  # Установить среднюю яркость
time.sleep(2)
ser.close()

Этот пример позволяет динамично управлять яркостью светодиода через Python, отправляя различные значения в диапазоне от 0 (выключено) до 255 (максимальная яркость).

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

Использование Python для чтения сенсоров с Arduino

Использование Python для чтения сенсоров с Arduino

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

1. Чтение данных с датчика температуры (LM35)

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


int sensorPin = A0;  // Пин, к которому подключен датчик
float temperature = 0.0;
void setup() {
Serial.begin(9600);  // Инициализация последовательного порта
}
void loop() {
int sensorValue = analogRead(sensorPin);  // Считываем значение с датчика
temperature = (sensorValue * 5.0 * 100.0) / 1024.0;  // Переводим в температуру
Serial.println(temperature);  // Отправляем температуру на Python
delay(1000);  // Ожидаем 1 секунду
}

На Python можно получить данные о температуре, передаваемые Arduino, следующим образом:


import serial
ser = serial.Serial('COM3', 9600, timeout=1)  # Открытие порта
while True:
data = ser.readline()  # Чтение строки данных
if data:
temperature = float(data.decode('utf-8').strip())  # Декодируем и конвертируем в число

2. Чтение данных с датчика влажности (DHT11)

Для считывания данных с датчика влажности DHT11, подключенного к Arduino, можно использовать следующий код, который будет отправлять температуру и влажность через последовательный порт:


#include 
#define DHTPIN 2  // Пин, к которому подключен датчик
#define DHTTYPE DHT11  // Тип датчика
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);  // Инициализация последовательного порта
dht.begin();  // Инициализация датчика
}
void loop() {
float humidity = dht.readHumidity();  // Чтение влажности
float temperature = dht.readTemperature();  // Чтение температуры
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Ошибка при чтении с датчика");
} else {
Serial.print("Температура: ");
Serial.print(temperature);
Serial.print(" C\t");
Serial.print("Влажность: ");
Serial.print(humidity);
Serial.println(" %");
}
delay(2000);  // Ожидание 2 секунды
}

import serial
ser = serial.Serial('COM3', 9600, timeout=1)  # Открытие порта
while True:
data = ser.readline().decode('utf-8').strip()
if data:

3. Чтение данных с датчика расстояния HC-SR04

Датчик расстояния HC-SR04 использует ультразвуковые импульсы для измерения расстояния. Он подключается к цифровым пинам Arduino и используется для получения измерений расстояния. Код для работы с этим датчиком на Arduino:


int trigPin = 9;
int echoPin = 10;
long duration;
long distance;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.0344 / 2;  // Расстояние в сантиметрах
Serial.print("Расстояние: ");
Serial.print(distance);
Serial.println(" см");
delay(1000);
}

На Python можно читать данные, передаваемые Arduino:


import serial
ser = serial.Serial('COM3', 9600, timeout=1)  # Открытие порта
while True:
data = ser.readline().decode('utf-8').strip()
if data:

4. Общие рекомендации

Для эффективной работы с сенсорами важно:

  • Убедиться, что Arduino правильно подключено к компьютеру через последовательный порт.
  • Настроить скорость передачи данных (baud rate) как на Arduino, так и в Python (обычно 9600 бод).
  • Использовать корректные пины для подключения сенсоров в соответствии с кодом.
  • Проверить, что датчики подключены правильно и работают корректно перед отправкой данных на Python.

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

Отладка и диагностика программ с Python для Arduino

1. Проверка соединения между Arduino и Python

  • Проверьте, что Arduino правильно подключено к компьютеру и используется правильный последовательный порт. Для этого используйте диспетчер устройств в операционной системе.
  • Убедитесь, что в коде Python указан корректный порт (например, ‘COM3’ или ‘/dev/ttyUSB0’).
  • Для диагностики порта используйте команду python -m serial.tools.list_ports, которая покажет доступные порты.

2. Настройка скорости передачи данных (baud rate)

  • Скорость передачи данных (обычно 9600 бод) должна быть одинаковой как в скетче на Arduino, так и в Python.
  • Если скорость передачи данных отличается, это может привести к потере данных или искажению информации.

3. Обработка ошибок в коде Python

  • Для отладки последовательного порта в Python можно использовать блоки try-except. Это позволяет ловить исключения, если порт занят или недоступен:
  • 
    import serial
    try:
    ser = serial.Serial('COM3', 9600, timeout=1)
    except serial.SerialException:
    print("Ошибка: не удалось открыть порт.")
    
  • Использование ser.in_waiting позволяет проверять, есть ли данные в буфере перед попыткой чтения, что помогает избежать ошибок при пустом буфере.
    
    import serial
    ser = serial.Serial('COM3', 9600, timeout=1)
    while True:
    data = ser.readline()
    if data:
    print(f"Получено: {data.decode('utf-8').strip()}")
    
  • На Arduino можно добавить дополнительные сообщения в Serial.print(), чтобы отслеживать промежуточные значения в коде.

5. Проверка стабильности и времени работы программы

  • Для проверки стабильности программы используйте тайминг. Если ваш скетч работает долгое время, добавьте в код Arduino проверку на наличие ошибок или временные интервалы для регулярной отправки сигналов.
  • Использование delay() в Arduino помогает избежать переполнения буфера при отправке данных, но не забывайте, что длинные задержки могут влиять на реакцию программы.

6. Проблемы с несовместимостью библиотек и драйверов

  • Если у вас возникли проблемы с драйверами USB-to-Serial адаптеров, проверьте, что установлены последние версии драйверов для Arduino и Python.
  • Проверьте, что используемые библиотеки для сенсоров или других компонентов совместимы с вашей версией Arduino IDE и Python. Например, библиотека PySerial для Python должна быть актуальной и поддерживать вашу версию операционной системы.

7. Рекомендуемые инструменты для диагностики

  • Serial Monitor в Arduino IDE помогает следить за тем, что отправляется с устройства. Это полезно для первоначальной диагностики ошибок.
  • PySerial позволяет в Python отлаживать данные, отправляемые и получаемые через порт, с помощью подробных логов.
  • Arduino IDE имеет встроенные функции проверки ошибок и компиляции, которые помогают быстрее найти и устранить проблемы с кодом на самом Arduino.

8. Использование внешних логгеров

  • Для более сложных проектов можно использовать внешние логгеры для записи и анализа данных, получаемых с Arduino. Это поможет при диагностике работы системы в реальных условиях.
  • Для Python можно использовать библиотеки logging, которые позволяют собирать логи в файл для дальнейшего анализа:
  • 
    import logging
    logging.basicConfig(filename='debug.log', level=logging.DEBUG)
    logging.debug("Сообщение для отладки")
    

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

Вопрос-ответ:

Как подключить Arduino к компьютеру для работы с Python?

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

Какая библиотека Python необходима для работы с Arduino?

Для работы с Arduino через Python наиболее популярной является библиотека PySerial. Она позволяет взаимодействовать с последовательным портом, через который Arduino подключается к компьютеру. С помощью PySerial можно отправлять данные в Arduino и получать информацию обратно. Установить библиотеку можно с помощью команды pip install pyserial.

Что делать, если Python не может найти подключенное Arduino?

Если Python не видит подключенное Arduino, проверьте несколько моментов. Во-первых, убедитесь, что Arduino правильно подключено к USB-порту. Во-вторых, проверьте, что правильно указали порт в коде Python (например, ‘COM3’ для Windows или ‘/dev/ttyUSB0’ для Linux). Вы можете проверить доступные порты с помощью команды python -m serial.tools.list_ports, которая отобразит все подключенные устройства. Также убедитесь, что на Arduino правильно загружен скетч, и что в нем нет ошибок, мешающих связи с компьютером.

Как настроить передачу данных между Arduino и Python?

Для настройки передачи данных между Arduino и Python используйте библиотеку PySerial. В Python создается объект для работы с последовательным портом, например: ser = serial.Serial('COM3', 9600), где ‘COM3’ — это порт, к которому подключено Arduino, а 9600 — это скорость передачи данных. На Arduino в это время необходимо использовать Serial.begin(9600); для открытия порта с такой же скоростью. Данные можно отправлять через ser.write(data) и читать через ser.readline().

Как отладить программу для Arduino, если она не работает с Python?

Если программа не работает, начните с проверки соединения между Arduino и компьютером. Убедитесь, что выбран правильный порт и скорость передачи данных. Также стоит проверить, что в коде Python правильно обрабатываются ошибки с помощью try-except, чтобы выявить проблемы с подключением. Можно использовать Serial Monitor в Arduino IDE для диагностики, чтобы увидеть, что именно отправляется и получает Arduino. В Python стоит проверять наличие данных в буфере перед чтением с помощью ser.in_waiting.

Ссылка на основную публикацию