Андрей Смирнов
Время чтения: ~22 мин.
Просмотров: 0

Плата arduino uno r3: схема, описание, подключение устройств

Снижение тактовой частоты.

Потребление любого микроконтроллера сильно зависит от частоты его тактирования, и снижая ее, мы можем добиться значительного снижения энергопотребления. В микроконтроллерах AVR имеется возможность программного изменения предделителя частоты тактирования. А для простоты работы с ним мы будем использовать специальную библиотеку Prescaler.h, скачать которую можно по адресу https://github.com/fschaefer/Prescaler:

#include “Prescaler.h”

Изменение предделителя тактирования производится с помощью функции setClockPrescaler(); имеющей один аргумент, отвечающий за величину предделителя. Существует 9 констант в качестве аргументов для данной функции:

setClockPrescaler(CLOCK_PRESCALER_1);

setClockPrescaler(CLOCK_PRESCALER_2);

setClockPrescaler(CLOCK_PRESCALER_4);

setClockPrescaler(CLOCK_PRESCALER_8);

setClockPrescaler(CLOCK_PRESCALER_16);

setClockPrescaler(CLOCK_PRESCALER_32);

setClockPrescaler(CLOCK_PRESCALER_64);

setClockPrescaler(CLOCK_PRESCALER_128);

setClockPrescaler(CLOCK_PRESCALER_256);

В зависимости от аргумента, данная функция снижает тактовую частоту в несколько раз (CLOCK_PRESCALER_16 означает что базовая тактовая частота микроконтроллера будет снижена в 16 раз).

Перед использованием данной функции, необходимо отметить, что правильность работы всей периферии сильно зависит от тактовой частоты, и при ее снижении – большинство функций микроконтроллера, завязанные на времени, будут работать неправильно (таймеры, PWM, USART, I2C и т.д.). Кроме того неправильно будут работать стандартные функции millis(); и delay();. Но данная библиотека предоставляет замену этим функциям в виде функций trueMillis(); и trueDelay();.

Рассмотрим вариант применения снижения тактовой частоты на примере работы с Serial интерфейсом:

#include "prescaler.h"



int i = 0;



void setup() {

pinMode(LED_BUILTIN, OUTPUT);

Serial.begin(9600);

setClockPrescaler(CLOCK_PRESCALER_256); //Понижаем тактовую частоту в 256 раз

}



void loop() {

digitalWrite(LED_BUILTIN, HIGH); //включаем светодиод

trueDelay(200); //ждем 200 мс с учетом пониженной частоты

digitalWrite(LED_BUILTIN, LOW); //выключаем светодиод

trueDelay(1000); //ждем 1 секунду с учетом пониженной частоты

i++;

if (i == 5) { //каждый 5 цикл отправляем данные в Serial порт

setClockPrescaler(CLOCK_PRESCALER_1); //Повышаем частоту тактирования до стандартной

Serial.println("I'm alive!"); //Отправляем данные

delay(15); //Ждем пока данные отправятся

setClockPrescaler(CLOCK_PRESCALER_256); //Обратно снижаем частоту тактирования

i = 0;

}

}

Как видно, перед тем как использовать Serial порт, необходимо сначала повысить частоту тактирования до стандартной, и только потом отправлять данные. То же самое касается и приема данных – необходимо позаботиться о возвращении стандартной частоты тактирования еще до того, как данные будут отправлены на наш микроконтроллер, иначе они будут приняты неверно. То же касается и остальной периферии, завязанной на временных промежутках.

Таким образом, мы рассмотрели 4 различных способа снижения энергопотребления микроконтроллером во время его работы. Пробуйте комбинировать данные способы в своих проектах для достижения максимальной эффективности ваших устройств. Удачи!

Первая программа

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

Принцип работы этой программы достаточно простой: светодиод загорается на 1 секунду и тухнет на 1 секунду. Для первого варианта нам не понадобиться собирать макет. Так как в платформе Arduino к 13 пину подключён встроенный светодиод.

Описание пинов платы

Микроконтроллер имеет 14 цифровых пинов, они могут быть использованы, как вход или выход. Из них 6 могут выдавать ШИМ-сигнал. Они нужны для регулировки мощности в нагрузке и других функций.

