З’єднання Onion Omega2 та Arduino Uno через UART

З’єднання Onion Omega2 та Arduino Uno через UART

Зробіть будь-який Arduino проект сумісним з IoT!

Перенесіть універсальність Arduino Uno в потужний світ IoT з мікрокомп'ютером Onion OmegaЗ’єднання Onion Omega2 та Arduino Uno через UART

Про цей проект

Відома на весь світ платформа Arduino та найдоступніший у світі пристрій з системою Linux - мікрокомп'ютер Omega2 підтримують протокол UART, що дозволяє з’єднати їх між собою. З'єднавши їх, ви зможете створювати хмарні проекти повністю основані на Arduino, яка з'єднана з Onion Omega2 або Omega2+.

UART - універсальний асинхронний приймач/передавач – це форма послідовного зв'язку, яка реалізовується трьома провідниками між двома пристроями. Один провідник призначений для передачі даних, один для прийому даних і ще один для спільного заземлення. Схему з'єднання показано нижче. У випадку з Arduino Uno та Omega2 ми додатково використаємо простий дільник напруги. Це необхідно, щоб уникнути пошкодження внутрішньої схеми Omega2, оскільки її вхідна напруга не повинна перевищувати 3,3в, а вихідні рівні Arduino - 5В.

Необхідні компоненти

Arduino UnoArduino Uno

Onion Omega 2
Onion Omega 2

Плати розширення Dock (не обов'язково):

Плата расширения Onion Power Dock 2Onion Power Dock

Плата расширения Onion Expansion Dockабо Onion Expansion Dock

Плата расширения Onion Breadboard Dock

або Onion Breadboard Dock

Інше:

Резистор 3,3 кОм

Резистор 1,7 кОм

З'єднувальні дроти
З'єднувальні дроти

Макетна плата
Макетна плата

Програми та онлайн-сервіси

Arduino IDE

Arduino IDE


Крок 1: Апаратна частина

Апаратна частинаСкладіть на макетній платі наведену нижче схему. Вам будуть потрібні два резистори (3,3 кОм та 1,7 кОм) і ваші плати Arduino Uno та Omega2. Плата розширення для Omega2 не обов'язкова, хоча вона б значно полегшила розведення схеми. Якщо у вас немає плати розширення, слідуйте інструкціям тут.

Крок 2: Увімкнення

З’єднайте ваш Arduino Uno з комп’ютером через USB шнур. Після цього увімкніть живлення мікрокомп'ютера Omega2.

Крок 3: Програма

Відкрийте Arduino IDE та запрограмуйте плату Arduino Uno використовуючи програмний код "arduino_serial.ino", наведений нижче в розділі "Код". Плата Arduino тепер налаштована і готова до роботи.

Крок 4: Тест

Для тестування ми будемо використовувати команду "screen" на Omega 2 та інструмент "монітор порту" в Arduino IDE. В Arduino IDE натисніть Інструменти > Монітор порту.

arduino_serial.ino

Монітор послідовного порту в Arduino IDE

Для програмування Omega2, можна просто приєднати його до вашого комп'ютера через ssh або через термінал Omega з вашого web браузера. Для додаткової інформації про налаштування Omega2 перегляньте Omega2 документація.

В терміналі Omega2, введіть наступні команди, щоб встановити інструмент screen:

opkg update
opkg install screen

Тепер використайте наступну команду для моніторингу послідовного порту приєднаного до плати Arduino:

screen /dev/ttyS1 9600

Після запуску команди відкриється порожнє вікно. Те, що ви напишете в цьому вікні відправиться до Arduino та відобразиться у вікні монітора порту. Аналогічно, якщо ви відправите повідомлення через Монітор порту Arduino, ви побачите це повідомлення в терміналі Omega.

Вітаємо! Ви успішно встановили з’єднання між двома пристроями по інтерфейсу UART.

Щоб отримати більше інформації про можливості послідовного порту Omega, перейдіть за посиланням (англ.).

Крок 5: Використання pySerial

Для рішення більш практичних задач вам буде необхідно взаємодіяти з платою Arduino через скрипт Python. Бібліотеки pySerial дозволяють досягти такої мети. Наприклад, ви можете зчитувати значення датчиків через скрипт та відправляти їх на хмарну платформу, таку як AWS через протокол MQTT.

Щоб продемонструвати це, в статті наведено дуже простий Python скрипт (python_serial.py), який зчитує одноцифрові дані з плати та виводить їх на екран. Ви можете експериментувати з цим кодом та використовувати його як основу для власних проектів.


Код

Arduino: arduino_serial.ino

Це код плати Arduino Uno для налаштування UART з'єднання. Цей код відстежує отримані дані та перенаправляє їх через USB на комп'ютер, де їх можна побачити за допомогою інструменту "Монітор порту" в Arduino IDE. Також код перенаправляє повідомлення відправленні через монітор послідовного порту на передавач Arduino, таким чином ви можете використовувати монітор порту для відправлення повідомлень до Omega2. В більш практичних задачах ви можете відправляти значення напряму в Omega2.

#include <SoftwareSerial.h>

SoftwareSerial gtSerial(8, 7); // Arduino RX, Arduino TX

void setup() {
  Serial.begin(9600);    // послідовний USB порт
  gtSerial.begin(9600);  // програмний послідовний порт
}

byte rx_byte = 0;        // зберігаємо отриманий байт

void loop() {
  // чи прийшов байт даних в порт USB
  if (Serial.available()) {
    rx_byte = Serial.read();
    // надіслати байт в програмний послідовний порт
    gtSerial.write(rx_byte);
  }

  // чи прийшов байт даніх в програмний послідовний порт
  if (gtSerial.available()) {
    // надіслати байт в порт USB
    rx_byte = gtSerial.read();
    Serial.write(rx_byte);
  }
}

Python: python_serial.py

Цей скрипт на мові Python призначений для моніторингу вхідних даних Omega2 при зв'язку з платою Arduino Uno. Зауважте: це лише приклад коду, який зчитує цифри, тобто однорозрядні цілі числа. Для роботи з конкретним завданням можливо доведеться змінити код, наприклад, якщо вам потрібно додати функцію відправлення команд в платі Arduino або встановити з’єднання через MQTT.

import serial

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

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

Залишити відповідь