Источник: http://amperka.ru/product/iskra-mini-headless

 

Iskra Mini — это миниатюрная платформа на базе микроконтроллера ATmega328 для разработки и программирования электронных устройств, где важен каждый миллиметр свободного пространства. Платформа Iskra Mini является эквивалентом итальянской Arduino Mini, но производится нами в России. Используйте её там, где размер имеет значение.

Видеообзор

Подключение и настройка

Рассмотрим начало работы с платформой Iska Mini в операционной системе Windows. Для начала нужно установить на компьютер интегрированную среду разработки Arduino — Arduino IDE.

Скачать Arduino IDE 1.6.3

Стабильная версия от Arduino LLC.
Возможно появление таблички о нелицензионной плате из-за войны между Arduino LLC и Arduino SRL.

 

Установка Arduino IDE с помощью инсталлятора избавит вас от большинства потенциальных проблем с драйверами и программным окружением. После того как вы загрузили и установили Arduino IDE, давайте запустим её!

Ввиду отсутствия у платформы Iskra Mini собственного USB-порта подключать её к компьютеру необходимо, используя один из перечисленных способов:

  • с помощью USB-Serial адаптера
  • с помощью платформы Iskra Neo
  • с помощью платформы Arduino Uno

Рассмотрим их подробнее.

 

Прошивка Iskra Mini через USB-Serial адаптер

Для сборки программатора нам понадобится:

  1. Iskra Mini
  2. USB-Serial адаптер
  3. Кабель USB (A — Mini USB)
  4. Макетная плата
  5. Провода «папа-папа»
  6. Конденсатор 0.1 мкф

Соберите схему, представленную ниже.

  • Линии питания и земли от платформы Iskra Mini соедините с пинами +5V и GND USB-Serial адаптера.
  • Управляющие пины TX и RX платы Iskra Mini соедините с пинами RX и TX USB-Serial адаптера.
  • Соедините вывод сброса контроллера – RST и вывод Reset USB-Serial адаптера через конденсатор номиналом 0.1 мкФ.

Конденсатор обеспечивает автоматический сброс контроллера при открытии последовательного порта, благодаря чему не требуется вручную нажимать кнопку сброса каждый раз, когда нужно прошить новую программу. Если же со сбросом возникают какие-то проблемы, конденсатор всегда можно убрать и осуществлять сброс вручную. Для этого перед прошивкой нового скетча в Arduino Mini, необходимо физически нажать кнопку сброса на плате за секунду перед нажатием кнопки Upload в среде разработки Arduino.

 

Подключение к компьютеру

Подключите USB-Serial преобразователь к компьютеру через USB-кабель. Вы увидите, как на плате Iskra Mini загорится зелёный светодиод «ON». Это означает, что на плату подано питание. Чтобы настроить Arduino IDE на работу с USB-Serial адаптером, необходимо узнать, какой номер COM-порта присвоил ему компьютер. Для этого зайдите в «Диспетчер устройств» Windows и раскройте вкладку «Порты (COM и LPT)». Вы должны увидеть следующую картину:

 

Это означает, что операционная система распознала наш USB-Serial преобразователь как COM-порт, подобрала для него правильный драйвер и назначила этому COM-порту номер 6. Если мы подключим к компьютеру другой USB-Serial преобразователь, то операционная система назначит ему другой номер.

 

Настройка Arduino IDE

  1. Для начала нам необходимо сообщить Arduino IDE с какой именно платой ей предстоит общаться. Для этого переходим в меню:Инструменты Плата и выбираем «Arduino Mini».
  2. Далее необходимо выбрать процессор, который установлен на плате. Для этого переходим в меню: Инструменты Процессор и выбираем «ATmega328», так как именно он установлен на платформе Iskra Mini.
  3. Последнее, но не менее важное, нам необходимо сообщить Arduino IDE на каком порту находится Iskra Mini. Для этого переходим в меню: Инструменты Порт и выбираем порт «COM6».

 

Теперь Arduino IDE знает — знает всё что ей необходимо для прошивки платформы Iskra Mini. Давайте попробуем загрузить в неё скетч.

 

Прошивка Iskra Mini через Iskra Neo

Для сборки программатора нам понадобится:

  1. Iskra Mini
  2. Iskra Neo
  3. Кабель USB (A — Micro USB)
  4. Макетная плата
  5. Провода «папа-папа»

Соберите схему, представленную ниже.

  • Линии питания и земли от платформы Iskra Mini соедините с пинами +5V и GND платы Iskra Neo.
  • Управляющие пины TX и RX платы Iskra Mini соедините с пинами RX и TX платы Iskra Neo.
  • Пин RESET платы Iskra Mini соедините с пином 4 платы Iskra Neo, который будет сбрасывать микроконтроллер перед прошивкой.

