нужна помощь по связи нескольких ардуино
- Войдите на сайт для отправки комментариев
Ср, 29/05/2019 - 19:15
Добрый день. Подскажите пожалуйста может быть есть какая нибудь библиотека, что бы организовать связь нескольких ардуино по RS 485. В сети есть одна ардуино, назовем ее MASTER, которая переодически должна опрашивать другие, навовем их SLAVE, назвав их ID. В зависимости какой ID запросили та и должна ответить. Пока что у меня получилось просто органивовать что бы одна передавала а другая принимала с помощью библиотеки SoftEasyTransfer.h. А вот что бы по запросу не получается.
Посмотрите ТУТ, с 56 урока. Очень грамотный автор.
Смотрите в сторону modbus.
Modbus - это при наличии ус-в которые этот протокол поддерживают. А если для себя, то можно и свой (попроще) написать. Да и 485 зачастую лишний.
Посмотрите ТУТ, с 56 урока. Очень грамотный автор.
Да, у Эдуарда отличные уроки
Вот и хотелось бы "для себя" думал что библиотека есть. За уроки спасибо разбираюсь
Сначала требования выработайте. Скорость, расстояние, макс. кол-во ус-в, какой объём инфо, как часто и т.п. От этого и будет зависеть простота.
В деревне на участке есть несколько не связанных между собой устройств на Ардуино. (управление воротами, освещения участка, управление эл. Котлом, управление теплицей, управление домом, сигнализация возможно в будущем появиться ещё что то) хочу собрать все в одну сеть что бы дома посмотреть температуру в теплице ну и так далее. Отсюда и требования скорость не важна, объем несколько переменных, Макс устройств ну скажем 10, настояние метров 50 максимум
под такое просится радиоканал, а не проводной 485
Написать конечно можно, но вот под задачи TC modbus подходит идеально. Библиотеки есть. Один мастер опрашивает слейвы. Каждый слейв имеет свой адрес. Поддерживает 485 в полном объёме. Проще протокола не знаю. Зачем выдумывать велосипед?
Хотя бы за тем что бы понимать процесс. А так конечно - зачем думать.)
Ну да, для 50 м желательно RS485 с грозой. Ну а протокол может быть очень простым. Т.к. скорость и объёмы не нужны - можно в ASCII.
Пакет будет состоять из ADR - адреса получателя, CMD - команды, DAT - даных, CS - контрольной суммы. END - признак конца пакета. Для упрощения поле DAT - может иметь фиксированную длину. Обмен по инициативе мастера, который адресует ведомого, выдавая команду и данные (если нужно). Ведомый, обнаружив свой адрес (после END), формирует ответ с тем же ADR и CMD, с требуемыми данными. Контрольная сумма - обычно CRC16.
Ведомые, в случае искажения пакета ничего не делают. Мастер повторяет запрос по таймауту, в случае отсутствия ответа ведомого либо при ошибке КС. Для исключения коллизий, перед отправкой пакета канал связи прослушивается на предмет занятости.
Всё. Никаких жестких временных рамок. Номера ус-в обычно задаются перемычками на Ардуино - это просто и железно. Скетч один - мастер/ведомый определяются по перемычкам.
Ну кроме фиксированной длины посылки Вы описали modbus.
Общее - только структура пакета, и то в общем виде. А так никаких сплошных потоков с паузами 1,5/3,5 периода символа, никаких хитрых функций с параметрами, никаких кодов ошибок. Простенько и понятненько).
А ещё можно взять CAN, заставить "слейвов" пушить данные в шину, а "мастером" просто её слушать, записывать отчёты в лог, выдавать на экран (или куда надо). Коллизии и пр. разрулятся на железном уровне.
Общее - только структура пакета, и то в общем виде. А так никаких сплошных потоков с паузами 1,5/3,5 периода символа, никаких хитрых функций с параметрами, никаких кодов ошибок. Простенько и понятненько).
Только надо всё это написать, отладить. И потоки и паузы придётся выдумывать. И хитрые функции. Может быть у Вас есть что то готовое, в виде библиотеки, как просил ТС в первом посте? Из готового я знаю только modbus. А Вы?
Из готового я знаю только modbus. А Вы?
virtualWire ?
ДА, modbus это то что мне надо. Не могли бы Вы помочь мне в нем разобраться. Перечитал и перепробовал кучу примеров толком не работает. Для начала упростил задачу. Мастер Мега, два слейва нано, с первого опрашиваются переменные типа int со второго температура с датчика DS 18b20. Помогите с рабочим скетчем, готов понести материальные затраты.
Не надо затрат. Прочитайте тему http://arduino.ru/forum/programmirovanie/modbus-rtu посмотрите на какие грабли наступали люди. Там есть полные рабочие коды по Вашим хотелкам.
Отпишитесь когда что то получится.