Создаем собственные модули Мастер Кит - как подружить MP8037 и Arduino IDE
Создаем собственные модули Мастер Кит - как подружить MP8037 и Arduino IDE
В ассортименте Мастер Кит есть три очень похожих внешне модуля: MP8037R, MP8037ADC и MP8037time. Соответственно, «цифровой термометр/термостат», «цифровой модуль защиты и управления», «многорежимный таймер». Рассмотрим самостоятельное программирование устройств на основе модулей MP8037 с использованием платформы Ардуино.
Статьи

Создаем собственные модули Мастер Кит - как подружить MP8037 и Arduino IDE

В широком ассортименте компании Мастер Кит есть три очень похожих внешне модуля: MP8037R, MP8037ADC и MP8037time. Соответственно, «цифровой термометр/термостат», «цифровой модуль защиты и управления», «многорежимный таймер».

Мастер Кит Создаем собственные модули Мастер Кит - как подружить MP8037 и Arduino IDE  MP8037R, MP8037ADC, MP8037time, Мастер Кит

При внимательном рассмотрении конструкции и принципиальной схемы, становится ясно, что физически это одно и то же устройство на основе микроконтроллера ATMega168! Разница в функционале достигается всего лишь заменой прошивки микроконтроллера, так называемого firmware – встроенного микропрограммного обеспечения.

Для модулей MP8037 прошивки разрабатываются и компилируются в бинарный код (файл с расширением .hex) с помощью  профессиональной среды программирования на языке С. Готовым бинарным кодом микроконтроллер прошивается на производстве посредством промышленного быстродействующего программатора.

Но если у вас есть какая-либо плата популярного контроллера Arduino, то вы можете самостоятельно написать прошивку и «залить» ее в микроконтроллер модуля MP8037, получив, таким образом, свое собственное уникальное устройство с нужным вам функционалом.

Идея состоит в том, чтобы использовать среду Arduino IDE для написания программы,  а плату Arduino в качестве программатора для микроконтроллера ATMega168, установленного на модуле MP8037.

Язык программирования для Ардуино прост в освоении; также не вызывает затруднений применение этого языка для управления микроконтроллером.

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

 

В этом материале мы подробно объясним, как это сделать.

 

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

- любой модуль MP8037;

- плата Arduino;

- макетная плата для установки на ней Adruino Nano и коммутации проводников;

- самодельный кабель из 6-ти проводников для соединения Ардуино с модулем MP8037;

- USB кабель для подключения Arduino Nano к компьютеру;

- компьютер с установленной программной оболочкой Arduino IDE.

 

В качестве модуля мы взяли готовый прошитый MP8037R, в качестве платы Arduino – плату MB NANO из ассортимента Мастер Кит. Аналогичная плата входит в комплект набора для знакомства и изучения Ардуино «Цифровая лаборатория» NR05 из серии Азбука электронщика.

Макетные платы входят в составы наборов этой же серии «Основы схемотехники» NR03 и «Классика схемотехники» NR04. Наборы серии «Азбука электронщика» будут, несомненно, интересны детям, подросткам и всем, кто интересуется электроникой.

Кабель для подключения платы Arduino к модулю можно спаять из планки DK0176 (штыревой соединитель PLS-40) и любых подходящих проводников. Это стандартный кабель для интерфейса SPI, который используется для прошивки микроконтроллеров фирмы Atmel.

 

Схема кабеля:

 

Наименование линии

Выводы Ардуино

 

К разъему X2 на плате MP8037

+5В

+5V

<->

6

RESET

D10

<->

5

SCK

D13

<->

4

MISO

D12

<->

3

MOSI

D11

<->

2

Общий (GND)

GND

<->

1

 

Выглядит он вот так:

Мастер Кит Создаем собственные модули Мастер Кит - как подружить MP8037 и Arduino IDE  

Кабель USB должен иметь разъем микро-USB и стандартный разъем для подключения к компьютеру.

