Уроки Arduino: Подключение датчиков и модулей к Arduino


#37. Подключение матричной клавиатуры 4х4 Arduino

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

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

Обновлено: 19 октября , 2022 Подробнее …

#36. GSM-модуль SIM800L. AT команды и отправка СМС

Сегодня в уроке рассмотрим Модуль GSM GPRS SIM800L V2.0 MicroSIM с антенной. Посмотрим в чем его преимущества и недостатки. Разберемся, как управлять данным модулем с помощью AT команд и оправим CMC сообщение.

Модуль GSM GPRS SIM800L V2.0 обладает минимальным функционалом — обмен данными с GSM-модулем по UART. Плата имеет слот для установки внешней SIM-карты. SIM800L V2.0 GSM/GPRS — это четырех диапазонный GSM/GPRS модуль, совместимый с Arduino. Модуль используется для реализации функций GSM и GPRS. Преимуществом этого модуля является возможность напрямую подключать его к Arduino или другому микроконтроллеру с напряжением питания 5В.

Обновлено: 15 сентября , 2022 Подробнее …

Микроконтроллеры семейства MegaAVR

ТипНапр. питания, ВТакт. Частота, МГцI/OFlashEEPROMSRAMИнтер- фейсыАЦПТаймерыISPКорпус
ATmega4064.0 — 2511840K5122KJTAG TWI10x12bit 1x18bit1x8bit 1x16bitI Power-save Power-down Power-offLQFP48
ATmega481.8-5.520234K256512UART SPI I2C6x10bit 2x8bit2x8bit 1x16bitSDIP28 TQFP32 MLF32
ATmega48 Avtomotove2.7-5.516234K256512UART SPI I2C6x10bit 2x8bit2x8bit 1x16bitSTQFP32 MLF32
ATmega881.8-5.520238K5121kUART SPI I2C6x10bit 2x8bit2x8bit 1x16bitSDIP28 TQFP32 MLF32
ATmega88 Avtomotove2.7-5.520238K5121kUART SPI I2C6x10bit 2x8bit2x8bit 1x16bitSTQFP32 MLF32
ATmega1681.8-5.5202316K5121kUART SPI I2C6x10bit 2x8bit2x8bit 1x16bitSDIP28 TQFP32 MLF32
ATmega168 Avtomotove2.7-5.5202316K5121kUART SPI I2C6x10bit 2x8bit2x8bit 1x16bitSTQFP32 MLF32
ATmega82.7-5.516238K5121kUART SPI8x10bit2x8bit 1x16bitSDIP28 TQFP32 MLF32
ATmega162.7-5.5163216K5121kUART SPI8x10bit2x8bit 1x16bitSDIP40 TQFP44 MLF44
ATmega322.7-5.5163232K1K2KUART SPI8x10bit2x8bit 1x16bitSDIP40 TQFP44 MLF44
ATmega642.7-5.5165364K2K4K2xUART SPI8x10bit2x8bit 2x16bitSTQFP64 MLF64
ATmega6401,8…5,5 4,5…5,58 168664K4K8K4xUART JTAG SPI16x10bit2x8bit 4x16bitITQFP100
ATmega1282.7-5.51653128K4K4K2xUART SPI8x10bit2x8bit 2x16bitSTQFP64 MLF64
ATmega12801,8…5,5 4,5…5,58 1686128K4K8K4xUART JTAG SPI16x10bit2x8bit 4x16bitITQFP100
ATmega12811,8…5,5 4,5…5,58 1654128K4K8K2xUART JTAG SPI8x10bit2x8bit 4x16bitITQFP64
AT90CAN322.7-5.5165332K1K2048UART JTAG CAN USART8x10bit2x8bit 2x16bitSMLF 64 LQFP 64
AT90CAN642.7-5.5165364K2K4KUART JTAG CAN USART8x10bit2x8bit 2x16bitSMLF 64 LQFP 64
AT90CAN1282.7-5.51653128K4K4K2xUART SPI CAN8x10bit2x8bit 2x16bitSTQFP64 MLF64
AT90CAN128 Automotive2.7-5.51653128K4K40962xUART SPI CAN8x10bit2x8bit 2x16bitSMLF64 LQFP64
ATmega1034.0-5.5648128K4K4KUART SPI8x10bit2x8bit 2x16bitITQFP64
ATmega1612.7-5.583516K5121K2xUART SPI2x8bit 1x16bitSDIP40 TQFP44
ATmega1621.8-5.5163516K5121K2xUART SPI2x8bit 1x16bitSDIP40 TQFP44 MLF44
ATmega163L2.7-5.583216K5121KUART SPI8x10bit2x8bit 1x16bitSDIP40 TQFP44 MLF44
ATmega164P/V1.8-5.5163216K512K10242xUART SPI+USART TWI8x10bit2x8bit 1x16bitSMLF44 PDIP40 TQFP44
ATmega1651.8-5.5 2.7-5.58 165316K5121KUART SPI JTAG PWM8x10bit2x8bit 1x16bitSTQFP64 MLF64
ATmega165P1.8-5.5165416K0.51024UART SPI+USI 4PWM8x10bit2x8bit 1x16bitSMLF64 TQFP64
ATmega1691.8-3.6453 4×25 LCD16K5121KUART SPI8x10bit2x8bit 1x16bitSTQFP64
ATmega169P1.8-5.5165416K0.51024UART SPI+USI 4PWM8x10bit2x8bit 1x16bitSMLF64 TQFP64
ATmega85152.7-5.516358K512512UART SPI2x8bit 1x16bitSPDIP40 PLCC44 TQFP,MLF
ATmega85352.7-5.516328K512512UART SPI8x10bit2x8bit 1x16bitSPDIP40 PLCC44 TQFP MLF
ATmega25601,8…5,5 4,5…5,58 1686256K4K8K2xUART JTAG SPI16x10bit2x8bit 4x16bitITQFP100
ATmega25611,8…5,5 4,5…5,58 1654256K4K8K2xUART JTAG SPI8x10bit2x8bit 4x16bitITQFP64
ATmega324P/V1.8-5.5203232K1K20482xUART SPI+USART TWI8x10bit2x8bit 1x16bitSMLF44 PDIP40 TQFP44
ATmega3251.8-5.5165332K1K2KUART SPI8x10bit2x8bit 1x16bitSTQFP MLF
ATmega32501.8-5.5166832K1K2KUART SPI8x10bit2x8bit 1x16bitSTQFP MLF
ATmega325P1.8-5.5205432K1K2048UART SPI8x10bit2x8bit 1x16bitSMLF64 TQFP64
ATmega3250P1.8-5.5205432K1K2048UART SPI8x10bit2x8bit 1x16bitSTQFP100
ATmega329P1.8-5.5165432K1K2048JTAG SPI8x10bit2x8bit 1x16bitSMLF64 TQFP64
ATmega3290P1.8-5.5165432K1K2048JTAG SPI8x10bit2x8bit 1x16bitSTQFP100
ATmega644P/V1.8-5.5203264K2K40962xUART SPI+USART TWI8x10bit2x8bit 1x16bitSMLF44 PDIP40 TQFP44
ATmega6451.8-5.5165364K2K4KUART SPI8x10bit2x8bit 1x16bitSTQFP MLF
ATmega64501.8-5.5166864K2K4KUART SPI8x10bit2x8bit 1x16bitSTQFP MLF
ATmega6441.8-5.5 2.7-5.510 203264K2K4KUART SPI TWI PWM JTAG8x10bit2x8bit 1x16bitSPDIP40 TQFP44 MLF44
ATmega3291.8-5.51653 LCD 4×2532K1K2KUART SPI8x10bit2x8bit 1x16bitSTQFP MLF
ATmega32901.8-5.51668 LCD 4×4032K1K2KUART SPI8x10bit2x8bit 1x16bitSTQFP MLF
ATmega6491.8-5.51653 LCD 4×2564K2K4KUART SPI8x10bit2x8bit 1x16bitSTQFP MLF
ATmega64901.8-5.51668 LCD 4×4064K2K4KUART SPI8x10bit2x8bit 1x16bitSTQFP MLF

