Проекты ардуино на основе mega 2560

Оглавление

Подключение платы Arduino Pro Mini

Для соединения с компьютером используется специальный кабель FTDI FT232RL (или CH340G), содержащий преобразователь интерфейса USB–USART. Микроконтроллер содержит интерфейс USART, его сигналы RX и ТХ выведены на торцевую часть платы. Специальный кабель подключается к этим входам Arduino Pro Mini, а также к контактам VCC и GND. При этом питание 5 В поступает в модуль от персонально компьютера. Существуют соединители, имеющие также очень важный контакт DTR. Сигнал на этом контакте автоматически формирует сигнал сброса перед обновлением программы в МК. Без сброса в нужный момент в начале записи программы невозможно записать новую программу. Следует учитывать порядок подключения контактов. Правильно соединение USART выполняется по схеме:

/*
DTR <——————> DTR
TXD <——————> RXD
RXD <——————> TXD
VCC <——————> VCC
GND НЕ ПОДКЛЮЧЁН CTS
GND <——————> GND
*/

1
2
3
4
5
6
7
8

/*
DTR <——————> DTR
TXD <——————> RXD
RXD <——————> TXD
VCC <——————> VCC
GND     НЕ ПОДКЛЮЧЁН     CTS
GND <——————> GND
*/

Как преодолеть аппаратные ограничения

Большинство распространённых плат имеют аналогичные характеристики, среди них:

  • Uno;
  • Nano;
  • Pro mini;
  • и подобные.

Но с развитием ваших навыков разработки в этой среде появляется проблема нехватки мощности и быстродействия этой платформы. Первым шагом для преодоления ограничений является использование языка C AVR.

С его помощью вы ускорите на порядок скорость обращения к портам, частоту ШИМ и размер кода. Если вам и этого недостаточно, то вы можете воспользоваться мощными моделями с аналогичным подходом к разработке. Для этого подойдёт плата Arduino Mega2560. Еще более мощная – модель Due. В противном случае вам стоит ознакомиться с разновидностями одноплатных компьютеров и STM микроконтроллеров.

Ардуино Uno R3 – отличная плата для большинства проектов, которая служит для изучения устройств цифровой электроники.

Разводка

Вот так выглядит разводка печатной платы (кликабельно):

Это слайд-шоу требует JavaScript.

Из особенностей это платы стоит отметить разводку цифрового и аналогового общих. Рассмотрим вначале аналоговый общий, который располагается исключительно на стороне сигма-дельта АЦП и под его входами:

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

А если же рассмотреть заливку цифрового общего, то здесь стоит отметить важный момент — от разъёмов питания и DC-DC до бусины и, собственно, самого МК необходимо обеспечить по возможности кратчайший путь максимально широкой заливкой (при возможности с наименьшим числом разрывов), этот путь в данной плате обеспечивается в нижней стороне, от разъёма питания до разграничивающей цифровую и аналоговую земли бусины, а также к МК:

Примечание: да, только сейчас заметил, что линию Reset можно было не тянуть по нижнему слою, а протянуть чуть дальше по верхнему слою и в итоге заливка на нижнем слое была бы ещё шире, что теоретически снизило бы (хоть и незначительно) величину шумов по общему проводу.

Вот так это выглядит с включенным верхним слоем — здесь уже видно, что заливка покрывает абсолютно все остальные области платы, начиная от отладчика и заканчивая самим МК:

Примечание: если интересно — попробуйте найти проводник, о котором я писал выше, и решение изложенной проблемы.

3D рендеры печатной платы, верх платы (разъёмы убраны для большей наглядности):

И низ платы (тут совершенно нет компонентов для упрощения пайки, стоит это учитывать в своих изделиях — если есть возможность, то всегда лучше ограничивайтесь в наличии компонентов на одной стороне печатной платы):

Не забываем в Draftsman сделать простой сборочный чертёж:

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

Подключение Arduino Shields

Для подключения шилда нужно просто аккуратно «надеть» его на основную плату. Обычно контакты шилда типа гребенки (папа) легко вставляются в разъемы платы ардуино. В некоторых случаях требуется аккуратно подправить штырки, если сама плата спаяна неаккуратно. Тут главное действовать аккуратно и не прилагаться излишней силы.

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

Прошивка

