Всем привет!
Хочу сделать свою сеть которая будет рулиться своими микроконтроллерами, со своими алгоритмами, в случае если упал сервер. Я не очень понял логику работы модулей. Могу я создать Совой протокол по Uart? Может ткнете меня в статейку?
Извиняюсь за глупысе вопросы, но за несколько подходов так и не смог понять как это сделать.
Свой протокол через CP2102 по UART
Модератор: immortal
Re: Свой протокол через CP2102 по UART
Статейку не назову. Ни разу не встречал статьи, где все вопросы были бы разжеваны в доступном виде. Информация разбросана по разным статьям и учебникам, ее много, но время на изучение продется потратить изрядно.alex_403 писал(а):Всем привет!
Хочу сделать свою сеть которая будет рулиться своими микроконтроллерами, со своими алгоритмами, в случае если упал сервер. Я не очень понял логику работы модулей. Могу я создать Совой протокол по Uart? Может ткнете меня в статейку?
Отмечу, что я как раз занят ровно тем самым - не спеша создаю свой протокол для UART, чтобы модули могли работать автономно, без центрального сервера. Использую шинные формирователи CAN, кабель - UTP Cat5/Cat6, одна витая пара - данные, одна пара - земля, одна - питание +12В, одна пара запасная. Протокол обмена двухуровневый:
- Сообщения "точка-точка" используются для настройки сети.
- Широковещательные сообщения используются модулями для обмена информацией по принципу "производитель-потребитель", так же, как это сделано в CAN, KNX, C-bus. На этом уровне используется протокол MQTT-SN.
Сейчас отлаживаю шлюз между сетью и ПК. Шлюз соединен с ПК по USB, сеть гальванически развязана. Шлюз сделан на микроконтроллере PIC24, но можно сделать и на CP2102. Разница в основном в том, как быстро шлюз реагирует на коллизии на шине. На микроконтроллере отреагирует быстрее, но существенного значения это не имеет.
Re: Свой протокол через CP2102 по UART
Спасибо что откликнулись!
Сам работал с pic24 лет 5, сейчас перешел на stm32. CP2102 я буду использовать только как USB <-> UART. Все будет обрабатывать проц. Какая сеть особо не играет роли. Планировал rs485 со своим протоколом. Примерно похож как работает nrf24l01+. Подтверждения с полезными данными, ретрансмиты и тп.
Гальванически можно просто ADUM на UART кинуть, работает замечательно:)
Вы бы не могли помочь в какую сторону копать? Чтоб сервер мог по ком парту отправлять данные?
Сам работал с pic24 лет 5, сейчас перешел на stm32. CP2102 я буду использовать только как USB <-> UART. Все будет обрабатывать проц. Какая сеть особо не играет роли. Планировал rs485 со своим протоколом. Примерно похож как работает nrf24l01+. Подтверждения с полезными данными, ретрансмиты и тп.
Гальванически можно просто ADUM на UART кинуть, работает замечательно:)
Вы бы не могли помочь в какую сторону копать? Чтоб сервер мог по ком парту отправлять данные?
Re: Свой протокол через CP2102 по UART
Я имел ввиду, что в моем случае в качестве шлюза можно использовать "голый" CP2102 (плюс, CAN драйвер, естественно). Тогда вся обработка ложится на ПК. Однако я делаю шлюз на PIC24, чтобы разгрузить ПК от низкоуровневой обработки. Конкретно PIC24FJ64GB004, в который встроен USB FS, так что с USB проц разговаривает напрямую.alex_403 писал(а): CP2102 я буду использовать только как USB <-> UART. Все будет обрабатывать проц.
Например, в моем протоколе предусмотрен NACK. То есть, устройство, "не расслышавшее" сообщение (скажем, CRC не совпало), может послать NACK, и тогда то же самое сообщение будет повторено еще раз. Такие нюансы реализации лучше возложить на микроконтроллер, а не на ПК.
Увы, RS485 не позволяет строить протоколы типа "производитель-потребитель". А большинство протоколов домашней автоматизации построено именно по принципу "производитель-потребитель", и это сделано неспроста. Поэтому RS485 мне не подходит принципиально. На нем можно строить протоколы типа "мастер-слэйв" или "пир-то-пир", а это совсем другая парадигма. В домашней автоматике иногда используют Модбас ("мастер-слэйв") и LONworks ("пир-то-пир"), но у них есть серьезные ограничения, поэтому они не настолько популярны как, например, KNX, который "производитель-потребитель" ("producer-consumer").alex_403 писал(а): Какая сеть особо не играет роли. Планировал rs485 со своим протоколом.
Я использовал ADM3054alex_403 писал(а): Гальванически можно просто ADUM на UART кинуть, работает замечательно
Не понял. А в чем, собственно, вопрос? Просто открываете порт и отправляете данные.alex_403 писал(а): Вы бы не могли помочь в какую сторону копать? Чтоб сервер мог по ком парту отправлять данные?