Rasp+arduino

Тема в разделе "Raspberry Pi", создана пользователем Larymar, 8 дек 2017.

  1. Larymar

    Larymar Нуб

    Добрый вечер, вопрос:
    Подключаю Arduino к raspb, на плате Raspbian
    Т.к. в Линуксе все является файлами, хотелось бы через терминал отправлять и принимать данные ( bash command)
    на ардуине что-то из серии
    Код (C++):

    char x= Serial.read();
    if(x!=-1)
    Serial.print(x);
    Заранее всем спасибо.
     
  2. rkit

    rkit Гуру

    read для чтения
    > и < для записи
    Но это чудовищно неудобно. Возьмите язык посерьезнее.
     
    Igor68 и NikitOS нравится это.
  3. Igor68

    Igor68 Гуру

    Из BASH посылать команды на ARDUINO я правильно понял? И принимать ответы от ARDUINO так?
     
  4. Larymar

    Larymar Нуб

    Да, именно так
     
  5. Larymar

    Larymar Нуб

    я собираюсь в java это оборачивать
    совершенно не понятно, read /dev/ttyMyPort < my-data совершенно не работает
     
  6. Igor68

    Igor68 Гуру

    Как у Вас обстоит дело с доступностью.У меня на линукс машине есть вот это:
    Код (Bash):
    www-data@Moxa:~$ ls /dev/tty* -al
    crwxrwxrwx    1 root     root       5,   0 Jan  1  1970 /dev/tty
    crwxrwxrwx    1 root     root       4,   0 Jan  1  1970 /dev/tty0
    crwxrwxrwx    1 root     root       4,   1 Jan  1  1970 /dev/tty1
    crwxrwxrwx    1 root     root       4,   2 Jan  1  1970 /dev/tty2
    crwxrwxrwx    1 root     root       4,   3 Jan  1  1970 /dev/tty3
    crwxrwxrwx    1 root     root       4,   4 Jan  1  1970 /dev/tty4
    crwxrwxrwx    1 root     root       4,   5 Jan  1  1970 /dev/tty5
    crwxrwxrwx    1 root     root       4,   6 Jan  1  1970 /dev/tty6
    crwxrwxrwx    1 root     root       4,   7 Jan  1  1970 /dev/tty7
    crwxrwxrwx    1 root     root       4,   8 Jan  1  1970 /dev/tty8
    crwxrwxrwx    1 root     root       4,   9 Jan  1  1970 /dev/tty9
    crw-r--r--    1 root     root      30,   0 Feb  7  2007 /dev/ttyM0
    crw-r--r--    1 root     root      30,   1 Feb  7  2007 /dev/ttyM1
    crwxrwxrwx    1 root     root       4,  64 Jan  1  1970 /dev/ttyS0
    crwxrwxrwx    1 root     root       3,   0 Dec  9 21:11 /dev/ttyp0
    crwxrwxrwx    1 root     root       3,   1 Dec  9 21:16 /dev/ttyp1
    crwxrwxrwx    1 root     root       3,   2 Jan  1  1970 /dev/ttyp2
    crwxrwxrwx    1 root     root       3,   3 Jan  1  1970 /dev/ttyp3
    crwxrwxrwx    1 root     root       3,   4 Jan  1  1970 /dev/ttyp4
    crwxrwxrwx    1 root     root       3,   5 Jan  1  1970 /dev/ttyp5
    crwxrwxrwx    1 root     root       3,   6 Jan  1  1970 /dev/ttyp6
    crwxrwxrwx    1 root     root       3,   7 Jan  1  1970 /dev/ttyp7
    crwxrwxrwx    1 root     root       3,   8 Jan  1  1970 /dev/ttyp8
    crwxrwxrwx    1 root     root       3,   9 Jan  1  1970 /dev/ttyp9
    www-data@Moxa:~$
    как видите (посмотрите на /dev/ttyM0 и /dev/ttyM1) писать в устройство может только root. Для других толькко чтение дозволено. Проверьте свой порт... точнее разрешения.
     
  7. Igor68

    Igor68 Гуру

    посмотрите на описание "read"
    Код (Bash):
    read: usage: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
    А применять так:

    Код (Bash):
    read -t 10 $dat </dev/ttyXX & #с ожиданием 10 секунд... вдруг ничего не придёт
    echo "$dat"
    Если просто read без "&" то "повиснем" на этой строчке пока что-то не придёт
    А там где echo $dat должен быть разумный цикл проверки содержимого $dat, который изначально инициализируется как "" Вашим скриптом.

    Кстати вот:
    http://rus-linux.net/nlib.php?name=/MyLDP/BOOKS/Bash-Guide-1.12-ru/bash-guide-08-2.html
    Тут точно актуально в отличии от возможно ошибочного моего высказывания... оооооооочень давно не пользовался именно этой функцией
     
    Последнее редактирование: 9 дек 2017
    Larymar нравится это.
  8. Salomatin

    Salomatin Гик

    Послать символ на arduino
    Код (Bash):
    $echo Q > /dev/ttyACM0
    Принимать символы:
    Ставим
    Код (Bash):
    sudo apt-get install picocom
    Открываем два терминала. В первом устанавливаем связь
    Код (Bash):
    nohup picocom /dev/ttyACM0 -b 115200 -l
    и оставляем окно открытое
    Во втором терминале даем команду на чтение
    Код (Bash):
    cat /dev/ttyACM0
    и ничего не трогаем.
    Arduino шлет символы и видит их во второй терминале.
    Также можно записывать вывод в текстовый файл.
    Код (Bash):
    cat /dev/ttyACM0   >> 1.txt
    Подробнее у меня на Линукс форуме. https://forum.altlinux.org/index.php?topic=36563.msg282487#msg282487

    Но проще надежней работать на Pynhon
    Управляем светодиодом
     
    Larymar и Igor68 нравится это.