Цифровые и аналоговые пины ардуино

Расширение возможности на Ардуино

Одной из возможностей умного дома является визуализация состояния автоматики и проходящих в системе процессов. Для этого рекомендуется применять отдельный сервер, обеспечивающий обработку состояний (может применяться программа Node.js).

Упомянутая программная технология применяется для решения интернет-задач, поэтому для визуализации «Умного дома» используется язык Java Script (именно с его помощью создается обработчик и сервер). Результаты можно увидеть на экране компьютера или ПК.

Для реализации задуманного подойдет ноутбук, обычный ПК или Raspberry Pi. Применение такой системы позволяет увеличить ее возможности. Так, если на плате Ардуино имеется небольшой объем памяти, на сервере такие ограничения отсутствуют. Программа пишется таким образом, чтобы обеспечить полное управление платформой.

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

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

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

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

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

  • I2C;
  • SPI.

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

Коммуникация

Плата Arduino Mega 2560 имеет несколько средств для коммуникации с компьютером, другими платами и другими микроконтроллерами. Во-первых, у Mega 2560 есть 4 аппаратных UART для последовательной TTL (5 вольт) коммуникации. Чип ATmega16U2 (на версиях rev1 и rev2ATmega8U2) перенаправляет один из них на USB, а ПО на компьютере видит его как виртуальный COM-порт (машинам на Windows нужен файл *.inf, тогда как машины на OSX и Linux автоматически распознают плату как COM-порт). В IDE Arduino есть монитор порта, который позволяет отправлять простые текстовые данные – как на саму плату, так и от нее. При передаче данных через чип ATmega8U2/16U2 и USB-соединение на компьютер (но не при последовательной коммуникации через 0-ой и 1-ый контакты) на плате будут загораться светодиоды RX и TX.

Для последовательной коммуникации через цифровые контакты Mega 2560 используется библиотека SoftwareSerial.

Плата Mega 2560 также поддерживает интерфейсы SPI и TWI. Для коммуникации через TWI в IDE Arduino предусмотрена библиотека Wire; более подробно о ней читайте тут. Для коммуникации через SPI используйте библиотеку SPI.

Распиновка

Пины питания

  • VIN: Входной пин для подключения внешнего источника питания с напряжением в диапазоне от 7 до 12 вольт. Через контакт можно потреблять напряжение, когда устройство запитано через внешний разъём питания.
  • 5V: Выходной пин от регулятора напряжения на плате с выходом 5 вольт и максимальных током 800 мА. Питать устройство через вывод не рекомендуется — вы рискуете спалить плату.
  • 3.3V: Выходной пин от регулятора напряжения с выходом 3,3 вольта и максимальных током 150 мА. Питать устройство через вывод не рекомендуется — вы рискуете спалить плату.
  • GND: Выводы земли.
  • IOREF: Контакт предоставляет платам расширения информацию о рабочем напряжении микроконтроллера. В зависимости от напряжения, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней.

Порты ввода/вывода

  • Входы/выходы общего назначения: пины – и –
    Логический уровень единицы — 5 В, нуля — 0 В. Максимальный ток выхода — 40 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.
  • ШИМ: пины – и –
    Позволяет выводить аналоговые значения в виде ШИМ-сигнала. Разрядность ШИМ не меняется и установлена в 8 бит.
  • АЦП: пины –
    Позволяет представить аналоговое напряжение в цифровом виде. Разрядность АЦП не меняется и установлена в 10 бит. Диапазон входного напряжения от 0 до 5 В. При подаче большего напряжения — вы убьёте микроконтроллер.

Входы и Выходы

