В этой статье рассказывается о том, как написать простую программу реализующую обмен данными между компьютером и ардуино. Речь идет о программе для ПК. Конечно можно пользоваться готовыми программами. Однако своя программа может значительно лучше подходить для конкретного проекта. Схема и код для ардуино здесь
Программа будет писаться на python. Этот язык является open source проектом. Есть версии интерпретатора python для различных платформ. Если в программе написанной на python не используются специфические возможности конкретной платформы, то эта программа будет работать везде, где установлен интерпретатор python.
Начать нужно с установки интерпретатора. Для windows его можно найти перейдя по ссылке http://python.org/downloads/windows/ Я использую python 2.7 Вот только для работы с ардуино этого недостаточно. Еще необходимо установить модуль http://pyserial.sourceforge.net/ Есть несколько версий под разные платформы. Тут главное не перепутать :-)
Привожу текст программы
Откройте "блокнот" (notepad), вставте текст программы, сохраните документ с расширением .py Всё. Но работать в специализированном редакторе намного приятнее.
Чтобы запустить программу, нужно кликнуть правой кнопкой мышки на файле. В открывшемся меню следует навести курсор мышки на пункт "открыть с помощью". И там уже кликнуть левой кнопкой мышки на "python".
Есть еще один вариант. Запускаете программу "командная строка" (cmd). И там пишите, что то вроде
Первой частью этой строки выполняется запуск интерпретатора. Вторая часть строки сообщает интерпретатору, где находится текст программы.
Теперь нажимаете enter и наслаждаетесь результатом.
Ардуино должна быть уже подключена к компьютеру. В противном случае программа завершит работу не сумев связаться с платой.
А так выглядит работа программы
Завершается работа программы нажатием Ctrl + C
Далее я постараюсь дать более подробные пояснения по программе. Если ничего не заработало, то прочтение оставшейся части статьи должно помочь найти и исправить неточности.
Сразу скажу о том, что отступы в python делают не для красоты. Это необходимые элементы языка. В python они выполняют ту же функцию, что и фигурные скобки в C/C++. Правда есть некоторые нюансы.
Эта строка кода нужна для того, чтобы программа выполнялась, например, в linux. В windows она не нужна, но она и не мешает.
Эта строка сообщает компилятору о том, в какой кодировке записана программа. У меня это windows1251.
Этой строчкой выполняется подключение к проекту модуля serial. Он необходим для работы с COM портами.
Здесь производится открытие порта COM14. Именно этот порт моя windows предоставила Arduino Uno. Номер порта можно узнать в Arduino IDE. Для обмена данными используется тот же порт, что и для загрузки скетча в ардуино. Только в программе на питоне используется один номер. Без COM. И нумерация начинается с ноля. Таким образом, COM1 соответствует номер 0. И так далее. Скорость обмена данными составляет 9600 bps. Данные передаются по восемь бит (один байт). Бит паритета не используется. Завершается передача данных одним стоп битом. Всё как в программе для ардуино. В противном случае компьютер и ардуино не поймут друг друга. Последний параметр определяет время в течении которого программа будет ждать поступления данных от ардуино. Я установил время ожидания в одну секунду.
Этот фрагмент программы является примером использования отступов в эстетических целях. Один из тех самых нюансов про которые я говорил чуть выше.
Этой строчкой на экран выводится информация об открытом порте. Она включена в программу с ознакомительными целями.
Бесконечный цикл.
Элемент обработки исключений в python.
Этим кодом формируется строка запроса. Данные введенные пользователем помещаются в переменную data.
Здесь предусматривается обработка исключения возникающего при нажатии Ctrl + C
Выход из бесконечного цикла.
Этой строкой выполняется передача данных через COM порт.
Полученные от ардуино данные записываются в переменную data.
Переменная data выводится на монитор.
Здесь порт закрывается.
Еще нужно сказать, что комментарии в python начинаются с символа '#' Это то же самое, что '//' в C/C++.
Вообще у python не плохая документация. На английском языке её можно найти на http://python.org/
Программа будет писаться на python. Этот язык является open source проектом. Есть версии интерпретатора python для различных платформ. Если в программе написанной на python не используются специфические возможности конкретной платформы, то эта программа будет работать везде, где установлен интерпретатор python.
Начать нужно с установки интерпретатора. Для windows его можно найти перейдя по ссылке http://python.org/downloads/windows/ Я использую python 2.7 Вот только для работы с ардуино этого недостаточно. Еще необходимо установить модуль http://pyserial.sourceforge.net/ Есть несколько версий под разные платформы. Тут главное не перепутать :-)
Привожу текст программы
#!/usr/bin/env python # -*- coding: cp1251 -*- import serial # COM14, 9600 bps, 8 data bits, no parity bit, 1 stop bit ser = serial.Serial(13, 9600, bytesize = serial.EIGHTBITS, parity = serial.PARITY_NONE, stopbits = serial.STOPBITS_ONE, timeout = 1) print ser, '\n' # print port information while 1 : try : data = raw_input('--> ') except KeyboardInterrupt : break ser.write(data) data = ser.read() print '<-- ' + data ser.close() # close port
Откройте "блокнот" (notepad), вставте текст программы, сохраните документ с расширением .py Всё. Но работать в специализированном редакторе намного приятнее.
Чтобы запустить программу, нужно кликнуть правой кнопкой мышки на файле. В открывшемся меню следует навести курсор мышки на пункт "открыть с помощью". И там уже кликнуть левой кнопкой мышки на "python".
Есть еще один вариант. Запускаете программу "командная строка" (cmd). И там пишите, что то вроде
C:\Python27\python.exe C:\justforduino\usb.py
Первой частью этой строки выполняется запуск интерпретатора. Вторая часть строки сообщает интерпретатору, где находится текст программы.
Теперь нажимаете enter и наслаждаетесь результатом.
Ардуино должна быть уже подключена к компьютеру. В противном случае программа завершит работу не сумев связаться с платой.
А так выглядит работа программы
Завершается работа программы нажатием Ctrl + C
Далее я постараюсь дать более подробные пояснения по программе. Если ничего не заработало, то прочтение оставшейся части статьи должно помочь найти и исправить неточности.
Сразу скажу о том, что отступы в python делают не для красоты. Это необходимые элементы языка. В python они выполняют ту же функцию, что и фигурные скобки в C/C++. Правда есть некоторые нюансы.
#!/usr/bin/env python
Эта строка кода нужна для того, чтобы программа выполнялась, например, в linux. В windows она не нужна, но она и не мешает.
# -*- coding: cp1251 -*-
Эта строка сообщает компилятору о том, в какой кодировке записана программа. У меня это windows1251.
import serial
Этой строчкой выполняется подключение к проекту модуля serial. Он необходим для работы с COM портами.
ser = serial.Serial(13, 9600, bytesize = serial.EIGHTBITS, parity = serial.PARITY_NONE, stopbits = serial.STOPBITS_ONE, timeout = 1)
Здесь производится открытие порта COM14. Именно этот порт моя windows предоставила Arduino Uno. Номер порта можно узнать в Arduino IDE. Для обмена данными используется тот же порт, что и для загрузки скетча в ардуино. Только в программе на питоне используется один номер. Без COM. И нумерация начинается с ноля. Таким образом, COM1 соответствует номер 0. И так далее. Скорость обмена данными составляет 9600 bps. Данные передаются по восемь бит (один байт). Бит паритета не используется. Завершается передача данных одним стоп битом. Всё как в программе для ардуино. В противном случае компьютер и ардуино не поймут друг друга. Последний параметр определяет время в течении которого программа будет ждать поступления данных от ардуино. Я установил время ожидания в одну секунду.
Этот фрагмент программы является примером использования отступов в эстетических целях. Один из тех самых нюансов про которые я говорил чуть выше.
print ser, '\n'
Этой строчкой на экран выводится информация об открытом порте. Она включена в программу с ознакомительными целями.
while 1 :
Бесконечный цикл.
try :
Элемент обработки исключений в python.
data = raw_input('--> ')
Этим кодом формируется строка запроса. Данные введенные пользователем помещаются в переменную data.
except KeyboardInterrupt :
Здесь предусматривается обработка исключения возникающего при нажатии Ctrl + C
break
Выход из бесконечного цикла.
ser.write(data)
Этой строкой выполняется передача данных через COM порт.
data = ser.read()
Полученные от ардуино данные записываются в переменную data.
print '<-- ' + data
Переменная data выводится на монитор.
ser.close()
Здесь порт закрывается.
Еще нужно сказать, что комментарии в python начинаются с символа '#' Это то же самое, что '//' в C/C++.
Вообще у python не плохая документация. На английском языке её можно найти на http://python.org/
Комментариев нет:
Отправить комментарий