Оглавление
- Язык Arduino
- Шаг 4. Создаем печатную плату
- Поделка №3: «умный» Wi-Fi ремоут для «глупых» устройств с инфракрасными пультами
- Аналоговые входы Arduino
- Из чего состоит плата Arduino?
- Варианты питания Ардуино Уно
- Скачать Arduino 1.8.6
- Итак, поделка №1: «Цифровой магический шар»
- Аппаратная часть Arduino
- Простые проекты Ардуино
- Что такое bluetooth модуль и его назначение
- Работа с Arduino IDE
- Достоинства микроконтроллера 2560
- Скачать Arduino 1.8.7
- Минимальные знания
- Пример работы
Язык Arduino
Если опытный программист посмотрит на код для Arduino, он скажет, что это код на C++. Это недалеко от истины: основная логика Ардуино реализована на C++, а сверху на неё надет фреймворк Wiring, который отвечает за общение с железом.
На это есть несколько причин:
- У С++ слава «слишком сложного языка». Arduino позиционируется как микроконтроллеры и робототехника для начинающих, а начинающим иногда трудно объяснить, что С++ не такой уж сложный для старта. Проще сделать фреймворк и назвать его отдельным языком.
- В чистом С++ нет удобных команд для AVR-контроллеров, поэтому нужен был инструмент, который возьмёт на себя все сложные функции, а на выходе даст программисту часто используемые команды.
- Разработчики дали программистам просто писать нужные им программы, а все служебные команды, необходимые для правильного оформления кода на С++, взяла на себя специальная среда разработки.
Среда разработки (IDE) Arduino.
Шаг 4. Создаем печатную плату
Как только схема завершена, пришло время сделать печатную плату. Мы использовали веб-сайт JLCPCB (ссылка), чтобы сделать печатную плату. Эти ребята являются одними из лучших в производстве печатных плат в последние дни.
После завершения проектирования схемы преобразуйте ее в печатную плату и спроектируйте печатную плату на веб-сайте easyEDA (ссылка). Будьте терпеливы. Ошибка на этом шаге испортит вашу печатную плату. Проверьте несколько раз перед генерацией файла gerber. Вы также можете проверить 3d модель вашей платы здесь. Нажмите на создание файла gerber и оттуда вы можете напрямую заказать эту плату через JLCPCB. Загрузите файлы gerber, выберите правильную спецификацию, ничего не меняйте в этом разделе. Оставьте как есть. Это достаточно хорошие настройки для старта. Разместите заказ. Вы получите его через 1-2 недели.
Поделка №3: «умный» Wi-Fi ремоут для «глупых» устройств с инфракрасными пультами
Это совсем уж простая и незамысловатая поделка, но она позволит вам достаточно легко превратить ваше «глупое» устройство с пультом инфракрасного управления, в «новый, молодежный и хипстерский» smart home device, притом, практически, без затрат. Хотя, конечно, если вас больше заинтересует готовый гаджет, то со спокойной совестью (ну, или почти, ибо «китайская проприетарщина»!) порекомендовать вот такое устройство, Broadlink RM mini 3/4, который на eBay/Ali можно купить примерно за $15. Что любопытно, компания Broadlink даром, что китайская, но имеет до удивления приличную и грамотную тех. поддержку, отвечающую профессионально и «по делу» в течение 12 часов.
Вот ссылка на проект
Там же лежит крохотный snippet, для чтения IR кодов с реальных пультов.
Код до неприличия простой и прямолинейный; даже у людей с минимальным опытом «ардуиненья» не должен вызывать вопросов.
Подобных решений полным-полно в интернете, всевозможной степени простоты или сложности, а также «баговости». Моих «инноваций» тут немного; единственно, замечу, поскольку я не художник и не веб-дизайнер, для меня всегда было большой проблемой нарисовать «не позорную» landing HTML страничку с кнопками. В данном случае я хитро обошел эту проблему, путем создания «фотореалистичной» копии оригинального пульта (в фотках — как это выглядит на телефоне), HTML area и простецкого java script.
Интеграция с Google Home (или Alexa, или Siri) самая простецкая, через io.adafruit и ifttt.com (т.е. мы добавляем не, собственно, smart device, а лишь actions), но работает, на удивление, весьма неплохо. Думаю, что поддержку smart home можно «запилить» и через более «правильную» интеграцию, но лично мне это пока не интересно, да, и если честно сказать, не особо нужно – «работает – не трогай! (с) «Первая Заповедь Программиста»
Инструкции по интеграции смотрите вот тут, там все очень просто.
Да, «обсмартить» (что-то меня на неологизмы потянуло! ) таким путем можно практически все. В своих экспериментах я проверил порядка шести или семи самых разнообразных IR-ремоутов – от кондиционеров, телевизоров, детских игрушек, электрического камина, светодиодной ленты — все считывается и воспроизводится безошибочно. Есть лишь одно ограничение: у дешевых IR-трансмиттеров (диодов) очень маленькие дальность и угол работы (в отличие от того же Broadlink RM mini 3, IR диод которого «окучивает» достаточно большую комнату), так, что придется «лепить» подобное «умное» решение непосредственно на сам дивайс. Бюджетных вариантов «дальнобойного» IR трансмиттера мне найти не удалось.
Вот, собственно, пока и все на сегодня. Впрочем, среди моих других проектов на гитхабе вы, возможно, сможете найти еще что-нибудь интересное. Ну, и у меня вообще есть много забавных проектов, но не все пока выложено на гитхаб. Если вам не лень, то «простарьте» понравившиеся вам проекты – всего лишь клик мышкой, а мне приятно!
Аналоговые входы Arduino
Как мы уже знаем, цифровые пины могут быть как входом так и выходом и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые пины могут только принимать сигнал. И в отличии от цифровых входов аналоговые измеряют напряжение поступающего сигнала. В большинстве плат ардуино стоит 10 битный аналогово-цифровой преобразователь. Это значит что 0 считывается как 0 а 5 В считываются как значение 1023. То есть аналоговые входы измеряют, подаваемое на них напряжение, с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (терморезисторы, фоторезисторы) и считывать аналоговый сигнал с них.
Для этих целей в Ардуино есть функция analogRead(). Для примера подключим фоторезистор к ардуино и напишем простейший скетч, в котором мы будем считывать показания и отправлять их в монитор порта. Вот так выглядит наше устройство:
Подключение фоторезистора к Ардуино
В схеме присутствует стягивающий резистор на 10 КОм. Он нужен для того что бы избежать наводок и помех. Теперь посмотрим на скетч:
Вот так из двух простейших элементов и четырех строк кода мы сделали датчик освещенности. На базе этого устройства мы можем сделать умный светильник или ночник. Очень простое и полезное устройство.
Вот мы и рассмотрели основы работы с Arduino. Теперь вы можете сделать простейшие проекты. Что бы продолжить обучение и освоить все тонкости, я советую прочитать книги по ардуино и пройти бесплатный обучающий курс. После этого вы сможете делать самые сложные проекты, которые только сможете придумать.
Из чего состоит плата Arduino?
Выпускаются различные модели Arduino. Каждая из них «заточена» для различных задач. Некоторые платы принципиально отличаются от приведенной на рисунке ниже. Но большинство из них имеют следующие одинаковые узлы:
Разъем питания (USB / разъем для адаптера)
Каждая плата Arduino должна подключаться к источнику питания. Arduino Uno может запитываться от USB кабеля от вашего персонального компьютера Или от отдельного адаптера, который подключается к предусмотренному на плате разъему. На рисунке соединение через USB отмечено (1), а разъем для внешнего источника питания — (2).
USB также используется для загрузки вашей программы (скетча) на плату.
Примечание! Не используйте источник питания с напряжением на выходе более 20 вольт. Это может привести к тому, что ваша плата перегорит. Рекомендуемое напряжение питания для Arduino — от 6 до 12 вольт.
Разъемы (пины) (5V, 3.3V, GND, Analog, Digital, PWM, AREF)
Пины на вашей плате Arduino — это предусмотренные разъемы, к которым вы будете подключать провода от периферийных устройств (очень часто для прототипов используют монтажные платы (макетная плата, макетка) и провода с коннекторами на концах). На Arduino несколько типов пинов, каждый из которых подписан в соответствии с выполняемой функцией.
- GND (3): сокращение от ‘Ground’ — ‘Земля’. На платах несколько пинов GND, каждый из которых может использоваться для заземления вашей электрической цепи.
- 5V (4) и 3.3V (5): как вы могли уже догадаться — питы, которые на выходе обеспечивают питание 5 вольт и 3.3 вольт соответственно. Большинство компонентов, которые подключаются к Arduino, благополучно питаются именно от 5 или 3.3 вольт.
- Analog (6): на участке, который подписан ‘Analog In’ (от A0 до A5 на Arduino Uno) расположены аналоговые входы. Эти пины позволяют считывать сигналы от аналоговых датчиков (например, датчик температуры) и преобразовывать их в цифровые значения, которыми мы в дальнейшем оперируем.
- Digital (7): напротив аналоговых пинов находятся цифровые пины (от 0 до 13 на Arduino Uno). Эти пины используются для цифровых входящих (input) сигналов (например, нажатие кнопки) и для генерации цифровых исходящих (output) сигналов (например, питание светодиода).
- PWM (8): вы наверное заметили знак (~) рядом с некоторыми цифровыми пинами (3, 5, 6, 9, 10, и 11 на UNO). Эти пины работаю как в обычном цифровом режиме, так и в режиме ШИМ-модуляции (PWM). Если объяснить вкратце — эти пины могут имитировать аналоговый выходной сигнал (например, для постепенного затухания светодиода).
- AREF (9): Этот пин используется достаточно редко. В некоторых случаях это подключают в схему для установки максимального значения напряжения на аналоговых входах (от 0 до 5 вольт).
Кнопка сброса (Reset Button)
Как и на оригинальных Nintendo, на Arduino есть кнопка сброса (reset) (10). При нажатии на нее контакт сброса замыкается с землей и код, загруженный на Arduino начинает отрабатывать заново. Полезная опция, если ваш код отрабатывает без повторов, но вы хотите протестить его работу.
Индикатор питания (Power LED)
Немного справа и ниже надписи “UNO” установлен светодиод, подписанный «on» (11). Этот светодиод должен загореться, когда вы подключили Arduino к источнику питания. Если светодиод не загорелся — плохой знак ;).
Светодиоды TX и RX
TX — сокращение от transmit (передача), RX — от receive (прием). Эти условные обозначения часто встречаются в электронике для обозначения контактов, которые отвечают за серийный обмен данным. На Arduino Uno эти контакты встречаются два раза на цифровых пинах 0 и 1 и в качестве светодиодов TX и RX (12). Эти светодиоды позволяют визуально отслеживать, передает или принимает данные Arduino (например, при загрузке программы на плату).
Главная интегральная микросхема (IC)
Черная деталь с металлическими коннекторами с двух сторон это интегральная микросхема, микропроцессор (IC или Integrated Circuit) (13). Можете смело считать, что это «мозги» нашей Arduino. Этот чип разный в разных моделях Arduino, но обычно он относится к линейке микропроцессоров ATmega от компании ATMEL
Это может оказаться важной информацией для загрузки скетча на плату. Модель интегральной микросхемы обычно указана на ее верхней корпусной части
Для дополнительной информации о вашей микросхеме стоит обратиться к ее даташиту.
Регулятор напряжения
Регулятор напряжения (14) is выполняет функцию, указанную в названии — контролирует напряжение, которое поступает на плату Arduino. Можете его себе представить как охранника, который не пропускает слишком большое напряжение на плату во избежание ее повреждений. Конечно же, у регулятора есть свой предел. Так что питать Arduino напряжением больше 20 вольт нельзя.
Варианты питания Ардуино Уно
Рабочее напряжение платы Ардуино Уно – 5 В. На плате установлен стабилизатор напряжения, поэтому на вход можно подавать питание с разных источников. Кроме этого, плату можно запитывать с USB – устройств. Источник питания выбирается автоматически.
- Питание от внешнего адаптера, рекомендуемое напряжение от 7 до 12 В. Максимальное напряжение 20 В, но значение выше 12 В с высокой долей вероятности быстро выведет плату из строя. Напряжение менее 7 В может привести к нестабильной работе, т.к. на входном каскаде может запросто теряться 1-2 В. Для подключения питания может использоваться встроенный разъем DC 2.1 мм или напрямую вход VIN для подключения источника с помощью проводов.
- Питание от USB-порта компьютера.
- Подача 5 В напрямую на пин 5V. В этом случае обходится стороной входной стабилизатор и даже малейшее превышение напряжения может привести к поломке устройства.
Пины питания
- 5V – на этот пин ардуино подает 5 В, его можно использовать для питания внешних устройств.
- 3.3V – на этот пин от внутреннего стабилизатора подается напряжение 3.3 В
- GND – вывод земли.
- VIN – пин для подачи внешнего напряжения.
- IREF – пин для информирования внешних устройств о рабочем напряжении платы.
Скачать Arduino 1.8.6
IDE 1.8.6 появилась в августе 2018 года. По сравнению с предыдущей версией, в 1.8.6 было добавлено много улучшений.
Изменения в версии 1.8 6
Список дополнений и улучшений:
- Улучшена производительность компиляции проектов за счет распараллеливания процессов и повторного использования скомпилированных фрагментов проекта.
- Прочие улучшения интерфейса:
- Добавлены клавиатурные ускорители при прокрутке меню (нажмите клавишу ‘a’).
- Добавлен скроллер в меню программирования.
- Улучшение диалогового окна «Поиск/Замены»
- Возможность выбора тем – традиционно устанавливаемых в соответствующую папку в виде архива.
- Информация об ошибках выводится в более структурированном формате – с указанием не только строки, но и столбца.
- Монитор порта теперь может показывать информацию о времени (timestamp)
- Добавлены переводы для типов в библиотеках.
- Улучшена функциональность работы с дисплеями высокой четкости (Hi-resolution) в Linux
- Для пользователей Windows исправлены ошибки функциональности сборки проектов из файлов, хранящихся в облачном хранилище OneDrive.
- Ускорен старт программы в случае использования виртуальных сетевых подключений
- Улучшение в менеджере библиотек (поиск, установка).
- Исправление множества небольших ошибок в интерфейсе, повышенная стабильность ядра.
Итак, поделка №1: «Цифровой магический шар»
Как-то, борясь с «ковидной скукой», «наардуинил» вот такую электронную игрушку, цифровой «Magic 8 Ball». Если вы не видели подобный шар «вживую», то, должно быть, вспомните по великолепному фильму «Interstate 60» с Гэри Олдменом, Кристофером Ллойдом, Майклом Джей Фоксом и Джеймсом Марсденом.
Из предыстории проекта: моим детям кто-то подарил оригинальный «Magic 8 Ball», но моя малышка (младшая дочь, ей тогда было 5 лет с «хвостиком») еще не умела читать по-английски, и потому она расстроилась, что не может «использовать магию» и спросить «волшебный шарик» о будущем ее чрезвычайно важных детских надежд и мечтаний. Она спросила папу (т.е. меня), не смогу ли я «заставить шарик заговорить по-русски». Ну, а папа сдуру пообещал — вот и пришлось делать («пацан сказал – пацан сделал!»).
Проект получился не очень сложный, но достаточно занимательный и «насыщенный» разными контроллерами. Исходные коды и схематика доступны на гитхабе.
Главные отличия от подобных проектов «magic 8 ball» (а их хватает) заключаются в многоязычности, реалистичной (если, конечно, это можно так назвать) анимации, голосовой поддержке и имплементацией нового (как я надеюсь) типа UI.
Прошу прощения за качество презентации, но я не только не видеоблогер, но даже и не учусь
Аппаратная часть Arduino
Для начала стоит уяснить, что собой представляет микроконтроллер. По логике, это небольшое устройство, к которому подключаются все остальные элементы системы. Ардуино должен координировать их работу при помощи прописанных в нём скриптов, выдавая соответствующие электрические сигналы. Для стандартного МК Ардуино сигналом является 5 вольт – это единичка, а отсутствие сигнала – нолик.
Именно на таком принципе построено программирование двоичным кодом. Но от такой системы мы уже давно ушли, и потому к устройству можно подключать трансформаторы переменного тока и дополнительные резисторы, ведь некоторым модулям требуется ток в 3.2-4.7 Вольт.
Соответственно, аппаратная часть Ардуино в стандартной комплектации представлена чипом с постоянной памятью, набором из резисторов и транзисторов, а также несколькими пинами. Такая простая конструкция позволяет пользователю самому навешивать «улучшения» по необходимости.
С «коробки» в микроконтроллер устанавливается стандартная прошивка, способная распознавать базовые АТ команды. Пользователь может переустановить её или перепрошить Ардуино по желанию, но стоит учитывать, что без должного опыта вы можете получить бесполезную и неработающую плату.
Как несложно догадаться, изначально Ардуино – это лишь инструмент, который позволяет координировать работу всей системы. А делает он это при помощи встроенных в него библиотек, которые можно устанавливать в систему дополнительно, по необходимости. Вплоть до того, что вы можете поставить вспомогательную карту памяти, если не хватает места. А сами же библиотеки написаны на низкоуровневом C++, который обеспечивает полный контроль над работой микроконтроллера, но имеет и ряд весомых недостатков, о которых мы и поговорим ниже.
Простые проекты Ардуино
Давайте начнем наш обзор с традиционно самых простых, но очень важных проектов, включающих в себя минимальное количество элементов: светодиоды, резисторы и, конечно же, плату ардуино. Все примеры рассчитаны на использование Arduino Uno, но с минимальными изменениями будут работать на любой плате: от Nano и Mega до Pro, Leonardo и даже LilyPad.
Проект с мигающим светодиодом – маячок
Все без исключения учебники и пособия для начинающих по ардуино стартуют с примера мигания светодиодом. Этому есть две причины: такие проекты требуют минимального программирования и их можно запустить даже без сборки электронной схемы – уж что-что, а светодиод есть на любой плате ардуино. Поэтому и мы не станем исключением – давайте начнем с маячка.
Нам понадобится:
- Плата Ардуино Uno, Nano или Mega со встроенным светодиодом, подключенным к 13 пину.
- И все.
Что должно получиться в итоге:
Светодиод мигает – включается и выключается через равные промежутки времени (по умолчанию – 1 сек). Скорость включения и выключения можно настраивать.
Схема проекта
Схема проекта довольно проста: нам нужен только контроллер ардуино со встроенным светодиодом, подсоединенным к пину 13. Именно этим светодиодом мы и будем мигать. Подойдут любые популярные платы: Uno, Nano, Mega и другие.
Подсоединяем Arduino к компьютеру, убеждаемся, что плата ожила и замигала загрузочными огоньками. Во многих платах «мигающий» скетч уже записан в микроконтроллер, поэтому светодиод может начать мигать сразу после включения.
С помощью такого простого проекта маячка вы можете быстро проверить работоспособность платы: подключите ее к компьютеру, залейте скетч и по миганию светодиода сразу станет понятно – работает плата или нет.
Программирование в проекте Ардуино
Если в вашей плате нет загруженного скетча маячка – не беда. Можно легко загрузить уже готовый пример, доступный в среде программирования Ардуино.
Открываем программу Arduino IDE, убеждаемся, что выбран нужный порт.
Проверка порта Ардуино – выбираем порт с максимальным номером
Затем открываем уже готовый скетч Blink – он находится в списке встроенных примеров. Откройте меню Файл, найдите подпункт с примерами, затем Basics и выберите файл Blink.
Открываем пример Blink в Ардуино IDE
В открытом окне отобразится исходный код программы (скетча), который вам нужно будет загрузить в контроллер. Для этого просто нажимаем на кнопку со стрелочкой.
Кнопки компиляции и загрузки скетча
Информация в Arduino IDE – Загрузка завершена
Ждем немного (внизу можно отследить процесс загрузки) – и все. Плата опять подмигнет несколькими светодиодами, а затем один из светодиодов начнет свой размеренный цикл включений и выключений. Можно вас поздравить с первым загруженным проектом!
Проект маячка со светодиодом и макетной платой
В этом проекте мы создадим мигающий светодиод – подключим его с помощью проводов, резистора и макетной платы к ардуино. Сам скетч и логика работы останутся таким же – светодиод включается и выключается.
Графическое изображение схемы подключения доступно на следующем рисунке:
Другие идеи проектов со светодиодами:
- Мигалка (мигаем двумя свтодиодами разных цветов)
- Светофор
- Светомузыка
- Сонный маячок
- Маячок – сигнализация
- Азбука Морзе
Подробное описание схемы подключения и логики работы программы можно найти в отдельной статье, посвященной проектам со светодиодами.
Что такое bluetooth модуль и его назначение
Bluetooth протокол необходим для быстрой передачи данных на небольших расстояниях. Но значительно чаще его применяют в проектах, с целью наладить управление микроконтроллером с близких расстояний. Соответственно, он будет удобен для построения тех же умных домов, если дополнить аппаратную составляющую приложением на смартфон.
Таким образом, первичное и главное назначение Ардуино блютуз – связь с вашим ПК и\или Андроидом по соответствующему протоколу. Это позволяет не только управлять разнообразными датчиками на микроконтроллере, но и, в случае необходимости, обновлять прошивку.
Полностью перепрошить устройство с его помощью не получится. Помимо этого, Android Arduino bluetooth может обеспечить связь между несколькими МК и приборами. Естественно, для этого на каждом из них должен быть установлен независимый модуль. HC-05 позволяет проложить несколько мостов по типу USAR-bluetooth-USART. При этом само устройство будет восприниматься в качестве ответного на USART. А организовывать связь уже будет аппаратная часть вашего проекта.
Модуль HC-06
У блютуз модуля под Ардуино, есть несколько преимуществ, перед стандартными дополнениями под другие МК:
- Инженеру нет необходимости изучать технологию протокола блютуз, чтобы написать софт или начать использовать уже готовые библиотеки.
- Простота использования в целом. Вам не нужно будет паять отдельную плату под распределение мощностей, просто подсоедините устройство к уже готовому МК через пины.
- Обширный выбор библиотек. Так как Ардуино имеет низкий порог вхождения, под все его модули можно найти большое количество библиотек, разного назначения. Но стоит отметить, что весомая их часть – бесполезны, ибо не работают или работают крайне плохо. Ведь пишет их сообщество, которое не изучало основы алгоритмизации и, в большинстве своём, в принципе, плохо разбирается в программировании. Из-за этого, во многих ситуациях, просто модифицировать чужой софт – не лучшее решение, и значительно проще написать свой.
Сфера же применения RC car Arduino bluetooth – огромна и ограничена лишь вашей фантазией. Например, вы можете купить обычную китайскую гарнитуру, припаять к ней пару модулей под Ардуино, так как они могут функционировать и без МК, и загрузить одну из готовых библиотек. После таких манипуляций наушники можно будет использовать в беспроводном режиме и исчезнет проблема с запутывающимися или гнущимися проводами. Это одна из банальных проблем реализации данного протокола в проекте, на деле их тысячи.
Предназначается bluetooth аудио модуль для бытового и коммерческого применения, чему способствуют его характеристики. Также стоит учитывать, что если вы собираетесь в дальнейшем связываться по одноимённому протоколу с ПК, то на большинстве современных устройств необходимо будет докупить блютуз по USB. Но вы можете также спаять его из МК, создав собственный bluetooth модуль для компьютера. Естественно, это не относится к ноутбукам, где поголовно устанавливаются одноимённые передатчики, и никак модифицировать их уже не требуется.
Работа с Arduino IDE
Для работы платы и вашего будущего проекта необходимо написать и загрузить на Andruno скетч. Скетч (sketch) – программа, написанная специально для Adruno. Для выполнения данного пункта вам понадобятся:
- Ардуино;
- USB-кабель Type-A;
- Устройство, работающее на ОС Windows.
Скачайте бесплатную среду разработки для Ардуино с официального сайта производителя. Вместе с программой автоматически установятся драйвера для определения девайса при подключении к USB-порту. Если же Ардуино не определится – произведите ручную установку необходимых компонентов.
На схеме должен загореться зелёный светодиод при подключении к USB. Запустите приложение и приступайте к созданию собственного скетча. Проверка работоспособности и совместимости Arduino с ПО можно проверить при помощи встроенного скетча «LED». Запуск данного процесса должен вызвать мигание светодиода.
В меню Tool – Board выберите используемую плату. Далее следует загрузка скетча в Arduino при помощи кнопки «Upload». Успешное завершение данной операции подтверждается миганием светодиода оранжевого цвета на плате. Для подробного изучения Arduino IDE создано множество англоязычных и отечественных ресурсов, где рассказывается что такое Ардуино и как с ним работать.
Среда разработки оснащена стандартным менеджером добавления библиотек в виде исходного кода на языке C++. Данная возможность расширяет применение компонентов, добавляя новый функционал.
Достоинства микроконтроллера 2560
Ардуино – популярнейшая платформа для реализации различных проектов, подходящая инженерам, которые не хотят программировать «пустые» микроконтроллеры и, в принципе, желают свести общение с программной средой к минимуму.
Но даже у неё в базовой комплектации имеются свои подводные камни, о которых лучше узнать заранее.
Постепенно ставя перед собой более сложные задачи и занимаясь новыми разработками на данном МК, вы со временем столкнетесь с двумя главными проблемами стандартных плат:
- Неоптимальные размеры, не подходящие для удобного их размещения во многих корпусах.
- Недостача в количестве пинов на ввод-вывод данных.
Проблема № 1
Минимизировать занимаемое место крайне легко – достаточно использовать специальные разновидности МК, будь то нано или мини. Здесь есть некоторые особенности, с недостатком памяти, например, на Attiny85, но для простого функционала – это не столь существенно.
Конечно, для более сложных задач можно докупить специальные модули с дополнительным объемом памяти под инструкции, но это полностью нивелирует все плюсы нано, ведь уменьшенный размер будет компенсирован дополнительным слотом под чип и занятым пином. Относится эта проблема не ко всем платам, и всё та же nano способна полностью копировать функционал уно.
Проблема № 2
Менее приятная, но и у неё есть несколько путей для решения:
Как мы видим, оба выхода из ситуации задействуют «костыли», и элегантными их не назовешь. Но это далеко не единственная проблема. Они или работают частично, или нивелируют достоинства системы, что абсолютно недопустимо для сколь-нибудь сложных проектов.
Благо, есть и третий подход, используемый всё чаще, – Ардуино Мега 2560, проекты на которой уже не страдают от обилия этих «костылей». Есть также аналог данной платы, поддерживающий usb-хосты, но давайте сначала разберёмся с основным МК.
Первое, что бросается в глаза при знакомстве с 2560, – внешний вид, ведь она в 1.8 раз длиннее уно, что является необходимым злом, дабы разместить на ней целых 54 порта.
Притом, 15 из них можно использовать в качестве источников ШИМ-сигналов, чтобы регулировать мощность тока или другие параметры системы. Регуляция осуществляется с помощью широтно-импульсных модуляций, а дополнительные 16 портов под вход могут обработать цифровые сигналы и применяться в качестве всё тех же цифровых выходов. В результате, мы получаем более тонкую, длинную и функциональную плату.
Под связь с несколькими видами устройств установлено 4-о UART интерфейсов, на 0, 1, 14, 19 пинах. Притом, один из них направлен под usb с помощью микроконтроллера ATmega8U2, применяемого в качестве замены привычному USB-TTL, который использовался повсеместно в более старых платах.
Но, что важнее, – прошивка располагается в паблик репозитории, а соответственно, доступна для скачивания и модификации любому желающему. Под связь с дисплеями присутствуют SPI и I2C технологии, которые вы также можете применить в своем проекте.
Скачать Arduino 1.8.7
Версия 1.8.x Arduino IDE появилась 11 Сентября 2018 года и является последней стабильной на момент написания статьи. По сравнению с 1.8.6 вы не найдете существенных улучшений в интерфейсе – все изменения, в основном, касались исправления ошибок и повышения стабильности работы.
Изменения в версии 1.8.7
Из наиболее важных изменений данной версии можно выделить следующее:
- Исправлена проблема выбора порта при первом использовании.
- Исправлены ошибки запуска с некорректным файлом library_index.json или некорректными версиями библиотек.
- Исправлены проблемы с низкой скоростью отрисовки меню File и Tools на версии для Mac OS X.
- Улучшена работы с диалоговыми окнами в MAC OS.
- Повышена стабильность работы системы в целом (исправлены ошибки ядра).
Минимальные знания
Сначала стоит ознакомиться с общими понятиями, прежде чем разбирать проекты на Ардуино для начинающих. Ведь система, пусть и имеет низкий порог вхождения, но это вовсе не значит, что вы сможете, не прочитав никакого руководства, сразу ринуться в бой.
Конечно, нет необходимости покупать и штудировать научную литературу пачками, прежде чем вы начнете понимать, как реализовывать проекты на esp8266.
Однако, базовые понятия о нюансах работы МК и том, что он собой представляет, иметь необходимо, иначе вы не раз будете натыкаться на одни и те же грабли.
Для начала стоит выделить алгоритм разработки новой системы, а для этого давайте разберёмся, из чего она состоит.
Аппаратная часть
Это основа любого проекта, который вы собрались подготовить, ведь все они строятся на микрочипах и вспомогательных модулях. Соответственно, прежде чем вообще приступать к архитектуре и созданию платформы, необходимо наметить, какой функционал у неё должен быть.
Так, если вы собираетесь сделать кодовый замок, который будет реагировать на постукивания по поверхности, то необходим соответствующий датчик.
Ведь Ардуино – это всего лишь процессор вашей системы, а все остальные её комплектующие могут варьироваться в зависимости от потребностей. Это же позволяет экономить ресурсы, время и деньги инженера.
Программная часть
Если микропроцессор – сердце системы, то код – её мозг. Без должного программного обеспечения плата просто не поймет, что ей делать с поступающими данными и куда выводить обработанные, да и как их вообще обрабатывать.
Здесь раскрывается прелесть системы, ведь, в отличие от «болванок», Ардуино уно проекты для начинающих могут и вовсе не потребовать с вас ни строчки кода.
Достаточно лишь понимать, какой функционал вам необходим, и уметь гуглить. Всё находится в открытом доступе и, просмотрев пару гайдов, вы быстро разберетесь, как работать через usb с консолью и постоянной памятью системы.
Пример работы
В качестве примера повторим первый эксперимент «Маячок» из набора Матрёшка. На плате уже есть встроенный пользовательский светодиод , подключенный к пину микроконтроллера.
- blink.ino
-
void setup() { // Устанавливаем пин светодиода в режим выхода. // Используем определение LED_BUILTIN, // которое содержит в себе пин светодиода pinMode(LED_BUILTIN, OUTPUT); } void loop() { // Включаем светодиод digitalWrite(LED_BUILTIN, HIGH); // Ждём пол секунды delay(500); // Выключаем светодиод digitalWrite(LED_BUILTIN, LOW); // Ждём пол секунды delay(1000); }
После загрузки программы встроенный светодиод начнёт мигать раз в секунду.
Это значит, всё получилось, и можно смело переходить к другим экспериментам на Ардуино.