Последовательная связь с Raspberry pi

Как мы можем осуществлять последовательную связь, используя Raspberry Pi со скриптом Python для отправки/получения данных на мой ноутбук? Если да, можем ли мы использовать кабель RS232 для прямого подключения к портам TX/RX на Raspberry Pi? Если да, то какие контакты необходимо использовать на кабеле RS232? Было бы полезно, если бы кто-нибудь мог опубликовать пример скрипта Python?

Поскольку моей первой целью является отправка/получение данных на ноутбук в/из raspberry pi, я использую кабель RS232-USB на обоих концах для подключения к ноутбуку, а также к raspberry pi.


person Randu    schedule 09.07.2013    source источник


Ответы (5)


RS-232/RS-485 к ПК и USB к ПК

Для RS-232

1) Загрузите Putty.

2) Купить модуль последовательного порта RS232 в TTL Converter и последовательный кабель RS-232 для ПК.

3) Следуйте инструкциям в разделе Подключение к микроконтроллеру или другому периферийному устройству по этой ссылке. На самом деле прочитайте все это для лучшего понимания.

4) Подайте на модуль преобразователя напряжение 3,3 В (контакт 1) или 5,0 В (контакт 2), подключите контакт Rxd модуля к Rxd (контакт 8) на Rpi, а контакт Txd к Txd (контакт 10) на Rpi.

5) Подключите кабель RS-232 (от ПК) к модулю преобразователя.

Теперь вы готовы заняться программированием на Python. Но перед этим убедитесь, что у вас есть библиотека с именем serial для python для создания связи. Вы можете легко получить его через терминал, набрав sudo apt-get install python-serial. Также вы увидите, что скорость передачи данных в коде равна 7200. Она может быть меньше или больше в зависимости от синхронизации. Также убедитесь, что скорость передачи должна быть одинаковой для putty и COM1, который является портом, через который RS-232 подключен к вашему ПК. Вы можете проверить и установить его из диспетчера устройств в Windows. Между прочим, тайм-аут — это промежуток времени между каждым полученным вами сообщением.

Если вы не можете запустить код из режима ожидания (такое случается с некоторыми библиотеками), сделайте это в терминале. Для этого перейдите в папку, в которой вы храните свой код Python, и введите python name.py.

    import serial
    import time


    def readlineCR(port):
        rv = ""
        while True:
        ch = port.read()
        rv += ch
        if ch == '\r' or ch == '':
             return rv


    port = serial.Serial("/dev/ttyAMA0", baudrate = 7200, timeout = 2)

    while True: 
         rcv = readlıneCR(port)
         port.write("I typed: " + repr(rcv))
         print(rcv)

Для последовательного подключения USB к ПК

У вас есть два варианта

Во-первых, вы можете купить USB-ключ для RS-232/RS-485, чтобы не будет использовать контакты GPIO. Но лучше приобрести USB-концентратор для всех мышей, клавиатур и ключей.

Во-вторых, что проще, вы можете купить Конвертер FTDI USB в TTL и использовать GPIO для последовательной связи с Rpi. Код для этого точно такой же, как и выше. Подключение для этого простое.

Модуль -- Rpi

Передать --> Передать

Rxd -- > Rxd

Земля ---> Земля

person Cugomastik    schedule 07.07.2014

Последовательный порт Raspberry Pi использует логику 3,3 В; RS232 использует 12 В, поэтому для использования этих контактов потребуется переключатель уровня, поэтому вы не можете использовать RS232 напрямую.

