Способы связи между двумя Arduino?
У меня есть две схемы, одна из которых имеет сверхзвуковой датчик, а другая-релейный модуль. Поэтому я пытаюсь установить связь между этими двумя, чтобы отправлять и получать данные. Я просто хочу знать, какой способ лучше всего подходит, чтобы один arduino отправлял данные только тогда, когда другой работает и может получать данные. Так что нет никаких проблем, когда одна цепь включена, а другая нет, и данные не передаются, пока не будет установлено соединение между ними .Это происходит потому, что цепи питаются от разных источников питания, и ток не предсказуем, и я не хочу, чтобы между ними возникало какое-либо недопонимание.
любой способ хорош, как rf, Wi-Fi или какие-то другие методы? Использование других устройств также является опцией, такой как ESP32, который имеет встроенный Wi-Fi и Bluetooth, но проводная связь невозможна, потому что расстояние слишком велико, как около 15-17 метров, и использование одного и того же источника питания не жизнеспособно по той же причине. Скажите мне также, не беспокоит ли меня расстояние?
2 ответа
Один из способов-периодически посылать запрос "Алло?". Если вы не получите ответ "Привет, я здесь", то не отправляйте свои данные. Эти вызовы и ответы могут быть такими же простыми, как пара постоянных байтов, которые не будут появляться в ваших данных. Хозяин посылал его и коротко ждал, пока раб повторит. Если хозяин отключается, это означает, что раб еще не проснулся.
Обновление:
какой способ коммуникации является жизнеспособным вариантом
Диапазон Bluetooth 2 обычно указывается как ~10 метров, но это звучит консервативно, если условия (отсутствие препятствий, отсутствие или ограниченные помехи) и антенны хороши. Но если это не подходит, есть другие радиочастотные технологии, которые предназначены для более длительного диапазона.
Я знаю, но как это похоже на bluetooth или Wi-Fi с одним в AP или rf что-то в этом роде, @rohithrathod banoth
Это должно работать так же хорошо по радиосвязи. Или, может быть, я не понимаю вашего вопроса., @JRobert
Я спрашиваю, какой способ общения является жизнеспособным вариантом., @rohithrathod banoth
Пусть ультразвуковой модуль транслирует измерения и не заботится о том, слушает кто-нибудь или нет. Если вы используете Wi-Fi, вы можете отправить сообщение на широковещательный адрес используемой вами сети. Тогда ультразвуковому модулю не нужно ничего знать о приемнике, например, ip-адрес или количество приемников. Единственное, что вам нужно сделать, это убедиться, что они находятся в одной подсети. Если вы хотите, вы можете позже поместить другой модуль в ту же подсеть, и он также будет получать данные.
Если вы устанавливаете протокол рукопожатия, это все усложняет, потому что есть так много случаев, которые вам нужно рассмотреть. Что должно произойти, если канал связи умирает после рукопожатия, но до передачи данных? Должен ли получатель подтвердить данные? Что должен делать отправитель, если он не получает подтверждения? и так далее...
Если отправитель использует рукопожатие только для того, чтобы знать, отправлять данные или нет, то просто отправьте их и забудьте об этом. Если это было сделано для того, чтобы сделать что-то особенное, в случае отсутствия приемника, например, протоколировать данные и отправить журнал, когда приемник вернется в Сеть, то есть вариант использования для рукопожатия.
- Сдвиг фазы квадратной волны Arduino на 270 градусов
- связь между двумя arduino с помощью ENC28J60?
- Не удается подключить мой ESP-12F к Wi-Fi с моим Arduino Uno
- nRF24L01 - пропускает конечные символы во время передачи
- nRF24L01+ Невозможно установить адрес
- Основная связь Arduino ModBus RTU с проблемой измерителя мощности
- Отправка значения с одного Arduino на другой
- Связь Arduino master/slave с использованием RS485
"данные не отправляются, пока не будет установлена связь между ними" не имеет смысла ... это похоже на то, как если бы вы были в лесу, пытаясь найти кого-то, но вы не зовете его по имени, пока не будете уверены, что он вас слышит, @jsotola
Это не похоже на то, что ардуино не должен отправлять какие-либо данные, просто он не должен отправлять данные для обработки, такие как значение с ультразвукового датчика, пока он не будет подключен к другому arduino, @rohithrathod banoth
почему бы не отправить данные? ... если это подтверждено, то вы закончили, в противном случае повторите передачу данных до тех пор, пока они не будут подтверждены, @jsotola
По Wi-Fi вы можете использовать протокол на основе tcp. Прежде чем вы сможете отправлять данные, вам необходимо установить соединение с сокетом. Если это сработало, одноранговый узел должен быть запущен. Если одноранговый узел отключится, вы получите уведомление , если он отключится во время отправки, протокол не подтвердится, и по истечении тайм-аута вы узнаете, что данные не были отправлены. Затем вы можете возненавидеть его, как только соединение будет восстановлено. Bluetooth обрабатывает рукопожатие также для вас, вам необходимо подключить одноранговые узлы, прежде чем вы сможете отправлять данные. Существует также возможность использования сервера очередей. Наиболее распространенным для интернета Вещей является сервер MQTT., @Peter Paul Kiefer
И да, я бы рекомендовал использовать платы ESP32. Я не знаю, существуют ли полезные реализации TCP для простого ардуино., @Peter Paul Kiefer
Диапазон в режиме ap очень мал для платы esp32, как и для тестирования, которое я провел. Так что, возможно, кто-нибудь может предложить другой способ, и поблизости нет сети Wi-Fi, к которой они оба могли бы подключиться., @rohithrathod banoth