Raspberry pi управление uart

How to setup the UART on Raspberry Pi 3

Introduction to the UART setup

In this article we will try to setup the UART on the Raspberry Pi 3 and Raspberry Pi Zero W running the latest debian “Jessy” release of the kernel. This used to be pretty easy on the previous versions of the Raspberry Pi models but on the Raspberry Pi 3 model it is a little bit different.
The BCM2837 on the Raspberry Pi3 has 2 UARTs (as did its predecessors), however to support the Bluetooth functionality the fully featured PL011 UART was moved from the header pins to the Bluetooth chip and the mini UART made available on header pins 8 and 10. Hence, the miniUART is now available on /dev/ttyS0 .
Now the bluetooth module occupies the UART channel /dev/ttyAMA0 which on previous models was used as the primary serial GPIO UART interface.
So on the Raspberry Pi 3, the UART hardware interface used for the Bluetooth is named /dev/ttyAMA0 and the new UART connected to pins 8 and 10 on the GPIO connector J8 is named /dev/ttyS0 .

Unfortunately there are a number of other consequences:

The mini UART is a secondary low throughput UART intended to be used as a console.
The mini UART has the following features:

  • 8 symbols deep FIFOs for receive and transmit.
  • 7 or 8 bit operation.
  • 1 start and 1 stop bit.
  • No parities.
  • Break generation.
  • SW controlled RTS, SW readable CTS.
  • Auto flow control with programmable FIFO level.
  • Baudrate derived from system clock.

There is no support for parity and the throughput is limited, but the latter should not affect most uses.

Before beginning, there is usually wise to update your installation to the latest version of the debian “jessy”:
First, update your system’s package list by entering the following command:

To find the kernel version and distribution version, run:
Kernel version:

Some issues:
There is an issue with some of the releases of jessy which makes the UART work not as intended in some situations:
See post on raspi org here.
And follow up post on git here.

Setup UART on the raspi 3 GPIO

For some strange reason the default for Pi3 using the latest 4.4.9 kernel is to DISABLE UART. To enable it you need to change enable_uart=1 in /boot/config.txt . (There is no longer necessary to add core_freq=250 to fix the core frequency to get stable baudrate.)
If you don’t use Bluetooth (or have undemanding uses) it is possible to swap the ports back in the Device Tree. There is a pi3-miniuart-bt and pi3-disable-bt module which are described in /boot/overlays/README here. See end of this article on how to do this.

As mentioned, by default the new GPIO UART is not enabled so the first thing to do is to edit the config.txt file to enable the serial UART:

To check where your serial ports are pointing you can use the list command with the long “ -l ” listing format:

In the long listing you will find:
serial0 -> ttyS0
serial1 -> ttyAMA0

Thus on a Raspberry Pi 3 and Raspberry Pi Zero W, serial0 will point to GPIO J8 pins 8 and 10 and use the /dev/ttyS0 . On other Raspberry Pi’s it will point to /dev/ttyAMA0 .

So where possible refer to the serial port via it’s alias of “serial0” and your code should work on both Raspberry Pi 3 and other Raspberry Pi’s.

Disabling the Console (if required)

By default the Raspberry Pi uses the serial port for the “console” login and via a software service called “getty”.
If you are using the serial port for anything other than the console you need to disable it. This will be slightly different depending on whether you are running a Raspberry Pi 3 or not.
For non Raspberry Pi 3 machines, remember it’s /dev/ttyAMA0 that is linked to the getty (console) service.

For Raspberry Pi 3’s the command is referencing /dev/ttyS0:

You also need to remove the console from the cmdline.txt. If you edit this with:

remove the line: console=serial0,115200 and save and reboot for changes to take effect:

To Enable the Serial Console edit the file using:

Exit and save your changes.
Reboot for the changes to take effect.

Test your UART with Python and a terminal emulator

Now, on the Raspberry Pi, type the following code into a text editor, taking care to get the indentation correct:

Save the result as file serialtest.py, and then run it with:

If all is working, you should see the following lines appearing repeatedly, one every 3 seconds, on the terminal emulator:

Say something:
You sent:”
Try typing some characters in the terminal emulator window. You will not see the characters you type appear straight away – instead you will see something like this:

Say something:
You sent:’abcabc’

Swapping the Serial Ports on Raspberry Pi 3

If you don’t want to use the Bluetooth and you want that high performance /dev/ttyAMA0 back on the GPIO, you can do this via a device overlay called “pi3-miniuart-bt” i.e. use the mini-uart ( /dev/ttyS0 ) for Bluetooth.

