Как вывести данные с ардуино на компьютер

Знакомство со средой Arduino IDE

Микроконтроллер — это небольшая микросхема, расположенная на плате контроллера. Именно в микроконтроллер мы будем загружать программы, а он будет их выполнять, управляя различными устройствами: светодиодами, двигателями, и т.д. Зачастую микроконтроллер также получает информацию об окружающем мире от датчиков: освещённости, температуры, наличия линии на трассе. Но всё это подключить к микроконтроллеру напрямую сложно, поэтому его устанавливают на специальную плату, которая обеспечивает удобность работы с ним.

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

Рассмотрим плату подробнее.

  1. Микроконтроллер. Микроконтроллер является «сердцем» платы. В него прошиваются (загружаются) программы (скетчи).
  2. Mini USB. Разъём USB используется для связи контроллера с ПК и его прошивки. Также разъём можно использовать для подключения питания.
  3. Выводы питания:
    • Vin— напряжение от внешнего источника питания (6.5 В — 12 В);
    • GND — минус напряжения питания / общий вывод / земля;
    • 5V — напряжение 5 В;
    • 3.3V — напряжение 3.3 В (на выход);
    • RST — разъём для плат расширения. Используется для перезагрузки микроконтроллера.
  4. Колодка аналоговых выводов:
    • А0-А7 — 8 выводов, поддерживающих работу с аналоговыми датчиками. Выводы A0-A5 можно использовать и как цифровые (14-19);
    • Выводы А4и А5также являются выводами SDAи SCL. Они необходимы для подключения
      оборудования по шине I2C (подробнее о ней мы поговорим в следующих уроках).
  5. Светодиод питания. Индикация наличия питания на плате.
  6. Колодки цифровых выводов:
    • Цифровые выводы 0-13 — 14 выводов, используемых для подключения / управления различных устройств. Значения сигнала ближе к 5 В представляются как логическая 1, значения ближе к 0 В — как логический 0.
    • Выводы с поддержкой ШИМ (широтно-импульсная модуляция) — выводы 3, 5, 6, 9, 10, 11 — позволяют выдавать значения в виде ШИМ-сигнала (этот сигнал используется для управления яркостью и скоростью вращения). Подробнее о ШИМ-сигнале мы также поговорим немного позже.
  7. Светодиод, подключенный к 13 выводу. При наличии логической 1 на 13 выводе светодиод горит, при логическом 0 — гаснет.
  8. Светодиоды RX и TX — индикация приёма / передачи данных по USB.
  9. Кнопка RESET используется для принудительной перезагрузки микроконтроллера.

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

Как вывести данные с ардуино на компьютер

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

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

Компоненты, схема устройства и сам дисплей, будут такими же, как и в предыдущем уроке. Изменится только сам код программы. Давайте начнем.

Для начала берем основу кода, для работы с LCD дисплеем:

Описывать данный скетч мы не будем, так как подробно каждая строка рассматривается в предыдущем уроке.

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

Добавление символов происходит с помощью создания массива, размерностью 5 на 7 (что соответствует размеру одного прямоугольника, входящего в дисплей), состоящего из бинарных чисел (0 и 1):

Как видите, сейчас массив заполнен одними нулями. То есть ни один из пикселей прямоугольника сейчас не задействован. Чтобы сформировать символ, нужно в массив добавить единицы. Получается, что там где в массиве 0 — пиксель не включен, а где 1 — пиксель включен.

Например вот так выглядит символ «П»:

Теперь нужно данный символ инициализировать, для этого в функции setup() пишем следующее:

, где 1 — это порядковый номер, а line_1 — это имя массива байтов.

Вот так выглядит полный код программы:

Если залить скетч в Arduino, то мы увидим букву «П», стоящую в первом столбце, первой строки.

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

Теперь нужно выводить строку. Для этого создаем двойной цикл. Внешний цикл, по i, будет отвечать за номер столбца в строке. А внутренний цикл, по j, будет отвечать за вывод соответствующего столбца на экран. Таким образом, функция loop() будет иметь вид:

Первым делом мы переводим курсор на вторую строку и очищаем ее:

Теперь выводим эту строку на экран. Сначала мы берем первый прямоугольник (i = 0). И этот прямоугольник начинаем заполнять линиями. От line_1, до line_5. Таким образом, последним нашим действием, в данном прямоугольнике, будет вывод на экран line_5. Потом мы берем второй прямоугольник, и проделываем с ним тоже самое. И так все 16 областей:

