Государственное бюджетное профессиональное образовательное учреждение города Москвы
«Политехнический колледж им. Н.Н. Годовикова»
КУРСОВАЯ РАБОТА
По дисциплине: «Цифровая схемотехника»
На тему:
«Проектирование робота-пылесоса на базе платы ArduinoMega»
Выполнил: Варламов А.В. Студент группы 3-К-6 Проверил: Макаров А.А |
Москва 2016
Содержание
3 |
||
3 |
||
7 |
||
7 |
||
8 |
||
8 |
||
10 |
||
11 |
||
12 |
||
12 |
||
13 |
||
16 |
||
22 |
||
24 |
||
33 |
БОЛЬШОЙ ШТАМ
Разработка робота
1.1 Вступление по Bluetoothи плате Arduino
1.1.1 Плата Arduino
Аппаратную платформу “ArduinoMega 2560 ” выпускает итальянская компания “ARDUINO” Платформа построена на микроконтроллере ATmega2560. Плата имеет 54 цифровых входа/выходов (14 из которых могут использоваться как выходы ШИМ), 16 аналоговых входов, 4 последовательных порта UART, кварцевый генератор 16 МГц, USB коннектор, разъем питания, разъем ICSP и кнопка перезагрузки.
1.1.2Микроконтроллеры платы Arduino
Микроконтроллеры для Arduino отличаются наличием предварительно прошитого в них загрузчика (bootloader). С помощью этого загрузчика пользователь загружает свою программу в микроконтроллер без использования традиционных отдельных аппаратных программаторов. Загрузчик соединяется с компьютером через интерфейс USB (если он есть на плате) или с помощью отдельного переходника UART-USB. Поддержка загрузчика встроена в Arduino IDE и выполняется в один щелчок мыши.
На случай затирания загрузчика или покупки микроконтроллера без загрузчика разработчики предоставляют возможность прошить загрузчик в микроконтроллер самостоятельно. Для этого в Arduino IDE встроена поддержка нескольких популярных дешевых программаторов, а большинство плат Arduino имеет штыревой разъем для внутрисхемного программирования (ICSP для AVR, JTAG для ARM).
В Arduino IDE от компании, базирующейся на сайте arduino.cc, встроена возможность создания своих программно-аппаратных платформ. Этой возможностью пользуются сторонние компании, добавляющие в Arduino IDE свои наборы плат и компиляторов-загрузчиков к ним. Компания на сайте arduino.org не поддерживает такую возможность.
AVR[править | править вики-текст]
В линейке устройств Arduino в основном применяются микроконтроллеры Atmel AVR ATmega328, ATmega168, ATmega2560, ATmega32U4, ATTiny85 с частотой тактирования 16 или 8 МГц. В старых изделиях применялись ATmega8, ATmega1280 и другие.
ARM Cortex M[править | править вики-текст]
Есть также платы на процессоре ARM Cortex M.[7]
ESP8266[править | править вики-текст]
Сторонние разработчики портировали в Arduino поддержку популярного Wi-Fi микроконтроллера ESP8266. Теперь компилировать и загружать прошивку для ESP8266 со своими скетчами и поддержкой Wi-Fi можно прямо из Arduino IDE, получая одноплатную схему с поддержкой сети Wi-Fi. Подробное русскоязычное описание процесса установки и доступного API здесь, пример работы здесь.
Intel x86[править | править вики-текст]
В рамках сотрудничества со сторонними производителями в Arduino IDE была включена поддержка некоторых аппаратных средств Intel x86. Intel Galileo (англ.)русск. (процессор Intel Quark X1000 400 МГц), Intel Edison (англ.)русск. и Arduino 101[8] — Arduino-совместимые платы на Intel x86 архитектуре. Платы механически и электрически совместимы с периферийными платами Ардуино. Платы функционируют под собственной ОС Linux, поверх которой работает приложение, позволяющее загружать и исполнять скетчи Arduino.
1.1.3Bluetooth
Принцип действия основан на использовании радиоволн. Радиосвязь Bluetooth осуществляется в ISM-диапазоне (англ. Industry, Science and Medicine), который используется в различных бытовых приборах и беспроводных сетях (свободный от лицензирования диапазон 2,4-2,4835 ГГц). В Bluetooth применяется метод расширения спектра со скачкообразной перестройкой частоты (англ. Frequency Hopping Spread Spectrum, FHSS). Метод FHSS прост в реализации, обеспечивает устойчивость к широкополосным помехам, а оборудование недорогое.
Согласно алгоритму FHSS, в Bluetooth несущая частота сигнала скачкообразно меняется 1600 раз в секунду (всего выделяется 79 рабочих частот шириной в 1 МГц, а в Японии, Франции и Испании полоса уже — 23 частотных канала). Последовательность переключения между частотами для каждого соединения является псевдослучайной и известна только передатчику и приёмнику, которые каждые 625 мкс (один временной слот) синхронно перестраиваются с одной несущей частоты на другую. Таким образом, если рядом работают несколько пар приёмник-передатчик, то они не мешают друг другу. Этот алгоритм является также составной частью системы защиты конфиденциальности передаваемой информации: переход происходит по псевдослучайному алгоритму и определяется отдельно для каждого соединения. При передаче цифровых данных и аудиосигнала (64 кбит/с в обоих направлениях) используются различные схемы кодирования: аудиосигнал не повторяется (как правило), а цифровые данные в случае утери пакета информации будут переданы повторно.
Протокол Bluetooth поддерживает не только соединение «point-to-point», но и соединение «point-to-multipoint».
1.1.4 Профили Bluetooth
Профиль —
набор функций или возможностей, доступных для определённого устройства
Bluetooth. Для совместной работы Bluetooth-устройств необходимо, чтобы все они
поддерживали общий профиль.
Нижеуказанные профили определены и одобрены группой разработки Bluetooth SIG:
· Advanced Audio Distribution Profile (A2DP) — разработан для передачи двухканального стерео аудиопотока, например, музыки, к беспроводной гарнитуре или любому другому устройству. Профиль полностью поддерживает низкокомпрессированный кодек Sub_Band_Codec (SBC) и опционально поддерживает MPEG-1,2 аудио, MPEG-2,4 AAC и ATRAC, способен поддерживать кодеки, определённые производителем.[16]
· Audio / Video Remote Control Profile (AVRCP) — разработан для управления стандартными функциями телевизоров, Hi-Fi оборудования и прочего. То есть позволяет создавать устройства с функциями дистанционного управления. Может использоваться в связке с профилями A2DP или VDPT.
· Basic Imaging Profile (BIP) — разработан для пересылки изображений между устройствами и включает возможность изменения размера изображения и конвертирование в поддерживаемый формат принимающего устройства.
· Basic Printing Profile (BPP) — позволяет пересылать текст, сообщения электронной почты, vCard и другие элементы на принтер. Профиль не требует от принтера специфических драйверов, что выгодно отличает его от HCRP.
· Common ISDN Access Profile (CIP) — для доступа устройств к ISDN.
· Cordless Telephony Profile (CTP) — профиль беспроводной телефонии.
· Device ID Profile (DIP) — позволяет идентифицировать класс устройства, производителя, версию продукта.
· Dial-up Networking Profile (DUN) — протокол предоставляет стандартный доступ к Интернету или другому телефонному сервису через Bluetooth. Базируется на SPP, включает в себя команды PPP и AT, определённые в спецификации ETSI 07.07.
· Fax Profile (FAX) — предоставляет интерфейс между мобильным или стационарным телефоном и ПК, на котором установлено программное обеспечение для факсов. Поддерживает набор AT-команд в стиле ITU T.31 и/или ITU T.32. Голосовой звонок или передача данных профилем не поддерживается.
· File Transfer Profile (FTP_profile) — обеспечивает доступ к файловой системе устройства. Включает стандартный набор команд FTP, позволяющий получать список директорий, изменения директорий, получать, передавать и удалять файлы. В качестве транспорта используется OBEX, базируется на GOEP.
· General Audio / Video Distribution Profile (GAVDP) — база для A2DP и VDP.
· Generic Access Profile (GAP) — база для всех остальных профилей.
· Generic Object Exchange Profile (GOEP) — база для других профилей передачи данных, базируется на OBEX.
· Hard Copy Cable Replacement Profile (HCRP) — предоставляет простую альтернативу кабельного соединения между устройством и принтером. Минус профиля в том, что для принтера необходимы специфичные драйвера, что делает профиль неуниверсальным.
· Hands-Free Profile (HFP) — используется для соединения беспроводной гарнитуры и телефона, передаёт монозвук в одном канале.
· Human Interface Device Profile (HID) — обеспечивает поддержку устройств с HID (Human Interface Device), таких как мыши, джойстики, клавиатуры и проч. Использует медленный канал, работает на пониженной мощности.
· Headset Profile (HSP) — используется для соединения беспроводной гарнитуры (Headset) и телефона. Поддерживает минимальный набор AT-команд спецификации GSM 07.07 для обеспечения возможности совершать звонки, отвечать на звонки, завершать звонок, настраивать громкость. Через профиль Headset, при наличии Bluetooth 1.2 и выше, можно выводить на гарнитуру всё звуковое сопровождение работы телефона. Например, прослушивать на гарнитуре все сигналы подтверждения операций, mp3-музыку из плеера, мелодии звонка, звуковой ряд видеороликов. Гарнитуры, поддерживающие такой профиль, имеют возможность передачи стереозвука, в отличие от моделей, которые поддерживают только профиль Hands-Free.
· Intercom Profile (ICP) — обеспечивает голосовые звонки между Bluetooth-совместимыми устройствами.
· LAN Access Profile (LAP) — обеспечивает доступ Bluetooth-устройствам к вычислительным сетям LAN, WAN или Интернет посредством другого Bluetooth-устройства, которое имеет физическое подключение к этим сетям. Bluetooth-устройство использует PPP поверх RFCOMM для установки соединения. LAP также допускает создание ad-hoc Bluetooth-сетей.
· Object Push Profile (OPP) — базовый профиль для пересылки «объектов», таких как изображения, виртуальные визитные карточки и др. Передачу данных инициирует отправляющее устройство (клиент), а не приёмное (сервер).
· Personal Area Networking Profile (PAN) — позволяет использовать протокол Bluetooth Network Encapsulation в качестве транспорта через Bluetooth-соединение.
· Phone Book Access Profile (PBAP) — позволяет обмениваться записями телефонных книг между устройствами.
· Serial Port Profile (SPP) — базируется на спецификации ETSI TS07.10 и использует протокол RFCOMM. Профиль эмулирует последовательный порт, предоставляя возможность замены стандартного RS-232 беспроводным соединением. Является базовым для профилей DUN, FAX, HSP и AVRCP.
· Service Discovery Application Profile (SDAP) — используется для предоставления информации о профилях, которые использует устройство-сервер.
· SIM Access Profile (SAP, SIM) — позволяет получить доступ к SIM-карте телефона, что позволяет использовать одну SIM-карту для нескольких устройств.
· Synchronisation Profile (SYNCH) — позволяет синхронизировать персональные данные (PIM). Профиль заимствован из спецификации инфракрасной связи и адаптирован группой Bluetooth SIG.
· Video Distribution Profile (VDP) — позволяет передавать потоковое видео. Поддерживает H.263, стандарты MPEG-4 Visual Simple Profile, H.263 profiles 3, profile 8 поддерживаются опционально и не содержатся в спецификации.
· Wireless Application Protocol Bearer (WAPB) — протокол для организации P-to-P (Point-to-Point) соединения через Bluetooth.
1.2 Blutooth контроллер (адаптер) для платы Arduino
В настоящее время в зарубежных и отечественных магазинах можно найти большое количество различных Bluetooth Serial модулей для DIY-устройств. Цена на них не сильно высока: 5-10$ за модуль.
Рисунок 1
Микроконтроллеры Blutooth
1.3 Описание модуля Blutooth
В большинстве
модулей используется чип BC417, плюс Flash-память. Чип поддерживает
спецификацию Bluetooth v2.0 + EDR, AT-команды, может работать в режиме Master
или Slave (модули HC-03/HC-5, может устанавливаться AT-командой), поддерживает
скорость обмена от 2400 до 1382400.
Напряжение питание модуля составляет 3.3В, ток
потребления ~50мА.
Модули HC-03/HC-05 более функциональные, чем
HC-04/HC-06.
Рисунок 2
Схема микроконтроллера blutooth
Основные выводы модулей HC-04/HC-06:
UART_TX (pin 1), UART_RX (pin 2), UART_CTS (pin 3), UART_RTS (pin 4) - пины UART.
3,3V (pin 12) - питание 3.3В.
GND (pin 13) - общий.
PIO1 (pin
24) - индикатор рабочего режима. Если соединение не установлено - то светодиод
мигает, если установлено, то постоянно горит.
Для модулей HC-03/HC-05 есть некоторые отличия.
Линии UART и питания те же самые, но:
PIO8 (pin 31) - индикатор рабочего режима.
PIO9 (pin 32) - статус соединения, если соединение установлено, то на выходе
будет высокий уровень.
PIO11 (pin 34) - вход включения режима AT-команд (необходимо подать лог. 1).
Рисунок 3
Плата blutoothвид сверху
1.4 Сбор простейшей схемы для подключения модуля Blutooth
Итак, соберем простую схему для подключения Bluetooth модуля HC-06 к плате Arduino Nano V3.
Рисунок
4
Простейшая схема для подключения модуля Blutooth
Обратите внимание, что выводы TX и RX в плате Arduino Nano поменяны местами в отличии от Ardunio UNO и др. Поэтому внимательно смотрите распиновку своей Arduino платы.
Шаг между выводами в модуле составляет всего 1.5мм, поэтому придется взяться за паяльник и припаять провода к модулю. Всего необходимо припаять 5 проводов, однако светодиод подключать необязательно, он служит для индикации состояния.
Итак припаиваем провода и подключаем Bluetooth
модуль следующим образом:
вывод Arduino 3.3В - к 12 пину модуля
вывод Arduino GND - к 13 пину модуля
вывод Arduino TX - к 2 пину модуля RX
вывод Arduino RX - к 1 пину модуля TX
1.5 Передача данных из Arduino по Bluetooth
Далее напишем простенький скетч для отправки сообщений из Bluetooth модуля в компьютер.
1 |
|
2 |
|
3 |
|
4 |
|
5 |
} |
6 |
|
7 |
|
8 |
cnt++; |
9 |
|
10 |
|
11 |
|
12 |
} |
Как видите скетч довольно простой и хорошо прокомментирован. В цикле, раз в секунду происходит увеличение переменной cnt, которая затем с текстовой надписью выводится в последовательный порт на Bluetooth модуль. Обратите внимание, что скорость порта установлена в значение 9600. При покупке модуля, спрашивайте на какое значение установлена скорость обмена по последовательному интерфейсу. Но в большинстве случаев это 9600. При необходимости, скорость обмена можно изменить АТ-командами.
Откройте данный скетч в Arduino IDE, скомпилируйте и прошейте ваш Arduino. Если вы подключали светодиод в Bluetooth модулю, то он должен мигать, показывая тем самым, что модуль ожидает соединение.
Внимание! Если при прошивке платы Arduino ругается прошивальщик, то отключите питание 3.3В с Bluetooth модуля.
1.6 Подключение модуля Bluetooth и платы Arduinoк ПК
На компьютере, в качестве Bluetooth модуля использовался самый дешевый китайский Bluetooth USB адаптер, стоимостью около 200 руб. После того, как адаптер подключается к компьютеру, установите необходимые драйвера (в Windows 7 x64 у меня все драйвера поставились автоматом).
Рисунок 5
USBМодуль Bluetoothдля программирования модуля B. Arduino
1.6.1 Подробное описание подключения и настройки модуля.
1) Щелкаем в трее по иконке Bluetooth модуля и выбираем "Добавить устройство":
2) Имя моего модуля BOLUTEK, у вас оно скорее всего будет другим. Нажимаем "Далее" и переходим к окну, где необходимо ввести пароль для устройства
3) Выбираем второй пункт: "Введите код образования пары устройства". С завода, код установлен 1234. Его и вводим. Программа настроит и пропишет в системе виртуальные COM-порты (у меня прописало 2 шт, но может быть и один)
4)
В дальнейшем, можно
посмотреть на какой COM-порт назначилось и его параметры. Для этого щелкаем
правой кнопкой мыши по устройству и выбираем "Свойства" и вкладку
"Оборудование". Там можно посмотреть и изменить параметры
виртуального COM-порта:
5) Теперь, для приема и передачи данных на виртуальный COM порт можно использовать любую терминал программу. Я использовал бесплатную Tera Term. При каждом запуске программы предлагается выбор соединения, переключаем флажок на Serial и выбираем COM порт вашего Bluetooth модуля. У меня это COM4.
6) В терминале мы видим данные счетчика с платы Arduino
7) Как видим, данные успешно передаются по Bluetooth соединению.
Далее я продемонстрирую все в иллюстрациях к тексту
Рисунок 6 (пункт 1. Глава 1.6.1)
Рисунок 7 (пункт 2.
Глава 1.6.1)
Рисунок 8 (пункт 3. Глава 1.6.1)
Рисунок 9 (пункт 4. Глава 1.6.1)
Рисунок 10 (пункт 5. Глава 1.6.1)
Рисунок 11 (пункт 6. Глава 1.6.1)
2. Двунаправленный обмен данными по Bluetooth
Следующим шагом будет написание простенькой программы двунаправленного обмена данными между Arduino и компьютером. В схему я добавил светодиод, подключив его к 12 пину Arduino, через токоограничительный резистор. Но можно использовать и встроенный LED (обычно 13 пин).
1 |
char incomingByte; // входящие данные int LED = 12; // LED подключен к 12 пину void setup() { Serial.begin(9600); // инициализация порта pinMode(LED, OUTPUT); Serial.println("Press 1 to LED ON or 0 to LED OFF..."); } void loop() { if (Serial.available() > 0) { //если пришли данные incomingByte = Serial.read(); // считываем байт if(incomingByte == "0") { digitalWrite(LED, LOW); // если 1, то выключаем LED Serial.println("LED OFF. Press 1 to LED ON!"); // и выводим обратно сообщение } if(incomingByte == "1") { digitalWrite(LED, HIGH); // если 0, то включаем LED Serial.println("LED ON. Press 0 to LED OFF!"); } } } Программа работает очень просто. После запуска или сброса устройства, в |
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
последовательный порт выводится сообщение с предложением нажать 1 или 0. В зависимости от нажатой цифры светодиод будет загораться или гаснуть. А также, от Arduino будет выводиться сообщение загорелся светодиод, или погас.
Рисунок 14 (Пункт 2)
3. Подключение к Android
Для платформы Android также существуют программы-терминалы. Но необходима специальная программа для работы в терминальном режиме по Bluetooth. Я установил вот эту: Bluetooth Terminal. Достаточно простая программа, ничего лишнего.
В моем Android устройстве нет Bluetooth модуля, но он прекрасно работает и с внешним USB-адаптером, который мы использовали для подсоединения к ПК. Подключаем адаптер по USB, включаем на андроиде bluetooth, находим и вводим пароль для нашего Bluetooth устройства на Arduino и наконец запускаем программу терминал. Нажимаем "Connect a device - Secure" и выбираем наше устройство BOLUTEK. Теперь вы можете отправлять и принимать данные с Bluetooth устройства при помощи терминала.
4. Заключение