Да, вот такие условыия. Диплом - Мальцев (1). Разработка аппаратнопрограммного комплекса "Умный будильник" с дополнительным функционалом на базе микроконтроллерного модуля Arduino
Скачать 1.74 Mb.
|
Вывод: любой из приведенных микроконтроллерных модулей позволяет реализовать АПК "Умный будильник". В связи с этим выбор микроконтроллерного модуля осуществлялся по габаритным размерам. В качестве управляющей схемы в дипломном проекте будет применен микроконтроллерный модуль 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 есть весомые преимущества перед рядом конкурентов: бесплатность; кроссплатформенность; платформа отлично подходит для новичков; возможность расширить под себя программное обеспечение или аппаратную составляющую. А так-же в каждый микроконтроллер вшит загрузчик ПО, который трансформирует инструкции, написанные человеком, в машинные коды без использования аппаратного программатора, что является большим плюсом. Описание переменных и констант. В качестве глобальных и локальных переменных в разрабатываемом программном коде используются типы данных:int8_t, byte, boolean(таблица1). Таблица 1 Используемые переменные в программном коде.
Описание используемых переменных в программном коде: boolean — логический тип данных, принимает значения 0 и 1, или true и false (правда и ложь). По сути ведёт себя как бит, но занимает 8 бит. Есть несколько путей хранить логические переменные так, чтобы они занимали 1 байт, но об этом поговорим позже. Также переменная типа boolean принимает значение true, если присвоить ей значение? отличное от нуля, то есть boolean a = 50; a будет true, и boolean b = -20; Пример: boolean flag = true; int8_t — 8-битовый тип данных без знака; byte — тип данных незаслуженно недооцененный начинающими программистами, который почему-то заменен типом int даже в большинстве примеров Arduino IDE. Он хорош тем, что занимает столько же места, сколько и один регистр памяти 8-битных контроллеров Arduino. 8 бит так же занимает и минимальный коммуникационный пакет данных в сети UART, I2C и других. Описание переменных. boolen [dotFlag, alarmFlag, minuteFlag, blinkFlag, newTimeFlag;]; —библиотека для таймера (быстрая). byte mode ; — 0 - часы, 1 – установка будильника, 2 – установка времени. Описание модулей программы. При написании программного кода на Arduino обязательно нужно придерживатся порядка. А благодаря модульности появляется возможность сконструировать любую систему, в зависимости от необходимости. Начиная с простого смарт-прибора для контроля освещённости и температуры в помещении, и заканчивая умными аграрными системами. Разрабатываемый алгоритм в дипломном проекте включает в себя следующие модули: Модуль подключения. Подключаемые библиотеки и объявление констант. Подключаемые библиотеки и объявление констант – это самый первый блок разрабатываемого алгоритма. Модуль начальной загрузки. Модуль начальной загрузки void setup () – загрузив программу, Arduino дает нашему коду возможность поучаствовать в инициализации системы. Для этого мы должны указать микроконтроллеру команды, которые он выполнит в момент загрузки и потом забудет про них (т.е. эти команды выполнятся только один раз при старте системы). Модуль установки будильника. Модуль установки будильника void settings() обеспечивает настройку и корректировку режима подсчета времени, так-же задает интервал таймауту и определяет время индикации семи сегментного индикатора. Модуль работы энкодера. Модуль работы энкодера void void encoderTick() обеспечивает работоспособность энкодера, отвечает за считыание поворотов и нажатий на энкодоре. А также отвечает за переход в модуль установки будильника. ЗАКЛЮЧЕНИЕ В процессе работы над курсовым проектом, согласно техническому заданию, была разработана действующая модель проектируемого устройства "Умный будильник" с дополнительным функционалом на базе микроконтроллерного модуля Arduino. Отличительной особенностью разработанного устройства является полная автономность, ведь устройство работает как от батареи, так и от прямого источника питания. Разработанное устройство имеет встроенный семисегментный дисплей, для визуальной индикации, выдающего необходимую информацию о работе устройства. Основными органами управления разработанного устройства является энкодер. Для создания действующей модели проектируемого устройства "Умный будильник" с дополнительным функционалом на базе микроконтроллерного модуля Arduino были исследованы электронные часы, что поспособствовало реализации принципа действия разработанного устройства. В процессе работы над курсовым проектом была подобрана элементная база для конструирования действующей модели проектируемого устройства "Умный будильник". СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ Мержи И.В. Практическое руководство по логическим микросхемам и цифровой схемотехнике — М.: НТ Пресс 2017 Безуглов Д.А., Калиенко И.В. Цифровые устройства и микропроцессоры - Ростов-на-Дону: Феникс, 2017. Стивен С. Алгоритмы, скетчи. Руководство по разработке – СПБ.: БХВ-Петербург, 2017. Соммер, У. Программирование микроконтроллерных плат Arduino / У. Соммер – Philadelphia: SIAM, 2017. Бродин В.Б. Микроконтроллеры. Архитектура, программирование, интерфейс. - М.: ЭКОМ, 2015. Музаева И.В. Элементная база для построения цифровых систем управления – М.: Техносфера, 2015. Музылева И.В. Элементная база для построения цифровых систем управления - М.: Техносфера, 2006.Потехин В.А. Схемотехника цифровых устройств: учебное пособие для вузов – Томск: В-Спектр, 2018. Петин В.А. Проекты с использованием контроллера Arduino. – СПб.: БХВ-Петербург, 2016. https://robohobby.by/lessons/arduino_ide_tutorial/ – Информация о работе в Arduino IDE.www.arduino.cc/en/Main/arduinoBoardUno – описание отладочного комплекта Arduino UNO. www.arduino.ru – официальный сайт разработчика микроконтроллера. https://electrosam.ru/glavnaja/slabotochnye-seti/oborudovanie/fotodiody/ – описание работы фотодиодов http://arduino.ru/Arduino_environment – Информация о ПО Arduino IDE. Графическая часть |