Отправка значения с одного Arduino на другой

Интересно, можно ли отправить значение с одного Arduino на другое?

По сути, у меня есть один Arduino, измеряющий, скажем, вес, но я хочу отобразить это значение с помощью ЖК-дисплея в другом Arduino. Можно ли отправить значение на вывод с помощью аналоговой записи или цифровой записи в Arduino, выполняющем измерение, и использовать аналоговое/цифровое чтение в другом Arduino, производящем отображение?

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

, 👍5


3 ответа


Лучший ответ:

4

Вы можете сделать ЖК-контроллер Arduino ведущим устройством I2C, а все платы Arduino для взвешивания — ведомыми устройствами. Здесь приведен пример связи и подключения ведущего/ведомого устройства: https://www.arduino.cc/en/Tutorial/MasterReader.

I2C поддерживает до 128 устройств, подключение очень простое.

,

Именно то, что я тоже искал, спасибо!, @BrandonS


2

Да, это возможно. В ответе представлен один из основных способов сделать это.

Соединения

   Arduino1          Arduino2
     TX--------------->RX
     RX--------------->TX   

Программа Arduino1:

void setup(){
 Serial.begin(9600);
 delay(2000);
}

void loop() {
 ////считываем данные датчика в переменную
 Serial.println(sensorDataVariable);
 delay(2000); //Не заливать последовательный порт
}

Программа Arduino2:

int byteRead;
void setup(){
 Serial.begin(9600);
 delay(2000);
}

void loop() {
  /* check if data has been sent from the computer: */
  while (Serial.available()) {
    /* read the most recent byte */
    byteRead = Serial.read(); //теперь byteRead будет иметь последний датчик
                              // данные отправлены с Arduino1
  }
  //Напишем код для отображения значений на ЖК-дисплее
}

надеюсь, это поможет

,

Будет ли этот вариант ограничен только двумя Arduino? Мне бы хотелось, чтобы несколько Arduino передавали значения веса центральному Arduino., @Camilo

вы можете использовать эскиз Arduino 2 на всех других приемниках, широко использовать форму одного Arduino и получать от многих, вам следует провести больше исследований, @Lokanath

Как мы можем этого добиться, если нам хотелось бы сделать наоборот? Arduino 2 отправляет данные в Arduino 1., @Sabhay Sardana


1

Чтобы связать несколько Arduino вместе, вам необходимо придумать какую-то сетевую топологию и какой-то сетевой протокол.

Требования:

  1. Ардуино не должны (электрически) мешать друг другу.
  2. Должен быть какой-то способ узнать, какой Arduino что и куда отправляет

Эти две проблемы можно решить, создав отдельное соединение для каждого Arduino, но это в конечном итоге усложняется, и ресурсы Arduino для создания таких соединений ограничены (вам действительно нужно использовать аппаратные порты UART, а Uno имеет только 1. У Меги их 4).

Лучшее решение — использовать шинную систему (также известную как многоабонентская сеть). Для этого существует ряд существующих и хорошо поддерживаемых методов. В автомобильной системе используется CAN-шина. В промышленности широко используется система RS-485.

Лично я предпочитаю RS-485, поскольку он хорошо зарекомендовал себя. Существует ряд стандартных протоколов, работающих на RS-485, например MODBUS, но для мира Arduino я написал свой собственный легкий протокол, с которым гораздо проще работать. Вы можете узнать больше здесь: https://github.com/MajkoLibraries/ICSC

,