Коммуникация Raspberry и Arduino

Posted by

Здесь и сейчас не будет ничего сказано из того, что есть в интернете. Меня заинтересовало, как я могу принимать вывод с Arduino UNO R3 на +, т. е. К примеру в скетче исполняется код которые на выходе получает значения по датчикам и вот эти значения я хочу видеть в консоли командной строки raspberry дабы потом их анализировать, визуализировать. Вот как то та я себе представляю данную задумку. В процесс поиска информации на этот счет наткнулся на Youtube видео, где автор показывал, как такую задумку реализовать. Ниже я для себя все записал самолично выполнив все, мне так удобнее когда перед глазами есть пошаговая реальная заметка, а уже на ее основе я строю что-то еще. Чем смотреть видео где автор что-то мямлит, в носу ковыряется и т.д

Схема: все то же самое что и в заметке: «Соединяем Raspberry Pi 3 и Arduino UNO R3»

Arduino UNO R3 — usb — raspberry pi 3 Model B+ — ethernet — Mikrotik — ноутбук

Ниже мои действия:

Подключаюсь по VNC к Raspberry Pi 3 Model B+, устанавливаю среду разработки Arduino IDE

Запускаю среду разработки Arduino IDE

пишу скетч:

void setup(){

Serial.begin(9600);

}

void loop(){

Serial.printIn("Hello");

delay(1000);

}

Скетч для вывода на последовательный порт с ArduinoНажимаю проверить, но в ответ получаю ошибку:

Ошибка при запуске скетча

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

А разобрался проблема была в неправильно написанной команде:

было: Serial.printIn

а нужно: Serial.println

После исправления все заработало.

Далее скачиваю python и скрипт через который вывод в консольный порт от Arduino будет перенаправлен в консоль командной строки Raspberry:

pi@raspberrypi:~ $ sudo apt-get install python python-serial -y

pi@raspberrypi:~ $ wget https://raw.githubusercontent.com/tbird20d/grabserial/master/grabserial grabserial

После запускаю скачанный скрипт и натравливаю его на подключение Arduino UNO R3 и Raspberry Pi 3 Model B друг с другом через Usb кабель:

pi@raspberrypi:~ $ python grabserial -v -d /dev/ttyACM0 -b 9600 -w 8 -p N -s 1 -o /home/pi/seriallog.txt

Opening serial port /dev/ttyACM0

9600:8N1:xonxoff=0:rtscts=0

Saving data to '/home/pi/seriallog.txt'

Use Control-C to stop...

Hllo

Hello

Hello

Помимо того факта что с последовательного порта все отображается на консоли ,так и происходит запись в файл:

pi@raspberrypi:~ $ cat seriallog.txt

Hllo

Hello

Hello

Вывод на консоль в режиме реального времени с указанием текущей даты и времени и вывода:

pi@raspberrypi:~ $ sudo apt-get install moreutils -y

pi@raspberrypi:~ $ python grabserial -v -d /dev/ttyACM0 -b 9600 -w 8 -p N -s 1 | ts

Mar 27 10:07:40 Opening serial port /dev/ttyACM0

Mar 27 10:07:40 9600:8N1:xonxoff=0:rtscts=0

Mar 27 10:07:40 Use Control-C to stop...

Mar 27 10:07:40 Hello

Mar 27 10:07:41 Hello

Mar 27 10:07:42 Hello

^C

Вот и отлично, написанный скетч на Arduino UNO R3 записываем в последовательный вход слово hello, а посредством скрипта выше мы с Raspberry Pi 3 Model B+ считываем все что идет на последовательный порт. Работает. Теперь у меня есть шпаргалка на будущее использование. А пока я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.