Когда вся наша строка заполнена, цикл прерывается. Мы очищаем всю строку, и снова начинаем ее заполнение с нуля.

Полный код программы:

Видео работы устройства:

Задания для самостоятельного выполнения:

    Сделайте так, чтобы поведении линии, было такое же, как и на видео ниже:

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

Если же что-нибудь не будет получаться, или у вас появятся какие-либо вопросы, не стесняйтесь, и оставляйте их в комментариях или же на форуме.

Скетч для Arduino отправки значений температуры в монитор порта.

Измерять температуру будем датчиком DS18B20 выполненного в виде модуля KY-001. По работе с данным модулем у меня есть отдельный урок. Скетч возьмем из урока и немного подправим для нашего проекта.

Схема подключения модуля KY-001 (DS18B20) к Arduino.

Схема подключения модуля KY-001 (DS18B20) к Arduino.

В связи с тем, что будим использовать модуль KY-001 (DS18B20) подключение к Arduino будет достаточно простым и понадобиться всего 3 соединительных провода.

Подведем итог.

Как видим сделать в Visual Studio приложение Windows Forms достаточно просто. А при сочетании с C# возможности взаимодействия Arduino с компьютером становятся достаточно большими. Можно реализовать не только получение данных с Arduino, но и реализовать управление, получая данные с ПК, Интернета и т.д.

Если вам интересны уроки по данной теме, пишите в комментарии. При заинтересованности сделаю блок уроков Visual Studio Arduino.

Понравился проект Пульт для презентаций своими руками на Arduino? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

OUTPUT

Выводы, сконфигурированные функцией pinMode() как выходы ( OUTPUT ), находятся в низкоимпедансном состоянии. Это означает, что они могут обеспечить внешние цепи относительно большим током. Микроконтроллер ATmega может отдавать (положительный ток) или принимать (отрицательный) ток до 40 мА (миллиампер) от внешних устройств/цепей. Такой режим удобен для питания светодиодов, но бесполезен при считывании сигналов с датчиков. Выводы, сконфигурированные как выход, также могут быть выведены из строя при коротком замыкании на землю либо на цепь питания 5В. Кроме того, выходного тока микроконтроллера ATmega недостаточно для питания большинства реле и двигателей, что требует дополнительных интерфейсных цепей.

Прошивка hex-файлов в Arduino

Некоторые проекты для Arduino распространяются не в виде файлов скетчей (*.ino), а в виде hex-файлов (*.hex). Я расскажу, как прошить такой файл в Arduino.

Получение hex-файла

Arduino Экспорт бинарного файла

Как получить hex-файл для своего проекта или скачанного скетча? Для получения hex-файла, соответствующего требуемому скетчу, необходимо открыть этот скетч (например, bike.ino) в Arduino IDE (я использую версию 1.6.6) и выбрать в меню Скетч (Sketch) команду Экспорт бинарного файла (Export Compiled Binary):

Arduino hex-файлы

После этого происходит компиляция и в папке скетча появляются два hex-файла (для скетча bike.inobike.ino.eightanaloginputs.hex и bike.ino.with_bootloader.eightanaloginputs.hex):

Hex-файл имеет текстовый формат и состоит из строк вида
:100020000C94DF030C94DF030C94DF030C94DF03C8

Arduino загрузчик

Отличие этих двух файлов заключается в наличии в файле *.ino.with_bootloader.eightanaloginputs.hex загрузчика Arduino:

Прошивка hex-файла

Arduino номер порта

Как же прошить имеющийся hex-файл? Сначала необходимо подключить прошиваемую плату (я использую Arduino Nano 3.0) к USB-порту компьютера и узнать COM-порт подключения. Номер порта можно посмотреть в Arduino IDE в меню Инструменты (Tools):

Для прошивки hex-файла *.ino.eightanaloginputs.hex (для рассматриваемого скетча — bike.ino.eightanaloginputs.hex) в микроконтроллер платы Arduino используется программа AVRDude AVR Downloader-Uploader, предназначенная для прошивки микроконтроллеров AVR.

