#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/O | Flash | EEPROM | SRAM | Интер- фейсы | АЦП | Таймеры | ISP | Корпус |
ATmega406 | 4.0 — 25 | 1 | 18 | 40K | 512 | 2K | JTAG TWI | 10x12bit 1x18bit | 1x8bit 1x16bit | I Power-save Power-down Power-off | LQFP48 |
ATmega48 | 1.8-5.5 | 20 | 23 | 4K | 256 | 512 | UART SPI I2C | 6x10bit 2x8bit | 2x8bit 1x16bit | S | DIP28 TQFP32 MLF32 |
ATmega48 Avtomotove | 2.7-5.5 | 16 | 23 | 4K | 256 | 512 | UART SPI I2C | 6x10bit 2x8bit | 2x8bit 1x16bit | S | TQFP32 MLF32 |
ATmega88 | 1.8-5.5 | 20 | 23 | 8K | 512 | 1k | UART SPI I2C | 6x10bit 2x8bit | 2x8bit 1x16bit | S | DIP28 TQFP32 MLF32 |
ATmega88 Avtomotove | 2.7-5.5 | 20 | 23 | 8K | 512 | 1k | UART SPI I2C | 6x10bit 2x8bit | 2x8bit 1x16bit | S | TQFP32 MLF32 |
ATmega168 | 1.8-5.5 | 20 | 23 | 16K | 512 | 1k | UART SPI I2C | 6x10bit 2x8bit | 2x8bit 1x16bit | S | DIP28 TQFP32 MLF32 |
ATmega168 Avtomotove | 2.7-5.5 | 20 | 23 | 16K | 512 | 1k | UART SPI I2C | 6x10bit 2x8bit | 2x8bit 1x16bit | S | TQFP32 MLF32 |
ATmega8 | 2.7-5.5 | 16 | 23 | 8K | 512 | 1k | UART SPI | 8x10bit | 2x8bit 1x16bit | S | DIP28 TQFP32 MLF32 |
ATmega16 | 2.7-5.5 | 16 | 32 | 16K | 512 | 1k | UART SPI | 8x10bit | 2x8bit 1x16bit | S | DIP40 TQFP44 MLF44 |
ATmega32 | 2.7-5.5 | 16 | 32 | 32K | 1K | 2K | UART SPI | 8x10bit | 2x8bit 1x16bit | S | DIP40 TQFP44 MLF44 |
ATmega64 | 2.7-5.5 | 16 | 53 | 64K | 2K | 4K | 2xUART SPI | 8x10bit | 2x8bit 2x16bit | S | TQFP64 MLF64 |
ATmega640 | 1,8…5,5 4,5…5,5 | 8 16 | 86 | 64K | 4K | 8K | 4xUART JTAG SPI | 16x10bit | 2x8bit 4x16bit | I | TQFP100 |
ATmega128 | 2.7-5.5 | 16 | 53 | 128K | 4K | 4K | 2xUART SPI | 8x10bit | 2x8bit 2x16bit | S | TQFP64 MLF64 |
ATmega1280 | 1,8…5,5 4,5…5,5 | 8 16 | 86 | 128K | 4K | 8K | 4xUART JTAG SPI | 16x10bit | 2x8bit 4x16bit | I | TQFP100 |
ATmega1281 | 1,8…5,5 4,5…5,5 | 8 16 | 54 | 128K | 4K | 8K | 2xUART JTAG SPI | 8x10bit | 2x8bit 4x16bit | I | TQFP64 |
AT90CAN32 | 2.7-5.5 | 16 | 53 | 32K | 1K | 2048 | UART JTAG CAN USART | 8x10bit | 2x8bit 2x16bit | S | MLF 64 LQFP 64 |
AT90CAN64 | 2.7-5.5 | 16 | 53 | 64K | 2K | 4K | UART JTAG CAN USART | 8x10bit | 2x8bit 2x16bit | S | MLF 64 LQFP 64 |
AT90CAN128 | 2.7-5.5 | 16 | 53 | 128K | 4K | 4K | 2xUART SPI CAN | 8x10bit | 2x8bit 2x16bit | S | TQFP64 MLF64 |
AT90CAN128 Automotive | 2.7-5.5 | 16 | 53 | 128K | 4K | 4096 | 2xUART SPI CAN | 8x10bit | 2x8bit 2x16bit | S | MLF64 LQFP64 |
ATmega103 | 4.0-5.5 | 6 | 48 | 128K | 4K | 4K | UART SPI | 8x10bit | 2x8bit 2x16bit | I | TQFP64 |
ATmega161 | 2.7-5.5 | 8 | 35 | 16K | 512 | 1K | 2xUART SPI | — | 2x8bit 1x16bit | S | DIP40 TQFP44 |
ATmega162 | 1.8-5.5 | 16 | 35 | 16K | 512 | 1K | 2xUART SPI | — | 2x8bit 1x16bit | S | DIP40 TQFP44 MLF44 |
ATmega163L | 2.7-5.5 | 8 | 32 | 16K | 512 | 1K | UART SPI | 8x10bit | 2x8bit 1x16bit | S | DIP40 TQFP44 MLF44 |
ATmega164P/V | 1.8-5.5 | 16 | 32 | 16K | 512K | 1024 | 2xUART SPI+USART TWI | 8x10bit | 2x8bit 1x16bit | S | MLF44 PDIP40 TQFP44 |
ATmega165 | 1.8-5.5 2.7-5.5 | 8 16 | 53 | 16K | 512 | 1K | UART SPI JTAG PWM | 8x10bit | 2x8bit 1x16bit | S | TQFP64 MLF64 |
ATmega165P | 1.8-5.5 | 16 | 54 | 16K | 0.5 | 1024 | UART SPI+USI 4PWM | 8x10bit | 2x8bit 1x16bit | S | MLF64 TQFP64 |
ATmega169 | 1.8-3.6 | 4 | 53 4×25 LCD | 16K | 512 | 1K | UART SPI | 8x10bit | 2x8bit 1x16bit | S | TQFP64 |
ATmega169P | 1.8-5.5 | 16 | 54 | 16K | 0.5 | 1024 | UART SPI+USI 4PWM | 8x10bit | 2x8bit 1x16bit | S | MLF64 TQFP64 |
ATmega8515 | 2.7-5.5 | 16 | 35 | 8K | 512 | 512 | UART SPI | — | 2x8bit 1x16bit | S | PDIP40 PLCC44 TQFP,MLF |
ATmega8535 | 2.7-5.5 | 16 | 32 | 8K | 512 | 512 | UART SPI | 8x10bit | 2x8bit 1x16bit | S | PDIP40 PLCC44 TQFP MLF |
ATmega2560 | 1,8…5,5 4,5…5,5 | 8 16 | 86 | 256K | 4K | 8K | 2xUART JTAG SPI | 16x10bit | 2x8bit 4x16bit | I | TQFP100 |
ATmega2561 | 1,8…5,5 4,5…5,5 | 8 16 | 54 | 256K | 4K | 8K | 2xUART JTAG SPI | 8x10bit | 2x8bit 4x16bit | I | TQFP64 |
ATmega324P/V | 1.8-5.5 | 20 | 32 | 32K | 1K | 2048 | 2xUART SPI+USART TWI | 8x10bit | 2x8bit 1x16bit | S | MLF44 PDIP40 TQFP44 |
ATmega325 | 1.8-5.5 | 16 | 53 | 32K | 1K | 2K | UART SPI | 8x10bit | 2x8bit 1x16bit | S | TQFP MLF |
ATmega3250 | 1.8-5.5 | 16 | 68 | 32K | 1K | 2K | UART SPI | 8x10bit | 2x8bit 1x16bit | S | TQFP MLF |
ATmega325P | 1.8-5.5 | 20 | 54 | 32K | 1K | 2048 | UART SPI | 8x10bit | 2x8bit 1x16bit | S | MLF64 TQFP64 |
ATmega3250P | 1.8-5.5 | 20 | 54 | 32K | 1K | 2048 | UART SPI | 8x10bit | 2x8bit 1x16bit | S | TQFP100 |
ATmega329P | 1.8-5.5 | 16 | 54 | 32K | 1K | 2048 | JTAG SPI | 8x10bit | 2x8bit 1x16bit | S | MLF64 TQFP64 |
ATmega3290P | 1.8-5.5 | 16 | 54 | 32K | 1K | 2048 | JTAG SPI | 8x10bit | 2x8bit 1x16bit | S | TQFP100 |
ATmega644P/V | 1.8-5.5 | 20 | 32 | 64K | 2K | 4096 | 2xUART SPI+USART TWI | 8x10bit | 2x8bit 1x16bit | S | MLF44 PDIP40 TQFP44 |
ATmega645 | 1.8-5.5 | 16 | 53 | 64K | 2K | 4K | UART SPI | 8x10bit | 2x8bit 1x16bit | S | TQFP MLF |
ATmega6450 | 1.8-5.5 | 16 | 68 | 64K | 2K | 4K | UART SPI | 8x10bit | 2x8bit 1x16bit | S | TQFP MLF |
ATmega644 | 1.8-5.5 2.7-5.5 | 10 20 | 32 | 64K | 2K | 4K | UART SPI TWI PWM JTAG | 8x10bit | 2x8bit 1x16bit | S | PDIP40 TQFP44 MLF44 |
ATmega329 | 1.8-5.5 | 16 | 53 LCD 4×25 | 32K | 1K | 2K | UART SPI | 8x10bit | 2x8bit 1x16bit | S | TQFP MLF |
ATmega3290 | 1.8-5.5 | 16 | 68 LCD 4×40 | 32K | 1K | 2K | UART SPI | 8x10bit | 2x8bit 1x16bit | S | TQFP MLF |
ATmega649 | 1.8-5.5 | 16 | 53 LCD 4×25 | 64K | 2K | 4K | UART SPI | 8x10bit | 2x8bit 1x16bit | S | TQFP MLF |
ATmega6490 | 1.8-5.5 | 16 | 68 LCD 4×40 | 64K | 2K | 4K | UART SPI | 8x10bit | 2x8bit 1x16bit | S | TQFP MLF |
Как видно из таблицы микроконтроллеров достаточно большое количество и практически любой контроллер можно «заточить» под нужную задачу. Давайте и мы выберем хоть какой то с подробным описанием как выбирать и по каким параметрам вообще нужно ориентироваться.
- Объем памяти. Действительно, если представить что нам нужно 4 кБ памяти и взять, например, ATtiny25 то памяти просто не хватит т.к. этот МК имеет всего 2 кБ памяти. Поэтому лучше брать все таки побольше. Я бы выбрал ATtiny85. Там уже 8 кБ памяти и, если будет доработка функционала, есть некоторый буфер для программы.
- Количество выводов. Это наверное даже поважнее чем п.1. Все упирается в количество портов ввода-вывода. На выводы конечно можно подключать устройства I2C и поадресно их опрашивать и выводить информацию. Но с I2C такие МК работают достаточно медленно. В нашем случает с ATtiny85 есть 8 выводов (корпус PDIP8 SOIC8, т.е. 8 выводов), из которых 2 питание а остальные 6 мы смело можем использовать! Нам при изготовлении нужно: 1 вывод на кнопки, 1 вывод на светодиоды, 1 вывод на реле. Свободными остаются еще 3 вывода! Т.е. нам хватит и памяти и выводов. Тем более её размер. В корпусе PDIP8 их уместится несколько штук на ногте! Цена вопроса. Тиньки (ATtiny контроллеры так называют радиолюбители) вместе с контроллером для программирования через USB порт стоят около 80 руб. Уже дешевле. Но что странно. В Китае просто МК стоят дороже чем готовое устройство! Нонсенс!
- Напряжение питания. Дальше мы рассмотрим работу с фьюзами. Так вот именно эти внутренние переключатели указывают как будет работать МК. С чем это можно сравнить. Например вы написали программу на компьютере. Включаете компьютер и.. компьютер не включился. Почему спросите вы? Ну причин может быть много: неисправный БП (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. Мы изучим ее подробнее на следующих уроках.
В плату можно втыкать провода и подключать множество разных элементов. Чаще всего, для соединения используется макетная плата для монтажа без пайки. Можно добавлять светодиоды, датчики, кнопки, двигатели, модули связи, реле и создавать сотни вариантов интересных проектов умных устройств. Плата Ардуино – это умная розетка, которая будет включать и выключать все присоединенное в зависимости от того, как ее запрограммировали.
Вся работа над проектом разбивается на следующие этапы:
- Придумываем идею и проектируем.
- Собираем электрическую схему. Тут нам пригодится макетная плата, упрощающая монтаж элементов. Безусловно, понадобятся навыки работы с электронными приборами и умение пользоваться мультиметром.
- Подключаем плату Arduino к компьютеру через USB.
- Пишем программу и записываем ее в плату буквально нажатием одной кнопки на экране в специальной среде программирования Arduino.
- Отсоединяем от компьютера. Теперь устройство будет работать автономно – при включении питания оно будет управляться той программой, которую мы в него записали.
Программа и среда программирования выглядят вот так:
На экране показана программа (на сленге ардуинщиков текст программы называется “скетч”), которая будет мигать лампочкой, подсоединенной к 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 можно разделить на три раздела:
Операторы
Управляющие операторы
Синтаксис
Арифметические операторы
Операторы сравнения
Логические операторы
Унарные операторы
| ДанныеКонстанты
Типы данных
Преобразование типов данных
Область видимости переменных и квалификаторы
| ФункцииЦифровой ввод/вывод
Аналоговый ввод/вывод
Дополнительные фунции ввода/вывода
Работа со временем
Математические функции
Тригонометрические функции
Генераторы случайных значений
Внешние прерывания
Функции передачи данных
|
Библиотеки Arduino
Servo — библиотека управления сервоприводами. EEPROM — чтение и запись энергонезависимой памяти микроконтроллера. SPI — библиотека, реализующая передачу данных через интерфейс SPI. Stepper — библиотека управления шаговыми двигателями.