Оболочку Arduino IDE можно скачать на сайте www.arduino.cc на страничке https://www.arduino.cc/en/Main/Software. На момент написания этого материала последней версией оболочки была версия 1.8.5. C этой версией мы и проводили все описываемые действия. Кстати, если вы будете продолжать эксперименты с программированием в среде Arduino IDE, рекомендуем установить несколько версий оболочки, в том числе и старые, поскольку не все библиотеки, особенно сторонние, работают с последними версиями оболочки. Варианты установки среды программирования и ее настройки на компьютере неоднократно описаны в сети, например, здесь.

Для начала сделаем из платы Arduino программатор. Для этого необходимо залить на плату скетч (так называются программы для Ардуино) из стандартных примеров оболочки программирования.

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

Выберем нужную плату и порт (у нас COM3, у вас может быть другой):

Мастер Кит Создаем собственные модули Мастер Кит - как подружить MP8037 и Arduino IDE  

Выберем скетч программатора:

 Мастер Кит Создаем собственные модули Мастер Кит - как подружить MP8037 и Arduino IDE

Нажатием на значок со стрелкой, направленной вправо, скомпилируем скетч и загрузим его в Arduino Nano. В случае успешной загрузки в нижней части окна оболочки программирования появится сообщение о завершении загрузки и использовании памяти микроконтроллера. Наш софтверный программатор готов!

Мастер Кит Создаем собственные модули Мастер Кит - как подружить MP8037 и Arduino IDE

Но есть одно «но»…В стандартном наборе плат среды программирования нет отдельно взятых микроконтроллеров, только платы Arduino и другие, а нам необходим конкретно ATMega168PA, работающий на частоте 8 МГц, поскольку именно на эту частоту настроен микроконтроллер на плате MP8037.

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

В главном окне оболочки откроем пункт меню «Файл» -> «Настройки» и в пункте «Дополнительные ссылки для Менеджера плат» занесем следующую ссылку:

https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json

Мастер Кит Создаем собственные модули Мастер Кит - как подружить MP8037 и Arduino IDE

Закроем настройки и зайдем в пункт меню «Инструменты» -> «Плата» -> «Менеджер плат». В «Менеджере плат» находим библиотеку MiniCore by MCUdude и нажимаем кнопку «Установить». После этого рекомендуется перезапустить Arduino IDE.

 Мастер Кит Создаем собственные модули Мастер Кит - как подружить MP8037 и Arduino IDE

Теперь в пункте «Плата» появилась необходимая нам ATMega168 с параметрами. Выберем необходимые:

Мастер Кит Создаем собственные модули Мастер Кит - как подружить MP8037 и Arduino IDE

В некоторых версиях модулей MP8037 могут быть установлены микроконтроллеры ATMega328PA с большей памятью, в остальном аналогичные ATMega168PA. Соответственно, в этом случае при указании платы следует выбирать ATMega328PA и частоту 8 МГц.

Установим Arduino Nano на макетную плату и соединим ее с модулем MP8037 по следующей схеме. Тем самым мы реализовали возможность программировать микроконтроллер модуля MP8037 по интерфейсу SPI, который обеспечивается программным обеспечением, прошитым в плате Ардуино.

Для того чтобы правильно описать в программе выводы микроконтроллера модуля MP8036, и их соответствие названиям выводов, принятых в среде программирования Arduino IDE, сравним принципиальные схемы модуля MP8037R и платы Arduino Nano, на которой также могут быть установлены микроконтроллеры ATMega168 или ATMega328. Напомним, что за исключением объема памяти, они идентичны.

 

Результаты сведем в таблицу:

 

Название

Обозначение на схеме MP8037

Обозначение порта (вывода) ATMega168PA

Обозначение на плате Arduino

Обозначение в программе

Разряд 1

LED_DIG1

PD4

D4

4

Разряд 2

LED_DIG2

PD3

D3

3

Разряд 3

LED_DIG3

PD2

D2

2

Разряд 4

LED_DIG4

PD1

D1

1

Сегмент a

LED_A

PD6

D6

6

Сегмент b

LED_B

PB4

D12

12

Сегмент c

LED_C

PB2

D10

10

Сегмент d

LED_D

PB0

D8

8

Сегмент e

LED_E

PD7

D7

7

Сегмент f

LED_F

PD5

D5

5

Сегмент g

LED_G

PB3

D11

11

Точка

LED_H

PB1

D9

9

Кнопка 1

S1

