Муниципальное бюджетное общеобразовательное учреждение
«Голынковская средняя школа».
Проектная работа
на тему: «Arduino машинка на инфракрасном управлении»
по информатике
Выполнил ученик 9 «А» класса Жданов Ярослав Иванович
Руководитель проекта: Панфилова Юлия Владимировна
п. Голынки 2021г.
Содержание:
1 Введение............................................................................................................4
ГЛАВА 1. Теоретическая часть.........................................................................6
1.1 Работа с Arduino............................................................................................6
1.1.1 Платформа Arduino....................................................................................6
1.1.2 Язык программирования С++...................................................................7
1.2 Передача информации при помощи ИК излучения..................................7
1.2.1 Инфракрасное излучение..........................................................................7
1.2.2 Использование инфракрасного излучения.............................................8
1.2.3. Проектирование устройства....................................................................9
1.3 Схема работы машинки...............................................................................9
1.3.1 Описание компонентов схемы.................................................................9
ГЛАВА 2. Практическая часть........................................................................13
2.1 Схема подключения Arduino......................................................................13
2.2 Программирование Arduino. Arduino IDE...............................................13
2.2.1 Работа с Arduino IDE...............................................................................13
2.2.2 Программа для Arduino...........................................................................16
3 Заключение.....................................................................................................20
4 Приложение....................................................................................................20
Паспорт проекта
Тема |
Arduino машинка на инфракрасном управлении. |
Актуальность |
Наш век - это время бысторого развития технологий, и для того, чтобы “идти в ногу со временем” следует постоянно пополнять знания информатики. В том числе о популярном разделе - программировании, занявшем устойчивое, но не всегда заметное, место в повседневной жизни каждого из нас. |
Проблема |
Создание машинки на ИК управлении через платформу Arduino, имея малый опыт работы с ней. |
Гипотеза |
Я предполагаю, что любой школьник, при желании, может ознакомится с языком C++ и делать успешные проекты, с применением этого язык и своих знаний о нем. |
Объект исследования |
Язык программирования C++. |
Предмет исследования |
Платформа Arduino . |
Методы исследования |
Получение теоретической информации, практическая сборка программируемого устройства. |
Ресурсы |
1 Alexgyver ведение в Arduino. https://alexgyver.ru/lessons/before-start/
2 Википедия «Инфракрасный канал»
3 Информатика. Базовый курс/Босова Л. Л., Босова А.Ю. – М.:БИНОМ. Лаборатория знаний, 2017- 184 с.: ил. УМК «Информатика» для 5-9 классов
4 Официальный сайт Arduino. https://www.arduino.cc/
5 Программирование Arduino. https://all-arduino.ru/programmirovanie-arduino/
6 Сайт: ФАБЛАБ "РОБОТОТЕХНИКА АРДУИНО".
7 Что такое Arduino: платформа для DIY-электроники. https://amperka.ru/page/what-is-arduino
8 Что такое платформа Ардуино и для чего она нужна. http://electricalschool.info/spravochnik/poleznoe/1674-programmiruemyjj-kontroller-arduino.html |
Продукт |
Проект. |
Результат |
Готовое управляемое устройство. |
Введение.
Программирование сайтов, приложений и т.п имеют место быть в наше время, но все результаты подобной деятельности не материальны и воспринимаются лишь нашим зрением. Данный факт может затруднить процесс обучения программированию: сделать его рутинным, т.к мы лишь визуализируем результат нашей работы. Поэтому в проекте описана иная сторона программирования - его практическое применение, что вызовет интерес к изучению. Программирование не заканчивается экраном монитора. И доказать это поможет платформа Arduino.
Arduino -это самая динамично развивающаяся и доступная платформа с низким порогом вхождения, которая доступна как для начинающих и делающих первые шаги в программировании, так и для профессионалов. Программируется она на языке С++.
В проекте описано создание машинки на инфракрасном управлении (за ее работу будет отвечать описанная выше платформа). Почему именно ИК управление? Оно популярно в современном мире. Каждый включал с помощью ИК пульта телевизор или кондиционер и другие электронные устройства. Такой способ передачи информации будет рассмотрен в проекте и на его основе будет осуществляться управление машинкой.
Занимательный, интересный проект “подтолкнет” читателя к изучению программирования и информатики в целом.
Цель данной работы заключается в изучении языке С++, программировании на нем, путем создания практического устройства - интересный способ применения программирования.
Для успешного достижения цели следует выполнить ряд задач:
1. Изучить платформу Arduino и язык С++ для работы с ней.
2. Узнать об инфракрасном излучении, передачи информации с помощью него.
3. Создать объект проекта- Arduino машинку управляемую дистанционно.
ГЛАВА 1. Теоретическая часть.
Платформа Arduino.
Arduino - это электронный конструктор и удобная платформа быстрой разработки электронных устройств для новичков и профессионалов. Платформа пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования, а также открытой архитектуре и программному коду. Устройство программируется через USB без использования программаторов.
Arduino позволяет компьютеру выйти за рамки виртуального мира в физический и взаимодействовать с ним. Устройства на базе Arduino могут получать информацию об окружающей среде посредством различных датчиков, а также могут управлять различными исполнительными устройствами.
Свою бешеную популярность Arduino приобрела благодаря простоте и дружелюбности. Даже полный ноль в программировании и схемотехнике может освоить основы работы с Arduino за пару часов. Этому поспособствуют тысячи публикаций, учебников, заметок в интернете и отличная серия видеоуроков по Arduino на русском языке.
Программы для Arduino пишутся на обычном C++, дополненным простыми и понятными функциями для управления вводом-выводом на контактах. Если вы уже знаете C++ - Arduino станет дверью в новый мир, где программы не ограничены рамками компьютера, а взаимодействуют с окружающим миром и влияют на него. Если же вы новичок в программировании — не проблема, вы с лёгкостью научитесь, это просто.
Для удобства работы с Arduino существует бесплатная официальная среда программирования Arduino IDE , работающая под Windows, Mac OS и Linux. С помощью неё загрузка новой программы в Arduino становится делом одного клика, только лишь подключите плату к компьютеру через USB.
Вам не понадобится паяльник. Полноценные устройства можно собирать, используя специальную макетную доску [1], перемычки и провода абсолютно без пайки. Конструирование ещё не было таким быстрым и простым.
Язык программирования С++.
Как мы узнали программирование микроконтроллеров Arduino осуществляется на языке программирования C++. Этот язык является низкоуровневым, поэтому считается сложным и имеет высокий порог вхождения. Но для программирования Arduino используется упрощенная версия этого языка программирования. Так же для упрощения разработки прошивок существует множество функций, классов, методов и т.п. Благодаря этому работать с этими микроконтроллерами очень удобно и легко.
Инфракрасное излучение.
Инфракра́сное (ИК) излуче́ние — электромагнитное излучение, занимающее спектральную область между красным концом видимого света (с длиной волны λ = 0,74 мкм и частотой 430 ТГц). Было открыто в 1800 году английским астрономом У. Гершелем. Занимаясь исследованием Солнца, Гершель искал способ уменьшения нагрева инструмента, с помощью которого велись наблюдения.
Использование инфракрасного излучения.
Среди огромного ряда способов применения излучения: в приборах ночного видения, томографии, обогревателях, мы выделим: передачи данных и дистанционное управление.
Передача данных:
Распространение инфракрасных светодиодов, лазеров и фотодиодов позволило создать беспроводной оптический метод передачи данных на их основе. В компьютерной технике обычно используется для связи компьютеров с периферийными устройствами[2]. В отличие от радиоканала инфракрасный канал нечувствителен к электромагнитным помехам, и это позволяет использовать его в производственных условиях. К недостаткам инфракрасного канала относятся необходимость в оптических окнах[3] на оборудовании, правильной взаимной ориентации устройств. На данный момент существует большое количество производителей сетевого оборудования, основанного на передаче света в атмосфере (FSO), как правило это точка — точка. Сейчас учёными достигнута скорость передачи данных в атмосфере более 4 Тбит/с. При этом известны серийно выпускаемые терминалы связи со скоростью до 100 Гбит/с. В условиях прямой видимости инфракрасный канал может обеспечить связь на расстояниях в несколько километров. О скрытности канала связи не приходится и говорить, так как ИК диапазон не виден человеческому глазу (без использование специального прибора).
Дистанционное управление:
Инфракрасные диоды и фотодиоды[4] повсеместно применяются в пультах дистанционного управления, системах автоматики, охранных системах, некоторых мобильных телефонах и т. п. Инфракрасные лучи не отвлекают внимание человека в силу своей невидимости.
Интересно, что инфракрасное излучение бытового пульта дистанционного управления легко фиксируется с помощью дешёвых цифровых фотоаппаратов или видеокамер с ночным режимом, в которых нет специального инфракрасного фильтра.
Проектирование устройства.
Схема работы машинки[5]
Описание компонентов схемы.
1 ИК пульт управления.
Управление машинкой может осуществляться любым пультом (от телевизора, проектора, кондиционера и т.д). Единственное условие заключается в том, чтобы пульт отправлял именно ИК сигнал. В большинстве случаев наличие фотодиода на передней части панели пульта обуславливает возможность передачи ИК сигнала. Работоспособность данного устройства проверить достаточно просто: навести камеру на фотодиод и нажать на одну из кнопок- на камере светодиод загорится фиолетовым цветом, причем визуально без каких-либо приборов данное свечение определить невозможно. Желательно использование в пульте заряженных источников питания (преимущественно батарейки типа ААА): уменьшится возможность залипания кнопок, увеличится дальность передачи сигнала.
2. ИК приемник
Имеет вид транзистора с заметной выпуклостью в корпусе и три ножки (металлические выводы корпуса). Подходит любой вид приемника, главное- его работоспособность. Найти такой можно в интернет-магазинах, радиорынках или же в приборах, использующих ИК передачу информации: телевизорах, музыкальных центрах и т.п. Существуют готовые модули ИК приемника для Arduino.[6]
Корпуса инфракрасных приемников содержат оптический фильтр для защиты прибора от внешних электромагнитных полей, изготавливаются они специальной формы для фокусировки принимаемого излучения на фотодиоде. Для подключения ИК приемника к Arduino UNO используются три ножки, которые соединяются с - GND, 5v, 6pin. Желательно для начала использовать 3,3 вольта, чтобы не сжечь ИК датчик при настройке.
3 Плата Arduino
Является “мозгом” машинки. Существует более 20 различных плат: универсальные или заточенные под выполнение определенных задач, крупные или малогабаритные. В проекте используется плата Arduino UNO, так же подходящая в качестве демонстрационного варианта, для проекта подойдет любая плата.[7]
Питание платы осуществляется через USB порт.
Из большого числа пинов[8] платы будут использоваться:
Цифровые (2-6). Пины пронумерованы на плате как “цифровые” D пины и аналоговые A пины. К цифровым пинам мы будем обращаться просто по их номеру, т.е. D3 это просто 3.
GND - Минусовой вывод питания (-).
5V - Плюсовой вывод питания (+).
4 Модуль L298N (L298) mini.
Используется вместо системы реле или мосфетов (транзисторных реле), применяемых для уменьшения нагрузки на плату. При подключении привода машинки напрямую плата “сгорит” (выйдет из строя и станет неработоспособной). Модуль L298N mini- “младший брат” L298N, уступающий ему по пропускным характеристикам. В нашем случае модуль разрешается применять для управления парой электродвигателей постоянного тока. [9](Документация о модуле и фотка
Силовое напряжение микросхемы: 2-9 v. Логическое напряжение микросхемы: 5 v.
5 Мотор - редуктор
В проекте используется 2 таких мотора. Устройство: электромотор с системой шестеренок, увеличивающих крутящий момент с уменьшением его числа оборотов. Питание осуществляется от 5 вольт постоянного тока, что совпадает с рабочим питанием платы Arduino. Прекрасно подходит для привода машинки, обеспечивает высокую проходную способность. Имеет два вывода, при смене подключения положительного и отрицательного источников тока (+ и -) изменяется направление вращения редуктора (по часовой стрелки или против).
6 Машинка на гусеницах.
Пункт подразумевает само основание и корпус машинки. Вместо привычных колес используются гусеницы, моторы редукторы так же являются гусеничным приводом. Гусеницы увеличивают сцепление с поверхностью, путем увеличения площади соприкасаемых в процессе движения поверхностей. С одной стороны они уменьшают маневренность и скорость передвижения, с другой - обеспечивают высокую точность управления объектом (ИК сигнал чувствителен к резкому перемещению передающей или принимающей части).
ГЛАВА 2. Практическая часть.
Схема подключения Arduino.[10]
Программирование Arduino.
Для работы с Ардуино нам понадобится компьютер (или смартфон), USB data-кабель и некоторый софт[11].
Компьютер с Windows 7 или выше. На WinХР новые версии Arduino IDE либо работают очень плохо, либо не работают вовсе. MacOS и Linux-подобные оси тоже подходят, так как среда разработки Arduino IDE кроссплатформенная. Также программировать Ардуино можно с планшета или даже смартфона под Андроид при помощи официального приложения.
USB кабель должен быть именно data-кабелем, по такому кабелю передаются данные (например таким подключается к компьютеру смартфон/фотоаппарат/плеер). Есть три типа USB штекера, которые используются на платах Ардуино: mini-USB (Arduino Nano), micro-USB (Arduino micro) и USB type B (Arduino UNO, MEGA), бывают и китайские поделки на USB type C.
Arduino IDE.
Программирование Arduino осуществляется в приложении Arduino IDE. Среда разработки Arduino IDE, скачивается с официального сайта и устанавливаем актуальную версию для своей операционной системы. В окне загрузки жмём JUST DOWNLOAD, чтобы начать загрузку без пожертвования.
Работа с Arduino IDE.
Рассмотрим основную программу, с которой будем работать – Arduino IDE. IDE расшифровывается как интегрированная среда разработки, и в нашем случае представляет собой блокнот, в котором мы пишем код[12], препроцессор и компилятор, которые проверяют и компилируют код, и инструменты для загрузки, которые загружают код выбранным способом. IDE написана на языке java.
Описание того, в чем могут возникнуть сложности при изучении программы:
“Интерфейс”
Сначала рассмотрим общий вид программы, т.е. как она выглядит после запуска. В самом центре – блокнот, то самое место, где пишется код. По умолчанию уже написаны два стандартных блока, setup и loop.
Проверить – компиляция (сборка, проверка на ошибки…) кода без его загрузки в плату. То есть код можно написать и проверить на ошибки даже не подключая плату к компьютеру
Загрузить – компиляция и загрузка прошивки в плату
Создать/открыть/сохранить – тут всё понятно
Монитор порта – кнопка открывает монитор последовательного пора для общения с платой
Меню вкладок – работа с вкладками, о них поговорим ниже
Текущее состояние – тут выводится краткая информация о последнем действии.
Конфигурация оборудования – выводится название выбранной платы, версии микроконтроллера и номер выбранного COM порта.
“Меню”
Пункты меню которые могут вызвать трудности в понимании:
Папка со скетчами – список скетчей, которые сохранены туда, куда программа предлагает их сохранять по умолчанию (Документы/Arduino)
Примеры – список установленных библиотек с подсписком примеров к каждой. Весьма полезная штука
“Настройки”
Куча интересных настроек на свой вкус. Из них отмечу:
Размещение папки скетчей – куда по умолчанию сохраняются скетчи
Показать подробный вывод – показывает подробный лог при компиляции и загрузке, нужно при поиске багов и непонятных глюков/ошибок.
Проверить/компилировать – то же, что кнопка галочка
Загрузка – то же, что кнопка загрузка
Подключить библиотеку – подключает в код библиотеку, с директивой include, всё как нужно.
Управлять библиотеками… – открывает менеджер библиотек, из которого можно установить библиотеки из официального списка.
Добавить файл… – подключает в код внешний файл
Архивировать скетч – сохраняет скетч как .zip архив
Исправить кодировку и перезагрузить – полезная штука, если код был предварительно скачан из интернета и сбилась кодировка.
Плата – выбор платы, куда хотим загрузить прошивку
Процессор – выбор процессора, который стоит на плате. Обычно он один на выбор, но иногда есть варианты
Порт – COM порт, к которому подключена плата. Это всегда порт, отличный от COM1 (системный порт).
Программа для Arduino.
Приступим к написанию программы для Arduino, ее прошивка осуществляется через USB порт.
На основе представленных таблиц пишется программа для Arduino.
Таблица зависимости вращения редукторов от состояния пинов.
Пины подключения: к Arduino (х pin), к модулю (in x). *x- номер пина |
Напряжение (состояние) пина *1- 5v, 0-0v |
||
Левый редуктор: |
Вращение вперед |
Вращение назад |
Отсутствие вращения |
5 pin -in 1 |
1 |
0 |
0 |
2 pin -in 2 |
0 |
1 |
0 |
Правый редуктор: |
Вращение вперед |
Вращение назад |
Отсутствие вращения |
3 pin -in 3 |
1 |
0 |
0 |
4 pin -in 4 |
0 |
1 |
0 |
Таблица описания состояния редукторов при разных типах движения машинки.
Состояние машинки |
Вращение левого редуктора |
Вращение правого редуктора |
Движение вперед |
Вперед |
Вперед |
Движение назад |
Назад |
Назад |
Движение вправо |
Вперед |
Назад |
Движение влево |
Назад |
Вперед |
Стоп |
Отсутствует |
Отсутсвует |
Так выглядит программа в приложении Arduino IDE.[13]
Пояснение команд кода:
setup()
Функция setup() вызывается, когда скетч начинает исполняться. Используется для определения режимов работы выводов, запуска используемых библиотек и т.д. Функция setup выполняется только один раз, после каждой подачи питания или перезагрузки платы Arduino.
loop()
После вызова функции setup(), которая инициализирует и устанавливает первоначальные значения, функция loop() делает точь-в-точь то, что означает её название, и крутится в цикле, позволяя вашей программе совершать вычисления и реагировать на них. Используйте её для активного управления платой Arduino.
PinMode ()
Конфигурирует режим работы указанного вывода: как вход либо как выход.
pinMode(pin, mode)
pin: номер вывода, режим работы которого будет конфигурироваться.
mode: принимает значения INPUT, OUTPUT
digitalWrite()
Отправляет на цифровой вывод значение HIGH или LOW.
Если функцией pinMode() вывод сконфигурирован как выход (OUTPUT), то при выполнении функции digitalWrite() его напряжение будет изменено на соответствующее значение: 5 В (либо 3.3 В для плат, работающих от 3.3В) при отправке HIGH, 0 В (земля) — при LOW.
Оператор if()
if (условие){}
if проверяет условие и если оно верно то выполняется следующий блок кода, заключенный в фигурные скобки. Если блок кода состоит из одной команды то фигурные скобки можно опустить.
Комментарии //...
Комментарии – это строки в программе, которые используются для информирования вас самих или других о том, как работает программа. Они игнорируются компилятором и не экспортируются в процессор, таким образом, они не занимают место в памяти микроконтроллера Atmega.
Комментарии предназначены только для того, чтобы помочь вам понять (или вспомнить), как работаеn программа или объяснить это другим.
Таким образом все части кода о которых не упоминалось или упоминалось но совсем коротко и принцип работы кода описаны в комментариях.
В коде используется библиотека[14] "IRremote.h". Для ее загрузки перейдем в Инструменты/Управлять библиотеками.... В менеджере библиотек находим IRremote и устанавливаем. Команды из этой библиотеки пояснены в коде. Подробное описание библиотеки [16].
Задание команд.
Написав код, подключаем к ардуино ИК приемник (как указано в схеме ….). В приложении Arduino IDE открываем com-порт путем нажатия значка мониторинг порта в правом верхнем углу приложения.
Направляем ИК пульт на приемник. Поочередно нажимаем на выбранные кнопки: вперед, назад, вправо, влево, стоп (отвечает за полное отсутсвие движение машинки). При нажатии на каждую из кнопок в сom-порту появится набор знаков(цифр и иногда букв). Используемый в проекте пульт поочередно ставит два набора знаков в соответствии одной кнопке. Эти две группы знаков поочередно записываем: вместо х одну, вместо y другую, в код под соответсвующим комментарием (//...). Например:
“Требуется чтобы при нажатии кнопки машинка ехала вперед”
-Нажимаем кнопку вперед несколько раз, наведя пульт в сторону приемника.
-В сom-порту получили значения: (“32” и “2080”).
-Ищем в коде комментарий “//ВПЕРЕД”. Левее него на той же строке в коде имеются: х и у. Вместо х пишем “32”, вместо у пишем “2080”.
-Аналогично определяем и указываем значения напротив остальных комментариев: назад, вправо, влево, стоп.
После задания команд остается собрать все и вся во едино. Если наше устройство заработало, значит мы достигли цели проекта.
Перспективы проекта.
Варианты доработок проекта ограничиваются только фантазией. Вот что можно добавить:
Остановка перед препятствиями.
Езда на разной скорости.
Езда вдоль размеченной линии.
Светевое и звуковое сопровождение.
Каждый из вариантов дополнения в век технологий доступен и открыт для изучения. Единственным критерием их выполнения является желание.
Заключение.
В итоге, зная базовый курс Информатики, удалось познакомиться с платформой Arduino и языком С++, с помощью которого программируется платформа, ставшая центром управления ИК машинки. Кроме того, во время работы над проектом пополнились знания о передаче информации с помощью инфракрасного сигнала.
Приложение.
1 Макетная плата — универсальная печатная плата для сборки и моделирования прототипов электронных устройств. Макетные платы подразделяются на два типа: для монтажа посредством пайки и без таковой.
2 Перифери́йное устро́йство (англ. peripheral) — аппаратура, которая позволяет вводить информацию в компьютер или выводить её из него[1].
3 Окно́ прозра́чности (англ. Transmission Window, Telecom Window) — диапазон длин волн оптического излучения, в котором имеет место меньшее, по сравнению с другими диапазонами, затухание излучения в среде, в частности — в оптическом волокне.
4 Фотодио́д — приёмник оптического излучения[1], который преобразует попавший на его фоточувствительную область свет в электрический заряд за счёт процессов в p-n-переходе.
5
6
7 Печа́тная пла́та (англ. printed circuit board, PCB, или printed wiring board, PWB) — пластина из диэлектрика, на поверхности и/или в объёме которой сформированы электропроводящие цепи электронной схемы.
8 Пин — контакт (ножка) в электронике для соединения двух элементов схемы.
9 Документация о модуле
https://sales.dzsc.com/486222.html.
10
11 Софт - программное или математическое обеспечение.
12 Код — взаимно однозначное отображение конечного упорядоченного множества символов, принадлежащих некоторому конечному алфавиту, на иное, не обязательно упорядоченное, как правило более обширное множество символов для кодирования передачи, хранения или преобразования информации.
13
14 Библиоте́ка (от англ. library) в программировании — сборник подпрограмм или объектов, используемых для разработки программного обеспечения (ПО).
15 Подробное описание библиотеки https://github.com/Arduino-IRremote/Arduino-IRremote#converting-your-2x-program-to-the-3x-version
Скачано с www.znanio.ru
© ООО «Знанио»
С вами с 2009 года.