Связь Arduino с Raspberry Pi с помощью HC-05

Я использую два модуля HC-05 на двух платах Arduino UNO. Один из моих модулей успешно подключен к порту raspberry pi. Однако другой не хочет подключаться, но иногда он это делает, а затем случайным образом отключается. Когда мне удалось подключить оба модуля к порту на pi, у меня был код, написанный для отправки данных в pi и отображения их в терминале, но только один Arduino данные будут отображаться на терминале pi, хотя оба отправляли данные. Есть ли более простой способ подключения модулей? Я использовал инструмент bluetooth manager на pi

void setup() {
 Serial.begin(9600);
 pinMode(8, INPUT); // first sensor input
 pinMode(7, INPUT); // second sensor input
 pinMode(6, INPUT); // third sensor input
 pinMode(5, INPUT); // fourth sensor input

}

void loop()
{

    int sensordata_1 = digitalRead(8); // read status and store it into variable
     {
          if(sensordata_1 == LOW)        //  CAGE 1
          {
            Serial.println("Arduino 1 s1: 1");  // 
          }
          else
          {
            Serial.println("Arduino 1 s1: 0");
          }
          delay(200);

    }
}
void setup() {
 Serial.begin(9600);
 pinMode(8, INPUT); // first sensor input
 pinMode(7, INPUT); // second sensor input
 pinMode(6, INPUT); // third sensor input
 pinMode(5, INPUT); // fourth sensor input

}

void loop()
{

    int sensordata_1 = digitalRead(8); // read status and store it into variable
     {
          if(sensordata_1 == LOW)        //  CAGE 1
          {
            Serial.println("Arduino 2 s1: 1");  // 
          }
          else
          {
            Serial.println("Arduino 2 s1: 0");
          }
          delay(200);

    }
}
import serial
import time

port = serial.Serial("/dev/rfcomm2", baudrate=9600)
port_2 = serial.Serial("
port.flush() # This wil flush any input and output buffer, so it will
#avoid receiving or sending bad data

while True:

    if(port.in_waiting > 0):
        data = port.readline().decode('utf-8').rstrip() # decode will translate
        #the data from unicode to byte
        print(data)

, 👍1


1 ответ


1
  1. порт_2 = последовательный.Последовательный(" скорее всего, это ошибка копирования и вставки с вашей стороны, но ее нужно исправить, если вы хотите, чтобы 2 последовательных порта работали
  2. Вы читаете только из порта в цикле Python while, не касаясь port_2. Именно по этой причине вы видите вывод только с одного последовательного порта
  3. Вы должны использовать надежную систему последовательных пакетов данных. Прямо сейчас у вас нет способа убедиться, что данные, полученные в Python, повреждены или нет. Вы можете легко использовать устанавливаемый на pip пакет Python pySerialTransfer и совместимую библиотеку Arduino SerialTransfer.h (устанавливается через менеджер библиотек Arduino IDE).

Для получения информации о теории надежной последовательной связи ознакомьтесь с учебными пособиями "Основы последовательного ввода" и "Расширенныйпоследовательный ввод".

,