Последовательный интерфейс в Python с использованием модуля PySerial (http://pyserial.sourceforge.net), довольно просто отправить и получить данные. В документации есть примеры, но по существу для отправки данных:

import serial
port = serial.Serial(portname, baudrate, timeout)
port.write("message to send")
port.close()

Это зависит от того, что вы делаете с данными и какие данные вы получаете, чтобы решить, как лучше всего получать данные, но очень простой пример:

import serial
port = serial.Serial(portname, baudrate, timeout)
data = port.read(numberofbytes)
print data

Это просто ждет, пока не будет получено указанное количество байтов или не будет достигнуто значение тайм-аута.

Вы можете использовать port.inWaiting(), чтобы вернуть количество байтов, находящихся в настоящее время в буфере.

person beesbees    schedule 09.07.2013
comment
Спасибо за ответ .. но моя идея заключалась не в том, чтобы использовать переключатель уровня. Вместо этого я бы использовал кабель USB-последовательный порт для подключения к портам USB как на Raspberry Pi, так и на ноутбуке. В этом случае нам не нужен переключатель уровней, верно? Я попробовал эти коды, подключив ноутбук к RPi с помощью последовательного кабеля USB к последовательному порту... но получаю следующее сообщение об ошибке: Traceback (последний последний вызов): файл test02.py, строка 2, в ‹module› import серийный ImportError: Нет модуля с именем серийный Означает ли это, что я должен установить какие-либо новые модули ..? - person Randu; 10.07.2013

Вы пытаетесь отдавать команды Raspberry Pi? (как консоль?) Я бы предложил обычный кабель jane 3.3V FTDI. Вы можете получить их на Digikey. или Sparkfun. Примечание: Raspberry Pi работает от 3,3 В, поэтому вы должны быть уверены, что все, что вы подключаете к нему, работает на 3,3 В или имеет переключатель уровня. Дополнительную информацию о переключателях уровней см. здесь. (перейдите к разделу Уровни логического напряжения)

Во-первых, вам нужно убедиться, что Raspbian выпустил последовательную консоль. Вы можете сделать это с помощью скрипта, расположенного здесь.

Если вас больше интересует общение с другими устройствами, возможно, вам подойдет следующее:

У тебя есть ардуино? Вы можете запустить простой тест, поместив этот скетч на Arduino:

#define SERIAL_BAUD 115200

void setup() {

  //Init serial connection
  Serial.begin(SERIAL_BAUD);
  Serial.setTimeout(1);

}

void loop() {

  if ( Serial.available() ) {
    byte type = Serial.read();
    Serial.write(type);
  }

}

И подключите его, используя следующую схему:

Подключение Arduino к Raspberry Pi

Примечание: убедитесь, что вы не подключаете USB-кабель к Arduino. Он будет питаться от Raspberry Pi.

Затем вы можете установить и запустить screen. Экран — это очень простой способ подключения к последовательному порту.

apt-get install screen

Затем выполните следующее:

screen /dev/ttyAMA0 115200

Экран будет пустым. Но когда вы начнете печатать, вы заметите, что символы, которые вы пишете, возвращаются на ваш терминал.

Примечание. Если экран по-прежнему пустой, вам следует дважды проверить соединения (хорошо проверить индикатор питания на Arduino).

Если вы сомневаетесь, вы можете увидеть весь мой пример здесь.

person jaredwolff    schedule 10.03.2014

вы должны установить библиотеку python для последовательных драйверов. вы не можете использовать rs232 напрямую, вместо этого вы можете использовать чип max232 между контактами rx (gpio15) tx (gpio 14) и вашим преобразователем USB в последовательный порт. или вы можете использовать последовательный кабель usb to ttl от adafruit. вот ссылка для установки: http://learn.adafruit.com/adafruits-raspberry-pi-lesson-5-using-a-console-cable/overview

person shreyas_patel21    schedule 02.10.2013

Последовательная связь в Raspberry pi.

Существует множество вариантов последовательной связи

  1. Используйте плагин Visual GDB в Visual Studio и удаленно развертывайте код в Raspberry Pi.

и зациклите контакты txd и rxd и проверьте, получено ли сообщение отправки или нет.

  1. Если вы знакомы с java, установите pi4j и в папке с примерами есть пример программы, скомпилируйте и запустите с помощью терминала. и проверьте вывод.

  2. если вы подключаетесь с помощью RS232 и Max232, обратите внимание, что используется 3,3 В, а не 5 или 12 В. , это может сжечь вашу плату.

person Arun Chand    schedule 04.12.2013