Как видно из таблицы микроконтроллеров достаточно большое количество и практически любой контроллер можно «заточить» под нужную задачу. Давайте и мы выберем хоть какой то с подробным описанием как выбирать и по каким параметрам вообще нужно ориентироваться.

  1. Объем памяти. Действительно, если представить что нам нужно 4 кБ памяти и взять, например, ATtiny25 то памяти просто не хватит т.к. этот МК имеет всего 2 кБ памяти. Поэтому лучше брать все таки побольше. Я бы выбрал ATtiny85. Там уже 8 кБ памяти и, если будет доработка функционала, есть некоторый буфер для программы.
  2. Количество выводов. Это наверное даже поважнее чем п.1. Все упирается в количество портов ввода-вывода. На выводы конечно можно подключать устройства I2C и поадресно их опрашивать и выводить информацию. Но с I2C такие МК работают достаточно медленно. В нашем случает с ATtiny85 есть 8 выводов (корпус PDIP8 SOIC8, т.е. 8 выводов), из которых 2 питание а остальные 6 мы смело можем использовать! Нам при изготовлении нужно: 1 вывод на кнопки, 1 вывод на светодиоды, 1 вывод на реле. Свободными остаются еще 3 вывода! Т.е. нам хватит и памяти и выводов. Тем более её размер. В корпусе PDIP8 их уместится несколько штук на ногте! Цена вопроса. Тиньки (ATtiny контроллеры так называют радиолюбители) вместе с контроллером для программирования через USB порт стоят около 80 руб. Уже дешевле. Но что странно. В Китае просто МК стоят дороже чем готовое устройство! Нонсенс!
  3. Напряжение питания. Дальше мы рассмотрим работу с фьюзами. Так вот именно эти внутренние переключатели указывают как будет работать МК. С чем это можно сравнить. Например вы написали программу на компьютере. Включаете компьютер и.. компьютер не включился. Почему спросите вы? Ну причин может быть много: неисправный БП (1 причина), процессор (2), память (3) и т.д… а может быть просто слетел БИОС. Так вот именно фьюзы и работают как БИОС на компьютере- они указывают как будет работать собственно ядро МК. Можно выставить частоту работы ядра, от какого генератора синхронизируется МК, внешнего или внутреннего, пределы допустимого напряжения питания при которых МК будет работать. Ту же 85 тиньку можно питать напряжением от 2,7 до 5,5 В. Достаточно просто правильно выставить фьюзы.

