Arduino невизуальной доступности

Written by admin on 13.10.2020 in Тифлотехника with no comments.

В этой статье я постараюсь доступно изложить методику работы с Ардуино. Приведу текстовые описания выводов Ардуино и модулей. Дам ссылки на магазины и полезную информацию.

Эта статья родилась в результате сотрудничества с незрячим владельцем Ютуб канала Серый Шум.

Введение

Когда придумывал название статьи в голову лезли мысли о корректности такой формулировки, но интуиция не подвела.
Ардуино — это программно-технический комплекс, который позволяет решать различные творческие задачи лёгким движением руки. При этом нужно иметь минимальные знания в электротехнике и программировании, школьных знаний вполне достаточно для начала работы с этой платформой. Главное — это желание творить и иметь фантазию. Сейчас есть множество образовательных ресурсов по этой платформе, тысячи примеров программ из которых можно позаимствовать куски кода и получить рабочий прототип. В контексте же невизуальной доступности сейчас есть аналоги интерфейсов. Аналог светодиода — зуммер (пищалка), аналог дисплея — голосовой модуль. Также удобны в использовании вибродвигатели (как в смартфоне) дающие тактильный отклик.

Обзор платформы

Ардуино представляет собой макетную плату с программируемым микроконтроллером.
Самой популярной модификацией платы Ардуино является Ардуино Нано версии 3.0 на основе микроконтроллера Atmega 328p имеющий в своём составе 32 килобайта памяти программ. Китайцы также выпускают версию с микроконтроллером Atmega 168p на 16 килобайт флэш памяти, в целях удешевления, будьте внимательны при покупке.

Плата имеет вид прямоугольника размерами 45 на 18 миллиметров. С торцевой стороны которой в оригинальной версии установлен разъём мини ю с би. Китайцы также делают версию с разъёмом микро ю с би и тайп си. Платы поставляются как с запаянными пинами так и незапаянными. Контактные пины представляют собой ножки длиной 6 миллиметров в виде гребёнки расположенные по обеим сторонам платы, перпендикулярно вниз от плоскости платы.

Данные ножки могут подключаться специальными перемычками непосредственно между другими модулями. Но наиболее удобный вариант применения вместе с беспаечной макетной платой. Типичная плата такого типа представляет собой пластиковый прямоугольник толщиной 10 миллиметров с массивом отверстий в виде сетки. Каждое отверстие отстоит друг от друга на 2,54 миллиметра.

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

Между левой и правой шинами питания располагаются перпендикулярно им строки отверстий, в одной строке две перемычки по 5 отверстий, они расположены симметрично относительно середины платы. Между отверстиями соседних перемычек есть зазор 7,62 миллиметра, для возможности установки микросхем в DIP корпусе.

Мы будем работать только с китайскими клонами Ардуино, так как они доступны по цене и при этом равнозначны по функциональности.

Каждая плата Ардуино помимо микроконтроллера имеет в своём составе преобразователь интерфейса USB to UART на основе микросхемы CH340G. Этот преобразователь позволяет загружать прошивку в микроконтроллер непосредственно через USB кабель без внешнего программатора. Также по этому каналу через виртуальный COM порт можно получать данные от Ардуино и отправлять команды управления.

Важная особенность, при каждом установлении соединения через ком порт микросхема CH340G подаёт импульс логического нуля на вход ресет микроконтроллера, что приводит к его автоматической перезагрузке, это сделано специально для прошивки микроконтроллера без необходимости вручную нажимать кнопку ресет для начала прошивки микроконтроллера. Простите за тавтологию.

Это может мешать процессу получения команд с компьютера, например если отправлять команды при помощи БАТ файлов. В результате устанавливается соединение, контроллер перезагружается и не может принять команду.

Для устранения этого недоразумения требуется повесить между выводом ресет и землёй конденсатора ёмкостью минимум 10 микрофарад. Следует заметить, что на время прошивки этот конденсатор следует отключить.

Инструментарий

В простейшем случае проект ардуино представляет собой папку с именем проекта содержащую файл исходного кода. Папка и файл имеют одинаковые названия, обязательно латиницей. Файл исходного кода имеет расширение .ino
Исходный код пишется на языке си плюс плюс, но для новичка этот факт не имеет никакого значения.

