Обзор Aduino Mega 2560 — большого и мощного микроконтроллера, который помогает решить вопрос с нехваткой функциональных портов ввода-вывода.
Проблема нехватки ресурсов
Разрабатывая проекты на Ардуино, вы рано или поздно столкнетесь с двумя проблемами: необходимость минимизации места и нехватка функциональных портов ввода-вывода.
Первая проблема решается элементарно – с помощью миниатюрных плат:
- Nano,
- Mini,
- Pro Mini,
- Micro,
- Digispark ATtiny 85.
Если плата nano и другие мини-платы повторяют функционал обычной Arduino UNO, имея на борту atmega328 или atmega168, то платы с Attiny85 и ей подобные подходят для простейших проектов с минимальным функционалом.
Второй же вопрос решается двумя методами:
- Расширение числа выводов с помощью сдвиговых регистров, типа 74HC595. К сожалению, этот метод не позволяет использовать ШИМ для расширенных выводов, да и работает этот способ только для выходных сигналов.
- Объединение нескольких плат в одну систему и их связь с помощью различных интерфейсов обмена данными; однако этот метод довольно сложен, и не всегда оправдан.
Можно решить этот вопрос иначе – здесь на помощь придет большая плата Arduino mega 2560 или её аналог с поддержкой USB хоста – ADK Arduino, но обо всём по порядку.
Плата mega 2560
Начнем с внешнего вида. На изображении выше очевидно, что плата Arduino Mega 2560 r3 (актуальная версия на момент написания статьи) в два раза длиннее, чем UNO.
Она имеет 54 порта ввода вывода, 15 из которых могут работать, как источник ШИМ сигнала, для плавного регулирования мощности, тока, скорости, яркости, в общем, всего, что можно регулировать с помощью широтно-импульсной модуляции, плюс к этому 16 аналоговых портов могут обрабатывать сигналы с датчиков, использоваться, как цифровой выход.
Для связи между разными устройствами предусмотрено целых 4 UART интерфейса, в их роли выступают выводы 0, 1, 14-19. Один из портов направлен на USB через микроконтроллер ATmega8U2 – он здесь применен вместо привычного по младшим платам USB-TTL контроллера, а его прошивка доступна для свободного скачивания. Для связи с различными дисплеями и другими исполнительными устройствами предусмотрена SPI и I2C технологии.
Технические характеристики
- Микроконтроллер: ATmega2560
- Тактовая частота: 16 мГц
- Напряжение: 5 В
- Предельные напряжения: 5-20 В
- Рекомендуемое напряжение питания: 7-12 В
- Макс. сила тока с одного вывода: 40 мА
- Цифровые пины: 54
- Цифровые пины с поддержкой ШИМ: 15
- Аналоговые входы: 16
- Flash-память: 256 КБ (8 из них используются загрузчиком)
- SRAM: 8 КБ
- EEPROM: 4 КБ
Распиновка платы
Ниже распиновка и назначение выводов – важнейшая информация для разработчика.
Размеры платы Arduino MEGA 2560 – 10.16 см на 5.3 см, против UNO – 6.9 см на 5.3. С одной стороны плата получилась великоватой, с другой – возросшие габариты позволяют удобно работать с мощным микроконтроллером.
Дополнительные изображения и принципиальную схему Меги смотрите на нашем сайте по ссылке. Наиболее распространенная сейчас – плата Arduino mega 2560 rev3. В сравнении с первыми ревизиями был проведен ряд доработок, связанных с перезагрузкой платы при прошивке, для достоверности загрузки данных, и другие мелкие апгрейды.
Чип Atmega2560
Atmega2560 – это очень мощный чип. В распоряжении разработчика целых 256 кб Flash (в ардуино 8 кб занимает загрузчик), 8 кб SRAM и 1 кб EEPROM. Работает ардуино с таким сердцем на частоте 16 мГц, впрочем, как и младшие платы – UNO и многие другие.
Питание платы может осуществляться как от круглого разъёма питания 2.1 мм с плюсом по центру, так и от USB порта, источник выбирается автоматически.
Стоит отметить, что при напряжении питания 7-20 вольт, плата работает отлично, а при меньшем, например, 5 вольт, могут возникнуть ситуации с нестабильной работой. Примите это к сведению.
Распиновка процессора
Ниже диаграмма распиновка чипа, для увеличения — нажмите на изображение:
В качестве источника годятся, как сетевые AC/DC преобразователи, такие как для светодиодной ленты (12 В), например, отлично подойдут, так и батареи аккумуляторов или одна ячейка Li-ion аккумулятора с повышающим преобразователем до нужных значений напряжения.
Проекты на основе плате
Использование Arduino MEGA 2560 дало возможность сделать по-настоящему большую и сложную микроконтроллерную систему.
Например, есть очень интересный проект, который получил поддержку в РФ и активно развивается – это Arduino Mega Server. Микроконтроллер настолько мощный, что может стать целым сервером для интернета сайтов или облака.
Единственное ограничение на таком сервере – это объём памяти, ведь в качестве накопителя можно использовать micro SD-карты памяти, а Ethernet поддерживает максимальный объём памяти 32 гб.
Arduino Mega Server – это серьезный проект с широким функционалом, в котором поддерживаются все нужные для веб-мастера технологии:
- HTML;
- CSS;
- Javascript и другие.
На страницах, которые вы создадите, а их количество ограничено только их размером и объёмом вашей карты памяти, можно отслеживать в реальном времени состояние контроллера и управлять его входами и выходами с помощью кнопок на веб интерфейсе сайта. Поддержка многих библиотек Javascript позволит сделать интерфейс красивым и современным.
С помощью Arduino Mega Server вы можете сделать мощные разветвленные системы автоматизированного управления с удаленным управлением и мониторингом всех параметров или домашнее облачное хранилище. На рисунке ниже вы видите скриншот страницы управления умным домом с официального сайта проекта.
Вот небольшой перечень проектов, реализуемых с Arduino Mega Server:
- Умный дом – стал уже классической областью применения ардуино.
- Автоматизированная котельная.
- Тепличное хозяйство с автоматической поддержкой влажности и солевого состава почвы.
- Метеостанция.
- И многое другое.
Вы получаете операционную систему для работы с ардуино с компьютера или смартфона по web интерфейсу. Однако стоит осознавать возможности и мощность микроконтроллера Arduino mega 2560, хоть и сама плата мощнее свих предшественников, но по современным меркам морально устарела. Это все те же 8 бит и 8 кб ОЗУ. Скорость, с которой вы скачиваете данные с сервера, будет небольшой, но для веб-страниц вполне хватит.
Комплект для сборки сервера на Ардуино
Для сборки проекта Arduino Mega Server нужно иметь минимум три составляющих:
- Плату Arduino Mega
- Ethernet shied для Ардуино.
- Micro SD-карта памяти.
Остальные компоненты набираются в соответствии с возложенными на сервер функциями. Чтобы ознакомиться со всеми нюансами и технической документацией, вы можете скачать все необходимые материалы и библиотеки с официального сайта проекта hi-lab.ru.
На момент написания статьи проект Arduino Mega Server поддерживается на трёх платформах, две из которых превосходят по характеристикам mega 2560:
- Arduino mega 2560;
- Arduino Due (32 битный МК, 84 мГц, 512 кб памяти и 96 кб озу разделенных на два банка – 64 кб и 32 кб);
- Genuino 101 (Intel Quark – в качестве процессора, разрядность 32 бита, 32 мГц, 24 кб ОЗУ).
Интересные проекты
Системы управления умным домом набирают популярность.
Реализаций умного дома масса, некоторые из них работают под управлением через веб интерфейс, как описано в предыдущем разделе. На фото ниже представлен пример макета такой системы.
Здесь, для связи со смартфоном, применен специальный шилд, его название «1shield». С помощью официального приложения вы можете подключиться к вашем шилду через WiFi или Bluetooth. Для того чтобы заставить его работать с Arduino, нужно скачать 1shield library – специальная библиотека.
Еще одна идея для для такой мощной платы — электронный бармен на Ардуино. Если вы жить не можете без любимых коктейлей, но не хотите учиться их готовить, вам поможет робот-бармен на ардуино.
За основу проекта взяли Ардуино Мега, для реализации механизма движения стакана и разлива напитков использованы шаговый двигатель (для продольного перемещения емкости) и сервопривод, для открытия вентилей робота.
Ниже приведена примерная схема устройства.
Выводы
В сети есть много, как сторонников, так и противников 8 битной архитектуры плат Ардуино – их пытаются вытеснить отладочные платы семейства STM, а порой сравнивают с одноплатными микрокомпьютерами.
Однако век ардуино еще будет долго продолжаться, поскольку это простая платформа для веселого освоения электроники и микроконтроллеров.
К тому же рассмотренный сегодня Arduino mega 2560 server – это глоток свежего воздуха для всей платформы. Согласитесь, что приятно иметь возможность поставить личный сервер для своих сайтов с поддержкой необходимых технологий и низким энергопотреблением. Не стоит сравнивать эту идею с серверами на старом компьютерном железе и так далее, преимущества очевидны:
- Отсутствие шума во время работы, так как нет кулеров системы охлаждения.
- Малый объём занимаемого пространства.
- Низкая цена.
- Малое энергопотребление.
Изучайте микроконтроллеры и внедряйте в повседневную жизнь высокие технологии.
Умный домDIY или Сделай сам Из песочницы Да, это снова Ардуино, но не спешите закрывать страничку, на этот раз вас ждёт нечто действительно новое и интересное. В основном в этой статье речь пойдёт о микроконтроллерных платах Arduino Mega и плате сетевого интерфейса Ethernet Shield W5100 и о том чуде, которое можно с ними сотворить если позволить себе выйти за рамки стереотипов. Итак, что собой представляет типовая плата Arduino? «Убогий» 8-битный микроконтроллер со смешным объёмом оперативной памяти (в случае Меги это 8 килобайт) и таким же смешным объёмом флеш-памяти (256 килобайт для Меги). Некую живость пейзажу добавляют платы расширения, в нашем случае это Ethernet Shield, но принципиально это ничего не меняет. Область применения подобных плат это маргинальные поделки и знаменитое моргание светодиодами. Но так было до последнего момента. Теперь в природе существует Arduino Mega Server, который принципиально меняет положение вещей. Например, что бы вы сказали, если бы столкнулись с утверждением, что:
- на Arduino можно организовать полноценный веб-сервер, не имеющий ограничений на размер и количество файлов?
- динамически обновляющий контент без остановки сервера?
- поддерживающий в полном объёме HTML5, CSS3, JavaScript, Ajax, Processig, THREE.js, сторонние библиотеки и т. д.?
- Позволяющий «хостить» на микроконтроллере сотни полноценных сайтов (с известными ограничениями)?
- Позволяющий держать у себя в кладовке на одном из контроллеров умного дома, например, полную работающую копию Хабра и ещё десятка подобных сайтов (в пределах 32 гигабайт)?
Вы бы сказали, что это попросту невозможно. Однако это факт. И вы можете скачать дистрибутив к себе на компьютер и убедиться в этом сами (кроме Хабра, это гипотетический пример). В чём же секрет? Всё очень просто. Плата сетевого интерфейса поддерживает подключение SD карт памяти объёмом до 32 гигабайт и ничто не мешает нам задействовать её для хранения файлов веб-сервера и собственно контента. Нужно просто решить задачу интеграции всего этого богатства в одну систему. Чтобы всё это заработало нужно написать серверный движок для Ардуино и научить его выдавать содержимое флеш-карты памяти по запросам браузеров. Собственно, почти всё. Нужно ещё каким-то образом организовать обновление файлов сервера и контента «на лету», для того, чтобы вам не приходилось вставать с дивана, отключать питание Ардуино и вынимать карту памяти каждый раз, когда нужно изменить что-либо в конфигурации сервера или поменять что-либо в контенте. Эта тяжёлая, но благородная миссия возложена на Arduino Serial Commander, который управляет загрузкой файлов на работающий сервер, без остановки оного. Если всё так просто, то почему это не было сделано раньше? Вот это действительно вопрос. Моя версия — стереотипность мышления. Вам же сказали, что это 8-битный контроллер, какой ещё THREE.js? Какой хостинг? О чём вы вообще говорите? Справедливости ради нужно сказать, что все части пазла уже существовали в природе, но существовали они в совершенно непотребном виде — либо в виде абстрактного сервера, полностью оторванного от реальности, либо в виде Ajax примеров, но опять же только с двумя абстрактными кнопками, с которыми непонятно, что вообще нужно делать.
Область применения
Теперь давайте поговорим о применении этой технологии и о том что, собственно, в ней такого замечательного и полезного. Необходимое пояснение. В названии присутствует слово «сервер» и речь в первой части статьи идёт о серверных функциях системы. Это может ввести вас в заблуждение и создать впечатление, что основным назначением системы является хостинг файлов и сайтов и раздача контента. Это не совсем так. Узким бутылочным горлышком в этой системе является быстродействие SD карты и заменить микроконтроллером настоящий веб-сервер конечно не удастся. Смысл системы несколько в другом. Вместе с Arduino Mega Server вы получаете возможность удобного управления своим устройством при помощи веб-интерфейса и просто роскошного (в визуальном смысле) выведения результатов его работы при помощи всей мощи современных технологий (HTML5, CSS3, THREE.js и т.п.). Будь то система управления умным домом, теплицей, автоматом по продаже напитков, метеостанцией или чем угодно, на что у вас хватит фантазии. Ещё одна интересная область применения системы это (интерактивное) самодокументирование. Например, вы находите в пыльной кладовке (своей или заказчика) микроконтроллер непонятно что и как делающий (дело было давно и вся документация утеряна). Всё, что вам нужно это зайти на его сайт и получить исчерпывающую информацию по подключениям, протоколам, окружению и т. п. Ведь у нас нет ограничений на объём хранимых файлов. Документация может быть интерактивной. Например, распиновка контроллера не просто нарисована на страничке, но и обновляется в реальном времени (статусы, потенциалы и т. п.). Сразу видно что и как работает и что и как не работает.
Что на борту, кроме сервера
Я много внимания уделил серверным функциям, но это только одна из частей системы. Кроме сервера Ардуино содержит код на все случаи жизни:
- измерение температуры
- обслуживание PIR-датчиков
- обслуживание контактных датчиков
- часы реального времени
- модуль контроля и измерения сетевого напряжения и тока на 13 каналов
- модуль работы со светодиодными лентами
- модуль определения доступности сетевых устройств
- модуль работы с SD картами памяти
- модуль приёма и отдачи команд по сети
- модули интеграции с системами домашней автоматизации
- и много прочих функций плюс возможность создания новых
Поддерживается модульная структура и выборочная компиляция модулей. Браузерная часть кода распознаёт наличие или отсутствие откомпилированного модуля и позволяет динамически его включать или отключать прямо с веб-странички.
Интеграция с MajorDoMo
Исторически так сложилось, что Arduino Mega Server (далее AMS) разрабатывался в связке и как часть системы домашней автоматизации на базе открытой платформы MajorDoMo и имеет встроенную «родную» поддержку этой платформы. Он может посылать статусы и данные для анализа и хранения «старшему брату» и принимать от него управляющие команды по сети. Кроме того, в данный момент AMS работает в т. н. тандемном режиме, т. е. для части функций используются ресурсы сервера MajorDoMo. Но работа в связке для Мега Сервера непринципиальна, он может работать и полностью автономно.
Побочные технологии
В рамках проекта реализовано несколько интересных и уникальных технологий, например индикатор уровня загрузки «CPU» микроконтроллера. Это удобно тем, что сразу видно насколько загружен ваш контроллер и что он в данный момент делает. Не знаю насколько это уникально, но мне не удалось найти в сети ничего похожего, тем более в удобоваримом виде с красивой графикой и на веб-странице. Создан электро-модуль, который мониторит сетевое напряжение и ещё 13 токовых каналов. Будучи установлен в электрощитке, позволяет прямо или косвенно отслеживать всю электроактивность в доме. Когда был включён и когда выключен тот или иной электроприбор, сколько он потребляет электричества и каков его вклад в размер счёта за электроэнергию. Также позволяет косвенным способом отслеживать наличие или отсутствие людей в доме. Создан модуль визуализации и контроля формы сетевого напряжения и тока на любом из 13 каналов. Плюс добавлен сетевой осциллограф, когда Ардуино в реальном времени транслирует динамический сигнал (осциллограмму) на вашу веб-страничку. Что тоже не имеет аналогов, насколько мне известно. Добавлен модуль «скринсейверов» для современных панелей отображения информации. Вы можете убрать всю техническую информацию с экрана и оставить только нужную на фоне красивой картинки. Получается нечто вроде картины в раме для большой или маленькой панели. Ещё реализованы такие вещи как измеритель частоты напряжения электросети, который может использоваться для предупреждения о возможных в ближайшем будущем сбоях и, например, многофункциональный 3D индикатор состояния системы на 216 объектов / подсистем / функций, который вращается в шапке сайта. Его смысл в том, что вы одним взглядом можете оценить состояние сложной системы. И т. д. и т. п. Технологий больше, чем может уместиться на эту страничку. И всё это работает на 8-битном микроконтроллере с 8 килобайтами памяти, что просто невероятно.
Перспективы
Перспективы неограничены. Вы можете реализовать с помощью этой технологии любые, даже самые фантастические проекты. Например, распределённый по контроллерам интеллект умного дома, динамическую перепрошивку контроллеров по сети (в зависимости от некоторых условий) и динамическую реконфигурацию умного дома на железном уровне, предоставление веб-интерфейса для «совсем плохих» Arduino Uno и т. д. и т. п. Не говоря уже об умных пивоварнях и сайтах каждого цветка в вашем доме с их личными блогами. И для этого вам не понадобится ничего, кроме Arduino, Ethernet Shield, AMS, SD карты и вашей фантазии.
Коммерческие перспективы
Вы можете продавать свои устройства, просто положив всё необходимое в коробку и дописав прошивку AMS под свою задачу. Заказчик включает устройство и управляет им через полноценный веб-интерфейс и больше ничего не нужно. А если вы ещё предусмотрите подключение вашего устройства и датчиков без паяльника, то ещё больше расширите аудиторию своих потенциальных клиентов. Как это сделать без паяльника? В этом вам поможет (самопровозглашённый) стандарт Open Home Automation Standard (OHAS) и датчики, подключаемые одним кликом, но это уже совсем другая история. Если это будет интересно — опишу здесь ещё пару «прорывных» технологий.
Статус проекта
Статус проекта — альфа версия, всё работает, но всё нужно дорабатывать. Если у вас есть желание и соответствующая квалификация, то можете присоединиться к проекту и ускорить процесс разработки и получить ни с чем не сравнимый фан. А можете скачать исходный код и создать проект своей мечты. Проект полностью открыт и не накладывает никаких ограничений на его использование. Вы можете свободно использовать его в любых, в том числе коммерческих целях, изменять код, дорабатывать, создавать собственные проекты на GitHub и т. д. Загрузить последнюю версию вы можете на официальном сайте проекта. Если у вас возникли вопросы, то вы можете задать их на форуме. На форуме есть также инструкции по установке и настройке AMS. Друзья! Забыл упомянуть ещё об одной, едва ли не самой важной части проекта. Это обучающая функция. Если вы начнёте работать с проектом и изменять код под свои задачи, то вы очень быстро на практике освоите множество современных технологий это HTML, CSS, JavaScript, межбраузерное взаимодействие, отладка кода в браузере, программирование для Ардуино, Processing и множество других. И последнее. Проект буквально нашпигован идеями и эксклюзивом. Вы можете просто брать нужные куски кода для ваших собственных проектов, дополнять и улучшать их.Дополнение. Открыт канал на Youtube и вот промо ролик Arduino Mega Server, который демонстрирует работу с реальной системой.
Это операционная система для вашего контроллера
Удобный интерфейс, конфигурация контроллера прямо с веб-странички, встроенная поддержка различного оборудования, развитые сетевые функции, встроенный веб-сервер и многое другое.
Arduino Mega Server позволяет организовать полноценный WEB-сервер:
- не имеющий ограничений по размеру и кол-ву файлов
- динамически обновляющий контент страницы
- поддерживающий HTML5, CSS3, JavaScript и различные сторонние библиотеки
- позволяющий хостить неограниченное количество сайтов
Поддерживаемые веб-технологии
Файлы без ограниченийНет ограничений на размер и количество файлов. Контент ограничен только объёмом вашей карты памяти (до 32 ГБ)
Динамический интерфейсМгновенное отображение состояния контроллера на веб-странице и мгновенное реагирование на нажатие кнопок в веб-интерфейсе
Современные веб-технологииПоддерживаются все современные веб-технологии: HTML, CSS, JavaScript, Ajax и т. д.
Роскошный выводДанные могут выводиться при помощи JavaScript библиотек, в том числе и 3D: Processing, three.js и т. п.
Изменение контента на летуДля обновления контента не нужно выключать контроллер и вытаскивать карту памяти
Адаптивный дизайнСтранички сами подстраиваются под размер экрана вашего устройства
Секрет заключается отчасти в поддержке Ethernet-шилдом подключения SD-карты до 32Гб. А отчасти в согласовании этого чудовищного для Arduino объёма с программным обеспечением, которое должно позволять серверу выдавать данные с SD-карты по запросу браузера. А ещё было бы неплохо динамически обновлять файлы на сервере, чтобы не отключать сервер каждый раз, когда вам захочется поменять цвет фона стартовой страницы с нежно-голубого на бирюзовый.
Эта задача (обновление файлов, а не изменение цвета) возложена на ПО Arduino Serial Commander, который пропихивает файлы в сервер, не останавливая его работу.
Базовый набор
Всё, что вам нужно, чтобы запустить Arduino Mega Server, это контроллер Arduino Mega, плата сетевого интерфейса Ethernet Shield и microSD карта памяти
На данный момент Arduino Mega Server работает на следующих платформах: Arduino Mega (8-bit), Arduino Due (32-bit) и Genuino 101 (32-bit) , Arduino M0 и esp8266/esp32 (Wi-Fi)
Сферы применения
DIY платформа
Arduino Mega Server это отличная основа для ваших DIY проектов. Он уже содержит дружелюбный интерфейс и встроенную поддержку множества устройств. Вам остаётся только подключить необходимое оборудование и немного изменить код под свои задачи
Автономное устройство
AMS может быть сердцем законченного устройства, например, метеостанции или охранного блока. Уникальность технологии состоит в том, что вся функциональность уже содержатся внутри контроллера и такой контроллер может содержать внутри себя любое количество устройств. Это наглядное воплощение концепции 100 в 1
Сетевая станция
AMS может выступать в роли сетевого устройства с практически неограниченными сетевыми возможностями. Это и хостинг множества сайтов, и взаимодействие со своими старшими и младшими «братьями», и исполнение удалённых команд и отдача команд другим контроллерам в сети, и интеграция с системами домашней автоматизации и т. д.
Контроллер умного дома
На базе AMS может быть создан мощный контроллер умного дома с широчайшими возможностями и уникальными потребительскими качествами. Примером такого контроллера является уже реализованный проект «Мега-контроллер», который представлен на этом сайте
Обучающий и развлекательный набор
Arduino Mega Server это прекрасная основа для обучающего или игрового набора для обучения программированию, робототехнике и т. п. детей и взрослых. Контроллер может содержать в себе обширную интерактивную документацию и готовые примеры экспериментов, опытов и готовых устройств и для использования такого набора не нужны глубокие знания электроники и программирования
Загрузить версию для вашего модуля можно с сайта разработчика
Используемые источники:
- https://arduinoplus.ru/arduino-mega2560/
- https://m.habr.com/ru/post/382177/
- http://micpic.ru/home/proekty-na-arduino/202-arduino-mega-server-operatsionnaya-dlya-arduino-mega-esp8266-i-esp32.html