Вобщем будем выбирать контроллер с Flash- памятью (туда именно и записывается наш код программы) не менее 8 кБ и как можно дешевле (здесь не говорится о минимизации, если нужно миниатюрное устройство то стоит поискать МК для поверхностного монтажа в корпусах TQFP и SO). Возьмем мой любимый МК ATmega8. Его достоинства: 8 кБ памяти, 28 выводов (из них около 20- наши), имеется 512 байт энергонезависимой памяти в которую мы можем сохранять и считывать необходимые данные. Цена- около 50-60 руб за штуку в Китае. Итого мы удешевили наш проект только по МК уже не менее чем в 2 раза. Осталось научиться запрограммировать МК.

Мы рассмотрим 3 программы для программирования МК. Это будет собственно сама оболочка Arduino IDE, AVRDUDESHELL и Sinaprog. Самая простая- Sinaprog но ей необходимо подготовить hex- файл в Arduino IDE. Самая навороченная- AVRDUDESHELL. Но начнем мы все таки с Arduino IDE т.к. без нее никуда и ей просто надо уметь пользоваться. Приступаем к программированию.

#35. Выводим символы на дисплей LCD 1602 и LCD 2004.

Для создания проектов на Arduino достаточно часто применяют дисплей LCD 1602 и LCD 2004. Как подключить LCD 1602 к Arduino рассмотрели в предыдущем уроке. Кроме текста очень часто нужно вывести специальные символы. Например, обозначение температурыградус цельсия или процент влажности, а также направление продвижения или вращения. Как же вывести спец символы на дисплей LCD 1602 и LCD 2004? В данном уроке рассмотрим вывод из набора предустановленных символов и создадим свои символы, которые также выведем на LCD 1602 и LCD 2004.