Для написания программного кода, его отладки и загрузки в Ардуино используется родная среда Arduino IDE. Но она полностью не озвучивается скринридерами. Эдакая поварёжка дёгтя в бочке мёда. Поэтому пришлось искать доступные инструменты.

Arduino IDE нужно установить в любом случае. Этот программный пакет содержит в своём составе множество стандартных библиотек с примерами программ. Также многие сторонние пакеты используют программные компоненты этой среды для своей работы.

LopeEdit Lite

Для написания кода можно использовать любой доступный текстовый редактор, хоть блокнот. Но лучше использовать бесплатную версию редактора LopeEdit Lite. Он единственный из найденных мной позволяет озвучивать скринридерами нумерацию строк и всех символов.

Freematics Arduino Builder

Для компиляции и закачки можно использовать приложение Freematics Arduino Builder Приложение озвучивается хорошо, но имеет ограничения:
1) Монитор серийного порта может только принимать данные от Ардуино, но не отправлять.
2) Отсутствует вывод ошибок компиляции (иногда выводит), только сообщение об ошибке.

arduino-cli

Одним из самых доступных инструментов является приложение для командной строки arduino-cli. Скачать можно по ссылкам 32 бита 64 бита. Приложение позволяет осуществлять полный набор операций по созданию скетча, его компиляции с озвучиванием ошибок в исходном коде и закачке в Ардуино. Пользоваться им очень удобно несмотря на непривычный для многих механизм взаимодействия. 

Для того чтобы не нужно было каждый раз вводить путь до arduino-cli достаточно добавить один раз этот путь в переменные среды окружения windows.

После установки этого инструмента нужно выполнить его первоначальную настройку, доустановить файлы нужной программно-аппаратной платформы, выполняется это следующей командой:
arduino-cli.exe core install arduino:avr

После этого достаточно запомнить несколько команд:

arduino-cli.exe sketch new MyFirstSketch
Создание нового проекта — в домашней папке пользователя создаётся папка с именем скетча, содержащей скетч. Скетч — это так называется исходный код проекта Ардуино.

arduino-cli.exe compile —fqbn arduino:avr:nano D:\Blink
где D:\Blink это путь к нашему проекту
Компиляция скетча с возможностью просмотра ошибок компиляции. Указывается номер строки, номер символа, тип ошибки. Данные выводятся на английском языке, поэтому если не владеть языком в совершенстве, то приходится снижать скорость чтения скринридера.

arduino-cli.exe upload —port COM9 —fqbn arduino:avr:nano D:\Blink
Команда закачки скомпилированной прошивки в Ардуино.

Вывод данных

С помощью этих инструментов мы научились создавать рабочее устройство. Теперь самое время поговорить о выводе данных из Ардуино и вводе их в виде параметров и управляющих команд.

Для этой цели в Ардуино предусмотрен простой и удобнейший инструмент, особенно он выручает на стадии отладки программы, когда приходится выводить и контролировать множество параметров. Это серийный (последовательный) порт. Тот же интерфейс, который используется для прошивки.

Putty

На уровне команд мы об этом поговорим позже. Сейчас же рассмотрим доступный инструмент. Программа Putty, приложение с открытым исходным кодом. Это универсальный интерфейс управления через командную строку, поддерживающий массу протоколов среди которых есть и требуемый нам Серийный монитор. После запуска приложения нужно настроить сессию подключения и сохранить её под своим именем для быстрого подключения в следующий раз. Открываем соединение и если всё указано правильно, то откроется окно монитора. В нём строка за строкой выводятся данные. Алгоритм вывода задаётся в исходном коде проекта Ардуино. Ввод данных из ПК в Ардуино осуществляется в том же окне, путём набора символов на клавиатуре и нажатия кнопки Enter. Символы передаются в виде кодов ASCII.

Голосовые модули

