• Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Sign in to follow this  
Followers 0
Don_Arturos

Взаимодействие Onion Omega2 и Arduino Uno через UART

1 post in this topic

 

Данная статья поможет Вам наладить связь между микрокомпьютером Omega2 и платой Arduino Uno, чтобы совместить последнюю с интернетом вещей (IoT), а заодно и с преимуществами, которые он дает.

BB6A6JEFQrr1aXSOgMoWuduKFQWIuuPVKy20dn2iHxSkgqZ8m5-DrsyARvHNibqLy5iqiMnL2qayq8ZpvOLTzaC2Zt2GEeSDMwQOwrxxBUPag3617ku_yNqmAbgvkEzHDMxzYZ53

Вам понадобятся следующие компоненты:

  • Плата Arduino Uno
  • Микрокомпьютер Onion Omega2+
  • Резистор номиналом 3,3 кОм
  • Резистор номиналом 1,7 кОм
  • Перемычки типа "папа-папа"
  • Беспаечная макетная плата

Предыстория

Как только я узнал, что самая популярная у мейкеров плата Arduino и самый доступный микрокомпьютер Omega2+ поддерживают связь по UART интерфейсу, то мне сразу же захотелось связать оба этих устройств, чтобы совместить их преимущества воедино! Таким образом можно будет создать проект на Arduino, а затем совместить его с возможностями Омега2 — на базе первой создаем колесного робота, а вторую используем, чтобы добавить в проект управление по Wi-Fi или облачное хранилище (например, от Amazon).

А вообще UART (Universal Asynchronous Receiver-Transmitter: универсальный асинхронный приемопередатчик) — это последовательный интерфейс передачи данных между двумя устройствами, которые взаимодействуют по трем каналам. Первый служит для передачи данных, второй, соответственно, для приема данных, а третий — для общей связи (можно сказать, ищет точки соприкосновения) между этими устройствами. 

Шаг 1: Подключение

Ниже на схеме показано такое соединение. Резисторы нам понадобятся для того, чтобы собрать что-то вроде делителя напряжения, поскольку пятивольтовое (5V) напряжение на контактах платы Arduino совершенно не подходит для Omega2: его необходимо преобразовать в 3,3V. Подключать  Омега2+ желательно через док-станцию, но если ее нет, то следуйте этой инструкции.

2.jpg.f538982e6b80f3ed8b7aba1844a69f07.jpg

Шаг 2: Включение

Подключите плату Arduino Uno к компьютеру через USB порт, а затем включить микрокомпьютер Omega2+.

Шаг 3: Программный код

Откройте на компьютере Arduino IDE, а затем загрузите через нее в плату Arduino следующий код:

#include <SoftwareSerial.h>

SoftwareSerial gtSerial(8, 7); 

void setup() {
  Serial.begin(9600);    
  gtSerial.begin(9600);  
}

byte rx_byte = 0;       

void loop() {
  if (Serial.available()) {
    rx_byte = Serial.read();
    gtSerial.write(rx_byte);
  }
  if (gtSerial.available()) {
    rx_byte = gtSerial.read();
    Serial.write(rx_byte);
  }
}

Отлично! Плата Arduino готова к работе.

Шаг 4: Тестирование

Для проверки связи через последовательный порт воспользуемся монитором порта (открывается через раздел "инструменты" в Arduino IDE, либо сочетанием клавиш (Ctrl + Shift + M).

3.jpeg.e6f5050f43bb7c2776ef01435734dd6d.jpeg

Для того, чтобы написать и загрузить программу для Омега2, можно воспользоваться протоколом SSH, либо использовать утилиту терминала по настройке Omega2+. Для этого можете воспользоваться следующей инструкцией.

Введите в терминал следующие команды, чтобы установить инструмент "экран".

opkg update
opkg install screen

Для мониторинга данных с последовательного порта, подключенного к плате Arduino, введите следующую команду:

screen /dev/ttyS1 9600

После запуска этой команды Вы увидите пустой экран. Попробуйте что-нибудь набрать на этом экране — эти данные отобразятся на мониторе порта в Arduino IDE. Точно также это работает и в обратном порядке: если отправить в последовательный порт информацию через поле для ввода в мониторе порта, то на пустом экране Вы увидите то же самое. Работает! Вы успешно установили UART соединение между двумя устройствами! 

Для более подробного ознакомления с возможностями UART протокола можно узнать здесь.

Шаг 5: Используем библиотеку pySerial

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

На помощь приходит библиотека pySerial, которая включает в себя основные команды и функции. К примеру, можно использовать ее для программы считывания данных с датчиков и отправки полученных значений в облачное хранилище (например, AWS) через протокол MQTT.

Для демонстрации возможностей этой библиотеки я написал простой код на Python, который считывает однозначные целые числа с последовательного сигнала с Arduino и отображает на экране консоли. Он показан ниже. Можете смело использовать его в своих проектах и экспериментировать с ним.

import serial

ser = serial.Serial('/dev/ttyS1', 9600, timeout = None)

while True:
        input = ser.read()
        print(int(input))

На этом у меня все. Желаю успехов и удачной компиляции!

 

 

 

1.jpg

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0