Пин ардуиноАдресация в скетчеСпециальное назначениеШИМ
Цифровой пин 0RX
Цифровой пин 11TX
Цифровой пин 22Вход для прерываний
Цифровой пин 33Вход для прерыванийШИМ
Цифровой пин 44
Цифровой пин 55ШИМ
Цифровой пин 66ШИМ
Цифровой пин 77
Цифровой пин 88
Цифровой пин 99ШИМ
Цифровой пин 1010SPI (SS)ШИМ
Цифровой пин 1111SPI (MOSI)ШИМ
Цифровой пин 1212SPI (MISO)
Цифровой пин 1313SPI (SCK)
К выходу дополнительно подсоединен встроенный светодиод

Вызов ШИМ-сигнала осуществляется через команду AnalogWrite (номер ножки, значение от 0 до 255). Для работы с аналоговыми датчиками присутствует 6 аналоговых входов/выходов.

ПинАдресация в скетчеСпециальное назначение
Аналоговый пин A0A0 или 14
Аналоговый пин A1A1 или 15
Аналоговый пин A2A2 или 16
Аналоговый пин A3A3 или 17
Аналоговый пин A4A4 или 18I2C (SCA)
Аналоговый пин A5A5 или 19I2C (SCL)

Их тоже можно использовать, как цифровые.

Аналоговый сигнал обрабатывается 10 битным аналогово-цифровым преобразователем (АЦП), а при чтении микроконтроллер выдаёт численное значение от 0 до 1024. Это равно максимальному значению, которое можно записать в 10 битах. Каждый из выводов способен выдать постоянный ток до 40 мА.

Принципиальная схема платы выглядит так (нажмите для увеличения):

Что нужно для старта работы с Arduino

Оригинальные платы, наборы и компоненты выпускает компания Arduino. С ростом популярности конструктора появились и другие похожие продукты — комплекты с оригинальными платами Arduino или их аналогами.

Наборы — это удобно: вы получаете плату, все нужные датчики и механизмы, а также инструкции. Вариант комплектации обычно подбирается для конкретной цели. Например, чтобы вы смогли соорудить автомобиль с управлением по Bluetooth или робота, который будет патрулировать квартиру.

Фото: rozdemir/Shutterstock

Но оригинальные платы и другие компоненты Arduino стоят сравнительно дорого. Так, Arduino Uno третьей ревизии на официальном сайте предлагается за 23 доллара. Стартовый набор Arduino Starter Kit на базе Arduino Uno с макетной платой, коннекторами, светодиодами — за 93 доллара. И это без учёта стоимости доставки.

В продаже можно найти конструкторы на базе оригинальных итальянских плат Arduino. Например, есть российская серия «Матрёшка», наборы от издательства «БХВ‑Петербург» и вариант конструктора «Знаток».

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

На Ozon продаются комплекты с платами‑аналогами. Например, здесь есть неплохой вариант за 2 990 рублей с учётом скидки. Внутри — копия Arduino Uno, макетная плата, хороший набор датчиков, светодиодов и коннекторов, а также пульт управления, экраны, кнопки и другие компоненты.

Такой же комплект на AliExpress стоит вдвое дешевле — 1 558 рублей. Доставка бесплатная. Больше наборов можно увидеть на этой странице.

Россия выпускает платы — аналоги Arduino под брендом Iskra. Так, Iskra Neo похожа на Arduino Leonardo, на базе неё есть набор «Планета XOD». А Iskra Mini — аналог Arduino Mini.

Помимо наборов с платформой Arduino, продаются и комплекты датчиков, коннекторов и так далее. Наконец, можно заказать по отдельности и нужную плату, и каждый недостающий компонент для системы, которую вы спроектировали.

Программная часть

Когда система собрана, ее необходимо запрограммировать. Управление GSM выполняется специфическими функциями и АТ-командами. Устройство принимает их, интерпретирует и выдает определенный результат, отправляя/получая СМС или звонок. Команды задаются через программное обеспечение (такая возможность предусмотрена в IDE) или вводятся напрямую через утилиты работы с портами.

AT-команды

