Я пытаюсь использовать rx и tx контакты arduino uno для получения символьной строки ASCII от устройства rs485, передающего с 2400 BAUD с 0.100 секунд между передачами, а затем разбора и выводят некоторые части строки на ЖК-экран 16x2, прикрепленный к ардуину. Я получаю некоторые строки данных, как я проверил в своей области, входя в прямоугольную волну с выводом 0-5vdc. Любой, кто с образцом кода, чтобы получить строки ascii rs485 в буфер, был бы полезен.Получение строки ввода с использованием блока прерываний MAX485 для Arduino Uno
ответ
RS485, RS422 и RS232 - разные схемы для аппаратного уровня связи. Под этим я подразумеваю, что эти спецификации описывают только то, что находится на проводе. Набор микросхем приемопередатчика преобразует проволочные сигналы обратно в сигналы логического уровня, которые подключены к Arduino или любому другому устройству. На логическом уровне, который видит Ардуино, любой из сигналов RS___ будет выглядеть одинаково.
USART преобразует поток бит в байты (это может быть программное обеспечение или аппаратное обеспечение). USART не знает о уровнях сигнала на проводе, он работает исключительно на битовом потоке логического уровня. UNO содержит один USART, который доступен на выводах TxRx.
Таким образом, ваш код на микроконтроллере не обязательно должен быть другим, RS232 или RS485. Все образцы серийного кода, которые вы видите, будут работать нормально. Вы сообщаете бонусу Serial library, стоп-битам и паритету, и все готово. Установите последовательное соединение на 2400, и Arduino начнет видеть символы.
Caveat
485 иногда используется в полудуплексном режиме. Это означает, что вы не можете получать и передавать одновременно. Если вы подключаетесь к полудуплексу, то код должен быть уверен, что вы не передаете, пока какое-то другое устройство все еще передает.
спасибо. Считаете ли вы, что скорость 2400 бод слишком быстра? Я передаю по экранированному кабелю с двумя проводами примерно на 60 футов. Кроме того, как я рассказываю ардуину, что я хочу использовать биты начала и конца и паритет? Поскольку im только использует arduino как r eceiver, необходимо ли, чтобы я установил его для передачи также, поскольку мы проверяем паритет, или это не способ установления связи – GoJo2332
Слишком быстро? Нет, 2400 невероятно медленно. Вы используете RS485, потому что дифференциальная сигнализация позволяет использовать большие расстояния с возможностью отклонения наземного шума между передатчиком и приемником. Вы можете запустить 60 футов над обычным RS232. Вы сможете запускать гораздо более высокие скорости передачи данных, начиная не менее 9600. С экранированным кабелем и RS485 вы сможете работать быстрее. Я ожидаю, что вы сможете запустить 115k на таком коротком расстоянии. Обратите внимание на резисторы терминатора, и с вами все будет в порядке. Не тратьте усилия на стоповые бит и четность. Просто установите Serial.begin (9600) и начните работу! – jdr5ca
Очень полезно, спасибо. Я новичок во всем мире компьютеров, студент-электрик. Считаете ли вы, что функция последовательного чтения приведет к символам ascii? – GoJo2332