Для простой проверки и легкого старта на гитхабе также выложены исходники проекта с использованием SPI (для дисплея) и сигма-дельта АЦП. Пример-проект для Visual Studio 2017, но, впрочем, никакой привязки этой IDE нет и его можно скомпилировать как обычный Makefile проект.

За основу взят пак для Keil uVision 5 версии 1.5 от 29.05.2018 с официального сайта и чуть подшаманен для компиляции с gcc-arm-none-eabi.

Что в ней реализовано для быстрого старта:

Пример инициализации периферии, настройки тактирования с комментариями.

Самое простое, но зачастую вызывающее вопросы у новичков, осваивающих АРМ от Миландра. В проекте дан пример инициализации с краткими комментариями, зачем и почему. Также проверен разгон этого МК и тест будет проводиться на тактовой частоте 80 МГц (по спецификации максимум 36 МГц, проводим такие тесты на свой страх и риск)!

Пример реализации задержки на основе SysTick.

Дан пример использования системного таймера SysTick в файлах delay.* для реализации типичной задержки мс (типа HAL_Delay, кто с STM32 знаком 😀 ).

Вывод отладочной информации через printf на UART.

Дан пример реализации вывода отладочной информации с printf на UART (пины PB0, PB1), в main файле объявлен вывод символов __io_putchar и оставшиеся системные функции в файле syscalls.c.

Пример сбор отсчетов сигма-дельта АЦП и пересчет в вольты при необходимости.

По большей части это переработанный пример из папки Firmware\Examples\ADCIU, да, примеры из официального пака скопированы в Firmware\Examples. Также в main.h приведён пример объявлений для быстрой конвертации полученных RAW значений в вольты.

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

Для теста было создано изображение по размеру дисплея:

Конвертация изображения в 16-битовый массив, который уже легко встраивается в прошивку и будет храниться во flash-памяти (жутко её отбирая, отдавать ли память на это — стоит трижды подумать, нужны ли эти красивости), произведена утилитой LCD Image Converter.

Краткое пользование утилитой — открываем изображение, переходим в Options->Conversation…, далее в открывшемся окне выбираем пресет Color R5G6B5, выставляем величину данных 16-бит и открываем превью:

Открывается превью конвертации изображения, здесь можно скопировать 16-битовый массив этого изображения:

Пример вывода в прошивке прост насколько, насколько это возможно — полученный массив хранится в image.h, а его вывод на дисплей — это вызов одной функции ST7789_DrawImage.

Пример вывода собранного буфера отсчетов сигма-дельта АЦП на дисплей.

И напоследок простейший пример вывода накопленного буфера на экран с масштабированием, логика примера крайне проста:

  1. С прерыванием по окончании преобразования наполняются отсчёты в буфере, если заполнили весь буфер — выставляем флаг готовности.
  2. В основном цикле проверяется флаг готовности, и если он установлен, то производится масштабирование и вывод на дисплей, флаг готовности сбрасывается в конце.
  3. Цикл повторяется.

Как можно заметить на время вывода на дисплей, отсчеты АЦП никак не буферизируются и теряются — поэтому это не RealTime, более того, с такой реализацией непериодические сигналы нельзя корректно рассмотреть. В качестве же простого плохого примера — вполне сносно. 🙂

Скомпилировали, теперь бы прошить полученный файл прошивки в МК…

RobotDyn MEGA 2560: распиновка платы

Плата изготовлена с использованием высококачественных радиоэлементов и компонентов, для того чтобы обеспечить стабильную работу микроконтроллера. При этом стоимость платы от компании RobotDyn ниже оригинальной Arduino MEGA 2560 в разы. Схема и распиновка портов на плате MEGA 2560 взята с официального сайта и представлена на картинке (чтобы увеличить — кликните мышкой на фото).


Плата RobotDyn MEGA 2560 R3: распиновка, порты входа-выхода

Подключение RobotDyn MEGA 2560 к компьютеру осуществляется через разъем microUSB, который используется большинством современных  телефонов, включая смартфоны Android. Все порты на плате обозначены: порты, подключенные к АЦП начинаются с буквы «А» — всего их 16. Пины ввода-вывода общего назначения пронумерованы с 0 по 54. Порты с ШИМ сигналом обозначены значком тильд.

Плата Arduino Mini

Является одной из самых простых и удобных устройств Arduino.

