Я пытаюсь связаться от моего малинового 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, и он успешно отозвался обратно.
Есть ли у меня проблема с кодом или возможная проблема с оборудованием? Может быть, так как это подростковый возраст, требуется другой протокол? См. здесь
У меня нет идей относительно того, почему он не общается правильно. Вот моя проводка: ![](https://i.stack.imgur.com/N9Z9L.jpg)