Как уже говорилось, GSM-модули управляются посредством передаваемых на них AT-команд. Это текстовые строки, обрабатываемые прошивкой и инициирующие те или иные действия.

Обычно они генерируются управляющим ПО, но могут быть отправлены и с клавиатуры, например, через утилиту монитора порта из поставки Arduino IDE.

Команды делятся на три вида:

  • текстовые — на них контроллер дает ответ о поддержке введенной пользователем директивы или отсутствии таковой;
  • чтение — просмотр параметров;
  • запись — ввод и сохранение некоторых новых значений.

Набор команд может отличаться в зависимости от контроллера.

Получение и отправка СМС

Пример работы с короткими сообщениями для связки «Arduino + сотовый модуль»:

  • в IDE выполняется директива AT+CMGF=1. Она указывает перейти в формат передачи текстового сообщения;
  • далее вводится AT+CSCS=«GSM». Выбирается кодировка ASCII;
  • AT+CMGS=«номер», где номер указывается полностью (в формате «+7…»);
  • когда выполнена эта команда, вводится непосредственно текст сообщения, и по нажатию ctrl-Z отправляется на выбранный номер.

Если все сделано, интерфейс программы вернет ОК.

Для получения SMS:

  • AT + CNMI = 2,2,0,0,0 — переход в состояние чтения;
  • когда блок GSM получит сообщение, он отправит в порт строку +CMTI: «SM»,2. Цифра может отличаться, она обозначает номер СМС в очереди;
  • для прочтения следует дать директиву AT+CMGR=2.

Прием голового звонка

Для выполнения потребуется включить библиотеку разработчика GSM.h:

Если SIM-карта защищена пин-кодом, его также следует определить в скетче:

При пустом коде значение этого поля просто остается пустым.

В обязательном порядке объявляется переменная отслеживания статуса подключения к мобильной сети:

Соединение выполняется посредством функции gsmAcess.begin(). Если процесс завершен успешно, функция возвращает строку GSM_READY.

Далее нужно указать, что сотовый модем переведен в режим приема звонка. За это отвечает функция vcs.hangCall(). Следующая важная функция — getvoiceCallStatus. При входящем звонке она вернет строку RECEIVINGCALL. А для определения номера звонящего следует воспользоваться retreiveCallingNumber.

При поднятой трубке скетч сообщит об этом строкой TALKING. После чего перейдет в режим ожидания ввода; для завершения разговора вводится символ перехода на новую строку.

Это основные функции и команды для данной задачи. Разумеется, в полном скетче потребуется определить гораздо больше параметров, которые можно найти в идущих с IDE примерах и официальной документации.

Работа в комплексе с другими системами

Самое первое, с чем вы можете познакомиться, даже без приобретения дополнительных устройств для разработки – это связь по последовательному порту. Он активируется по команде (скорость, например 9600). Подробно о каждой команде вы можете прочитать в обучающем разделе на официальном сайте проекта Arduino.ru. Вы можете обмениваться с компьютером информацией. Плата, в зависимости от программного кода, может вам присылать данные, а вы их, через монитор портов в Arduino IDE, можете читать.

Кроме последовательного порта, в ардуино UNO реализована поддержка таких интерфейсов:

  • I2C;
  • SPI.

Через них можно осуществлять «общение» между несколькими платами, а также подключать разную периферию: датчики и дисплеи.

С чего начать работу с Ардуино

Если вы делаете первые шаги в мире Ардуино, то советуем вам заранее приготовиться к двойному потоку знаний. Во-первых, вам придется разобраться с тем, что такое контроллер Arduino, какие устройства можно к нему подключить и как это сделать. Потребуется разобраться с основами электроники. Во-вторых, придется научиться навыкам программирования в Arduino. Для профессиональной работы нужны знания C++, для начинающих доступны многочисленные графические среды с блочным программированием. Например, mBlock или ArduBlock. При отсутствии реальной платы можно воспользоваться одним из эмуляторов ардуино.

Все это потребует и времени, и знаний, но результатом станет удивительное ощущение восторга от сделанных своими руками умных устройств

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

Программирование nRF24L01

