Arduino: точка отсчёта - «абсолютный нуль»

Как-то в процессе одной из наших бесед за чашкой кофе Владимир Иванович Феоктистов сказал, что ему кто-то когда-то зачем-то подарил некий набор, именуемый в простонародии «Ардуино». Мы оба об этом что-то где-то когда-то слышали. Догадывались, что это некий микроконтроллер, который применяется при создании разных устройств. Не более того. Владимир Иванович сказал, что ему самому уже поздно заниматься такими вещами, а у меня подрастает внук, которому данная тема может весьма пригодиться. И пообещал переподарить набор. Как я уже не раз упоминал, сам я от программирования отошёл, вновь погрузившись в мир дискретной электроники. Радиолампы – вот к чему я вернулся вновь после многих лет забвения. Но по прошествии непродолжительного времени Владимир Иванович торжественно вручил мне некую коробочку:

Из-под Gillette, которого лучше, как известно, для мужчины нету. Но речь не об этом.

Я бегло осмотрел содержимое коробочки и отложил её «до лучших времён», поскольку сам занимался ламповым РР. И всё же что-то подсознательно подначивало меня заняться содержимым более серьёзно. Настолько подначивало, что я совершенно охладел к этому РР и решил вникнуть в вопрос поглубже.

1. ПОИСКИ СООТВЕТСТВИЯ
Покопавшись в Интернете и в коробочке, я обнаружил следующее:
1) на AliExpress (цитата):
Новые RFID Starter Kit для Arduino UNO R3 обновленная версия учебный комплект с розничной коробка для Arduino. Общая стоимость 1708,53р (на 19 февраля 2019г)

2) в коробочке обнаружилось, практически, то же самое:

1 – плата Arduino UNO
2 – LCD дисплей с платой с обратной стороны
3 – в пакетике светодиоды жёлтые, синие, красные; RGB-светодиод; фоторезисторы; ИК-приёмник; датчик пламени; датчики вибрации; термодатчик; кнопки, пьезоизлучатели; постоянные резисторы; переменный резистор; микросхема
4 – цифровые светодиодные дисплеи на 1 и 4 цифры
5 – бокс для 3-х батареек (или аккумуляторов) типа АА
6 – мотор с редуктором и модулем драйвера
7 – провод питания с разъёмом для батарейки типа «Крона»
8 – ИК-пульт
9 – соединительные провода для макетной площадки
10 – ультразвуковой датчик
11 – кнопочная площадка 4х4
12 – макетная площадка
13 – DuPont кабель (?)
14 – «гребёнка»
15 – джойстик
16 – электромагнитное реле
17 – микрофонный модуль
18 – модуль часов
19 – RFID плата (?) без брелока
20 – датчик влажности
21 – датчик температуры (и влажности?)
22 – модуль RGB светодиода
Не оказалось USB-кабеля, но это не проблема – он ведь должен быть стандартным.
Таким образом «подарочный набор», практически, 1:1 соответствует тому, что на AliExpressназывается «Новые RFID Starter Kit для Arduino UNO R3 обновленная версия учебный комплект с розничной коробка для Arduino».

Кроме того, к «подарочному набору», прилагалось то, что на хонтийском называется «заккурапия» – вместилище бумаг (А. и Б. Стругацкие, «Жук в муравейнике»), а на русском – «папка для бумаг», в которой имеется солидная пачка листов А4. На них подробно распечатано всё, что легко можно найти в Интернете о начале работы с Arduino:

2. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ и прочее…
Поскольку в Arduino используется некий микроконтроллер

а USB-кабель служит для подключения платы Arduino к компьютеру, то, надо полагать, возникнут проблемы с поиском драйвера (или драйверов?). Зондирование сети по этому поводу привело меня на сайт:

Я скачал zip-архив и разархивировал его в соответствующую папку:

Это IDE – среда программирования для Arduino. Старт IDE происходит с файла arduino.exe. Здесь же в папке drivers, надо полагать, находятся драйверы:

Среда программирования Arduino IDE запущена:

Для программирования используется, как говорят продвинутые, упрощённый язык С++, в котором я также абсолютный нуль. С микропроцессорами я не работал ранее вообще. Но «так карты легли» – надо пробовать, а там видно будет…

3. ПОДКЛЮЧЕНИЕ ПЛАТЫ Arduino К КОМПЬЮТЕРУ
Втыкаю USB-кабель в порт ноутбука с Windows7 Starter и в порт платы Arduino. На плате загорелись красным два светодиода, обозначенные буквами ON и L:

Попытка установка драйверов из вышеуказанной папки не увенчалась успехом. Обратился к Интернет-форумам. К сожалению, как и в абсолютном большинстве случаев, там 99% бессмысленного трёпа и пустомельства, упражнений в извращениях русского языка и бахвальства. Разгребать эти словесные мусорные свалки нет ни желания, ни времени, поскольку поиски рационального зерна никоим образом не компенсируют временные затраты. Я пошёл несколько иным путём. В браузере отобразил картинки Arduino UNO --> нашёл похожую на мою плату

--> перешёл по ссылке --> оказалось, что у меня действительно Arduino UNO R3 (DCcduino, CH340G), как и было сказано на AliExpress

Как я понимаю, микросхемка CH340G –это контроллер порта USB. Скачал «драйвер для CH341/CH340 — Для всех Windows» и установил его на обычный ПК c Windows ХР SP3. В процессе установки погас, поморгал и снова включился светодиод L, в то время как светодиод ON был включен постоянно.