Подключение к компьютеру

Подключите плату Iskra Neo к компьютеру через USB-кабель. Вы увидите, как на плате Iskra Mini загорится зелёный светодиод «ON». Это означает, что на плату подано питание. Аналогично загорится зелёный светодиод «ON» и на плате Iskra Neo. Чтобы настроить Arduino IDE на работу с платой Iskra Neo, необходимо узнать, какой номер COM-порта присвоил ему компьютер. Для этого нужно зайти в «Диспетчер устройств» Windows и раскрыть вкладку «Порты (COM и LPT)». Мы должны увидеть следующую картину: Это означает, что операционная система распознала плату Iskra Neo как COM-порт, подобрала для него правильный драйвер и назначила этому COM-порту номер 8. Если мы подключим к компьютеру другую плату, то операционная система назначит ей другой номер.

 

Предварительная настройка платы Iskra Neo

Для того, чтобы платформа Iskra Neo выполняла роль программатора для Iskra Mini, необходимо её заранее к этому подготовить.

  1. Для начала нам необходимо сообщить Arduino IDE с какой именно платой ей предстоит общаться. Для этого переходим в меню: Инструменты Плата и выбираем «Arduino Leonardo».
  2. Далее необходимо сообщить Arduino IDE на каком порту находится Iskra Neo. Для этого переходим в меню: Инструменты Порт и выбираем порт «COM8».
  3. Для того чтобы Iskra Neo передавала данные от USB в плату Iskra Mini и наоборот, прошейте платформу Iskra Neo скетчем приведённым ниже.
IskraToSerial.ino
// даём разумное имя для пина
// который будет выполнять сброс микроконтоллера
#define RESET 4
 
char buff[4];
 
// переменная состояния режима программирования
bool programming = false;
 
void setup()
{
  // открываем последовательный порт
  // для приёма и отправки данных в USB
  Serial.begin(115200);
  // открываем последовательный порт
  // для приёма и отправки данных в плату Iskra Mini
  Serial1.begin(115200);
}
 
void loop()
{
  // если программа в режиме программирования
  if (programming) {
    // читаем данные с USB и записываем в плату Iskra Mini
    progUSBRead();
    // читаем данные с платы Iskra Mini и записываем в USB
    progMiniRead();
  } else if (Serial.available()) {
    // если приходят данные с USB
    pinMode(RESET, OUTPUT);
    digitalWrite(RESET, LOW);
    delay(50);
    digitalWrite(RESET, HIGH);
    delay(50);
    programming = true;
  } else if (Serial1.available()) {
    // если приходят данные с платы Iskra Mini
    // читаем данные с USB и записываем в плату Iskra Mini
    serialUSBRead();
    // читаем данные с платы Iskra Mini и записываем в USB
    serialMiniRead();
  }
}
 
void progUSBRead()
{
  // если появились данные с USB
  if (Serial.available()) {
    // считываем символ
    char c = (char)Serial.read();
    // записываем этот символ в плату Iskra Mini
    Serial1.write(c);
    // проверка на завершение процесса прошивки
    switch (c) {
      case 'Q':
      buff[0] = 'Q';
      break;
      case ' ':
      if (buff[0] == 'Q') {
        buff[1] = ' ';
        break;
      }
      buff[0] = '\0';
      break;
      default:
      buff[0]= '\0';
      break;
    }
  }
}
 
void progMiniRead()
{
  // если появились данные с платы Iskra Mini
  if (Serial1.available()) {
    // считываем символ
    char c = (char)Serial1.read();
    // записываем этот символ в USB
    Serial.write(c);
    // проверка на завершение процесса прошивки
    if (buff[1] == ' ') {
      buff[1] = 'O';
      buff[2] = 'K';
    } else if (buff[1] == 'O' && buff[2] == 'K') {
      programming = false;
      clearbuff();
    }
  }
}
 
void serialUSBRead()
{
  // если появились данные с USB
  if (Serial.available()) {
    // считываем символ
    char c = (char)Serial.read();
    // записываем этот символ в плату Iskra Mini
    Serial1.write(c);
  }
}
void serialMiniRead()
{
  // если появились данные с платы Iskra Mini
  if (Serial1.available()) {
    // считываем символ
    char c = (char)Serial1.read();
    // записываем этот символ в плату Iskra Mini
    Serial.write(c);
  }
}
 
// функция очистки буфера
void clearbuff()
{
  for (int i = 0; i < 4; i++) {
    buff[i] = 0;
  }
}

Настройка Arduino IDE

