Последовательная связь между Raspberry Pi и Teensy (с помощью контактов UART / GPIO) - PullRequest
4 голосов
/ 29 апреля 2020

Я пытаюсь связаться от моего малинового PI с подростком (arduino, который может выдавать себя за мышь и клавиатуру для непосвященных).

Я хочу получать информацию о arduino и на основе эта информация перемещает мышь.

На стороне Arduino я сделал этот тестовый скрипт:

void setup() {
    Serial1.begin(9600); // According to the Teensy Docs, this is the RX1 & TX1 on my board.
    // Serial itself corrosponds to the micro-usb port
}
String msg = "";      

void loop() {

    if(Serial1.available() > 0) {
      msg = "";
      while(Serial1.available() > 0) {
          char read = Serial1.read();
          msg += read;
      }
      Serial1.write('X'); // Acknowledge with reply
    }
    Serial1.println(msg); // Output to console for debugging
    // Should be a number 1-9
    // TODO: further processing

}

На Raspberry Pi я запускаю этот тестовый скрипт:

import time
import serial
import random       
ser = serial.Serial(            
port='/dev/ttyS0',
baudrate = 9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
 timeout=1
)
while True:
    n = random.randint(1,9)
    print("Writing", n)
    ser.write(n)
    time.sleep(1)
    feedback = ser.read()
    print(feedback) // Expecting 'X'

Когда я запускаю сценарий, я не вижу вывода в последовательной консоли, а также пустое сообщение (b'') (обратите внимание на параметр времени ожидания)

Я уже включил последовательную связь с raspi-config и перезапущен. Когда я перечисляю устройства (ls -l /dev/), я вижу:

lrwxrwxrwx  1 root root           5 Apr 28 20:21 serial0 -> ttyS0
lrwxrwxrwx  1 root root           7 Apr 28 20:21 serial1 -> ttyAMA0

В качестве дополнительного теста я запустил minicom -b 9600 -o -D /dev/ttyS0 с 1 проводом, соединяющим RX с TX на pi, и он успешно отозвался обратно.

Есть ли у меня проблема с кодом или возможная проблема с оборудованием? Может быть, так как это подростковый возраст, требуется другой протокол? См. здесь

У меня нет идей относительно того, почему он не общается правильно. Вот моя проводка:

1 Ответ

2 голосов
/ 29 апреля 2020

Линия Rx соединена вместе, а линии Tx соединены вместе. То, что один передает другому, нужно получить. Вам нужно go Tx-Rx и Rx-Tx.

...