Оглавление
eSchool
Это начальный курс по программированию микроконтроллеров Arduino. Рекомендуется к изучению в 6-8 классах. В качестве программной среды будет выступать Arduino IDE с установленным плагином ArduBlock.
Перед прохождением данного курса, настоятельно рекомендуется изучить курсы по программированию в Scratch, так как программирование с использованием визуальной оболочки ArduBlock очень схоже с программированием в среде Scratch.
Для самостоятельного изучения курса понадобится набор Arduino upgraded learning KIT.
Курс состоит из 13 базовых занятий. Внутри курса есть памятки по каждому из компонентов используемого набора Arduino и рекомендации по работе с ними. В конце курса приведены полезные и интересные проекты для самостоятельной реализации. Раздел самостоятельных проектов постоянно пополняется.
Шаг 2. Необходимые компоненты
Компоненты, которые вам нужны для этого проекта. Везде, где количество не указано, считайте его единственным.
- Микроконтроллер Atmel Atmega328p-pu
- 28-контактная база IC
- 16 МГц кварцевый генератор
- конденсатор 22 пФ — 2 шт.
- конденсатор 100 нФ — 4 шт.
- Электролитический конденсатор 100 мкФ — 3 шт.
- 3 мм красный светодиод — 2 шт.
- 330E 1/4W резистор — 2 шт.
- 240E 1/4W резистор — 1 шт.
- 390E 1/4W резистор — 1 шт.
- 10K 1/4W резистор — 1 шт.
- Кнопка для сброса
- Диод общего назначения 1N4007
- Линейный регулятор напряжения 7805
- Линейный регулятор переменного напряжения LM317
- DC разъем мама
- 2-контактный винтовой клеммный блок
- много разъемов «папа» и «мама»
Кроме всего вышеперечисленного для своей собственной Arduino Uno вам также понадобится паяльное оборудование и некоторые аппаратные средства, чтобы облегчить жизнь.
Вам также понадобится программатор USBASP ICSP или конвертер USB в TTL, такой как FTDI для программирования Arduino с вашего компьютера.
Вот проектная спецификация от компании Easyeda:
Собираем все компоненты и переходим к следующему шагу.
Минусы плат
Но столько хвалебных высказываний о МК – это лишь одна сторона медали, новичку же стоит быть готовым и к противоположной.
Низкое качество кода, который находится в сети
Низкий порог вхождения и необходимость в знаниях основ программирования на СИ, и вообще любом языке строгой типизации – вещи несовместимые.
Вот и большинство библиотек в русском комьюнити пишутся людьми, которые захотели попробовать свои силы, и просто накидали обрывки чужого кода, кое-как расшифровав его содержание.
Естественно, оптимизация таких библиотек минимальна, поэтому система может лагать, крашиться, а утечка памяти – и вовсе обыденный баг. Единственное решение – пользоваться англоязычной частью форумов, где качество контента на порядок выше, ведь контролируется куда строже.
Производительность
Здесь всё, опять же, познается в сравнении. Взяв болванку с базовыми инструкциями и написав собственную библиотеку под неё, программист докажет вам, что Ардуино тупит на 2-3 миллисекунды, что совершенно непростительно для микропроцессоров.
Естественно, здесь стоит иметь в виду, что вы такими извращениями заниматься не будете, да и подобная вычурность свойственна не каждому.
Однако недостаток присутствует и может серьезно аукнуться в системах, требующих обработки больших массивов информации. А учитывая предыдущий пункт, на вас свалится снежный ком, который не всегда можно будет разгрести.
Но пока вы реализуете лишь проекты для Аrduino uno для начинающих, старайтесь изучать эту сторону вопроса, ведь лучше быть готовым заранее.
Различие стандартов, воспринимаемых системой
Это уже будет важно тем, кто берет систему, как основу для практического кодинга, а не удобный конструктор под реализацию идей. Имейте в виду, что Аrduino uno r3 проекты для начинающих не будут включать поддержку стандарта С99, а вот обычная планка Ардуино – будет
Имейте в виду, что Аrduino uno r3 проекты для начинающих не будут включать поддержку стандарта С99, а вот обычная планка Ардуино – будет.
Соответственно, скакать между двумя стандартами синтаксиса и библиотеками – не самое приятное занятие. Говорить об отсутствии поддержки сколь-нибудь высокого уровня абстракции и вовсе не стоит.
Но необходимо понимать, что это программирование микропроцессоров, и здесь с++ будет столь же бесполезен, сколь и java при написании ОС.
Подключение вашей платы Arduino к компьютеру
После того как вы установили Arduino IDE на свой компьютер следующим логичным шагом будет подключение платы Arduino UNO к компьютеру. Чтобы сделать это просто используйте кабель для программирования (синего цвета) и соедините его с платой Arduino и USB портом вашего компьютера.
Синий кабель для программирования может выполнять следующие три функции:
- Он запитывает плату Arduino UNO, то есть чтобы обеспечить выполнение программ на ней необходимо просто запитать ее с помощью USB кабеля.
- Через него программируется микроконтроллер ATmega328, находящийся на плате Arduino UNO. То есть код программы пересылается из компьютера в микроконтроллер именно по этому кабелю.
- Он может функционировать в качестве кабеля для последовательной связи, то есть с его помощью можно передавать данные с Arduino UNO в компьютер – это полезно для целей отладки программы.
После того как вы подадите питание на плату Arduino UNO на ней загорится маленький светодиод – это свидетельствует о том, что на плату подано питание. Также вы можете заметить как мигает другой светодиод – это результат работы программы по управлению миганием светодиода, которая по умолчанию загружена в вашу плату ее производителем.
Поскольку вы подключаете плату Arduino в первый раз к компьютеру необходимо некоторое время чтобы драйвера для нее успешно установились. Чтобы проверить правильно ли все установилось и определилось откройте «Диспетчер устройств (Device manager)» на вашем компьютере.
В диспетчере устройств откройте опцию «Порты» “Ports (COM & LPT)”, кликните на ней и посмотрите правильно ли отображается там ваша плата.
При этом стоит отметить, что не стоит обращать внимание на то, какой номер порта отобразился у вашей платы Arduino – он может, к примеру, выглядеть как CCH450 или что то подобное. Этот номер порта просто определяется производителем платы и больше ни на что не влияет
Если вы не можете в диспетчере устройств найти опцию “Ports (COM & LPT)”, то это означает, что ваша плата не корректно определилась компьютером. В большинстве случает это означает проблему с драйверами – по какой то причине они автоматически не установились для вашей платы. В этом случае вы должны будете вручную установить необходимые драйверы.
В некоторых случаях в указанной опции диспетчера устройств может отобразиться два COM порта для вашей платы и вы не будете знать какой из них правильный. В этой ситуации отключите и снова подключите плату Arduino к компьютеру – какой из COM портов при этом будет появляться и исчезать, значит тот и правильный порт.
Следует помнить о том, что номер COM порта будет изменяться при каждом новом подключении вашей платы к компьютеру – не пугайтесь, в этом нет ничего страшного.
Аналоговые входы Arduino
Как мы уже знаем, цифровые пины могут быть как входом так и выходом и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые пины могут только принимать сигнал. И в отличии от цифровых входов аналоговые измеряют напряжение поступающего сигнала. В большинстве плат ардуино стоит 10 битный аналогово-цифровой преобразователь. Это значит что 0 считывается как 0 а 5 В считываются как значение 1023. То есть аналоговые входы измеряют, подаваемое на них напряжение, с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (терморезисторы, фоторезисторы) и считывать аналоговый сигнал с них.
Для этих целей в Ардуино есть функция analogRead(). Для примера подключим фоторезистор к ардуино и напишем простейший скетч, в котором мы будем считывать показания и отправлять их в монитор порта. Вот так выглядит наше устройство:
Подключение фоторезистора к Ардуино
В схеме присутствует стягивающий резистор на 10 КОм. Он нужен для того что бы избежать наводок и помех. Теперь посмотрим на скетч:
Вот так из двух простейших элементов и четырех строк кода мы сделали датчик освещенности. На базе этого устройства мы можем сделать умный светильник или ночник. Очень простое и полезное устройство.
Вот мы и рассмотрели основы работы с Arduino. Теперь вы можете сделать простейшие проекты. Что бы продолжить обучение и освоить все тонкости, я советую прочитать книги по ардуино и пройти бесплатный обучающий курс. После этого вы сможете делать самые сложные проекты, которые только сможете придумать.
Arduino UNO: распиновка платы
Каждый из них имеет подтягивающий резистор и поданное на один из этих пинов напряжения ниже 5 вольт все равно будет считаться как 5 вольт логическая единица. По сравнению с ней в Uno гораздо меньше пинов и памяти. Габариты Arduino Uno: 6,8 см x 5,3 см. Предохранитель срабатыват при прохождении тока более мА через USB порт и размыкает цепь до тех пока нормальные значения токов не будут востановлены.
Низкий уровень сигнала на выводе перезагружает микроконтроллер. Чтобы очистить память Arduino UNO следует загрузить пустой скетч.
Мониторинг последовательной шины Serial Monitor программы Arduino позволяет посылать и получать текстовые данные при подключении к платформе.
Чтобы очистить память Arduino UNO следует загрузить пустой скетч. Первый пин шестиконтактного разъема имеет в основании форму квадратика и нумеруется по часовой стрелке, если смотреть сверху.
Так же на выводе D13 имеется встроенный в плату светодиод. Каждый из них имеет подтягивающий резистор и поданное на один из этих пинов напряжения ниже 5 вольт все равно будет считаться как 5 вольт логическая единица.
Максимальное потребление тока 50 мА.
Видео с пошаговой сборкой устройства для управления со смартфона: Делаем мини-пианино с помощью Ардуино — схемы и видео Сделаем пианино с помощью Arduino и сыграем на нем свою первую мелодию. Можно использовать, батарейки, аккумуляторы и разнообразные блоки питания.
РАЗБОР ПРОСТОЙ СХЕМЫ — Читаем электрические схемы 2 ЧАСТЬ
См. также: Акты скрытых работ кабель в земле
Сеть
Не оставлен без внимания и вопрос внешних коммуникаций. Шилды этого типа зачастую поставляются вместе с разъемами чтения SD-card.
Самым простым из существующих на текущий момент считается W5100, более продвинутый – W5500. Последний обладает лучшей оптимизацией в плане быстродействия и энергосбережения. Основное предназначение обоих – связь посредством кабельных UDP сетей по протоколу TCP/IP.
W5100 и W5500
Есть у этих плат и младший брат для соединения с Arduino NANO. Но он изготавливается в виде модуля, а не шилда, и лишен разъема для SD-card.
Модуль LAN
Не забыты и беспроводные коммуникации по WIFI. К примеру, ниже представлен официальный шилд, использующий 802.11b/g соединения.
Как видно по фотографии, на схеме кроме разъема для SD-карт присутствует и мини-USB, через который можно производить обновление ПО самого устройства, в основе своей – микроконтроллера связи.
WIFI Shield
Плата Arduino Mega 2560
Устройство Arduino Mega 2560 собрано на микроконтроллере ATmega 2560 (datasheet), является обновлённой версией Arduino Mega.
Для осуществления преобразования USB–UART-интерфейсов используется новый микроконтроллер ATmega 16U2 ( либо ATmega 8U2 для версий плат R1 или R2).
Состав платы следующий:
- количество цифровых входов/выходов составляет 54 (15 из них можно использовать в роли выходов-ШИМ);
- число аналоговых входов – 16;
- реализация последовательных интерфейсов производится посредством 4 аппаратных приёмопередатчиков UART;
- 16 МГц – кварцевый резонатор;
- USB-разъём;
- питающий разъём;
- внутрисхемное программирование осуществляется через ICSP-разъём;
- кнопка для сброса.
В устройстве Mega 2560 R2-версии добавлен специальный резистор, подтягивающий HWB-линию 8U2 к земле, что позволяет значительно упростить переход Arduino в DFU-режим, а также обновление прошивки. Версия R3 незначительно отличается от предыдущих. Изменения в устройстве следующие:
- добавлены четыре вывода – SCL, SDA, IOREF (для осуществления совместимости по напряжению различных расширительных плат) и ещё один резервный вывод, пока не используемый;
- повышена помехоустойчивость по цепи сброса;
- увеличен объём памяти;
- ATmega8U2 заменён на микроконтроллер ATmega16U2.
Выводы Arduino Mega 2560R3 предназначаются для следующего:
- Имеющиеся цифровые пины могут служить входом-выходом. Напряжение на них – 5 вольт. Каждый пин обладает подтягивающим резистором.
- Аналоговые входы не оснащены подтягивающими резисторами. Работа основана на применении функции analog Read.
- Количество выводов ШИМ составляет 15. Это цифровые выводы №2 – №13, №44 – №46. Использование ШИМ производится через функцию analog Write.
- Последовательный интерфейс: выводы Serial: №0 (rx), №1 (tx); выводы Serial1: №19 (rx), №18 (tx); выводы Serial2: №17 (rx), №16 (tx); выводы Serial3: №15 (rx), №14 (tx).
- Интерфейс SPI оборудован выводами №53 (SS), №51 (MOSI), №50 (MISO), №52 (SCK).
- Вывод №13 – встроенный светодиод.
- Пины для осуществления связи с подключаемыми устройствами: №20 (SDA), №21 (SCL).
- Для внешних прерываний (низкий уровень сигнала, другие изменения сигнала) используются выводы №2 , №3, №18, №19, №20, №21.
- Вывод AREF задействуется командой analog Reference и предназначается для регулирования опорного напряжения аналоговых входных пинов.
- Вывод Reset. Предназначен для формирования незначительного уровня (LOW), что приводит к перезагрузке устройства (кнопка сброса).
Описание обеспечения
Arduino Nano может получать питание через подключение Mini-B USB, или от нерегулируемого 6 – 20 В (вывод 30), или регулируемого 5 В (вывод 27), внешнего источника питания. Автоматически выбирается источник с самым высоким напряжением.
Микросхема FTDI FT232RL получает питание, только если сама платформа запитана от USB. Таким образом при работе от внешнего источника (не USB), будет отсутствовать напряжение 3.3 В, генерируемое микросхемой FTDI, при этом светодиоды RX и TX мигают только при наличие сигнала высокого уровня на выводах 0 и 1.
На Arduino Nano доступны следующие контакты для доступа к питанию:
- Vin : Напряжение от внешнего источника питания (не связано с 5 В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, если к устройству подключён внешний адаптер.
- 5V : На вывод поступает напряжение 5 В от стабилизатора платы. Данный стабилизатор обеспечивает питание микроконтроллера ATmega328. Запитывать устройство через вывод 5V не рекомендуется — в этом случае не используется стабилизатор напряжения, что может привести к выходу платы из строя.
- 3.3V : 3,3 В от стабилизатора микросхемы FT232RL. Максимальный ток вывода — 50 мА.
- GND : земля.
- IOREF : Вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера. В зависимости от напряжения, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней, что позволит ей работать как с 5 В, так и с 3,3 В устройствами.
Распиновка и схема платы arduino nano.
Память
Микроконтроллер ATmega328 имеет 32 КБ флеш-памяти для хранения кода программы, 2 КБ используется для хранения загрузчика. ATmega328 имеет 2 КБ ОЗУ и 1 КБ EEPROM.
Ввод / вывод
Каждый из 14 цифровых выводов Nano, используя функции pinMode(), digitalWrite(), и digitalRead(), может настраиваться как вход или выход. Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор (стандартно отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:
- Последовательная шина: 0 (RX) и 1 (TX) – Выводы используются для получения (RX) и передачи (TX) данных TTL. Данные выводы подключены к соответствующим выводам микросхемы последовательной шины FTDI USB-to-TTL.
- Внешнее прерывание: 2 и 3 – Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().
- ШИМ: 3, 5, 6, 9, 10, и 11 – Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite().
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) – Посредством данных выводов осуществляется связь SPI, которая, хотя и поддерживается аппаратной частью, не включена в язык Arduino.
- LED: 13 – Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит. На платформе Nano установлены 8 аналоговых входов, каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно выводы имеют диапазон измерения до 5 В относительно земли, тем не менее имеется возможность изменить верхний предел посредством функции analogReference().
- I2C: 4 (SDA) и 5 (SCL) – Посредством выводов осуществляется связь I2C (TWI).
- AREF – Опорное напряжение для аналоговых входов. Используется с функцией analogReference().
- Reset – Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.
Coursera
Курс по Arduino состоит из серии практических задач про создание вещей, которые работают сами: изучают мир, принимают решения и действуют – двигаются, обмениваются данными друг с другом и с человеком, управляют другими устройствами.
Пройдя этот курс, вы сможете создавать устройства, которые считывают данные о внешнем мире с разнообразных датчиков, обрабатывают информацию, получают и отправляют данные на ПК, в Интернет, на мобильные устройства, управляют индикацией и движением.
Создание устройств будет включать проектирование, изучение компонентов, сборку схем, написание программ, диагностику. Попутно с созданием самих устройств вы сделаете визуализацию на ПК, создадите веб-страницу, которую будет демонстрировать одно из ваших устройств, а также разберетесь с устройством и работой FDM 3D-принтера.
Курс не требует специальных знаний у слушателей, доступен даже ученикам старших классов средней школы. Плюсом будут навыки программирования и владение английским языком на уровне чтения технической документации, однако обязательным это не является.
Весь курс посвящен практике и самым лучшим решением для вас будет раздобыть электронику, повторять показанные примеры и экспериментировать самостоятельно.