После того как платформа Iskra Neo прошита скетчем, делающим из неё программатор для Iskra Mini, необходимо перенастроить Arduino IDE на работу с платой Iskra Mini.

  1. Для начала нам необходимо сообщить Arduino IDE с какой именно платой ей предстоит общаться. Для этого переходим в меню: Инструменты Плата и выбираем «Arduino Mini».
  2. Далее необходимо выбрать процессор, который установлен на плате. Для этого переходим в меню: Инструменты Процессор и выбираем «ATmega328», так как именно он установлен на платформе Iskra Mini.
  3. В продолжении необходимо сообщить Arduino IDE на каком порту находится Iskra Mini. Для этого переходим в меню: Инструменты Порт и выбираем порт «COM8».

 

Теперь Arduino IDE знает всё что ей необходимо для прошивки платформы Iskra Mini.

 

Прошивка Iskra Mini через Arduino Uno

  1. Аккуратно извлеките из панельки Arduino Uno микросхему ATMega328P. Не беспокойтесь, вы сможете вставить её обратно позднее.
  2. Соедините Iskra Mini и Arduino Uno так, как показано на рисунке:
  3. Выберите в меню Инструменты Плата и выбираем «Arduino Mini».
  4. Выберите в меню Инструменты Порт COM-порт Arduino Uno
  5. Можно прошивать.

Загрузка первого скетча

Среда настроена, плата подключена. Теперь можно переходить к загрузке скетча.

Откройте в Arduino IDE скетч приведенный ниже:

Blink.ino
void setup()
{
  // настраиваем пин 13 в режим выхода
  pinMode(13, OUTPUT);
}
 
void loop()
{
  // подаём на пин 13 «высокий сигнал»
  digitalWrite(13, HIGH);
 
  // ждём 1 секунду
  delay(1000);
 
  // подаём на пин 13 «низкий сигнал»
  digitalWrite(13, LOW);
 
  // ждём 1 секунду
  delay(1000);
}

Загрузим наш скетч в плату Iskra Mini.

 

 

После загрузки светодиод должен загораться и гаснуть раз в 1 секунду. Это значит, что всё получилось. Теперь можно смело переходить к «Экспериментам»

 

Элементы платы

Теперь рассмотрим подробнее все компоненты, которые вы видите на плате.

  • Микроконтроллер ATmega328 — является мозгом платформы Iskra Mini.
  • Кнопка сброса RESET — осуществляет сброс микроконтроллера ATmega328.
  • Регулятор напряжения LP2985A — позволяет подключать к платформе Iskra Mini напряжение от 5,3–9 Вольт к пину Vin. Подключение более 9 Вольт или противоположное подключение выводов питания и земли от источника питания может убить микроконтроллер ATmega328.
  • Кварцевый резонатор — используется для получения стабильной тактовой частоты.
  • Встроенный светодиод подключенный к 13 пину платы Iskra Mini.
  • Индикатор включения, который при подаче питания на плату горит зелёным цветом.

Пины

Пины 0–13 и A0–A7 могут быть использованы, как порты ввода-вывода общего назначения.

Они могут выдавать или принимать до 40 мА и при необходимости притягиваться к напряжению питания встроенными резисторами на 20–50 кОм.

Пины A0–A7 подключены к АЦП и могут считывать аналоговый сигнал с разрешением 10 бит, т.е. с 1024 градациями.

Пины A6 и A7 могут быть использованы только как входы. Работать в режиме выхода они не способны.

Пины 3, 5, 6, 9, 10, 11 могут выдавать ШИМ-сигнал.

Пины 11, 12, 13 предоставляют аппаратный интерфейс SPI и соответствуют линиям MOSI, MISO, SCK. При использовании SPI в режиме ведомого устройства в качестве линии SS используется пин 10.

Пины A4, A5 предоставляют аппаратный интерфейс TWI/I²C и соответствуют линиям SDA, SCL.

Принципиальная и монтажная схемы

 

Обратите внимание, что расположение пинов A5 и A6 на плате Iskra Mini отличается от платы Arduino Mini.

 

 

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

  • Микроконтроллер: ATmega328
  • Тактовая частота: 16 МГц
  • Flash-память: 32 КБ (из которых 2 КБ используются загрузчиком)
  • SRAM: 2 КБ
  • EEPROM: 1 КБ
  • Рабочее напряжение: 5 В
  • Рекомендуемое входное напряжение: 5,3–9 В
  • Портов ввода-вывода общего назначения: 20
  • Портов с поддержкой ШИМ: 6
  • Портов, подключённых к АЦП: 8
  • Максимальный ток одного вывода: 40 мА
  • Габариты: 33×20 мм