Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Подключение выхода RS485 к Raspberry Pi[Android Things]

Автор вопроса: ABIОтветов: 2

Только начал работать над Raspberry Pi с вещами Android, у меня есть датчик, который дает выход через кабели RS485, я хочу передать этот вывод на Raspberry Pi, исследовал, но не нашел подходящего решения для того же самого. Если кто-то делал такие вещи до вас помогите мне выполнить подключение либо с помощью преобразователя, либо с помощью MAX 485

Каков наилучший способ получить вывод с RS485 на RPi? Как это могло быть достигнуто? Заранее спасибо

androidraspberry-pi3gpiors485android-things

Ответы

Ответ 1 · рейтинг 1 · devunwired

Интерфейс UART на большинстве аппаратных средств совместим с этими типами датчиков. По умолчанию контакты UART на плате/модуле работают на логических уровнях TTL. а>. Электрические стандарты, такие как RS-232 и RS-485, используют один и тот же базовый протокол, но изменяют выходное напряжение и конфигурацию сигнальных линий.

Так что в вашем случае вам просто нужно найти преобразователь между TTL и RS-485, такой как MAX485, о котором вы упомянули. Подключите его к любому из доступных UART на вашей плате и используйте тот же периферийный I/ O API для связи с ним из Android Things.

Ответ 2 · Pathead

Я не знаком с Android Things, но, надеюсь, это укажет вам правильное направление... Я добился большого успеха, используя преобразователь USB в 485 и minimalmodbus библиотека python на Raspberry Pi. Ниже приведен пример кода, который я использовал в прошлом. Это довольно просто, но должно помочь вам начать.

import minimalmodbus
import serial

usbDevice = '/dev/ttyUSB0'

modbusSlaveID = 1

# can be 'ascii' or 'rtu'
modbusFormat = 'rtu'

registerToRead = 64

# 3 is for Holding Registers, 4 is for Input Registers
functionCode = 3

# initialize the device
device = minimalmodbus.Instrument(usbDevice, modbusSlaveID, modbusFormat)

# set the various options, which will depend on the device you are communicating with
device.debug = True
device.serial.baudrate = 9600
device.serial.bytesize = 8
device.serial.parity = serial.PARITY_NONE
device.serial.stopbits = 1
device.serial.timeout = 2   # seconds

print device.read_register(registerToRead, functioncode=functionCode)

p.s. Это мой первый ответ, надеюсь, я сделал это правильно...

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы