Python + Arduino с Mac OS X - PullRequest
       10

Python + Arduino с Mac OS X

6 голосов
/ 18 мая 2011

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

Для Windows, видимо, решение довольно удобно, но на Mac OS X япо-видимому, необходимо получить доступ к некоторым системным файлам (с которыми я не знаком).Документация Python указывает мне на конкретный пост Re: Может ли Python выполнять работу с последовательным портом? , но я не думаю, что это вполне соответствует моим целям.в этот момент, пытаясь просто увидеть доказательства связи, я попробовал это.

Arduino:

void setup(){
    Serial.begin(9600);
}

void loop()
{
    int d = Serial.read();
    Serial.println(d,BYTE);
}

Python: (в значительной степени из упомянутой ссылки ...)

 #!usr/bin/python
 import os, fcntl, termios, sys

 serialPath = '/dev/tty.usbmodemfa141'

 ser= os.open(serialPath, 0)
 [iflag, oflag, cflag, lflag, ispeed, ospeed, cc] = range(7)
 settings = termios.tcgetattr(ser)
 settings[ospeed] = termios.B9600
 settings[ispeed] = termios.B0
 print 2

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

Ответы [ 3 ]

14 голосов
/ 18 мая 2011

Самый простой способ связи в Python с Arduino (или любым микроконтроллером с последовательным интерфейсом) - это использование pySerial .

Вот пример:

import serial
s = serial.Serial(port='/dev/tty.usbmodemfa141', baudrate=9600)

s.write('text')
s.read()
s.readline()

PS: Если вы используете Python 3, вы должны отправлять байты вместо строк (то есть b'text').

1 голос
/ 18 мая 2011

Я сделал это с помощью Perl под Linux, но у меня нет опыта работы с Python или Mac. Я могу дать вам несколько советов для поиска.

Во-первых, в вашей программе на Python вам нужно указать правильный адрес устройства для вашего USB-порта в serialPath, иначе ваши данные не попадут в Arduino. В Linux я сделал lsusb после того, как подключил плату и нашел из этого имя устройства.

В вашем коде Arduino измените его на

void loop()
{
   if(Serial.available() > 0)
   {
       d = Serial.read();
       Serial.println(d,BYTE);
   }
}

, иначе вы будете сбрасывать кучу -1 с, если данных нет.

0 голосов
/ 30 апреля 2019

Со своей стороны, я решил Serial error на OSX с помощью команды sudo; Я думаю, что на OSX вы должны получить права администратора для связи с помощью команды Serial после установки pip /dev/cu.usbmodem14101.

...