To use add the following line to the /boot/config.txt

Save and reboot for changes to take effect.

You can check that it has worked by:

Swapped Raspberry PI 3 serial port aliases

If you want to disable the bluetooth all together, another overlay is available:

Источник

Подключение через SSH, SFTP и UART к терминалу Linux на Raspberry Pi, Orange Pi и Banana Pi

Для управления и настройки мини компьютеров Raspberry Pi, Orange Pi или Banana Pi на базе ОС Linux, не всегда нужны монитор, мышь и клавиатура. Особенно когда мы используем эти платы в качестве серверов: Web, SVN, GIT, Tomcat и др.. Иногда подключение какой либо периферии физически не является возможным, тогда на помощь нам приходят протоколы SSH и SFTP.

Также можно подключиться и через USB в TTL последовательный кабель, иногда называемый консольным кабелем. Этот кабель позволяет вам получить доступ к командной строке вашего мини компьютера, подключив USB-конец к компьютеру, а другой конец — к определенным пинам GPIO на плате.

Из wikipedia: SSH — это сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). SSH происходит от английского термина Secure Shell и переводиться как «безопасная оболочка».

Данный протокол сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования, позволяет безопасно передавать в незащищённой среде практически любой другой сетевой протокол.

Из wikipedia: SFTP — протокол прикладного уровня, предназначенный для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Протокол разработан группой IETF как расширение к SSH-2, однако SFTP допускает реализацию и с использованием иных протоколов сеансового уровня. SFTP происходит от английского термина SSH File Transfer Protocol.

Протокол предполагает, что он работает поверх установленного безопасного канала, что сервер уже аутентифицировал клиента и что идентификатор клиента доступен протоколу.
Сервер SFTP обычно использует порт 22.

SSH File Transfer Protocol не является протоколом FTP работающим поверх SSH — это другой, новый протокол. Также SFTP иногда путают с Simple File Transfer Protocol из-за совпадающего сокращения «SFTP».

Подключение по SSH и SFTP

Находим IP адрес

  1. Заходим по адресу http://192.168.0.1 или http://192.168.1.1 и вводим логин и пароль, обычно это admin/admin;
  2. Ищем список подключённых клиентов, в моём случае — это DHCP>Список клиентов DHCP. Здесь находим наш Orange Pi/Raspberry Pi/Banana Pi.

Подключение по SSH с помощью PuTTY

PuTTY — свободно распространяемый клиент для различных протоколов удалённого доступа, включая SSH, Telnet, rlogin. Также имеется возможность работы через последовательный порт. Программа в установке не нуждается, что делает её портативной.

  1. Запускаем PuTTY, из Category выбираем Session, тип соединения (Connection type) SSH, пишем IP адрес (Host Name (or IP address)), порт (Port, обычно это 22), в графе Saved Sessions указываем имя сессии и нажимаем на кнопку Save, чтобы сохранить параметры подключения и не набирать их в дальнейшем (не относится к логину и паролю). Теперь, чтобы подключиться нажимаем Open;
  2. В окне Putty Security Alert нажимаем на Yes, чтобы в дальнейшем не видеть этого предупреждения;
  3. Далее вводим логин и пароль. Также можно скопировать данные в буфер обмена, а потом вставить их кликом правой кнопки мышки;
  4. Собственно вот так и осуществляется подключение по SSH в Putty. Примерно вот так выглядит «Рабочий стол» Armbian на Orange Pi PC:

Подключение по SFTP с помощью WinSCP

WinSCP — это графический клиент SFTP (SSH File Transfer Protocol) для Windows с открытым исходным кодом. Он также поддерживает (устаревший) протокол SCP (Secure Copy Protocol). Предназначен для защищённого копирования файлов между компьютером и серверами, поддерживающими эти протоколы.

  1. Запускаем WinSCP и выбираем New Site, чтобы создать новое подключение;
  2. Выбираем тип соединения (File protocol) SFTP, в графе Host name пишем имя хоста или, в моём случае, IP адрес, а в Port number — порт 22. Задаём имя пользователя (User name) и пароль (Password), если не хотите каждый раз при подключении вводить эти данные. Нажимаем Save;
  3. В окне Save session as site сохраняем сессию. Если хотите сохранить и пароль, тогда ставим галочку напротив Save password (not recomended). Нажимаем OK;
  4. Данные сохранены, теперь нажимаем Login для подключения;
  5. В окне Warning нажимаем на Yes, чтобы в дальнейшем не видеть этого предупреждения;
  6. Всё, теперь можно манипулировать файловой системой ОС Linux, в моём случае — это Armbian на Orange Pi PC.