Используется микроконтроллер ATmega 168 с рабочим напряжением на 5 вольт с частотой в 16 МГц. Максимальное напряжение питания в моделях составляет 9 вольт. Значение максимального тока на выводах составляет 40 mA.

Плата содержит:

  • 14 цифровых выводов (из них 6 могут быть использованы в качестве ШИМ-выходов), могут применяться в качестве как входа, так и выхода;
  • 8 аналоговых входов (4 из них оснащены выводами);
  • 16 МГц – кварцевый генератор.

Пины устройства Arduino Mini имеют следующее предназначение:

  1. Два вывода, посредством которых осуществляется питание платы «плюс»: RAW, VCC.
  2. Вывод контакта «минус» – пин GND.
  3. Выводы под номерами 3, 5, 6, 9, 10, 11 используются для ШИМ при применении функции analog Write.
  4. К выводам №0, №1 можно подключать другие устройства.
  5. Аналоговые входы №0 – №3 с выводами.
  6. Аналоговые входы №4 – №7 не имеют выводов и требуют пайки при необходимости.
  7. Вывод AREF, который предназначен для изменения верхнего напряжения.
  8. Вывод Reset – перезагрузка микроконтроллера.

Расположение выводов в различных версиях arduino mini могут различаться.

Проблема нехватки ресурсов

Разрабатывая проекты на Ардуино, вы рано или поздно столкнетесь с двумя проблемами: необходимость минимизации места и нехватка функциональных портов ввода-вывода.

Первая проблема решается элементарно – с помощью миниатюрных плат:

  • Nano,
  • Mini,
  • Pro Mini,
  • Micro,
  • Digispark ATtiny 85.

Если плата nano и другие мини-платы повторяют функционал обычной Arduino UNO, имея на борту atmega328 или atmega168, то платы с Attiny85 и ей подобные подходят для простейших проектов с минимальным функционалом.

Arduino Mega 2560

Второй же вопрос решается двумя методами:

  1. Расширение числа выводов с помощью сдвиговых регистров, типа 74HC595. К сожалению, этот метод не позволяет использовать ШИМ для расширенных выводов, да и работает этот способ только для выходных сигналов.
  2. Объединение нескольких плат в одну систему и их связь с помощью различных интерфейсов обмена данными; однако этот метод довольно сложен, и не всегда оправдан.

Можно решить этот вопрос иначе – здесь на помощь придет большая плата Arduino mega 2560 или её аналог с поддержкой USB хоста – ADK Arduino, но обо всём по порядку.

Прошивка WeMos, примеры скетчей

Мигание светодиодами

Сам скетч выглядит следующим образом:


int inputPin = D4; // подключение кнопки в контактам D4 и GND. Можно выбрать любой пин на плате

int val = 1; // включение/выключение хранения значения

void setup() {

pinMode(BUILTIN_LED, OUTPUT); // подключение светодиода, перевод в режим OUTPUT

pinMode(inputPin, INPUT); // включение пина для входных данных

}

void loop() {

val = digitalRead(inputPin); // чтение входных данных

digitalWrite(BUILTIN_LED, val); // включение/выключение светодиода по нажатию кнопки

}

Если все выполнено правильно, нужно нажать кнопку, и светодиод загорится. При повторном нажатии потухнет.

Для автоматического мигания светодиода интервалом в две секунды используется следующий код:


void setup() {

pinMode(3, OUTPUT); // инициализация контакта GPIO3 с подключенным светодиодом

}

void loop() {

digitalWrite(2, HIGH);   // светодиод загорается

delay(2000);              // ожидание в течение двух секунд

digitalWrite(2, LOW);    // светодиод гаснет

delay(2000);              // ожидание в течение двух секунд

}

WeMos и подключение к WiFi для передачи данных на удаленный сервер

В примере будет рассмотрен скетч для создания веб-сервера, благодаря которому можно управлять различными устройствами – лампами, реле, светодиодами и другими.  Для работы нужно установить библиотеку ESP8266WiFi.

Фрагменты скетча:


const char* ssid = "****"; //требуется записать имя точки доступа, к которой будет произведено подключение

const char* password = "****"; //введение пароля точки доступа, который должен содержать не менее восьми символов

WiFiServer server(80);  //создание сервера на 80 порту

WiFi.begin(ssid, password); // подключение к заданной выше точке доступа, ее имя и пароль

pinMode(3, OUTPUT);   //присоединение к пину GPIO3 и земле