Обновлено: 8 июля , 2022 Подробнее …

#34. ЖК-дисплей LCD 1602 и LCD 2004. Подключение к Arduino. Основы.

Символьные ЖК-дисплеи LCD 1602 и LCD 2004 достаточно часто используются в Arduino проектах, благодаря большому размеру и относительно небольшой стоимости. Кроме этого с данными дисплеями достаточно просто работать. Сегодня в Arduino уроке рассмотрим основы работы с ЖК-дисплеями LCD 1602 и LCD 2004. Подключим lcd 1602 к Ардуино. И рассмотрим пару примеров скетчей, которые позволят вывести текстовую информацию на LCD 1602 и 2004.

Описание и классификация LCD 1602 и LCD 2004.

Обновлено: 8 июля , 2022 Подробнее …

Начало работы с Ардуино

Говоря бытовым языком, Ардуино – это электронная плата, в которую можно воткнуть множество разных устройств и заставить их работать вместе с помощью программы, написанной на языке Ардуино в специальной среде программирования.

Чаще всего плата выглядит вот так:

На рисунке показана одна из плат Ардуино – Arduino Uno. Мы изучим ее подробнее на следующих уроках.

В плату можно втыкать провода и подключать множество разных элементов. Чаще всего, для соединения используется макетная плата для монтажа без пайки. Можно добавлять светодиоды, датчики, кнопки, двигатели, модули связи, реле и создавать сотни вариантов интересных проектов умных устройств. Плата Ардуино – это умная розетка, которая будет включать и выключать все присоединенное в зависимости от того, как ее запрограммировали.

Вся работа над проектом разбивается на следующие этапы:

  1. Придумываем идею и проектируем.
  2. Собираем электрическую схему. Тут нам пригодится макетная плата, упрощающая монтаж элементов. Безусловно, понадобятся навыки работы с электронными приборами и умение пользоваться мультиметром.
  3. Подключаем плату Arduino к компьютеру через USB.
  4. Пишем программу и записываем ее в плату буквально нажатием одной кнопки на экране в специальной среде программирования Arduino.
  5. Отсоединяем от компьютера. Теперь устройство будет работать автономно – при включении питания оно будет управляться той программой, которую мы в него записали.

Программа и среда программирования выглядят вот так:

На экране показана программа (на сленге ардуинщиков текст программы называется “скетч”), которая будет мигать лампочкой, подсоединенной к 13 входу на плате Ардуино UNO. Как видим, программа вполне проста и состоит из понятных для знающих английский язык инструкций. В языке программирования Arduino используется свой диалект языка C++, но все возможности C++ поддерживаются.

Есть и другой вариант написания кода – визуальный редактор. Тут не нужно ничего писать – можно просто перемещать блоки и складывать из них нужный алгоритм. Программа загрузится в подключенную плату одним нажатием кнопки мыши!

Визуальную среду рекомендуется использовать школьникам младших классов, более старшим инженерам лучше сразу изучать “настоящий” Ардуино – это довольно просто, к тому же знания C++ никому не повредят.

В целом все выглядит довольно понятно, не так ли? Осталось разобраться в деталях.

#33. Motor shield l293d подключение. Пример кода для Arduino

Робототехника с каждым годом становиться все популярнее. И поэтому количество электроники с помощью которой можно реализовать роботизированную модель достаточно много. А если у вас нет опыта работы с электроникой, вам отлично подойдёт Motor shield на базе драйвера l293d. Шилд устанавливается на плату Arduino UNO.