После отладки программы можно заняться выводом данных на универсальный дисплей — голосовой модуль или точнее сказать программно-управляемый плеер звуковых файлов. Аппаратных модулей данного типа есть множество. Гарантированно доступный это DFPlayer mini. У него нет встроенной памяти, используются карты памяти формата micro SD до тридцати двух гигабайт. Второй модуль со встроенной памятью это JQ6500. У него есть встроенная память на два мегабайта, этого вполне достаточно для загрузки семплов в MP3 формате. Загрузка файлов во внутреннюю память осуществляется через Windows приложение MusicDownload.exe оно доступно для скринридеров.

Распиновки модулей

Arduino NANO V3.0

Ардуина лежит горизонтально, USB разъёмом смотрит влево, ножками вниз, разъём ICSP для подключения программатора смотрит вверх

Нижний ряд слева направо
1 D13
2 +3.3 вольта
3 AREF
4 A0
5 A1
6 A2
7 A3
8 A4(SDA)
9 A5(SCL)
10 A6
11 A7
12 +5 вольт
13 Reset
14 GND
15 VIN

Верхний ряд слева направо
1 D12
2 D11
3 D10
4 D9
5 D8
6 D7
7 D6
8 D5
9 D4
10 D3
11 D2
12 GND
13 Reset
14 D0 (RX)
15 D1 (TX)

Разъём ICSP для подключения программатора (первый пин по заводской маркировке в нижнем правом углу)
6 пинов
Левая сторона сверху вниз
1 GND
2 D11(MOSI)
3 +5 вольт

Правая сторона сверху вниз
1 Reset
2 D13(SCK)
3 D12(MISO)

Arduino UNO

Ардуина лежит горизонтально на столе, USB разъёмом смотрит влево.

Нижний ряд (ближний к пользователю) слева направо
1 Пустой
2 +5 вольт
3 Reset
4 +3.3 вольта
5 +5 вольт
6 GND
7 GND
8 VIN
9 A0
10 A1
11 A2
12 A3
13 A4
14 A5

Верхний ряд (дальний от пользователя) слева направо
1 SCL
2 SDA
3 AREF
4 GND
5 13
6 12
7 11
8 10
9 9
10 8
11 7
12 6
13 5
14 4
15 3
16 2
17 1 (TX)
18 0 (RX)

Пины питания
VIN: Разъём для подключения внешнего питания от 7 вольт до 12 вольт.
5V: На вывод поступает напряжение 5 В от стабилизатора платы. Данный стабилизатор обеспечивает питание микроконтроллера ATmega328. Запитывать устройство через вывод 5 вольт нужно только от стабилизированного источника 5 вольт.
3.3V: 3,3 вольта от стабилизатора платы. Максимальный ток вывода — 50 миллиампер.
GND: Выводы земли.

Порты ввода/вывода
Цифровые входы/выходы: пины D0–D13
Аналогово-цифровые входы/выходы: пины A0–A5
Аналоговые входы/выходы: пины A6–A7
Логический уровень единицы — 5 В, нуля — 0 В. Максимальный ток выхода — 40 мА. К контактам подключены подтягивающие резисторы между выводом и плюсом питания, которые по умолчанию выключены, но могут быть включены программно.
ШИМ: пины 3,5,6,9,10,11
Позволяют выводить 8-битные аналоговые значения в виде ШИМ-сигнала.
АЦП: пины A0–A7
8 аналоговых входов, каждый из которых может представить аналоговое напряжение в виде 10-битного числа (1024 значений). Разрядность АЦП — 10 бит.
TWI/I²C: пины A4(SDA) и A5(SCL)
Для общения с периферией по синхронному протоколу, через 2 провода. Для работы — используйте библиотеку Wire.
SPI: пины D10(SS), D11(MOSI), D12(MISO), D13(SCK).
Через эти пины осуществляется связь по интерфейсу SPI. Для работы — используйте библиотеку SPI.
UART: пины 0(RX) и 1(TX)
Эти выводы соединены с соответствующими выводами микроконтроллера CH340G, выполняющей роль преобразователя USB-UART. Используется для коммуникации платы Arduino с компьютером или другими устройствами через класс Serial.
Светодиодная индикация
RX и TX Мигают при обмене данными между Arduino Uno и ПК.
L Светодиод вывода 13. При отправке значения HIGH светодиод включается, при отправке LOW – выключается.
ON Индикатор питания на плате.

Разъём USB
Разъём USB предназначен для прошивки платформы Arduino с помощью компьютера.