Для написания скетчей в среде ARDUINO IDE нужно установить 2 библиотеки – RF24 и SerialFlow. Первая нужна для работы с модулем, вторая – для пакетной передачи данных. Ссылки на скачивание библиотек вы найдете в конце статьи.

Пример программы для передатчика. В первую очередь создается объект класса SerialFlow:

SerialFlow rd(9,10);

В этой строке 9 и 10 – это свободные пины с Ардуино, к которым подключаются контакты CN и CSN.

Настройка формата передаваемых пакетов производится в функции setup:

rd.setPacketFormat(2, 1);

Первый аргумент (в данном случае число 2) определяет размер передаваемого числа. Для конкретного случая число находится в диапазоне от 0 до 655535 и занимает 2 байта. Для 0 до 255 будет занят 1 байт. Второй аргумент  – количество чисел.

Далее нужно настроить адреса передатчика и приемника:

rd.begin(0xF0F0F0F0E1LL,0xF0F0F0F0D2LL);

Первым аргументом записывается адрес передатчика, вторым – адрес приемника.

Цикл loop выполняет отправку пакетов.

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

В коде так же записывается объект SerialFlow и настраиваются необходимые параметры пакета данных. Изменения происходят в строчке

rd.begin(0xF0F0F0F0D2LL,0xF0F0F0F0E1LL);

Теперь первым аргументом должен быть указан адрес приемника, а вторым – передатчика.

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

Помимо библиотек RF24 и SerialFlow существует и другая – библиотека Mirf. Выбор той или иной библиотеки определяется удобством работы.

Операторы для передачи данных между двумя модулями с помощью библиотеки Mirf:

  • payload = PAYLOAD; – задает размеры буфера для приема. На payload установлено ограничение – максимальный размер равен 32 байтам.
  • setRADDR((byte*)’serv1′); – выбор адреса приемника (размер не менее 3 байт и не более 5 байт).
  • setTADDR((byte *)’clie1′); – выбор адреса передатчика (размер не менее 3 байт и не более 5 байт).. Во время передачи пакета данных на первом модуле происходит установка адресата Mirf.setTADDR((byte *)’clie1′), затем пакет отправляется ко второму модулю. После этого на втором модуле устанавливается Mirf.setTADDR((byte *)’serv1′) и возвращается ответ на первый модуль.
  • isSending() – проверка окончания передачи данных.
  • dataReady() – проверка получения входящего пакета.
  • getData((byte *) &data); – чтение полученных пакетов в переменную data.
  • send((byte *) &data); – подача команды на отправку пакета. В библиотеке указывается адрес, в котором находятся переменные. После этого происходит копирование их в память и в итоге пользователь получает доступ к переданным данным через переменные. Способ удобен тем, что можно передавать любой тип данных, в том числе структуры.

Бесплатные учебники по Ардуино на русском

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

Книги и учебники по Ардуино для начинающих

 
Быстрый старт с набором Arduino (PDF)
Книга содержит полезную информацию для ознакомления с Arduino и практические эксперименты с иллюстрациями. Авторы пособия подробно рассказали, как установить программное обеспечение на компьютер и изложили 14 простых проектов, где для работы необходимо минимум первоначальных электронных компонентов.

Учебник содержит уже 33 урока по программированию Ардуино с использованием различных модулей и датчиков. Российские авторы изложили в своем учебнике практические уроки с цветными иллюстрациями и подробными комментариями, все скетчи из книги можно скачать из Интернета по ссылкам, указанным в уроках.

Учебник переведен на русский и содержит подробные уроки для программирования микроконтроллера от известного автора. К плюсам данной книги можно отнести ссылки на информационный сайт, а также наличие видео уроков от Джереми Блума на YouTube (они тоже переведены на русский язык и озвучены).

 
Arduino и Raspberry Pi в проектах IoT (PDF)
Книга рассчитана на опытных пользователей и содержит уроки по Ардуино для создания проектов с использованием Intemet of Things (Интернета вещей). Показана организация доступа к сети Интернет, отправка и получение данных с использованием IoT сервисов

Уделено внимание обмену данными с помощью GPRS/GSM Shield.

Книги с интересными проектами на Ардуино

 

25 крутых проектов с Arduino (PDF)

