
Зробіть будь-який Arduino проект сумісним з IoT!
Перенесіть універсальність Arduino Uno в потужний світ IoT з мікрокомп'ютером Onion Omega
Про цей проект
Відома на весь світ платформа Arduino та найдоступніший у світі пристрій з системою Linux - мікрокомп'ютер Omega2 підтримують протокол UART, що дозволяє з’єднати їх між собою. З'єднавши їх, ви зможете створювати хмарні проекти повністю основані на Arduino, яка з'єднана з Onion Omega2 або Omega2+.
UART - універсальний асинхронний приймач/передавач – це форма послідовного зв'язку, яка реалізовується трьома провідниками між двома пристроями. Один провідник призначений для передачі даних, один для прийому даних і ще один для спільного заземлення. Схему з'єднання показано нижче. У випадку з Arduino Uno та Omega2 ми додатково використаємо простий дільник напруги. Це необхідно, щоб уникнути пошкодження внутрішньої схеми Omega2, оскільки її вхідна напруга не повинна перевищувати 3,3в, а вихідні рівні Arduino - 5В.
Необхідні компоненти
Плати розширення Dock (не обов'язково):
Інше:
Програми та онлайн-сервіси
Крок 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 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))