Система сообщила, что устройство установлено и готово к работе. Это меня обнадёжило.

Далее открываю Диспетчер устройств:

и вижу в Портах (COM и LPT), что мой Arduino сел на порт COM3. Это нормально. Далее открываю IDE:

Вижу плату – это тоже нормально. Затем указываю порт:

Выходит, подаренная плата живая? Проверю!

4. ПЕРВАЯ ПРОГРАММА
Как в программировании на Visual Basic и на Delphi результатом работы моей первой программы был вопль «Hello, World!», так и в данном случае – самая простая и наглядная демонстрация работы Arduino и программы (на С++) – это мигающий светодиод, подключенный непосредственно к пинам Arduino.
Поскольку я в программировании на С++, пока что, ничего не смыслю, открою готовый пример:

Открылось второе окно IDE:

Из комментария даже мне, не искушённому в английском, понятно, что светодиод должен на 1 с включиться, а потом – на 1 с погаснуть. Собственно программа (скетч):

Одновременно возникло странное чувство (дежавю, что ли?), будто нечто подобное я когда-то где-то раньше уже видел... Неужели языки высокого уровня так похожи?

Кстати, IDE позволяет открыть одновременно несколько скетчей и, при необходимости, быстро переходить от одного к другому. Буржуйское слово «скетч» (как «скотч», «ланч», «спич» и прочие) вызывает во мне какой-то внутренний протест, поэтому я по-старинке буду часто пользоваться словом «программа». Может и привыкну, когда и если стану «ардуинщиком».

Язык не поворачивается назвать то, что будет собрано СХЕМОЙ. Нужно лишь вставить светодиод в соответствующие DIGITAL пины платы. Для этого ОБЯЗАТЕЛЬНО надо отключить Arduino от компьютера, затем вставить короткую ножку светодиода в пин GND, длинную – в пин 13. Цифровой пин «13» имеет встроенный токоограничительный резистор на плате. Поэтому при подключении светодиода внешний резистор использовать не нужно. При подключении светодиода к любым другим выводам Arduino использование таких резисторов обязательно, иначе выйдет из строя светодиод, а в худшем случае – порт Arduino, к которому подключён светодиод.

Подключаю плату к компьютеру. В процессе инициализации подключенный светодиод заморгал одновременно с L, а потом они оба погасли:

Кстати, в некоторых первых «уроках»из сети вообще не надо ничего подключать к плате. Рекомендуется сосредоточить внимание именно на светодиоде L.

Теперь можно загрузить (залить) программу в память Arduino. Щёлкаю по кнопке«Загрузить», и скетч записывается в память платы Arduino. При этом вначале происходит компиляция – перевод текста программы в машинные коды, затем, собственно, загрузка (или запись):

По окончании загрузки светодиоды на плате весело перемигнулись, затем вставленный светодиод стал включаться с периодичностью 2 секунды (1 секунду горит, 1 выключен) синхронно со светодиодом L:

Вопрос: если я немного изменю программу, то смогу ли перезагрузить её в Arduino, не отключая плату от компьютера?
Исправляю продолжительность выключения светодиода: delay (500) – на полсекунды, снова щёлкаю по кнопке «Загрузить», и – о, чудо! – происходит компиляция, загрузка, перемаргивание, и исправленная программка работает: моргание с уменьшенной паузой. Ок!
По идее, плата должна продолжить работать и после закрытия IDE. А после отключения и повторного включения – снова начать также моргать, поскольку загрузка происходит во FLASH-память. Проверю.
1) После закрытия IDE моргание продолжилось.
2) Далее я отключил плату от компьютера, на котором она была установлена и откуда я загружал программу. Затем я подключил её к другому, на котором ничего не устанавливал. С USB-порта было подано напряжение питания, и моргание по заданному алгоритму возобновилось без проблем:

5. В заключение приведу
Технические параметры
►  Напряжение питания: от USB – 5 В, внешний источник питания: 6 В…12В
►  Интерфейс: USB (CH340G)
►  Микроконтроллер: ATmega328
►  Разрядность: 8 бит
►  Цифровые входы/выходы: 14 шт. (6 из них ШИМ)
►  Аналоговые входы: 6 шт.
►Flash-память: 32 кБ (0,5 кБ используется загрузчик)
►  SRAM-память: 2 Кб
►  EEPROM-память: 1 кБ
►  Тактовая частота: 12 МГц
►  Размеры: 68мм x 54 мм x 15 мм
►  Поддержка операционных систем: Windows XP / 7 / 8 / 8.1 / 10.
Общие сведения о DCcduino
Модель микроконтроллера этой платы такая же, как на оригинальной плате (Atmega328), единственная разница в типе корпуса: у оригинальной DIP, у клона SMD. Так же на плате дополнительно предусмотрены ряд отверстий под 4x GND, 2x 5 V, 2x 3,3 В, 1x RX / TX, 1x SCL / SDA, так же отверстия под CTS, DSR, RI, DCD и конечно дублирующие отверстия портов ввода вывода.

Кстати, всякие разные буковки во второй половине последнего предложения мне пока ни о чём не говорят.
Итог: для меня лично первое, поверхностное знакомство с Arduino состоялось. Повторю, это та причина, по которой я заморозил последний проект «Ламовый РР». Ведь нельзя объять необъятное.

Нметилась некая перспектива и на неё надо работать дальше.

©SEkorp, 20 февраля 2019 г.


НАЗАД на страницу РАДИОардуино