ICSP-разъём для ATmega328P
ICSP-разъём предназначен для внутрисхемного программирования микроконтроллера ATmega328P. С использованием библиотеки SPI данные выводы могут осуществлять связь с платами расширения по интерфейсу SPI. Линии SPI выведены на 6-контактный разъём, а также продублированы на цифровых пинах D10(SS), D11(MOSI), D12(MISO) и D13(SCK).

MP3-плеер DFPlayer mini

MP3-плеер.
Расположите модуль так, чтобы слот для флешки смотрел вправо, ножки смотрят в стол.

Пин: Описание: Примечание:
Нижний ряд (ближний к пользователю) слева на право:
1 VCC DC3.2~5.0V (Плюс питания от 3.2 до 5.0 вольт).
2 RX UART serial input 3.3V TTL level. (UART приём).
3 TX UART serial output 3.3V TTL level. (UART передача).
4 DAC_R Audio output right channel Drive an earphone or connect to an external amplifier (Выход на наушник или усилитель правый канал).
5 DAC_L Audio output left channel (Выход на наушник или усилитель левый канал).
6 SPK1 Speaker Плюс Drive speaker less than 3W (Громкоговоритель «плюс»).
7 GND Ground Power GND (Питание минус).
8 SPK2 Speaker Минус Drive speaker less than 3W (Громкоговоритель «Минус»).

Верхний ряд (дальний от пользователя) справа налево:
9 IO1 Trigger port 1 Short press to play previous(long press to decrease volume)
(Вход управления: короткое нажатие — «Назад», Длинное — уменьшить громкость).
10 GND Ground Power GND
11 IO2 Trigger port 2 Short press to play next(long press to increase volume)
(Вход управления: Короткое нажатие — «Вперёд», Длинное — «Увеличить громкость»).
12 ADKEY1 AD Port 1 Trigger to play first segment (Порт для подключения резистивной клавиатуры, вход 1).
13 ADKEY2 AD Port 2 Trigger to play fifth segment (Порт для подключения резистивной клавиатуры, вход 2).
14 USB+ DP USB Port(connected with a USB flash drive or connected to PC)(USB порт вывод плюс данных).
15 USB- DM (USB порт вывод минус данных).
16 Busy output Low level when working, and high level when standby (Индикатор состояния («1» — ожидание, «0» — Проигрывание)).

Резистивная клавиатура:
К каждой кнопке подключены резисторы перечисленные в таблице.
Которые через кнопки замыкаются на минус питания.
adkey1.
р1. 0 килоом Файл 1.
р2. 3 килоом Файл 2.
р3. 6.2 килоом Файл 3.
р4. 9.1 килоом Файл 4.
р5. 15 килоом Next / vol плюс.
р6 24 килоом Pre / vol минус.
р7. 33 килоом Pause / Play.
р8. 51 килоом Lup All.
р9. 100 килоом U / sd/spi.
р10. 200 килоом Play mode.

adkey2
р1. 0 килоом Файл 5.
р2. 3 килоом Файл 6.
р3. 6.2 килоом Файл 7.
р4. 9.1 килоом Файл 8.
р5. 15 килоом Файл 9.
р6 24 килоом Файл 10.
р7. 33 килоом Файл 11.
р8. 51 килоом Файл 12.
р9. 100 килоом Файл 13.
р10. 200 килоом Файл 14.

Релейный модуль на 1 канал 5 вольт

Модуль лежит вертикально, силовой винтовой клеммник сверху, слаботочные пины снизу

Нижний ряд слева направо

1 плюс 5 вольт
2 GND
3 Сигнал управления

Верхний ряд слева направо

1 Нормально Замкнутый контакт
2 Общий контакт
3 Нормально Разомкнутый контакт

Энкодер с кнопкой HW-040

Располагаем энкодер рукояткой на себя, выводами вниз.
Слева направо
1 GND
2 +5 вольт
3 SW вывод кнопки
4 DT
5 CLK

Хорошие магазины

Если вы живёте в Санкт-Петербурге, то у нас есть как минимум два хороших магазина Roboshop и Amperkot в них цены зачастую такие же как и на Алиэкспресс, а то и дешевле!

Comments are closed.