Книга содержит описание и руководство по сборке 25 крутых проектов на Ардуино. Марк Геддес написал руководство, где подробно расписано начало программирования в среде Arduino IDE, правила сборки электрических схем на макетной плате, даны инструкции с примерами интересных проектов для начинающих с нуля.

 

Проекты с использованием Arduino (PDF)

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

 

77 проектов для Arduino (PDF)

Книга «77 проектов для Arduino» автор Петин В.А. подойдет как, для начинающих программистов, так и для тех, кто хорошо освоил Ардуино и хочет сделать самостоятельно интересные проекты на микроконтроллере. Начните сборку проектов на Ардуино с подборкой литературы от лучших авторов на нашем сайте.

Скачать книги можно, как на компьютер, так и на телефон. Так как язык Arduino основан на языке программирования C++, то на мобильном устройстве можно начать изучать основы, а на компьютер скачать учебник по Ардуино на русском бесплатно и без регистрации. Первым делом рекомендуем вам прочитать, что такое Ардуино и что с ним можно сделать, особенно если вы еще не работали с этими платами.

Использование библиотеки Narcoleptic

Эта библиотека позволяет вводить микроконтроллер в режим сна на определенное время с помощью одной функции – Narcoleptic.delay();. Аргументом данной функции является время в миллисекундах – используется точно так же как и стандартная функция delay();.

Рассмотрим ту же программу что и ранее, но с использованием данной библиотеки:

#include <Narcoleptic.h>



void setup() {

          pinMode(LED_BUILTIN, OUTPUT);

}



void loop() {

          digitalWrite(LED_BUILTIN, LOW);

          Narcoleptic.delay(1000);

          digitalWrite(LED_BUILTIN, HIGH);

          Narcoleptic.delay(120);

}

Как видно, код стал значительно проще, и в случае, когда нужны простые паузы между полезными действиями – эта библиотека является самым простым и удобным решением.

Зачем нужен модуль для Ардуино

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

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

Оригинальная система хранения для мастерской

Питание плат Arduino

Перед рассмотрением способов снижения электроэнергии стоит отметить, что энергоэффективность устройства повышается с понижением питающего напряжения. Большинство плат Arduino поддерживают входное напряжение до 12В, при этом сам микроконтроллер питается напряжением 5В. Таким образом, учитывая, что в большинстве плат Arduino установлены линейные регуляторы напряжения, получается, что при питании платы напряжением больше 5В, значительная часть мощности будет рассеиваться в тепло.

Пример потребления электроэнергии платой Arduino Mini Pro:

Питающее напряжение, ВТок, мАПотребляемая мощность, мВт
942378
522110
3.3826.4

На нашем сайте вы можете найти описание схем энергопитания для плат Arduino Uno, Nano, Mega и Leonardo.

В рамках данной темы мы рассмотрим 4 основных метода снижения энергопотребления:

  • использование режимов энергосбережения;
  • использование библиотеки Narcoleptic;
  • выключение компонентов микроконтроллера;
  • снижение тактовой частоты;

Восстановление стандартной АТ-прошивки

После программирования платформы в режиме самостоятельного контроллера может понадобиться восстановить на модуле стандартную AT-прошивку. Для этого необходимо воспользоваться утилитой Flash Download Tool.

Дополнительные рекомендации

Ардуино питание от 9 вольт

 Можно ли запитать Ардуину от батарейки «Крона» или блока пальчиковых батареек? Можно! На холостом ходу или с минимальной нагрузкой она проработает у Вас не один месяц. А вот уже с небольшим увеличением нагрузки время автономной работы быстро сойдет на нет. Если как мы рассматривали выше повесить на батарейку что-то посложнее, вроде датчиков любящих покушать и светодиодов индикации в особом изобилии, то батарейки может хватить совсем не надолго. Говорить предметно в этом случае можно только лишь относительно каждого конкретного случая. Что же касается блока питания, то его необходимо подключать к разъему внешнего питания. То есть lm1117 надо будет погасить 4 вольт. Давайте прикинем какую мощность надо будет рассеять lm1117. Пусть ток потребления 250 мА.

 P=U*I=4*0.25=1 Вт.

 Вроде не так уж и много, да к тому же и спецификация 9 вольт для питания вполне допускает. Это напряжение учитывает все потери в элементах и стабилизаторе, а значит является одним из наиболее предпочтительных. Я бы сказал , что напряжение 79 вольт идеальный вариант для Ардуино.