Подключение по UART

Последовательный порт представляет собой низкоуровневый способ для обмена данными между Raspberry Pi, Orange Pi или Banana Pi и другой компьютерной системой. UART подключение используется для доступа к консоли Linux. Это может помочь устранить проблемы во время загрузки ОС или просто войти в ОС платы, если видео и сеть недоступны.

Что понадобится для UART подключения

Для подключения к Raspberry Pi, Orange Pi или Banana Pi используя TTL последовательный порт (UART или Rx-Tx) нам понадобится USB-UART (USB-TTL) преобразователь. Но, перед тем, как подключиться к Raspberry Pi, убедитесь, что вы используете преобразователь с логикой 3.3 В или подключитесь через преобразователь логических уровней.

Преобразователь USB-UART на базе PL2303HX работает на 3.3В, вот результат подключения вольтметра к Tx:

а вот CH340G показывает все 5В:

но не стоит расстраиваться, у преобразователь USB-UART на базе CH340G есть одна маленькая фишка, его можно легко переделать, чтобы он работал на уровне 3.3 В. Для этого необходимо удалить перемычку с задней стороны с 5 В и припаять на 3.3 В (см. ниже). Я рекомендую использовать именно CH340G, так как с ним вы сможете программировать платы типа Arduino Pro Mini, благодаря пину DTR, которого PL2303HX не имеет.

А вот на Orange Pi и Banana Pi присутствует преобразователь логических уровней, а именно на ножке Rx, (см. ниже), так что смело можете использовать CH340G.

  1. Перед тем, как подключать 5-ти вольтовый преобразователь к Orange Pi или Banana Pi, убедитесь в наличии этого маленького транзистора на плате. Если его нет, тогда не стоит рисковать, так как можете убить процессор;
  2. Этот преобразователь логических уровней есть только на этом 3-х пиновом порту, на GPIO (40 пиновый) он отсутствует и использовать нужно только приборы работающие на 3.3 В.

Подключение по UART с помощью PuTTY

  1. Подключаем преобразователь USB-UART к Raspberry Pi, Orange Pi или Banana Pi (в моём случае это Banana Pi M3);
  2. Вставляем преобразователь в USB компьютера;
  3. Переходим в диспетчер устройств (Device Manager) и находим номер COM порта. В моём случае это COM12;
  4. Запускаем PuTTY, в Category выбираем Session, выбираем тип соединения (Connection type) Serial, пишем COM порт в Serial line и скорость передачи данных 115200 в Speed. Если хотите сохранить параметры подключения, тогда в графе Saved Sessions указываем имя сессии и нажимаем на кнопку Save. Теперь, чтобы подключиться нажимаем Open;
  5. Появляется чёрная консоль;
  6. Включаем плату (Raspberry Pi, Orange Pi или Banana Pi) и ждём авторизации, после чего вводим логин и пароль;
  7. Теперь можете вводить ваши любимые команды;
  8. Для проверки я запустил:
    1. htop — компьютерная программа, предназначенная для вывода на терминал списка запущенных процессов и информации о них (монитор процессов).;
    2. mc (Midnight Commander) — один из файловых менеджеров с текстовым интерфейсом типа Norton Commander для UNIX-подобных операционных систем;
    3. gpio readall — команда чтения состояния GPIO;

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

Итак, для подключение по UART к Raspberry Pi нам понадобятся следующие контакты:

  • VCC — RPi пин 02 (5V питание) — через этот пин можете питать плату, однако рекомендуется использовать отдельный блок питания;
  • GND — RPi пин 06 — общий контакт (земля);
  • RXD — RPi пин 08 — подключается к TX USB-UART преобразователя;
  • TXD — RPi пин 10 — подключается к RX USB-UART преобразователя.

Подключение по UART к Orange Pi и Banana Pi

Почти у всех моделей Orange Pi и Banana Pi, для подключение по UART к консоли Linux, есть отдельный 3-х пиновый разъём: GND-RXD-TXD. А USB-UART преобразователь подключается как обычно:

  • GND — общий контакт (земля);
  • RXD — подключается к TX USB-UART преобразователя;
  • TXD — подключается к RX USB-UART преобразователя.

Подключение по UART к Orange Pi Zero

Так как Orange Pi Zero не имеет порта для видео-выхода (ни HDMI, ни аналогово), достучатся можно через сеть по SSH или через последовательный порт. Как и у своих собратьев, Orange Pi Zero имеет отдельный 3-х пиновый разъём для UART терминала и подключается также:

Источник

Adblock
detector