while (WiFi.status() != WL_CONNECTED) //показывает статус подключения, WL_CONNECTED указывает на установку соединения;

Serial.println(WiFi.localIP()); //получение IP адреса. Его нужно ввести в строку адреса в браузере для получения доступа к управлению устройством

Serial.println(WiFi.macAddress()); //получение MAC адреса

Serial.println(WiFi.SSID()); //получение имени сети, к которой подключился WeMos

WiFiClient client = server.available(); //проверяет, подключен ли клиент

Serial.println("client");

while(!client.available()) //ожидание отправки данных от клиента

String req = client.readStringUntil('\r');

Serial.println(req);

client.flush(); //Чтение первой строки запроса

Создание точки доступа на WeMos

В данном примере модуль WeMos будет сконфигурирован в качестве самостоятельной точки доступа.

Создание точки доступа выполняется по следующему алгоритму:

  • Подключение модуля;
  • Запуск среды разработки Arduino IDE;
  • Выбор порта, частоты, размера флэш-памяти;
  • Запись с коде программы имени сети и создание пароля;
  • Компиляция и загрузка скетча;
  • Установить скорость 115200;
  • Должно произойти подключение к сети, будет получен IP и выведен в терминал;
  • Для проверки можно ввести в адресной строке в браузере IP/gpio/1, если все работает корректно, должен загореться светодиод на плате.

Фрагменты программы:



const char *ssid = «****»; //в этой строке нужно задать имя создаваемой сети

const char *password = «»; //указывается пароль сети, если не указывать пароль, то сеть будет открыта

При создании пароля важно помнить, что он должен состоять не менее чем из восьми знаков

WiFiServer server(80);

WiFi.softAP(ssid, password); //создание точки доступа с именем и паролем, которые указывались выше. Если пароль не указывался, softAP(ssid, password) меняется на softAP(ssid)

IPAddress myIP = WiFi.softAPIP(); //получение адреса IP

Serial.print(«AP IP address: «); //вывод полученного адреса в терминал

server.begin(); // запуск сервера

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

Микроконтроллер Atmel ATmega168 или ATmega328
Рабочее напряжение (логическая уровень) 5 В
Входное напряжение (рекомендуемое) 7-12 В
Входное напряжение (предельное) 6-20 В
Цифровые Входы/Выходы 14 (6 из которых могут использоваться как выходы ШИМ)
Аналоговые входы 8
Постоянный ток через вход/выход 40 mAh с одного вывода и 500 mAh со всех выводов
Флеш-память 16 Кб (ATmega168) или 32 Кб (ATmega328) при этом 2 Кб используются для загрузчика
ОЗУ 1 Кб (ATmega168) или 2 Кб (ATmega328)
EEPROM 512 байт (ATmega168) или 1 Кб (ATmega328)
Тактовая частота 16 МГц
Размеры 1.85 см x 4.2 см

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

  • Nano v.2;
  • Nano v.3.

Главное отличие – в самом микроконтроллере. Младшая версия использует Atmega168, Atmega328. Основные отличия чипов – это объём Flash-памяти:

  • mega 328: Flash-память – 32 кб, ПППЗУ – 1024 и ОЗУ – 2 кб;
  • mega 168: Flash-память – 16 кб, ПППЗУ – 512 и ОЗУ – 1 кб.

ПППЗУ — это перепрограммируемые запоминающее устройство.

Главный конкурент Arduino Nano по размеру – это Arduino Micro. В целом они похожи, но у «микро» интерфейс SPI разведен на другие пины, как и шина I2C, а также изменено количество выводов прерываний. В целом, платы похожи размерами, но различны соотношения сторон, а также некоторые схемотехнические нюансы.

Arduino Nano имеет 8 аналоговых входов, они могут использоваться как цифровой выход, 14 цифровых из которых 6 могут работать как широтно-импульсный модулятор (ШИМ), еще два задействованы под I2C и 3 под SPI.

В противоположном конце платы от разъёма микро-юсб расположена колодка Arudino ICSP для прошивки микроконтроллера.

ШИМ выходы и транзисторы помогут вам: регулировать обороты двигателя, яркость светодиодов, мощность нагревателей и многое другое. А аналоговые входы позволят читать значения с аналоговых датчиков, таких как:

  • фоторезисторы;
  • терморезисторы;
  • термопары;
  • измерители влажности;
  • датчики давления и другие.

