Научная статья на тему 'РЕАЛИЗАЦИЯ СКРИПТ ЗАПРОСА НА ЯЗЫКЕ PYTHON ДЛЯ ПОЛУЧЕНИЯ ИНФОРМАЦИИ С ВИРТУАЛЬНОГО COM-ПОРТА В LINUX СИСТЕМАХ'

РЕАЛИЗАЦИЯ СКРИПТ ЗАПРОСА НА ЯЗЫКЕ PYTHON ДЛЯ ПОЛУЧЕНИЯ ИНФОРМАЦИИ С ВИРТУАЛЬНОГО COM-ПОРТА В LINUX СИСТЕМАХ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
384
29
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ARDUINO / UART / СОХРАНЕНИЕ ИНФОРМАЦИИ / COM-ПОРТ / TTY / LINUX / ПРОГРАММИРОВАНИЕ / ДАТЧИКИ ARDUINO

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Шмарин В.В., Быкова А.В.

В данной статье рассматриваются, как при помощи языка Python можно получать и сохранять информацию в текстовом виде, полученную с виртуального COM-порта. В данном примере связка Arduino с датчиком влажности почвы и персональный компьютер с Linux системой.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Шмарин В.В., Быкова А.В.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «РЕАЛИЗАЦИЯ СКРИПТ ЗАПРОСА НА ЯЗЫКЕ PYTHON ДЛЯ ПОЛУЧЕНИЯ ИНФОРМАЦИИ С ВИРТУАЛЬНОГО COM-ПОРТА В LINUX СИСТЕМАХ»

УДК 004.4

Шмарин В.В.

Магистрант кафедры замкнутых экологических систем Сибирский государственный университет науки и технологий имени академика М.Ф. Решетнева - опорный университет Красноярского края

(Россия, г. Красноярск)

Быкова А.В.

Магистрант кафедры замкнутых экологических систем Сибирский государственный университет науки и технологий имени академика М.Ф. Решетнева - опорный университет Красноярского края

(Россия, г. Красноярск)

РЕАЛИЗАЦИЯ СКРИПТ ЗАПРОСА НА ЯЗЫКЕ PYTHON ДЛЯ ПОЛУЧЕНИЯ ИНФОРМАЦИИ С ВИРТУАЛЬНОГО СОМ-ПОРТА В LINUX СИСТЕМАХ

Аннотация: в данной статье рассматриваются, как при помощи языка Python можно получать и сохранять информацию в текстовом виде, полученную с виртуального COM-порта. В данном примере связка Arduino с датчиком влажности почвы и персональный компьютер с Linux системой.

Ключевые слова: Arduino, UART, сохранение информации, COM-порт, tty, Linux, программирование, датчики Arduino, USB, скрипт запрос, Bpython, Debian, REPL, язык программирования, библиотека pyserial, SSH.

При использовании платформы Arduino [1, 4, 8], либо схожих с ней платформ, имеющих в своей реализации UART [2, 8] интерфейс, которые выступают в роли контроллеров для различных датчиков, например, влажности, давления, температуры, газового состава и т.п. Возникает потребность получать и сохранять значения этих датчиков для дальнейшего анализа и обработки.

198

Существует несколько способов это сделать, как графических, используя специализированное ПО, так и текстовых, используя программирование. О втором методе и будет описано в данной статье.

Описанный пример будет осуществлён с использованием операционной системы Linux Debian 9 [13], REPL - Bpython [3] и библиотеки pyserial, для их установки в терминале системы Debian необходимо ввести apt-get install Bpython и pip3 install pyserial. В роли аппаратной части выступает Arduino UNO, которая по USB порту подключена к компьютеру и аналоговый датчик влажности почвы.

Для того, чтобы определить, на каком виртуальном порту Arduino находится необходимо в терминале ввести команду ls /dev/tty* результат представлен на рисунке 1.

bio@biodeb: ■

