Файл: Разработка аппаратнопрограммного комплекса "Умный будильник" с дополнительным функционалом на базе микроконтроллерного модуля Arduino.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 30.11.2023

Просмотров: 135

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.




Вывод: любой из приведенных микроконтроллерных модулей позволяет реализовать АПК "Умный будильник".

В связи с этим выбор микроконтроллерного модуля осуществлялся по габаритным размерам. В качестве управляющей схемы в дипломном проекте будет применен микроконтроллерный модуль Arduino Nano с микроконтроллером ATmega328P.
2.4 Разработка интерфейса.

Рассмотрим интерфейсы сопряжения микроконтроллерной платы Arduino и функциональных элементов, которые используются в дипломном проекте на рисуноке 17.



Рис.17 Функциональная схема опытного образца модели "Умный будильник"

Светодиод подключен к микроконтроллерной плате Arduino Nano через контакты: минус подключен к контакту GND модуля Mosfet IRF520, плюс к контакту D6 через резистор 220 Ом к микроконтроллерной плате.

Зуммер подключен к микроконтроллерной плате Arduino Nano через контакты: минус подключен к GND модуля Mosfet IRF520, плюс к контакту D7 через резистор 100 Ом к микроконтроллерной плате [11].

Модуль RTC3231 подключен микроконтроллерной плате Arduino Nano через контакты: SCL подключен к микроконтроллерной плате Arduino Nano к контакту A5, SDA подключен к микроконтроллерной плате Arduino Nano к контакту A4, контакт VCC модуля RTC3231 подключен к контакту VCC модуля Mosfet IRF520, контакт GND модуля RTC3231 подключен к контакту GND модуля Mosfet IRF520.

Модуль TM1637 подключен микроконтроллерной плате Arduino Nano через контакты: CLK подключен к микроконтроллерной плате Arduino Nano к контакту D12, DIO подключен к микроконтроллерной плате Arduino Nano к контакту D11, контакт VCC модуля TM1637 подключен к контакту VCC модуля Mosfet IRF520, контакт GND модуля TM1637 подключен к контакту GND модуля Mosfet IRF520.

Модуль энкодера подключен к микроконтроллерной плате Arduino Nano через контакты: контакт CLK моудля энкодера подключен к микроконтроллерной плате Arduino Nano к контакту D8, контакт DT моудля энкодера подключен к микроконтроллерной плате Arduino Nano к контакту D9, контакт SW моудля энкодера подключен к микроконтроллерной плате Arduino Nano к контакту D10, контакт VCC модуля энкодера подключен к контакту VCC модуля Mosfet IRF520, контакт GND модуля энкодера подключен к контакту GND модуля Mosfet IRF520.

Модуль Mosfet IRF520 подключен микроконтроллерной плате Arduino Nano через контакты: SIG подключен к микроконтроллерной плате Arduino Nano к контакту D3, контакт VCC модуля Mosfet IRF520 подключен к контакту VCC модуля RTC3231, TM1637, энкодера а так-же к Arduino Nano к контакту 5V, контакт GND модуля Mosfet IRF520 подключен к контакту GND модуля RTC3231, TM1637, энкодера а так-же к Arduino Nano к контакту GND.



3 РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ АППАРАТНО-ПРОГРАММНОГО КОМПЛЕКСА "УМНЫЙ БУДИЛЬНИК"

3.1 Разработка алгоритма работы

Одним из главных компонентов электронного, умного будильника является программное обеспечение. Программа для разрабатываемого устройства позволяет работать устройству автономно в течение длительного времени.

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

  • подсчет реального времени;

  • подсчет до срабатывания сигнала о пробуждении;

  • подача сигнала для включения светодиодной ленты.

Разработанный алгоритм работы аппаратно-программного комплекса "Умный будильник" представлен в виде блок-схем на рисунке 18.



Рис.18 Блок-схема алгоритма программы

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

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

Управление работой разрабатываемого устройства электронного, умного будильника осуществляется при поварачивание ручки на энкодере.