Выходы Digital 2 и 3 могут быть использованы для внешних прерываний

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

На базе платы Nano получится отличный миниатюрный программатор Arduino ISP, для прошивки целого ряда контроллеров.

Принцип работы системы

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

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

Питание

Питание Arduino производится через USB разъем или от внешнего питающего устройства. Источник напряжения определяется в автоматическом режиме.

Если выбран вариант с внешним питанием не через USB, можно подключать АКБ или блок питания (преобразователь напряжения). В последнем случае подключение производится с помощью 2,1-миллиметровго разъема с «+» на главном контакте.

Провода от АКБ подключаются к различным выводам питающего разъема — Vin и Gnd.

Для нормальной работы платформа нуждается в напряжении от 6 до 20 Вольт. Если параметр падает ниже 7 вольт, на выводе 5V может оказаться меньшее напряжение и появляется риск сбоя.

Если подавать 12 В, возможен перегрев регулятора напряжения и повреждения платы. По этой причине оптимальным уровнем является питание с помощью 7 — 12 В.

В отличие от прошлых типов плат, Arduino Mega 2560 работает без применения USB-микроконтроллера типа FTDI. Для обеспечения обмена информацией по USB применяется запрограммированный под конвертер USB-to-serial конвертер.

На Ардуино предусмотрены следующие питающие выводы:

  • 5V — используется для подачи напряжения на микроконтроллер, а также другие элементы печатной платы. Источник питания является регулируемым. Напряжение подается через USB-разъем или от вывода VIN, а также от иного источника питания 5 Вольт с возможностью регулирования.
  • VIN — применяется для подачи напряжения с внешнего источника. Вывод необходим, когда нет возможности подать напряжение через USB-разъем или другой внешний источник. При подаче напряжения на 2,1-миллиметровй разъем применяется этот вход.
  • 3V3 — вывод, напряжение на котором является следствием работы самой микросхемы FTDI. Предельный уровень потребляемого тока для этого элемента составляет 50 мА.
  • GND — заземляющие выводы.

Принципиальную схему платы в pdf формате можно посмотреть ЗДЕСЬ.

Связь

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

Модель ATmega 2560 отличается наличием 4 портов, через которые можно передавать данные для TTL и UART. Специальная микросхема ATmega 8U2 на плате передает интерфейс (один из них) через USB-разъем. В свою очередь, программы на ПК получают виртуальный COM.

  • Если на ПК установлен Linux, распознавание происходит в автоматическом режиме.
  • Если стоит Windows, потребуется дополнительный файл .inf.

С помощью утилиты мониторинга обеспечивается отправление и получение информации в текстовом формате после подключения к системе.

Мигание светодиодов TX и RX свидетельствует о передаче данных. Для последовательной отправки информации применяется специальная библиотека Software Serial.

К особенностям ATmega 2560 стоит отнести наличие интерфейсов SPI и I2C. Кроме того, в состав Ардуино входит библиотека Wire.

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

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

Микроконтроллер ATmega2560 поставляется с записанным загрузчиком, облегчающим запись новых программ без использования внешних программаторов. Связь осуществляется оригинальным протоколом STK500.

Имеется возможность не использовать загрузчик и запрограммировать микроконтроллер через выводы блока ICSP (внутрисхемное программирование).

Код прошивки для контроллера ATmega16U2 доступен для свободного скачивания. Контроллер ATmega16U2 имеет собственный DFU загрузчик, который может быть активирован замыканием джампера на обратной стороне платы (рядом с картой Италии) и перезагрузкой контроллера. Для записи новой прошивки возможно использовать Atmel’s FLIP (под Windows) или DFU программатор (на Mac OS X или Linux). Также можно переписать прошивку внешним программатором, используя ISP вход.

Версия платы с контроллером USB-UART CH340G требует загрузки драйверов.

Плата Arduino Uno

Слово Uno переводится с итальянского языка, как «один». Устройство названо в связи с началом выпуска Arduino 1.0.

Другими словами, Uno является эталонной моделью для всей платформы типа Arduino. Это последнее устройство в серии плат USB, доказавшее свою эффективность и проверенное временем.

Arduino Uno создано на микроконтроллере типа ATmega 328 (datasheet).