Для упрощения процедуры прошивки можно создать папку avrdude. Затем в эту папку следует скопировать файлы avrdude из папок Arduino IDE:
avrdude.exe и libusb0.dll (библиотека из проекта libusb-win32 https://github.com/libusb/libusb) — из папки Arduinohardwaretoolsavrbin

avrdude.conf (конфигурационный файл) — из папки Arduinohardwaretoolsavretc

Arduino прошивка avrdude

В результате в папке avrdude содержатся три файла:

В эту же папку следует скопировать прошиваемый hex-файл (в рассматриваемом примере — файл bike.ino.eightanaloginputs.hex).

avrdude версия

В Arduino IDE версии 1.6.6 представлена программа avrdude версии 6.0.1

avrdude команда

Затем в консоли требуется ввести команду:

-v : вывод подробной информации
-patmega328p : указание типа микроконтроллера
-c arduino : указание программатора — программатор, используемый Arduino IDE
-P com11 : указание номера COM-порта (COM11)
-b 57600 : указание скорости COM-порта (57600 бод)
-D : не выполнять очистку FLASH-памяти микроконтроллера.
-U flash:w:»bike.ino.eightanaloginputs.hex»:i : w — запись flash — во FLASH-память i — файла в формате Intel Hex

Arduino hex-файлы

После ввода команды выполняется прошивка hex-файла в Arduino:

Готово!

Как перенести проект с Arduino в отдельный AVR микроконтроллер

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

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

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

Arduino UNO R3

Рис. 1. Arduino UNO R3.

В некоторых вариантах плат этого семейства, например, в оригинальной Arduino UNO R3 (рис. 1), микроконтроллер установлен в панель. Завершив отработку программы, его можно извлечь из панели и прочитать с помощью программатора содержимое его памяти.

Копию этого содержимого можно загрузить в память другого аналогичного микроконтроллера, который и использовать в своей разработке. Но даже если установленный на плате Arduino микроконтроллер снять с нее без пайки невозможно (рис. 2), доступ к его памяти можно получить, подключив программатор к выводам платы D11 (MOSI), D12 (MISO), D13 (SCK), а также RST, +5V и GND.

Эти цепи выведены не только на главные разъёмы платы, но и на шестиконтактный разъём ICSP, который на рис. 1 и рис. 2 виден справа.

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

Для этого достаточно найти в памяти компьютера, на котором производилась трансляция исходного текста (скетча) программы, созданный в ходе этого процесса НЕХ-файл программы и загрузить его в память своего микроконтроллера с помощью программатора.

Послужить программатором может сама плата Arduino. Чтобы узнать, как это сделать, достаточно набрать в любой поисковой системе запрос «Arduino как программатор».

Arduino с запаянным микроконтроллером

Рис. 2. Arduino с запаянным микроконтроллером.

Но найти этот НЕХ-файл до недавнего времени было довольно трудно. Arduino IDE помещала его вместе с прочими генерируемыми в процессе компиляции служебными файлами в специальную папку со всякий раз другим длинным цифровым именем. Имя этой папки нужно было искать в сообщениях, выводимых во время компиляции. Однако задачу можно упростить.

Для этого нужно открыть любым текстовым редактором файл preferences.txt, путь к которому указан в окне «Файл->Настройки» системы разработки.

В этот файл нужно добавить строку «build.path Скетч» появился пункт «Экспорт бинарного файла». Если после успешного завершения компиляции выбрать этот пункт, готовый к загрузке НЕХ-файл программы появится под именем *.standard, hex в папке с её скетчем. Место звёздочки займёт имя скетча.

Ещё один файл по имени *.with_bootloader.standard.hex появится там же, но в рассматриваемом случае он не потребуется.

Вместо слова standard в имени файла может стоять другое, отражающее особенности платы, для которой выполняется компиляция. Например, для платы Arduino Nano, имеющей дополнительные аналоговые входы А6 и А7, это будет «eightanaloginputs» — даже в том случае, если эти входы программа не использует.

Для примера рассмотрим принципиальную схему макета простого велоспидометра с платой Arduino UNO, изображённую на рис.3. Программа для него приложена к статье. Как собрать такое устройство, заменив в нём плату Arduino одиночным микроконтроллером?

Лучше всего, если это будет микроконтроллер того же типа, что установлен на плате. В данном случае — ATmega328P (возможно, в другом корпусе). Вполне возможна и замена, например, на АТтеда168 или АТтеда8.

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

Немаловажны объём памяти и число выводов микроконтроллера. Если памяти мало, программа может просто в ней не поместиться. А недостаточное число выводов не позволит подключить к микроконтроллеру все нужные внешние устройства.

Чтобы избежать проблем, рекомендуется для окончательной компиляции отлаженного скетча выбрать в пункте меню «Инструменты->Плата:» плату именно с тем микроконтроллером, который предполагается применить, и использовать полученный НЕХ-файл.

Принципиальная схема макета простого велоспидометра с платой Arduino UNO

Рис. 3. Принципиальная схема макета простого велоспидометра с платой Arduino UNO.

Например, платы Arduino Nano бывают как с микроконтроллерами ATmega328, так и ATmega168, а платы Arduino NT — с ATmega168 или ATmega8. Причём для компиляции скетча подключать к компьютеру выбранную плату вовсе не обязательно.

Анализ приведённой на рис. 3 схемы показывает, что в велоспидометре использованы дискретные выходы D2-D7 и дискретный вход D10 платы Arduino.

Такой же вывод можно сделать, изучив текст программы. Номера используемых выводов Arduino указаны в её строках Liquidcrystal lcd(2, 3, 4, 5, 6, 7); int pin = 10;

Осталось найти соответствие между именами выводов Arduino и номерами выводов микроконтроллера, с которыми они соединены. Это можно сделать, воспользовавшись таблицей. Она составлена для микроконтроллеров ATmega328P в корпусе TQFP32 (индекс -AU), в корпусе VQFN28 (индекс -ММ) и в корпусе PDIP28 (индекс -PU).

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

ATmega328P Вывод Arduino
Назв. вывода Номер вывода
-AU -MM -PU
РВ6, XTAL1 7 5 9
РВ7, XTAL2 8 6 10
VСС 4 3 7 +5V
VСС 6 +5V
VСС 18 16 20 +5V
РС0, ADC0 23 19 23 A0
PCI, ADC1 24 20 24 A1
PC2, ADC2 25 21 25 A2
PC3, ADC3 26 22 26 A3
PC4, ADC4 27 23 27 A4, SDA
PC5, ADC5 28 24 28 A5, SCL
ADC6 19 A6
ADC7 22 A7
AREF 20 17 21 AREF
PDO, RXD 30 26 2 D0, RXD
PD1, TXD 31 27 3 D1,TXD
PD2, INTO 32 28 4 D2
PD3, INTI 1 1 5 D3
PD4, TO 2 2 6 D4
PD5, T1 9 7 11 D5
PD6, AIN0 10 8 12 D6
PD7, AIN1 11 9 13 D7
PBO, CLKO 12 10 14 D8
PB1, OC1A 13 11 15 D9
PB2, SS 14 12 16 D10
PB3, MOSI 15 13 17 D11, MOSI
PB4, MISO 16 14 18 D12, MISO
PB5, SCK 17 15 19 D13, SCK
GND 3 GND
GND 5 4 8 GND
GND 21 18 22 GND
RSJ, PC6 29 26 1 RST

Fla рис. 4 показана схема велоспидометра после замены платы Arduino на микроконтроллер ATmega328P-PU (DD1). Позиционные обозначения элементов, имевшихся на схеме рис. 3, здесь сохранены.

Добавлены необходимый для работы микроконтроллера кварцевый резонатор ZQ1 на 16 МГц с конденсаторами С4 и С6, а также цепь установки микроконтроллера в исходное состояние R3C2 с кнопкой SB1 «Reset».

Схема велоспидометра после замены платы Arduino на микроконтроллер ATmega328P-PU

Рис. 4. Схема велоспидометра после замены платы Arduino на микроконтроллер ATmega328P-PU.

Предусмотрен также интегральный стабилизатор DA1, формирующий, как и в Arduino, из напряжения 7. 12 В стабилизированное напряжение 5 В для питания микроконтроллера и ЖКИ.

Конфигурация микроконтроллера

Рис. 5. Конфигурация микроконтроллера.

Если загрузить в память микроконтроллера DD1 коды из полученного, как было описано выше, с помощью Arduino IDE НЕХ-файла, а конфигурацию микроконтроллера установить в соответствии с рис. 5, то велоспидометр, собранный по схеме рис. 4, будет вести себя точно так же, как собранный по схеме рис. 3.

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector