Как сделать, чтобы Debian (cubieboard) через tty передавал данные в arduino и получал обратно?

Рейтинг: 2Ответов: 2Опубликовано: 18.01.2015

Здравствуйте.

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

У меня есть cubieboard a10 (если кто не знает, это что-то типа мини-компьютера, туда можно ставить любую ОС, обычно это Debian) и arduino UNO (если кто не знает, это плата с микроконтроллером, программируется на c++).
cubieboard и arduino можно подключить через USB A -> USB B (как обычно подключается принтер).
В cubieboard он определяется как обычный tty терминал.
На cubieboard легко ставится WEB сервер.

Так вот, я хочу сделать так:
На WEB сервер создаём страницу с, допустим, 3 кнопками: передать 1, 2, 3. И при нажатии на одну из кнопок предаётся значение по tty в arduino, он, допустим, умножает это число на 5 и отправляет обратно, и у пользователя отображается это умноженное число.

Я вполне могу сделать такую страницу, через nodejs могу получить нажатия на кнопки и отправить ответ обратно.
На arduino могу написать программу, которая будет получать число, умножать и отправлять обратно.


Но как сделать, чтобы Debian (cubieboard) через tty передавал и получал это значение обратно? Я не знаю, как это сделать.
Подскажите, пожалуйста, как это правильно сделать?
Возможно, нужно использовать не nodejs, а что-то другое?

Ответы

▲ 2Принят

Если Arduino не определяется, ищем драйвера своей модели Arduino для Linux (они есть) Устанавливаем через NPM модуль serialport (npm install serialport)
Вот пример кода с использованием этого модуля:

var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
//Определям скорость, путь и разделитель строк
var serial = new SerialPort("/dev/ttyUSB0", {baudrate: 9600,parser: serialport.parsers.readline("\n")});

serial.on("open", function() {//Ждём подключения
        serial.on('data', function(data){//Как придут данные вывести их в лог
                console.log(data);
        });
        serial.write("start");//Оправляем строку "start"
});

В Arduino работаем через функцию Serial

▲ 3

В cubieboard он определяется как обычный tty терминал. Возможно, нужно использовать не nodejs, а что-то другое?

Если я верно все понял, то используйте bash.

Отправка данных со стороны dedian:

echo «hello tty» > /dev/ttyX

Получение данных со стороны arduino (если там есть shell) cat /dev/ttyX либо ваша программа с той стороны получает данные и обрабатывает, надо понять, какой у вас обратный интерфейс со стороны arduino, чтоб понять, откуда получать и куда отправлять, возможно, что и получать от arduino данные в debian вам надо будет, спрашивая cat /dev/ttyX.

Может быть, это то, что вам нужно:

http://brandontilley.com/2012/03/02/controlling-an-arduino-from-nodejs.html