Почему Arduino — это круто

Существует миф, что Arduino — это дорогая игрушка для гиков, которые умеют держать в руках паяльник и писать километры кода. Но на самом деле даже не слишком подкованному технически человеку этот конструктор принесёт радость и пользу.

Это возможность развить технические навыки

Arduino — конструктор простой и «дружелюбный». Особых знаний и умений вам не потребуется, специального образования — тоже. Повторимся: с макетной платой и коннекторами ничего паять не придётся — собирать гаджеты будет не сложнее LEGO.

Поначалу вы можете использовать готовые схемы и скетчи. Со временем научитесь дорабатывать их или создавать собственные конструкции с нуля. А готовые библиотеки с открытым исходным кодом только расширят ваши возможности.

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

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

Это первый шаг к новой профессии

Если вы хоть раз задумывались о том, чтобы войти в IT, Arduino поможет вам принять правильное решение. Создавая гаджеты из конструктора и программы для них, вы поймёте, насколько вам интересен этот процесс, чем именно вы хотите заниматься: аппаратной или программной частью, сборкой новых конструкций или совершенствованием устройств, которые разработали другие пользователи, а может, поиском ошибок и контролем качества систем.

С Arduino можно освоить даже системы искусственного интеллекта и создать устройства интернета вещей. Это два передовых пути в IT, которые сейчас очень активно развиваются и испытывают огромный кадровый голод. Поэтому здесь работа специалистов оплачивается весьма щедро.

Это интересное хобби, которое вряд ли надоест

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

На базе Arduino вы сможете разработать бесконечное множество гаджетов. При этом используются одни и те же элементы в самых разных вариантах и комбинациях — экономично!

Это полезное занятие

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

Кроме того, на базе Arduino можно строить рабочие прототипы разных новых гаджетов и систем. Так, вы можете установить везде умные датчики движения и получать на смартфон сообщения о различных событиях: скажем, когда кот вернулся с прогулки или когда у него закончилась еда. Ещё один пример — метеостанция с онлайн‑доступом: позволит предсказывать погоду точнее синоптиков «из телевизора» и видеть результат на экране смартфона.

Типовые схемы

Рассмотрим примеры подключения указанных модулей к контроллерам Arduino.

Принцип дальнейших действий во всех случаях общий: GPRS модуль сопрягается с материнской платой главного контроллера. Для правильного выполнения подключения следует изучить инструкцию к используемой модели Arduino, выяснить распиновку на ней и на компоненте сотовой связи. Далее на собранную систему заводится питание. Когда устройство включено, его переходником USB-UART подключают к ПК и создают программу в среде Arduino IDE или другом удобном пакете ПО разработчика.

Рассмотрим несколько примеров сборки аппаратной части.

Arduino Uno и контроллер SIM800L

Поскольку напряжение SIM800L невелико, понадобится преобразователь.

Изучим распиновку устройства:

Последовательность действий:

  • подключаем плату UТO к компьютеру;
  • к ней подводится питание 12 В через конвертер;
  • минус источника выводится на контакт GND Ардуино, а GND — на контакт минуса конвертера;
  • плюс ИП идет к плюсу преобразователя;
  • плюс конвертера — к плюсу блока GSM;
  • минус с «земли» преобразователя на GND сотового блока;
  • RXT и TXD блока на 2, 3 пины микроконтроллера UNO соответственно.

К цифровым выводам можно подключать и другие устройства, объединяя, при необходимости, несколько дополнительных модулей и плат.

UNO и A6

Здесь напряжение питания стандартное, и конвертер в схему не включается. Платы соединяются напрямую.

Общая схема распиновки:

Принцип соединения контактов:

  • UART_RXD выводится на TX 1 UNO;
  • UART_TXD — на RX 0;
  • GND соединяется с GND на GSM-блоке;
  • пин электропитания VCC0 c кнопкой включения PWR-KEY.

Шилд GSM SIM900 и контроллер Arduino Mega