Каждый из 54 цифровых выводов Mega, может настраиваться как вход или выход. Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор (стандартно отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:

  • Последовательная шина: 0 (RX) и 1 (TX); Последовательная шина 1: 19 (RX) и 18 (TX); Последовательная шина 2: 17 (RX) и 16 (TX); Последовательная шина 3: 15 (RX) и 14 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Выводы 0 и 1 подключены к соответствующим выводам микросхемы последовательной шины ATmega8U2.
  • Внешнее прерывание: 2 (прерывание 0), 3 (прерывание 1), 18 (прерывание 5), 19 (прерывание 4), 20 (прерывание 3), и 21 (прерывание 2). Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().
  • PWM: 2 до 13 и 44-46. Любой из выводов обеспечивает ШИМ с разрешением 8 бит.
  • SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Посредством данных выводов осуществляется связь SPI. Также выводы SPI могут быть выведены на блоке ICSP, который совместим с платформами Arduino UNO, Arduino Duemilanove и Arduino Diecimila.
  • LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит.
  • I2C: 20 (SDA) и 21 (SCL). Посредством выводов осуществляется связь I2C (TWI). Расположение выводов на платформе Mega не соответствует расположению Duemilanove или Diecimila.

На платформе Mega2560 имеется 16 аналоговых входов, каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно выводы имеют диапазон измерения до 5 В относительно земли, тем не менее имеется возможность изменить верхний предел посредством вывода AREF и функции.

Дополнительная пара выводов платформы:

  • AREF. Опорное напряжение для аналоговых входов.
  • Reset. Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.

Выбор платы и порта

Откройте Arduino IDE. Из меню Инструменты>Плата выбирается Arduino/Genuino Mega or Mega 2560.
Выберите процессор/микроконтроллер платы, обычно это ATmega2560. Из меню Инструменты>Процессор выбирается ATmega2560 (Mega 2560).
Выберите последовательное устройство платы в меню Инструменты>Порт. Скорее всего, это COM3 (Arduino/Genuino Mega or Mega 2560) или выше (COM1 и COM2 обычно зарезервированы). Чтобы узнать, вы можете отключить свою плату и повторно открыть меню; запись, которая исчезает, должна быть Arduino или Genuino Mega. Подсоедините плату и выберите этот последовательный порт.
Если у вас модель Arduino Mega 2560 CH340G, то лучше использовать программатор Arduino as ISP.
Имеется возможность не использовать загрузчик и запрограммировать микроконтроллер через выводы ICSP (внутрисхемное программирование).

RobotDyn MEGA: память, программирование

Написание скетчей происходит в среде Arduino IDE 1.8, которую можно скачать на сайте разработчика www.arduino.cc. Для подключения устройств к Arduino MEGA ATmega2560 используются коннекторы, которые напрямую или через макетную плату подключаются к портам ввода — вывода. Чтобы научиться работать с платой и изучить язык программирования перейдите в раздел «Уроки по Ардуино для начинающих»


Оригинальная плата Arduino MEGA 2560 ATmega2560

Где скачать драйвера для RobonDyn Mega 2560

Плата RobotDyn осуществляет связь с ноутбуком или персональным компьютером через микроконтроллер на чипе CH340G. Скачать драйвер для CH340G (RobotDyn MEGA driver CH340G) можно по прямой ссылке здесь. Скачанный архив следует распаковать на компьютере и запустить установочный файл CH341SER.EXE. После чего можно запускать среду Arduino IDE и начинать создавать и прошивать скетчи.

MEGA 2560 поддерживает три типа памяти:

Flash – память, которая используется для скетчей в отличии от плат Arduino Uno и Nano имеет увеличенный объем — и составляет уже целых 256 кБ.

SRAM память — оперативная память объемом 8 кБ обеспечивает более стабильную работу программы при хранении больших объемов данных.

EEPROM — энергонезависимая память объемом 4 кБ используется для записи и хранения данных, которые не исчезнут при отключении питания.

Плата 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 – перезагрузка микроконтроллера.

Автоматический (программный) сброс

Плата Mega 2560 устроена таким образом, что вам необязательно нажимать на физическую кнопку сброса перед загрузкой скетча – сброс делается при помощи ПО, которое запущено на компьютере, подключенном к Mega 2560. Одна из аппаратных линий ATmega8U2, отвечающая за управление потоками (DTR), через 100-нанофарадный конденсатор подключена к линии сброса на ATmega2560. Когда на эту линию подается значение LOW, значение на линии RESET падает настолько, что этого хватает для перезагрузки чипа. IDE Arduino использует эту возможность, чтобы позволить вам загружать новый код, просто нажав на кнопку загрузки, которая находится на панели инструментов. Это значит, что у загрузчика будет более короткий таймаут, поскольку передачу на DTR значения LOW можно привязать к началу загрузки.

Эта особенность влияет на работу Mega 2560 и в другом. Когда плата Mega 2560 подключена к компьютеру на Mac OS X или Linux, то сбрасывается каждый раз, когда программа настраивает соединение через USB.

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

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

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

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

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

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

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

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

Распиновка Arduino Mega 2560 R3

Как уже было написано выше, плата имеет 54 цифровых пинов. Они могут быть как входом так и выходом. Рабочее напряжение этих пинов составляет 5 В. Каждый из них имеет подтягивающий резистор и поданное на один из этих пинов напряжения ниже 5 вольт все равно будет считаться как 5 вольт (логическая единица).

Аналоговые пины являются входами и не имеют подтягивающих резисторов. Они измеряют поступающее на них напряжение и возвращают значение от 0 до 1024 при использовании функции analogRead(). Эти пины измеряют напряжение с точностью до 0,005 В.

ШИМ Arduino Mega

Если внимательно посмотреть на плату то можно увидеть значок тильды (

) рядом с некоторыми цифровыми пинами. Этот значок означает, что данный пин может быть использован как выход ШИМ. На некоторых платах ардуино этого значка нет так как производители не всегда находят место для этого символа на плате. У Arduino Mega есть 15 выводов ШИМ, это цифровые пины со 2 по 13 и с 44 по 46. Для использования ШИМ в Arduino есть специальная функция analogWrite().

Другие пины:

  • Serial: 0 (rx) и 1 (tx), Serial1: 19 (rx) 18 (tx), Serial2: 17 (rx) и 16 (tx), Serial3: 15 (rx) и 14 (tx) используются для передачи данных по последовательному интерфейсу.
  • Выводы 53 (SS), 51 (MOSI), 50 (MISO), 52 (SCK) рассчитаны для связи по интерфейсу SPI.
  • Так же на выводе 13 имеется встроенный в плату светодиод.
  • 20 (SDA) и 21 (SCL) могут использоваться для связи с другими устройствами по шине I2C. Подробнее про этот интерфейс вы можете почитать на википедии. В среде разработке Arduino IDE есть встроенная библиотека «wire.h» для более легкой работы с I2C.
  • Внешние прерывания: выводы 2 (прерывание 0), 3 (прерывание 1), 18 (прерывание 5), 19 (прерывание 4), 20 (прерывание 3) и 21 (прерывание 2). Эти выводы могут использоваться в качестве источников прерываний, возникающих при различных условиях: при низком уровне сигнала, при фронте, спаде или изменении сигнала. Для получения дополнительной информации см. функцию attachInterrupt().
  • AREF. Опорное напряжение для аналоговых входов. Может быть задействован функцией analogReference().
  • Reset. Формирование низкого уровня (LOW) на этом выводе приведет к перезагрузке микроконтроллера. Обычно этот вывод служит для функционирования кнопки сброса на платах расширения

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

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

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

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

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

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

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

Для написания программ (скетчей) для контроллер Ардуино вам нужно установить среду программирования. Самым простым вариантом будет установка бесплатной Arduino IDE, скачать ее можно с официального сайта.

После установки IDE вам нужно убедиться, что выбрана нужная плата. Для этого у Arduino IDE в меню “Инструменты” и подпункте “Плата” следует выбрать нашу плату (Arduino/Genuino Uno). После выбора платы автоматически изменятся параметры сборки проекта и итоговый скетч будет скомпилирован в формат, который поддерживает плата. Подключив контроллер к компьютеру через USB, вы сможете в одно касание заливать на него вашу программу,используя команду “Загрузить”.

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

Написанная и скомпилированная программа загружается через USB-соединение (UART- Serial). Со стороны контролера за этот процесс отвечает bootloader.

Более подробную информацию о том, как устроены программы для платы Ардуино можно найти в нашем разделе, посвященном программированию.

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

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

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

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

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

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

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

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

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

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

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

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

Платы расширения

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

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

Одним из самых популярных является Arduino Ethernet Shield. Он нужен для связи с Ардуино по обычному сетевому кабелю, витой паре. На нём расположен разъём rj45.

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

Схемотехника

В целом, схемотехника довольно проста и ничего специфичного здесь не требуется. Я же подбирал комплектующие (особенно в части питания) те, что, как уже написал выше, были «под рукой» и никакой завязки на них нет. Итак, пройдёмся по схеме. В статье будет рассмотрена ревизия 0 с описанием её недочётов, на гитхабе же лежат обе ревизии (исходная 0 и с исправлениями 1, все замечания также отмечены в TXT файле рядом с проектом).

Начнём с сердца платы. Тут совсем всё просто:

Из обвязки — кварцы (и то часовой я не ставил, т. к. держатель для батареи на плате не предусмотрен, задач с RTC нет) да конденсаторы по питанию, ну разве что ещё кое-что… догадались, что здесь я забыл поставить (если нет, ответ будет в конце раздела) ?

Аналоговое питание — тоже ничего примечательного, ставим бусину и разные по ёмкости конденсаторы, чтобы подавить большой спектр шумов по питанию:

Да, не забываем также развязать аналоговую и цифровую землю бусиной:

Для экспериментов предусмотрено место для установки внешнего прецизионного опорного напряжения ADR3412ARJZ-R7 от Analog Devices:

Если DA1 не установлена, то опорное напряжение можно брать от внутреннего источника МК.

Ну и разъёмы, гора разъёмов:

Из примечательного здесь — дифференциальные ФНЧ на входах сигма-дельта АЦП, номиналы RC необходимо корректировать (на плате установлены условные 100 Ом + 100 пФ) в зависимости от буфферного ОУ до них и требуемой полосы пропускания.

Далее простой селектор питания, который переключается на внешнее питание (если оно появилось) или питается от USB. Для внешнего питания на основе IRLML9301TRPBF собрана простейшая схема идеального защитного диода от переплюсовки, а отключение VBUS шины (питание от USB) собрано на дешевой сборке PMC85XP (MOSFET-P + BJT-NPN). Выглядит на схеме это так (от VCCIN потом формируется VCC5P0 посредством DC-DC):

Хм, заметили косяк ? 🙂 Если да — у вас зоркий глаз и острый ум! (ответ, что не так, в конце раздела)

DC-DC для формирования +5 В собран на MP2315GJ-Z, схема практически из даташита и ничего интересного из себя не представляет:

LDO для получения +3.3 В на основе LM1117MPX-3.3 или LM1117MPX-ADJ (у меня их просто завались, поэтому ставлю везде, где есть место и не жалко):

Ну и напоследок, схема X-Link в немного изменённом виде на основе STM32F103C8T6, добавлена защита USB Data линий — USBLC6-2SC6:

При большом желании можно, конечно, поставить К1986ВЕ92QI вместо STM32F103C8T6, в качестве прошивки портировать CMSIS-DAP и будет тотальное импортозамещение, но это уже для ярых фанатов. 😉

Да, самое важное чуть не забыли! Поставить зацеп для осциллографа или мультиметра, соединённый с общим:

А теперь список замечаний и выявленных косяков по ревизии 0:

  • Нет резисторов на MODE пинах (PB0, PC0) — будут проблемы с выбранным режимом при не подключенных \ не подтянутых никуда пинах.
  • VRef для ADCIU лучше вывести на боковой разъём — уменьшается петля проводника\кабеля для аналоговой платы, подключаемой к разъёму XS1.
  • На USB экран подключить через RC к общему — уменьшение помех в общем проводе от USB кабеля.
  • Кварцевый резонатор ZQ1 лучше заменить на 8 МГц — проще установить необходимую частоту на выходе PLL.
  • Селектор питания, VT1 и обвязку заменить на диод Шотки — питание от USB в отсутствие дополнительного питания приходит в норму (без этой корректировки через обратный диод MOSFET VT1 на вход внешнего питания просачивается небольшое напряжение, которое открывает VT3, который, в свою очередь, призакрывает VT4 и вместо 5 В после него ~3,4 В только).

Упрощённое решение с селектором питания в ревизии 1 построено на диоде Шотки MBR0540T1G (он же впаян на место VT1 на фотографиях далее):

На этом всё.

ATmega2560-Arduino Pin Mapping

Below is the pin mapping for the Atmega2560. The chip used in Arduino 2560. There are pin mappings to Atmega8 and Atmega 168/328 as well.

Arduino Mega 2560 PIN diagram

Arduino Mega 2560 PIN mapping table

Pin Number Pin Name Mapped Pin Name
1 PG5 ( OC0B ) Digital pin 4 (PWM)
2 PE0 ( RXD0/PCINT8 ) Digital pin 0 (RX0)
3 PE1 ( TXD0 ) Digital pin 1 (TX0)
4 PE2 ( XCK0/AIN0 )  
5 PE3 ( OC3A/AIN1 ) Digital pin 5 (PWM)
6 PE4 ( OC3B/INT4 ) Digital pin 2 (PWM)
7 PE5 ( OC3C/INT5 ) Digital pin 3 (PWM)
8 PE6 ( T3/INT6 )  
9 PE7 ( CLKO/ICP3/INT7 )  
10 VCC VCC
11 GND GND
12 PH0 ( RXD2 ) Digital pin 17 (RX2)
13 PH1 ( TXD2 ) Digital pin 16 (TX2)
14 PH2 ( XCK2 )  
15 PH3 ( OC4A ) Digital pin 6 (PWM)
16 PH4 ( OC4B ) Digital pin 7 (PWM)
17 PH5 ( OC4C ) Digital pin 8 (PWM)
18 PH6 ( OC2B ) Digital pin 9 (PWM)
19 PB0 ( SS/PCINT0 ) Digital pin 53 (SS)
20 PB1 ( SCK/PCINT1 ) Digital pin 52 (SCK)
21 PB2 ( MOSI/PCINT2 ) Digital pin 51 (MOSI)
22 PB3 ( MISO/PCINT3 ) Digital pin 50 (MISO)
23 PB4 ( OC2A/PCINT4 ) Digital pin 10 (PWM)
24 PB5 ( OC1A/PCINT5 ) Digital pin 11 (PWM)
25 PB6 ( OC1B/PCINT6 ) Digital pin 12 (PWM)
26 PB7 ( OC0A/OC1C/PCINT7 ) Digital pin 13 (PWM)
27 PH7 ( T4 )  
28 PG3 ( TOSC2 )  
29 PG4 ( TOSC1 )  
30 RESET RESET
31 VCC VCC
32 GND GND
33 XTAL2 XTAL2
34 XTAL1 XTAL1
35 PL0 ( ICP4 ) Digital pin 49
36 PL1 ( ICP5 ) Digital pin 48
37 PL2 ( T5 ) Digital pin 47
38 PL3 ( OC5A ) Digital pin 46 (PWM)
39 PL4 ( OC5B ) Digital pin 45 (PWM)
40 PL5 ( OC5C ) Digital pin 44 (PWM)
41 PL6 Digital pin 43
42 PL7 Digital pin 42
43 PD0 ( SCL/INT0 ) Digital pin 21 (SCL)
44 PD1 ( SDA/INT1 ) Digital pin 20 (SDA)
45 PD2 ( RXDI/INT2 ) Digital pin 19 (RX1)
46 PD3 ( TXD1/INT3 ) Digital pin 18 (TX1)
47 PD4 ( ICP1 )  
48 PD5 ( XCK1 )  
49 PD6 ( T1 )  
50 PD7 ( T0 ) Digital pin 38
51 PG0 ( WR ) Digital pin 41
52 PG1 ( RD ) Digital pin 40
53 PC0 ( A8 ) Digital pin 37
54 PC1 ( A9 ) Digital pin 36
55 PC2 ( A10 ) Digital pin 35
56 PC3 ( A11 ) Digital pin 34
57 PC4 ( A12 ) Digital pin 33
58 PC5 ( A13 ) Digital pin 32
59 PC6 ( A14 ) Digital pin 31
60 PC7 ( A15 ) Digital pin 30
61 VCC VCC
62 GND GND
63 PJ0 ( RXD3/PCINT9 ) Digital pin 15 (RX3)
64 PJ1 ( TXD3/PCINT10 ) Digital pin 14 (TX3)
65 PJ2 ( XCK3/PCINT11 )  
66 PJ3 ( PCINT12 )  
67 PJ4 ( PCINT13 )  
68 PJ5 ( PCINT14 )  
69 PJ6 ( PCINT 15 )  
70 PG2 ( ALE ) Digital pin 39
71 PA7 ( AD7 ) Digital pin 29
72 PA6 ( AD6 ) Digital pin 28
73 PA5 ( AD5 ) Digital pin 27
74 PA4 ( AD4 ) Digital pin 26
75 PA3 ( AD3 ) Digital pin 25
76 PA2 ( AD2 ) Digital pin 24
77 PA1 ( AD1 ) Digital pin 23
78 PA0 ( AD0 ) Digital pin 22
79 PJ7  
80 VCC VCC
81 GND GND
82 PK7 ( ADC15/PCINT23 ) Analog pin 15
83 PK6 ( ADC14/PCINT22 ) Analog pin 14
84 PK5 ( ADC13/PCINT21 ) Analog pin 13
85 PK4 ( ADC12/PCINT20 ) Analog pin 12
86 PK3 ( ADC11/PCINT19 ) Analog pin 11
87 PK2 ( ADC10/PCINT18 ) Analog pin 10
88 PK1 ( ADC9/PCINT17 ) Analog pin 9
89 PK0 ( ADC8/PCINT16 ) Analog pin 8
90 PF7 ( ADC7/TDI ) Analog pin 7
91 PF6 ( ADC6/TDO ) Analog pin 6
92 PF5 ( ADC5/TMS ) Analog pin 5
93 PF4 ( ADC4/TCK ) Analog pin 4
94 PF3 ( ADC3 ) Analog pin 3
95 PF2 ( ADC2 ) Analog pin 2
96 PF1 ( ADC1 ) Analog pin 1
97 PF0 ( ADC0 ) Analog pin 0
98 AREF Analog Reference
99 GND GND
100 AVCC VCC

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

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

Вы получаете операционную систему для работы с Ардуино с компьютера или смартфона по web интерфейсу.

Однако стоит осознавать возможности и мощность микроконтроллера Arduino Mega 2560, хоть и сама плата мощнее своих предшественников, но по современным меркам морально устарела.

Это все те же 8 бит и 8 кб ОЗУ. Скорость, с которой вы скачиваете данные с сервера, будет небольшой, но для веб-страниц вполне хватит.

Выводы о плате Ардуино Мега

В сети есть много, как сторонников, так и противников 8 битной архитектуры плат ардуино – их пытаются вытеснить отладочные платы семейства STM, а порой сравнивают с одноплатными микрокомпьютерами. Однако век ардуино еще будет долго продолжаться, поскольку это простая платформа для веселого освоения электроники и микроконтроллеров.

К тому же рассмотренный сегодня Arduino mega 2560 server – это глоток свежего воздуха для всей платформы. Согласитесь, что приятно иметь возможность поставить личный сервер для своих сайтов с поддержкой необходимых технологий и низким энергопотреблением. Не стоит сравнивать эту идею с серверами на старом компьютерном железе и так далее, преимущества очевидны:

  1. Отсутствие шума во время работы, так как нет кулеров системы охлаждения.
  2. Малый объём занимаемого пространства.
  3. Низкая цена.
  4. Малое энергопотребление.

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