Энкодер считывает информацию о полученном им повороте, когда ручка меняет свое стандартное положение.

3.2. Разработка программного обеспечения

Среда разработки Arduino IDE.

Разрабатываемый программный код был написан при помощи среды разработки Arduino IDE представленной на рисунке 20.



Рис.20 Интерфейс среды разработки Arduino IDE

Среда разработки Arduino состоит из:

  • области сообщений;

  • редактора программного кода;

  • панели инструментов с кнопками часто используемых команд;

  • окна вывода текста;

  • нескольких меню.

Структура программы Arduino достаточно проста и в минимальном варианте состоит из двух частей setup() и loop().


void setup() { // код выполняется один раз при запуске программы }

void loop() { // основной код, выполняется в цикле }

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

После завершения setup() управление переходит к функции loop(). Она в бесконечном цикле выполняет команды, записанные в ее теле (между фигурными скобками). Собственно эти команды и совершают все алгоритмические действия контроллера [12].

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

Выбор языка программирования.

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

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

  • процедурные;

  • логические;

  • объектно-ориентированные;

  • функциональные;

  • мультипарадигмальные;

  • графические языки.

Рассмотрим два языка программирования, относящихся к категории объектно–ориентированных:

Python — высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода.

Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.

От традиционных машинных языков Python отличает целый ряд характеристик. К числу его особенностей можно отнести:

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

  • выполнение операций осуществляется в более высоком уровне абстракций отчасти по причине архитектуры языка, отчасти благодаря расширенной библиотеке кодов, поставляемой вместе с Python;

  • массив может включать объекты различных типов;

  • значение любого типа может быть назначено переменной;

  • язык легко объединяется с написанными на С и С++ модулями, что позволяет существенно увеличить скорость программ.


Основным недостатком Python является не полная контролируемость языка, поскольку происходит частичная трансляция к внутренней форме кода байта, выполненного интерпретатором Python. В настоящее время Python активно используется огромным количеством программистов в разных странах мира, причем число их постоянно увеличивается. Одной из причин популярности языка является то, что он с одинаковой эффективностью работает на OS/2, Macintosh, UNIX, Windows. Универсальность языка обеспечивает развертку больших программ и разработку малых приложений.

Arduino — Язык программирования Arduino является стандартным C++ (используется компилятор AVR-GCC) с некоторыми особенностями, облегчающими новичкам написание первой работающей программы.

Программы, написанные программистом Arduino, называются наброски (или иногда скетчи — калька от англ. sketch) и сохраняются в файлах с расширением ino. Эти файлы перед компиляцией обрабатываются препроцессором Arduino. Также существует возможность создавать и подключать к проекту стандартные файлы C++.

Обязательную в C++ функцию main() препроцессор Arduino создает сам, вставляя туда необходимые «черновые» действия.

Программист должен написать две обязательные для Arduino функции setup() и loop(). Первая вызывается однократно при старте, вторая выполняется в бесконечном цикле.

В текст своей программы (скетча) программист не обязан вставлять заголовочные файлы используемых стандартных библиотек. Эти заголовочные файлы добавит препроцессор Arduino в соответствии с конфигурацией проекта. Однако пользовательские библиотеки нужно указывать.

Менеджер проекта Arduino IDE имеет нестандартный механизм добавления библиотек. Библиотеки в виде исходных текстов на стандартном C++ добавляются в специальную папку в рабочем каталоге IDE. При этом название библиотеки добавляется в список библиотек в меню IDE. Программист отмечает нужные библиотеки, и они вносятся в список компиляции.

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

Из множества микрокомпютеров и платформ у Arduino есть весомые преимущества перед рядом конкурентов:

  • бесплатность;

  • кроссплатформенность;

  • платформа отлично подходит для новичков;

  • возможность расширить под себя программное обеспечение или аппаратную составляющую.

А так-же в каждый микроконтроллер вшит загрузчик ПО,