Его состав следующий:

  • количество цифровых входов и выходов составляет 14 (а шесть из них имеется возможность использовать как выходы ШИМ);
  • число аналоговых входов составляет шесть;
  • 16 МГц – кварцевый резонатор;
  • имеется разъём для питания;
  • есть разъём, предназначенный для ICSP-программирования внутри самой схемы;
  • присутствует кнопка для сброса.

Крайне важно отметить, что отличительной особенностью всех новых плат arduino является использование для интерфейсов USB–UART микроконтроллера типа ATmega 16U2 (или ATmega 8U2 в версиях R1, R2) вместо устаревшей микросхемы типа FTDI. Плата Uno по версии R2 снабжается дополнительным подтягивающим к земле резистором на линии HWB применяемого микроконтроллера

Плата Uno по версии R2 снабжается дополнительным подтягивающим к земле резистором на линии HWB применяемого микроконтроллера.

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

  1. Последовательный интерфейс использует шины №0 (RX – получение данных), №1 (TX – передача данных).
  2. Для внешнего прерывания используются выводы №2, №3.
  3. Для ШИМ используются выводы за номерами 3,5, 6, 9, 10, 11. Функция analog Write обеспечивает разрешение в 8 бит.
  4. Связь посредством SPI: контакты №10 (SS), №11 (MOSI), №12 (MISO), №13 (SCK).
  5. Вывод №13 запитывает светодиод, который загорается при высоком потенциале.
  6. Uno оснащена 6 аналоговыми входами (A0 – A5), которые имеют разрешение в 10 бит.
  7. Для изменения верхнего предела напряжения используется вывод AREF (функция analog Reference).
  8. Связь I2C (TWI, библиотека Wire) осуществляется через выводы №4 (SDA), №5 (SCL).
  9. Вывод Reset – перезагрузка микроконтроллера.

Проекты на основе плате

Использование Arduino MEGA 2560 дало возможность сделать по-настоящему большую и сложную микроконтроллерную систему. Например, есть очень интересный проект, который получил поддержку в РФ и активно развивается – это Arduino Mega Server. Микроконтроллер настолько мощный, что может стать целым сервером для интернета сайтов или облака.

Единственное ограничение на таком сервере – это объём памяти, ведь в качестве накопителя можно использовать micro SD-карты памяти, а Ethernet поддерживает максимальный объём памяти 32 гб.

Arduino Mega Server – это серьезный проект с широким функционалом, в котором поддерживаются все нужные для веб-мастера технологии:

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

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

Вот небольшой перечень проектов, реализуемых с Arduino Mega Server:

  1. Умный дом – стал уже классической областью применения ардуино.
  2. Автоматизированная котельная.
  3. Тепличное хозяйство с автоматической поддержкой влажности и солевого состава почвы.
  4. Метеостанция.
  5. И многое другое.

Вы получаете операционную систему для работы с ардуино с компьютера или смартфона по web интерфейсу. Однако стоит осознавать возможности и мощность микроконтроллера Arduino mega 2560, хоть и сама плата мощнее свих предшественников, но по современным меркам морально устарела. Это все те же 8 бит и 8 кб ОЗУ. Скорость, с которой вы скачиваете данные с сервера, будет небольшой, но для веб-страниц вполне хватит.

GPIO

Начнем с пинов, которых больше всего, это GPIO, с англ. General Purpose Input-Output, входы-выходы общего назначения, на плате они подписаны как D0–D13 и A0–A5. По картинке распиновки они называются PD*, PB* и PC*, (вместо звёздочки – цифра) отмечены тёмно-бежевым цветом. Почему “официально” они называются PD/PB/PC? Потому что пины объединены в пОрты по несколько штук (не более 8), на примере Нано есть три порта: D, B и C, соответственно пины так и подписаны: PD3 – Port D 3 – третий выход порта D. Это цифровые пины, способные выдавать логический сигнал (0 или VCC) и считывать такой же логический сигнал. VCC это напряжение питания микроконтроллера, при обычном использовании обычной платы Ардуино это 5 Вольт, соответственно это 5 вольтовая логика: 0V – сигнал низкого уровня (LOW), 5V – высокого уровня (HIGH). Напряжение питания микроконтроллера играет очень большую роль, об этом мы ещё поговорим. GPIO имеют несколько режимов работы: вход (INPUT), выход (OUTPUT) и вход с подтяжкой к питанию встроенным в МК резистором на 20 кОм (INPUT_PULLUP). Подробнее о режимах поговорим в отдельном уроке.