,»_j bi0(5192.166.10. 211's password:

Linux biodeb 4.19. 0-6-686-pae #1 SMP Debian 4.19.98-1+deblOul (2020-04-27) "i686

The programs included with the Debian gnl/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/^/copyri ght.

Debian GMU/Linux comes with absolutely no warranty, to the extent permitted by applicable law.

Last login: sat Jun 20 00:01:41 2020 from 192.166.10.219 bio@biodeb:~$ Is /dev/tty*

/dev/tty

/dev/ttyO

/dev/ttyl

/dev/ttyl9 /dev/tty2 /dev/tty20

/dev/ttylO /dev/tty21 /dev/ttyll /dev/tty22

/dev/ttyl2 /dev/ttyl3 /dev/ttyl4 /dev/ttyl5 /dev/ttyl6 /dev/ttyl7 /dev/ttylS bi o@bi odeb :-

/dev/tty23 /dev/tty24 /dev/tty25 /dev/tty26 /dev/tty27 /dev/tty28 /dev/tty29

/dev/tty3 /dev/tty30 /dev/tty31 /dev/tty32 /dev/tty33 /dev/tty34 /dev/tty35 /dev/tty36 /dev/tty37 /dev/tty38

/dev/tty40 /dev/tty41 /dev/tty42 /dev/tty43 /dev/tty44 /dev/tty45 /dev/tty46 /dev/tty47 /dev/tty48 /dev/tty49

/dev/tty39 /dev/tty5

/dev/tty 51 /dev/tty52 /dev/tty53 /dev/tty 54 /dev/tty55 /dev/tty56 /dev/tty57 /dev/tty58 /dev/tty59 /dev/tty6 /dev/tty60

/dev/tty 62

/dev/tty63

/dev/tty7

/dev/tty8

/dev/tty9

/dev/ttyACHO

/dev/ttysO

/dev/ttysi

/dev/ttys2

/dev/ttys3

/dev/tty4 /dev/tty50 /dev/tty61

Рисунок 1 - COM порты в ОС Linux

Arduino в данном случае располагается по пути: /dev/ttyACM0, это путь будет необходим для написания кода.

Для запуска Bpython в терминале необходимо ввести указать его место хранение, в данном случае, это: /usr/bin/bpython в открывшемся REPL Bpython [3] необходимо ввести код на языке Python [5, 6, 7], представленный в таблице 1. Данный код использует библиотеку pyserial [9,10].

Таблица 1 - скрипт на языке Python для получения информации с COM-порта import serial

write_to_sens = "sens.txt"; output_file_sens = open(write_to_sens, "w+");

COM = serial.Serial("/dev/ttyACM0", 9600) # 9600 - баудрейт, прописанный в прошивке Arduino, В прошивке должен быть включен метод класса Serial.begin [1] while 1:

logs_line = COM.readline(); print(logs_line,);

output_file_sens.write(logs_line,);

output_file_sens.close() #эту строку нужно ввести после остановки скрипта, чтобы данные сохранились в файл_

Остановка скрипта осуществляется комбинацией клавиш ^г^, результат работы скрипта с открытым текстовым файлом представлен на рисунке 2.

| 192.163.10.211 - PuTTY

Keyboardinterrupt

»> import serial

»> write_to_sens — "sens.txt";

»> output_fi 1 e_sens = open(write_to_sens, "»+

»> COM = serial. Serial( de. ttyACNO", 9600)

»> while 1:

1ogs_1ine - COM.readline();

pn nt (1 ogs_l i ne,);

output_f 11 e_seris. wr i te (1 ogs_l i ne,);

('448\r\n', C447\r\n' , ('44 5\r\n", ( '448\r\n', ( '444\r\n', ( '443\r\n', ('443\r\n', ( '443\r\n' , C441\r\rT , ( '441\r\n', ('439\r\rT , ('439\rSn' , ('439\r\n' , (ЧЗЭХгЧп' , ( '440\r\n' , ('440\r\n' , C'438\r\n', ( '440\r\n', ( '438\r\n' , ( "438\r\n" , ( '444\r\n' , ('440\r\n',

| File Edit View insert Format Styles Sheet Data Tools

B-B'i - aes %

[ai Zj & X - ¡448

This document is open in read-only mode.

в с D e

E7Щ 4481

2 447

3 445

4 448

5 444

6 443

7 443

8 443

9 44lj

10 441

11 439

12 439 -n

13 439

14 439

15 440

16 440

Рисунок 2 - Результат работы кода для получения данных с COM-порта на языке

Python

В терминале отображается данные по сопротивлению в Ом, полученные с резистивного датчика влажности почвы.

В заключении можно сказать, что данный метод удобен для того, чтобы без лишнего программного обеспечения получить информацию, поступающую с виртуального COM-порт, такой метод может быть осуществлён на системе, не имеющей GUI [12] и выступающей в роли управляющего сервера к которому имеется удалённое подключение с использованием протокола SSH [11].

СПИСОК ЛИТЕРАТУРЫ:

Arduino библиотека Serial [Электронный ресурс] - Режим доступа: URL: https://clck.ru/P7TLW (дата обращения 13.03.2020)

UART - Последовательный интерфейс передачи данных [Электронный ресурс] - Режим доступа: URL: https://voltiq.ru/wiki/uart-interface/ (дата обращения 12.03.2020) REPL - Bpython [Электронный ресурс] - Режим доступа: URL: https://habr.com/ru/post/81158/ (дата обращения 13.03.2020)

Что такое Arduino [Электронный ресурс] - Режим доступа: URL: http://arduino.ru/ (дата обращения 23.02.2020)

Swaroop Chitlur, A Byte of Python. 2013. - 158 С.

МакГрат Майк, Программирование на Python для начинающих. - Москва: Издательство Эскимо, 2015. - 194 С.

Доусон Майкл, Программирование на Phyton. - Санкт-Петербург: Питер, 2019. - 416 С. UART в Arduino [Электронный ресурс] - Режим доступа: URL: https://robotclass.ru/tutorials/arduino-uart/3/ (дата обращения 15.01.2020)

Система управления пакетами pip [Электронный ресурс] - Режим доступа: URL: https://pyneng.readthedocs.io/ru/latest/book/01_intro/pip.html (дата обращения (дата обращения 05.03.2020)

Библиотека pyserial [Электронный ресурс] - Режим доступа: URL: https://pyserial.readthedocs.io/en/latest/shortintro.html (дата обращения 15.03.2020) Что такое SSH [Электронный ресурс] - Режим доступа: URL: https://www.dmosk.ru/terminus.php?object=ssh (дата обращения 01.02.2020) Что такое GUI [Электронный ресурс] - Режим доступа: URL: https://animatika.ru/info/gloss/GUI.html (дата обращения 06.01.2020)

Операционная система Debian [Электронный ресурс] - Режим доступа: URL: https://www.debian.org/index.ru.html (дата обращения 16.03.2020)

i Надоели баннеры? Вы всегда можете отключить рекламу.