На shield выведены контакты для подключения двигателей постоянного тока, шаговых двигателей и сервоприводов. Я уже делал проект с использованием данного Motor shield. У вас, наверное, возник вопрос. Если шилд такой простой, почему у меня мало Arduino проектов с его использование? Это связанно со сложностью расширения функционала проекта при использовании Motor shield l293d. Но обо всём по порядку.

Обновлено: 24 июня , 2022 Подробнее …

Arduino.ru

Язык программирования устройств Ардуино основан на C/C++. Он прост в освоении, и на данный момент Arduino — это, пожалуй, самый удобный способ программирования устройств на микроконтроллерах.

Базовые и полезные знания, необходимые для успешного программирования под платформу Arduino:

  • Начало работы с Arduino в Windows
  • Работа с Arduino Mini
  • Цифровые выводы
  • Аналоговые входы
  • Широтно-импульсная модуляция
  • Память в Arduino
  • Использование аппаратных прерываний в Arduino
  • Перепрошивка контроллера Atmega8U2 для Arduino Uno и Mega2560
  • Переменные
  • Функции
  • Создание библиотек для Arduino
  • Использование сдвигового регистра 74HC595 для увеличения количества выходов
  • Прямое управления выходами через регистры микроконтроллера Atmega

Справочник языка Ардуино

Язык Arduino можно разделить на три раздела:

Операторы

  • setup()
  • loop()
Управляющие операторы
  • if…else
  • for
  • switch case
  • while
  • do… while
  • break
  • continue
  • return
  • goto
Синтаксис
  • ; (semicolon)
  • {} (curly braces)
  • // (single line comment)
  • /* */ (multi-line comment)
Арифметические операторы
  • = (assignment)
  • + (addition)
  • — (subtraction)
  • * (multiplication)
  • / (division)
  • % (modulo)
Операторы сравнения
  • (equal to)
  • (not equal to)
  • < (less than)
  • > (greater than)
  • <= (less than or equal to)
  • >= (greater than or equal to)
Логические операторы
  • && (И)
  • || (ИЛИ)
  • ! (Отрицание)
Унарные операторы
  • (increment)
  • (decrement)
  • (compound addition)
  • (compound subtraction)
  • (compound multiplication)
  • (compound division)

Данные

Константы
  • HIGH | LOW
  • INPUT | OUTPUT
  • true | false
  • Целочисленные константы
  • Константы с плавающей запятой
Типы данных
  • boolean
  • char
  • byte
  • int
  • unsigned int
  • word
  • long
  • unsigned long
  • float
  • double
  • string — массив символов
  • String — объект класса
  • массив (array)
  • void
Преобразование типов данных
  • char()
  • byte()
  • int()
  • long()
  • float()
Область видимости переменных и квалификаторы
  • Область видимости
  • static
  • volatile
  • const

Функции

Цифровой ввод/вывод
  • pinMode()
  • digitalWrite()
  • digitalRead()
Аналоговый ввод/вывод
  • analogRead()
  • analogReference()
  • analogWrite()
Дополнительные фунции ввода/вывода
  • tone()
  • noTone()
  • shiftOut()
  • pulseIn()
Работа со временем
  • millis()
  • micros()
  • delay()
  • delayMicroseconds()
Математические функции
  • min()
  • max()
  • abs()
  • constrain()
  • map()
  • pow()
  • ()
  • sqrt()
Тригонометрические функции
  • sin()
  • cos()
  • tan()
Генераторы случайных значений
  • randomSeed()
  • random()
Внешние прерывания
  • attachInterrupt()
  • detachInterrupt()
Функции передачи данных
  • Serial

Библиотеки Arduino

Servo — библиотека управления сервоприводами. EEPROM — чтение и запись энергонезависимой памяти микроконтроллера. SPI — библиотека, реализующая передачу данных через интерфейс SPI. Stepper — библиотека управления шаговыми двигателями.

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]