Все GPIO пины в режиме входа могут принять сигнал с напряжением от 0 до 5 вольт (на самом деле до 5.5 вольт, согласно даташиту на микроконтроллер). Отрицательное напряжение или напряжение, превышающее 5.5 Вольт приведёт к выходу пина или даже самого МК из строя. Напряжение 0-2.5 вольта считается низким уровнем (LOW), 2.5-5.5 – высоким уровнем (HIGH). Если GPIO никуда не подключен, т.е. “висит в воздухе”, он принимает случайное напряжение, возникающее из за наводок от сети (провода 220в в стенах) и электромагнитных волн на разных частотах, которыми пронизан современный мир.

GPIO в режиме выхода (OUTPUT) являются транзисторными выходами микроконтроллера и могут выдать напряжение 0 или VCC (напряжение питания МК). Стоит отметить, что микроконтроллер – логическое, а не силовое устройство, его выходы рассчитаны на подачу сигналов другим железкам, а не на прямое их питание. Максимальный ток, который можно снять с GPIO выхода ардуино – 40 мА. Если попытаться снять больше – пин выйдет из строя (выгорит выходной транзистор и всё). Что такое 40 мА? Обычный 5мм одноцветный светодиод потребляет 20 мА, и это практически единственное, что можно питать напрямую от Ардуино. Также не стоит забывать о максимальном токе со всех пинов, он ограничен 200 мА, то есть не более 10 светодиодов можно запитать от платы на полную яркость…

Arduino Mega 2560 R3

Ардуино Мега 2560 снабжена микроконтроллером ATmega2560 с тактовой частотой 16 мГц.

Характеристики Ардуино Мега 2560

  • Микроконтроллер: ATmega2560
  • Тактовая частота: 16 мГц
  • Рабочее напряжение: 5 В
  • Предельные напряжения питания: 5-20 В
  • Рекомендуемое напряжение питания: 7-12 В
  • Максимальная сила тока с одного вывода: 40 мА
  • Цифровые входы/выходы: 54
  • Цифровые входы/выходы с поддержкой ШИМ: 15
  • Аналоговые входы: 16
  • Flash-память: 256 КБ (8 из них используются загрузчиком)
  • SRAM: 8 КБ
  • EEPROM: 4 КБ

Подключение Arduino Mega 2560 к питанию

Эту плату можно питать четырьмя разными способами:

Через порт USB. Можно питать ардуино от компьютера, powerbank, смартфона (если он поддерживает режим OTG) или от адаптера, вставленного в розетку.
Через пин +5V. Этот пин является не только выводом, но и вводом. Будьте внимательны! На этот пин нужно подавать ровно 5 вольт. В противном случае можно спалить сам микроконтроллер.
Через штекер питания, расположенный на плате. Можно использовать, батарейки, аккумуляторы и разнообразные блоки питания. Этот штекер подключен к пину VIN

О напряжении и мерах предосторожности написано в следующем пункте.
Через пин VIN. Ток от этого пина проходит через встроенный стабилизатор напряжения

По заявлениям производителя можно подавать от 5 до 20 вольт. Но это не совсем так. Так как стабилизатор имеет не 100% КПД, то при подаче 5 вольт на пин VIN напряжения может не хватить на питание микроконтроллера, да и на цифровых пинах будет не 5 вольт, а меньше. Также не стоит работать на максимальном напряжении. При 20 вольтах на пине VIN будет сильно греться стабилизатор напряжения, вплоть до выхода из строя. Поэтому рекомендуется использовать напряжение от 7 до 12 вольт.

Чип 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 Programming

  • Arduino Mega 2560 can be programmed using Arduino Software called IDE which supports C programming.
  • The code you make on the software is called sketch which is burned in the software and then transferred to the board through USB cable.
  • This board comes with a built-in bootloader which rules out the usage of an external burner for burning the code into the board.
  • The bootloader communicates using STK500 protocol.
  • Once you compile and burn the program on the board, you can unplug the USB cable which eventually removes the power from the board. When you intend to incorporate the board into your project, you can power it up using power jack or Vin of the board.
  • Multitasking is another feature where Arduino mega comes handy. However, Arduino IDE Software doesn’t support multitasking feature but you can use other operating systems like FreeRTOS and RTX to write C program for this purpose. This gives you the flexibility of using your own custom build program using ISP connector.