Пиковая сила тока при активации устройства может достигать 2 А, в связи с чем напрямую питание подключать нежелательно. Перед соединением плат нужно поставить SIM-карту в предназначенный для нее слот и установить TX и RX джамперы:

Последовательность дальнейших действий:

  • желтый провод (TX) объединяется с TX Arduino;
  • зеленым соединяются контакты RX;
  • GND выводится на «землю» микроконтроллера.

Проверить собранный гаджет можно следующим экспериментом:

  • соединить GND и RESET главного микроконтроллера;
  • вставить в разъем сим-карту;
  • подать питание на модуль GSM;
  • подключить центральную плату Arduino к ПК через порт USB, нажать кнопку ON;
  • Если все собрано верно, красный светодиод загорится, а зеленый станет мигать.

Способы питания Ардуино

Как уже упоминалось, система крайне вариативна, и это в ней заложено самими создателями. А соответственно, она должна быть готова к разным ситуациям и вариантам эксплуатации, чтобы «неловкий» пользователь не сломал что-то ненароком. Или, что происходит чаще, ему не приходилось самостоятельно проектировать материнскую плату под нюансы каждой системы.

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

А всё дело в том, что на Ардуино питание выстроено специальным образом, позволяющим работать с различными источниками питания, а соответственно, и с некоторой областью характеристик тока, вместо четких значений у аналогов системы. Именно этим питание Аrduino nano и подкупает большинство новичков, а вот более продвинутым пользователям такое решение кажется спорным и может вызывать в их сообществе множество дискуссий.

Почему так происходит, вы поймете сами, как только наработаете определённый опыт в проектировании систем и начнете делать более серьезные вещи, но к тому моменту, скорее всего, надобность в использовании Ардуино у вас и вовсе отпадет.

Если говорить более конкретно, то питание на Ардуино может подключаться через три различных источника:

  1. Mini В USB, когда вы тестируете проект на ПК. Это крайне важный и удобный момент, ведь нет необходимости, при программировании и тестировании вашего продукта, подводить ток дополнительно, что экономит силы. А наличие систем, позволяющих через такой источник регулировать характеристики тока, упрощает некоторые задачи.
  2. Непосредственно через нерегулируемые источники в 6-20 вольт. Это происходит через 30 пин, и подобно выходу на цифровой сигнал, данный вход воспринимает весь диапазон. Удобно в некоторых случаях, подробнее о которых вы можете узнать, когда начнете разбирать проекты на системе.
  3. Через регулируемые источники в 5 вольт. Это стандартный и часто используемый способ подавать питание на Аrduino uno. В нем есть небольшой недостаток, заключающийся в том, что вам потребуется как-то преобразовать входное напряжение к 5 вольтам, но решений данной задачи уже множество, и все их вы можете найти в открытом доступе на нашем сайте. Данный вход находится на 27 пине.

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

Удобство такого решения и объяснять не стоит. Внешние источники питания дополнительно стабилизируются при помощи LM1117IMPX-5.0 с 5В напряжения, а при подключении к компьютеру система начинает использовать диод Шоттки, чтобы регулировать поступающий ток (см. схему выше).

Характеристики

  • Микроконтроллер: ATmega328P
  • Ядро: 8-битный AVR
  • Тактовая частота: 16 МГц
  • Flash-память: 32 КБ (2 КБ занимает загрузчик)
  • SRAM-память: 2 КБ
  • EEPROM-памяти: 1 КБ
  • Портов ввода-вывода всего: 20
  • Портов с АЦП: 8
  • Разрядность АЦП: 10 бит
  • Портов с ШИМ: 6
  • Разрядность ШИМ: 8 бит
  • Аппаратных интерфейсов SPI: 1
  • Аппаратных интерфейсов I²C / TWI: 1
  • Аппаратных интерфейсов UART / Serial: 1
  • Номинальное рабочее напряжение: 5 В
  • Максимальный выходной ток пина 5V: 800 мA
  • Максимальный выходной ток пина 3V3: 50 мA
  • Максимальный ток с пина или на пин: 40 мА
  • Допустимое входное напряжение от внешнего источника: 7–12 В
  • Габариты: 18×45 мм
Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации