Общение двух Atmega328p по COM порту

Тема в разделе "Arduino & Shields", создана пользователем Rauf, 6 окт 2016.

  1. Rauf

    Rauf Нерд

    Уважаемый Tomasina и вас я благодарю за ваши старания. Спасибо вам огромное.
     
  2. Rauf

    Rauf Нерд

    Приведу скетчи в порядок убрав лишнее и добавлю подробные комменты. Обязательно поделюсь пусть люди которым необходим данный функционал пользуются. Также хочу выразить благодарность создателям форума http://forum.amperka.ru/ Спасибо.
     
  3. Rauf

    Rauf Нерд

    Вот в такой корпус собрал. Нарисовал в CorelDraw. Заказал где рекламные щиты делают. Включил вотчдог и добавил кнопку проверки связи. Проверял через 600 метровую бухту кабеля. Работает без ошибок и ложных событий.
     

    Вложения:

  4. Rauf

    Rauf Нерд

    Код первого устройства собирающего информацию с ИБП
     

    Вложения:

  5. ostrov

    ostrov Гуру

    На 600 м работает без RS485?
     
  6. Rauf

    Rauf Нерд

    Обязательно с RS485 использовал (SN75176BP)
    20170512_153643.jpg 20170512_153630.jpg
     
  7. ostrov

    ostrov Гуру

    Тогда понятно, а то я уж вздрогнул. )
     
  8. Rauf

    Rauf Нерд

    Принцип работы: Два устройства оба на ATMega328P. Первое собирает информацию о состоянии ИБП и отправляет по RS485 на второе устройство один символ, второе устройство получив данный символ отвечает проверочным данному событию символом, первое устройство получив проверочный символ проверяет состояние входа соответствующего данному символу и посылает подтверждающий событие символ. Второе устройство приняв его выдаёт информацию на дисплее и включает лед и световое оповещение. Также имеется циклический опрос устройств на наличие связи. Можно проверить вручную нажав на кнопку тест. Сторож тоже включён.
    Вот код второго устройства. Добрые люди на форуме помогли и я делюсь со всеми готовым проектом. Может кому понадобится. Можно изменить вывод информации на дисплее и использовать под другие задачи. Ещё раз хочу всех поблагодарить за помощь. Спасибо.
     

    Вложения:

    Tomasina нравится это.
  9. ostrov

    ostrov Гуру

    Для повышения надежности попробуйте передачу пакетами с началом, концом и контрольной суммой. Я опытным путем пришел к тому, что так оптимально.

    Хороший пример тут в вики есть, про офисную активность.
     
    Последнее редактирование: 12 май 2017
    Tomasina нравится это.
  10. Rauf

    Rauf Нерд

    Схема с протеуса
     

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      408,2 КБ
      Просмотров:
      229
  11. Rauf

    Rauf Нерд

    Я пробовал сделать проверку чётности но не разобрался в ней.
    Параметры
    speed: скорость в битах в секунду (бодах) - long
    config: задает количество бит данных, проверку четности и стоповые биты. Ниже приведен список возможных значений:

    • SERIAL_5N1
    • SERIAL_6N1
    • SERIAL_7N1
    • SERIAL_8N1 (по умолчанию)
    • SERIAL_5N2
    • SERIAL_6N2
    • SERIAL_7N2
    • SERIAL_8N2
    • SERIAL_5E1
    • SERIAL_6E1
    • SERIAL_7E1
    • SERIAL_8E1
    • SERIAL_5E2
    • SERIAL_6E2
    • SERIAL_7E2
    • SERIAL_8E2
    • SERIAL_5O1
    • SERIAL_6O1
    • SERIAL_7O1
    • SERIAL_8O1
    • SERIAL_5O2
    • SERIAL_6O2
    • SERIAL_7O2
    • SERIAL_8O2
     
  12. ostrov

    ostrov Гуру

    Да зачем, просто еще один байт в пакете который получается суммой (разницей, умножением и тп) байтов с данными. Приемное устройство сверяет это соответствие, если хоть один бит кривой, то пакет игнорируется.
     
  13. Rauf

    Rauf Нерд

    Если написать Serial.begin(9600, SERIAL_8E1) достаточно ли этого для проверки? Как это происходит? Не могу найти точного описания процесса.