PC2

A2

A2 или 16

Кнопка 2

S2

PC1

A1

A1 или 15

Реле

GP0

PC0

A0

A0 или 14

 

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

Не вдаваясь в подробности программирования на языке Wiring, который используется в Arduino IDE, приведем листинг скетча.

 

// список выводов Arduino для подключения к разрядам a-g

// семисегментного индикатора

int pins[8]={6,12,10,8,7,5,11,9};

// сегменты для вывода цифр 0-9

byte numbers[10] = { B11111100, B01100000, B11011010,

B11110010, B01100110, B10110110,

B10111110, B11100000, B11111110,

B11110110};

// переменные для хранения и обработки отображаемого числа

int number=0;

int number1=0;

int number2=0;

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

int pindigits[4]={1,2,3,4};

// переменная для хранения текущего разряда

int digit=0;

// переменная для отмеривания 100 мс интервала

unsigned long millis1=0;

const int BUTTON=A1; // Контакт A1 для подключения кнопки 1

const int RESET=A2; // Контакт A2 для подключения кнопки 2

 

void setup()

{

// Сконфигурировать контакты кнопок как входы

pinMode (BUTTON, INPUT_PULLUP);

pinMode (RESET, INPUT_PULLUP);

// Сконфигурировать контакты как выходы

// и установить на них низкий логический уровень

for(int i=0;i<8;i++)

{

pinMode(pins[i],OUTPUT);

digitalWrite(pins[i],LOW);

}

for(int i=0;i<4;i++)

{

pinMode(pindigits[i],OUTPUT);

digitalWrite(pindigits[i],LOW);

}

delay(1000);

}

 

void loop()

{

// если левая кнопка нажата - сброс

if (digitalRead(RESET) == LOW){

  millis1 = millis();

  number = 0; 

}

// если правая кнопка нажата - счет

if (digitalRead(BUTTON) == LOW){ 

 if(millis()-millis1 > 100)

  {millis1=millis1+100;

  number=number+1;

  if(number==10000)

  number=0;

}

}

else millis1 = millis(); number1=number;

// цикл перебора разрядов

for(int i=0;i<4;i++)

{

 number2=number1%10;

 number1=number1/10;

 showNumber(number2,i);

for(int j=0;j<4;j++) digitalWrite(pindigits[j],HIGH);

 digitalWrite(pindigits[i],LOW);

 delay(3);

}

}

// функция вывода цифры и точки

void showNumber(int num,int dig)

{

 for(int i=0;i<8;i++)

 {

   if(bitRead(numbers[num],7-i)==HIGH) // зажечь сегмент

   digitalWrite(pins[i],LOW);

   else // потушить сегмент

   digitalWrite(pins[i],HIGH);

 }

if(dig==1)

digitalWrite(pins[7],LOW);

}

 

Он снабжен комментариями, которые помогут разобраться, как работает программа. Описание языка можно найти по адресу https://www.arduino.cc/reference/en/

Скопируйте текст скетча в новое окно среды программирования.

Поскольку ранее мы уже установили в среде программирования необходимую плату и ее параметры, осталось нажать кнопку «Загрузка», чтобы запрограммировать микроконтроллер модуля MP8037R.

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

После прошивки можно отключить разъем кабеля SPI и подать 12В постоянного тока на модуль. На одну секунду после подачи напряжения во всех четырех разрядах загорятся все сегменты для проверки индикатора, после чего устройство готово к работе. Нажимаем и удерживаем правую кнопку – идет счет секунд с десятыми долями, отпускаем – счет прекращается. Нажатие левой кнопки сбрасывает результат. Как запрограммировали – так и работает!

 

Видео:

 

Конечно, на первый раз процедура может показаться не слишком простой, но, поверьте,  потратив немного времени, вы сможете создавать свои варианты устройств на базе модуля MP8037; сможете задействовать установленное на нем реле, подключите датчик температуры, научитесь отображать поданное на модуль напряжение и многое другое.

Желаем  успехов в освоении и применении электроники для проектов DIY.

Ваш Мастер Кит.

Рейтинг@Mail.ru

Почему выбирают Мастер Китнас


Мы в Сети


© 1999-2024 Мастер Кит