Дигитайзер на arduino uno

Содержание

Дигитайзер на arduino uno

Предисловие

В данной статье я хотел бы поделиться своим опытом работы с сенсорным дисплеем и ардуино уно с аппаратной стороны и с Node.js с программной стороны компьютера.
Однажды мне стало интересно, как же рисуют профессиональные дизайнеры и художники в 21 веке, и я обнаружил, что сегодня цифровые изображения и рисунки создают с помощью цифрового планшета, да не простого, а специального, с чувствительностью к нажатиям и углом стилуса. Так появилась идея создать собственный “дигитайзер”. Так как я веб разработчик, то соответственно на стороне ПК я решил использовать веб технологии, но с таким же успехов можно использовать все что угодно. Я расскажу и покажу как передавать на арудуино через serial port данные в простом и удобном формате JSON.

Аппаратная часть

Нам потребуется:

  • Arduino UNO
  • Touch TFT LED display 320 x 480 ( или меньшее, так как максимальное разрешение для 32 кбайт памяти Ардуинки)

Экран с 9.7 см x 6.9 см , 3.95 дюйма был заказан на aliexpress. Обрабатывает также силу нажатия, что мы потом будем использовать для отрисовки. Занимает все порты, так что если нужны будут, то придется параллелить и так красиво на ардуино не “встанет” . Экран заточен под арудино, поэтому он легко становится, из-за высокого разрешения, он занимает все пины.

Необходимые библиотеки для работы с дисплеем и тачем:

  • Adafruit-GFX-Library
  • MCUFRIEND_kbv
  • TFTLCD
  • Touch-Screen-Library

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

Основная идея состоит в том, что в левом углу мы отрисовываем 6 квадратов цветов, при нажатии на которые выбирается соответственный цвет. При касании “рабочей” области рисуем круг с радиусом в зависимости от силы нажатия. При очень сильном нажатии – чистим экран. При каждом касании экрана формируем json и отправляем его на ПК.

Собственно код основной функции с комментариями(весь код прикреплен файлом и его можно найти по ссылке в репозитории):

Собственно с аппаратной частью покончено. Как оно выглядит

ПК часть

На ПК будет слушать Node.js сервер, который по вебсокету будет передавать наш json в браузере, где будет собственно происходить рендеринг картинки.
На фронтэнд части используется React и библиотека Paper.js. В качестве сборщика используется Webpack. Но обо всем по порядку.

Серверная часть (node.js):

Необходимые зависимости хранятся в файлике package.json

Для установки зависимостей нужно ввести npm i.

Для транспортировки данных будет использоваться прекрасная библиотека Socket.io https://www.npmjs.com/package/socket.io , которая создает вебсокет, благодаря которому можно транспортировать данные в реальном времени, не используя модель запрос-ответ.
Для чтения из порта будет использоваться serialport https://www.npmjs.com/package/serialport
Остальные библиотеки больше относятся к экосистеме и фреймворку express https://www.npmjs.com/package/express , которые используются для удобства, без которых вполне можно обойтись.

Основная логика серверного скрипта server.js

В принципе все достаточно просто и очевидно. Никакой особенной логики тут нету. Запускается командой node server.js. (До этого необходимо собрать клиентскую часть)

Клиентская часть (React,Webpack,Paper.js):

Начнем с зависимостей:

Я решил использовать библиотеку React.js https://facebook.github.io/react/ , на которой построен Facebook из-за гибкости и многих готовых компонентиков, из которых легко собрать свой интерфейс. В данном проекте React далеко не обязателен, можно было бы и обычным скриптом все сделать, но у меня была заготовка, которую я решил использовать. Реакт нужен для начальной настройки и каркаса приложения, всю логика отрисовки ложится на библиотеку Paper.js http://paperjs.org/

Отдельно хочу рассказать про сборщик для фронтэнда webpack https://webpack.github.io/ . Суть его в том, что к нему подключаются различные загрузчики контента (css, images, files, json, js) которые загружают картинки, таким образом можно разбить логику на странички. Допустим страница главная home, которая состоит из картинок, стилей и нашего скрипта , который генерирует из всего этого один большой скрипт. если глянуть на приведенный выше package.json, то можно увидеть в разделе scripts 3 команды: test, dev, deploy. Test не интересная, а вот deploy собирает все странички, все скрипты и картинки в один большой скрипт, html, стили и картинки в одно место, которое потом отдает сервер любому подключенному клиенту(браузеру). Команда dev используется для разработки очень удобная: webpack создает фактически сервер, который смотрит и анализирует на изменение кода, автоматические собирает все и обновляет страницу браузера, таким образом не нужно каждый раз обновлять страницу и собирать проект.

webpack.config.js:

Также забыл упомянуть, что использую Babel для фишек ES6/7, которые пока что не поддерживают браузеры. Этот конфиг нужен для разработки.

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

dashboard.jsx

Для человека незнакомого с React’ом выглядит достаточно запутанно, но основные моменты, на которых строится вся логика закомментированы. Открываем вебсокет -> получаем порты -> выбираем порт -> получаем данные -> отрисовываем.

Команды для запуска:

$ cd frontend
$ npm run deploy
$ cd api
$ node server.js
Для разработки на фронтенде:
$ npm run dev

Демонстрация работы

+

Как сделать свою собственную плату Arduino Uno

В уроке мы покажем вам, как сделать свою собственную плату Arduino Uno своими руками, используя микроконтроллер ATmega328p IC. В итоге вы сможете понимать как в дальнейшем делать аналоги любых плат, плюс создавать свои. Может быть вы даже откроете свою компанию по производству плат и микроконтроллеров.

Так как Ардуино является платформой с открытым исходным кодом, довольно легко узнать о внутренностях и деталях всего того, что делает Arduino тем, чем она является. Таким образом, в этом уроке мы рассмотрим схему Arduino Uno, немного изменим ее в соответствии с нашими потребностями, изготовим под нее печатную плату и припаяем необходимые компоненты для создания финального продукта.

Мы не будем использовать какие-либо SMD-компоненты для создания своей версии Arduino Uno, потому что не у всех есть паяльная станция, а иногда найти SMD-компоненты очень сложно. Кроме того, наш метод в большинстве случаев дешевле, чем компоненты SMD. Для тех кто, только начинает разбираться в электронике – технологию поверхностного монтажа печатных плат также называют ТМП (технология монтажа на поверхность), SMT (англ. surface mount technology) и SMD-технология (от англ. surface mounted device — прибор, монтируемый на поверхность), а компоненты для поверхностного монтажа также называют «чип-компонентами».

Шаг 1. Изменения в оригинальной версии

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

Изменения будут следующими:

  • Мы не будем использовать какие-либо компоненты SMD. Все элементы будут в формате сквозных отверстий.
  • Мы не нашли ни одного чипа FTDI в формате сквозного отверстия, поэтому преобразование USB в TTL не будет выполняться. Для программирования нового Arduino будет использоваться отдельная отладочная плата FTDI.
  • Оригинальный Arduino использует компаратор Mosfet, чтобы определить, подключаем ли мы плату с помощью источника питания USB или постоянного тока. Но в нашей версии мы будем вручную переключать это с помощью перемычки.
  • Традиционно используется микросхема LP2985 от Texas Instruments, чтобы получить источник питания 3,3 В на борту. Но из-за недоступности платы в формате TH мы будем использовать простой линейный регулятор. Таким образом, LM1117 должен быть очевидным выбором, но чтобы сохранить стоимость изготовления еще ниже, мы будем использовать LM317 с R1 и R2 как 240E и 390E соответственно.
  • Последнее, что нужно на плате, – это достаточное количество линий питания и два разъема для каждого порта IO ввода-вывода. Поэтому мы будем размещать ряд разъемов папа и мама вокруг платы, что поможет подключить большее количество устройств непосредственно к Arduino.

Учитывая все изменения, мы можем записать окончательный список компонентов.

Шаг 2. Необходимые компоненты

Компоненты, которые вам нужны для этого проекта. Везде, где количество не указано, считайте его единственным.

  • Микроконтроллер Atmel Atmega328p-pu
  • 28-контактная база IC
  • 16 МГц кварцевый генератор
  • конденсатор 22 пФ – 2 шт.
  • конденсатор 100 нФ – 4 шт.
  • Электролитический конденсатор 100 мкФ – 3 шт.
  • 3 мм красный светодиод – 2 шт.
  • 330E 1/4W резистор – 2 шт.
  • 240E 1/4W резистор – 1 шт.
  • 390E 1/4W резистор – 1 шт.
  • 10K 1/4W резистор – 1 шт.
  • Кнопка для сброса
  • Диод общего назначения 1N4007
  • Линейный регулятор напряжения 7805
  • Линейный регулятор переменного напряжения LM317
  • DC разъем мама
  • 2-контактный винтовой клеммный блок
  • много разъемов “папа” и “мама”

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

Вам также понадобится программатор USBASP ICSP или конвертер USB в TTL, такой как FTDI для программирования Arduino с вашего компьютера.

Вот проектная спецификация от компании Easyeda:

Собираем все компоненты и переходим к следующему шагу.

Шаг 3. Рисуем окончательную схему

Чтобы нарисовать окончательную схему, использовали Easyeda, набор инструментов EDA на основе веб-технологий. На этом портале очень просто рисовать большие схемы. Также это онлайн сервис. Таким образом, благодаря удобству использования что-то лучшее найти сложно. Рекомендуем вам использовать в своих проектах. Схема, которая разработана может быть скачена по ссылке ниже, PDF документ:

Читайте также:  Способы соединения проводов из сплавов высокого сопротивления

Шаг 4. Создаем печатную плату

Как только схема завершена, пришло время сделать печатную плату. Мы использовали веб-сайт JLCPCB (ссылка), чтобы сделать печатную плату. Эти ребята являются одними из лучших в производстве печатных плат в последние дни.

После завершения проектирования схемы преобразуйте ее в печатную плату и спроектируйте печатную плату на веб-сайте easyEDA (ссылка). Будьте терпеливы. Ошибка на этом шаге испортит вашу печатную плату. Проверьте несколько раз перед генерацией файла gerber. Вы также можете проверить 3d модель вашей платы здесь. Нажмите на создание файла gerber и оттуда вы можете напрямую заказать эту плату через JLCPCB. Загрузите файлы gerber, выберите правильную спецификацию, ничего не меняйте в этом разделе. Оставьте как есть. Это достаточно хорошие настройки для старта. Разместите заказ. Вы получите его через 1-2 недели.

Шаг 5. Пайка компонентов

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

Одна вещь, которую стоит пояснить, заключается в том, что значения конденсаторов не обязательно должны быть идеальными. Нечто близкое к тем величинам, что мы обсуждали выше, вполне будет работать. То же самое касается резисторов. Но сохраните значения R1 и R2 LM317.

Одна вещь, которую вы можете найти странной, что у arduino, который мы сделали, есть две кнопки сброса. На самом деле, когда разрабатывали макет, использовали четырехконтактную кнопку для справки. Но во время пайки стало понятно, что у нас её нет. Поэтому мы припаяли 2 двухполюсных переключателя сброса на место. Там нет ничего особенного.

Шаг 6. Запуск загрузчика на микроконтроллере

Если вы используете конвертер USB – TTL для программирования микроконтроллера, тогда загрузчик Arduino должен быть установлен в новый чип atmega328p. Об этом мы сделаем следующий большой урок. После этого процесс загрузки кода будет точно таким же, как и в обычной Arduino.

Если вы используете программатор ICSP, то есть программатор USBASP, тогда этот шаг не нужен. Но процесс загрузки кода немного отличается.

Шаг 7. Программируем Ардуино

Подключите коммутационную плату к Arduino и подключите её к компьютеру. Откройте диспетчер устройств и наблюдайте за com-портом конвертера usb – ttl. В Arduino IDE выберите com-порт и плату правильно. Теперь здесь начинается сложная часть.

Если ваша плата FTDI имеет вывод DTR и она подключена для сброса, просто сохраните программу и загрузите ее в Arduino как обычно. Ошибки не будет. Но если у вас нет пина DTR, как у нас, то, прежде чем нажать кнопку загрузки, удерживайте кнопку сброса на плате, а затем нажмите кнопку загрузки. Удерживайте кнопку до тех пор, пока программа не скомпилируется, когда IDE говорит «загрузка», затем отпустите переключатель сброса. Затем код будет загружен.

Шаг 8. Итоговый результат

Здесь вы можете увидеть, что мы загрузили 3-контактный код в новую arduino, и все работает, как и предполагалось. Используя только 3 контакта, мы контролируем 6 светодиодов с промежутком 200 мс между ними. Мы проверяли другие программы, все они работают без нареканий.

Arduino Uno

Товары

  • Обзор
  • Программирование и связь с ПК
  • Система питания
  • Порты ввода/вывода
  • Память
  • Подведение итогов
  • Часто Задаваемые вопросы

Обзор

Arduino UNO представляет из себя отладочный комплекс, выполненный на базе микроконтроллера ATMega328. Проще говоря – это обычная плата, которая является «посредником» между пользователем и микроконтроллером, позволяя удобно цепляться к его ножкам и загружать в него прошивку прямо из среды программирования. Помимо всего прочего, плата наделена некоторыми дополнительными функциями, которые будут подробно рассмотрены в данной статье. Продуманное исполнение, небольшой размер, множество библиотек и примеров кода, позволили Arduino UNO завоевать симпатии миллионов разработчиков электронных устройств. На сегодняшний день в Интернете можно найти огромное количество проектов, в которых данная плата взята за основу.

Arduino UNO была разработана итальянскими инженерами как одна из основных плат, имеющих открытую архитектуру. По мере увеличения популярности, у платы появилось множество «клонов», полностью совместимых по программной и аппаратной части. На рисунке №1 показан внешний вид платы Arduino UNO с обеих сторон.

Рисунок №1 – плата Arduino Uno

Как видно из рисунка, подключение к пинам микроконтроллера выполняется через штыревые линейки, распаянные по обе стороны платы. Таким образом разработчик может связать ATMega328 с внешними устройствами при помощи макетных проводов. Также под топологию Arduino Uno создано огромное количество шилдов, обеспечивающих дополнительный функционал путём их каскадного включения. Пример такого включения показан на рисунке №2.

Рисунок №2 – Arduino Uno и шилд для ЧПУ

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

Удобно организованный доступ к портам микроконтроллера – это хорошо, но что ещё содержит Arduino Uno на своём борту? Разобраться в дополнительных деталях поможет рисунок №3, на котором обведены и подписаны все основные элементы платы и дана общая характеристика для штыревых контактов.

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

Рисунок №3 – распиновка платы Arduino Uno

Программирование и связь с ПК

В левом верхнем углу (рисунок №3) расположен USB-разъём. Он выполняет две функции. Первая – организация канала обмена данными между микроконтроллером и ПК и вторая – запись прошивки в ATMega328.

На аппаратном уровне за связь с компьютером отвечает модуль последовательного интерфейса передачи данных (UART), который встроен в ATMega328 и выведен на контактах 0(RX) и 1(TX) платы Arduino Uno. Однако просто передавать данные на компьютер не получиться. Посредником между ATmega328 и компьютером выступает отдельно установленный микроконтроллер ATMega16. Его специальная прошивка позволяет определять плату Arduino Uno как виртуальный СОМ-порт, когда та подключается к ПК. Обмен данными будет сопровождаться миганием соответствующих светодиодов RX и TX, расположенных справа от ATMega16.

Что касается записи прошивки, то этот процесс максимально упрощён и сводится к нажатию всего одной кнопки в среде Arduino IDE. Такая простота обусловлена тем, что Arduino Uno выпускается со встроенным прошитым загрузчиком, работающем по протоколу STK500. Следовательно, во внешнем программаторе нет никакой необходимости. Тем не менее, для любителей прошить контроллер напрямую, на плате предусмотрена колодка ICSP (справа посередине) для внутрисхемного программирования в обход загрузчика. Сам DFU-загрузчик находиться в ATMega16 и также может быть переписан путём внутрисхемного программирования через аналогичную колодку в верхней левой части платы.

Система питания

Для того, чтобы плата Arduino Uno могла функционировать, на неё необходимо подать питание. Сделать это можно несколькими способами, а именно:

Запитать непосредственно через USB-разъём с помощью шнура для программирования или связи с ПК;

Запитать от AC/DC адаптера с выходным напряжением 7-12В, подключившись через специальный разъём внешнего питания.

Подать напряжение 7-12В напрямую на вход Vin, который расположен на штыревой колодке питающей группы. При этом минусовой контакт источника питания следует соединить с одним из контактов GND платы.

Также, плата Arduino Uno, предоставляет пользователю два контакта, на которых присутствуют напряжения 5В и 3,3В. Эти напряжения формируются встроенными линейными стабилизаторами при любом из вышеперечисленных способов питания. Максимальный ток, который способен обеспечить вывод 3,3В равен 50мА. Некоторые «умельцы» питают плату через один из этих выводов, однако это чревато выходом последней из строя, так как входное напряжение идёт в обход стабилизатора и любой скачок просто-напросто спалит микроконтроллер.

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

Вывод IOREF, служит для информирования подключаемых к Arduino Uno модулей или шилдов об уровне бортового напряжения. Если подключаемый модуль имеет возможность работать как с 5В, так и с 3,3В, то прочитав значение на выводе IOREF, он может выбрать для себя соответствующий режим работы.

Порты ввода/вывода

Arduino Uno предоставляет пользователю 14 цифровых и 6 аналоговых выводов. Цифровые выводы имеют нумерацию от 0 до 13 и способны работать в двух направлениях, т.е. каждый из них может быть как входом, так и выходом. Направление определяется функцией pinMode(). Помимо этого, для каждого цифрового пина имеется возможность программно включить подтягивающий резистор, соединённый с плюсом питания микроконтроллера. Номинал подтягивающего резистора лежит в диапазоне 20-50кОм. Следует учитывать, что максимальное выходное напряжение одного вывода составляет 5В, а максимальный ток – 40мА. Превышение допустимой нагрузки способно вывести микроконтроллер из строя.

Аналоговые выводы имеют обозначения А0-А5. Каждый из них соединён со встроенным 10-битным АЦП микроконтроллера ATMega328. Это означает, что мы можем одновременно измерять 6 напряжений и получать по 1024 значения для каждого канала. По умолчанию диапазон измеряемого напряжения равен 0-5В, т.е. при 0В значение АЦП будет равно 0, а при 5В значение АЦП станет равным 1023. Этот диапазон можно изменить подачей на вывод AREF своего опорного напряжения, которое станет верхней границей измерения. Если в аналоговых выводах нет необходимости, они без проблем могут использоваться как цифровые.

Помимо первичных функций, некоторые выводы Arduino Uno имеют дополнительные. Например:

выводы 3, 5, 6, 9, 10 и 11 способны формировать широтно-импульсную модуляцию (ШИМ) с помощью функции analogWrite().

выводы A4(SDA) и A5(SCL) представляют интерфейс связи по протоколу I2C.

выводы 10(SS), 11(MOSI), 12(MISO), 13(SCK) обеспечивают связь по SPI-интерфейсу.

Читайте также:  Система условных обозначений отечественных интегральных микросхем

выводы 0(RX) и 1(TX) – обеспечивают последовательный интерфейс передачи данных.

к выводу 13 подключен smd-светодиод, расположенный на плате.

RESET – подача низкого уровня на этот вывод приведёт к сбросу микроконтроллера.

Для удобства восприятия целесообразно всё свести в таблицу, которую можно использовать как «шпаргалку» при создании собственных проектов:

Arduino: выбор платы, подключение и первая программа

    Планы обучения , 20 марта 2019 в 13:35

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

Из чего состоит Arduino?

На аппаратном уровне это серия смонтированных плат, мозгом которых являются микроконтроллеры семейства AVR.

Платы имеют на борту всё необходимое для комфортной работы, но их функциональности часто бывает недостаточно. Чтобы сделать свой проект более интерактивным, можно использовать различные модули и платы расширений, совместимые с платформой Arduino. Сюда входят датчики (температуры, освещения, влаги, газа/дыма, атмосферного давления), устройства ввода (клавиатуры, джойстики, сенсорные панели) и вывода (сегментные индикаторы, LCD/TFT дисплеи, светодиодные матрицы).

На программном уровне платформа Arduino представляет собой бесплатную среду разработки Arduino IDE. Микроконтроллеры надо программировать на языке C++, с некоторыми отличиями и облегчениями, созданными для быстрой адаптации начинающих. Компиляцию программного кода и прошивку микроконтроллера среда разработки берёт на себя.

Существует также s4a.cat — сервис, базирующийся на Scratch, позволяющий более наглядно вести разработку на Arduino. Он подойдёт для обучения детей, а также если вы разово хотите создать простое устройство без изучения языка программирования Arduino и различных документаций. Для остальных же случаев лучше придерживаться традиционного процесса разработки.

Нужно ли уметь паять?

Знания в области электромонтажа приветствуются, но совсем не обязательны. Простые устройства на базе Arduino часто выполняются в виде макета. Для этого используется беспаечная макетная плата (англ. breadboard), на которой происходит коммутация модулей с платой Arduino с помощью перемычек.

Макетная плата на 400 отверстий (имеются шины питания по бокам). Источник

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

Набор для изучения Arduino. Источник

Какие бывают платы

По производителю

Существуют как официальные версии плат Arduino, так и платы от сторонних производителей. Оригинальные платы отличаются высоким качеством продукта, но и цена тоже выше. Они производятся только в Италии и США, о чём свидетельствует надпись на самой плате.

На примере самой популярной платы Arduino UNO:

    Оригинальная плата. Поставляется только в фирменной коробке, имеет логотип компании, на портах платы — маркировка. Цена от производителя 20 €.

Оригинальная плата Arduino UNO. Источник

Плата Arduino UNO от стороннего производителя. Источник

По назначению

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

Различные платы Arduino. Источник

Самые популярные из них:

  • Arduino Nano — различие с UNO только в конструктивном исполнении. Nano меньше.
  • Arduino Mega — плата на базе мощного микроконтроллера. Имеет большое количество портов.
  • Arduino Micro — имеет встроенную поддержку USB-соединения, а потому может использоваться как H >

Установка ПО

После выбора необходимой платы нужно установить бесплатную среду разработки Arduino IDE, которую можно найти на официальном сайте, а также, по необходимости, драйвер CH340.

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

В Arduino Create имеется доступ к обучающим материалам, проектам. Вы сможете общаться с профессионалами и помогать новичкам.

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

Особенности программирования на платформе Arduino

Термины

Программный код для Arduino принято называть скетчами (англ. sketches). У скетчей есть два основных метода: setup() и loop() . Первый метод автоматически вызывается после включения/сброса микроконтроллера. В нём происходит инициализация портов и различных модулей, систем. Метод loop() вызывается в бесконечном цикле на протяжении всей работы микроконтроллера.

Порты — неотъемлемая часть любого микроконтроллера. Через них происходит взаимодействие микроконтроллера с внешними устройствами. С программной стороны порты называются пинами. Любой пин может работать в режиме входа (для дальнейшего считывания напряжения с него) или в режиме выхода (для дальнейшей установки напряжения на нём).

Любой пин работает с двумя логическими состояниями: LOW и HIGH , что эквивалентно логическому нулю и единице соответственно. У некоторых портов есть встроенный АЦП, что позволяет считывать аналоговый сигнал со входа (например, значение переменного резистора). Также некоторые пины могут работать в режиме ШИМ (англ. PWM), что позволяет устанавливать аналоговое напряжение на выходе. Обычно функциональные возможности пина указываются на маркировке самой платы.

Основные функции

Для базовой работы с платой в библиотеке Arduino есть следующие функции:

  • pinMode(PIN, type) — указывает назначение конкретного пина PIN (значение type INPUT — вход, OUTPUT — выход);
  • digitalWrite(PIN, state) — устанавливает логическое состояние на выходе PIN ( state LOW — 0, HIGH — 1);
  • digitalRead(PIN) — возвращает логическое состояние со входа PIN ( LOW — 0, HIGH — 1);
  • analogWrite(PIN, state) — устанавливает аналоговое напряжение на выходе PIN ( state в пределах от 0 до 255);
  • analogRead(PIN) — возвращает значение аналогового уровня сигнала со входа PIN (пределы зависят от разрядности встроенного АЦП. Обычно разрядность составляет 10 бит, следовательно, возвращаемое значение лежит в пределах от 0 до 1023);
  • delay(ms) — приостанавливает исполнение скетча на заданное количество миллисекунд;
  • millis() — возвращает количество миллисекунд после момента запуска микроконтроллера.

В остальном процесс программирования на Arduino такой же, как на стандартном C++.

Пишем первую программу

Вместо всем привычных Hello World’ов в Arduino принято запускать скетч Blink, который можно найти в ФайлПримеры01.BasicsBlink. Там же можно найти множество других учебных скетчей на разные темы.

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

Рассмотрим скетч Blink:

Прошивка

После написания необходимо «залить» скетч на микроконтроллер. Как уже говорилось, платформа Arduino берёт весь процесс прошивки микроконтроллера на себя — вам лишь необходимо подключить плату к компьютеру.

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

После этого нужно подключить плату Arduino к любому USB-порту вашего компьютера и выбрать соответствующий порт во вкладке ИнструментыПорт.

Теперь можно приступать к прошивке микроконтроллера. Для этого достаточно нажать кнопку Загрузка, либо зайти на вкладку СкетчЗагрузка. После нажатия начнётся компиляция кода, и в случае отсутствия ошибок компиляции начнётся прошивка микроконтроллера. Если все этапы выполнены правильно, на плате замигает светодиод с периодом и интервалом в 1 сек.

Обмен данными с компьютером

У всех плат Arduino есть возможность обмена информацией с компьютером. Обмен происходит по USB-кабелю — никаких дополнительных «плюшек» не требуется. Нам нужен класс Serial , который содержит все необходимые функции. Перед работой с классом необходимо инициализировать последовательный порт, указав при этом скорость передачи данных (по умолчанию она равна 9600). Для отправки текстовых данных в классе Serial существуют небезызвестные методы print() и println() . Рассмотрим следующий скетч:

В Arduino IDE есть Монитор порта. Запустить его можно через ИнструментыМонитор порта. После его открытия убедитесь, что Монитор работает на той же скорости, которую вы указали при инициализации последовательного порта в скетче. Это можно сделать в нижней панели Монитора. Если всё правильно настроено, то ежесекундно в Мониторе должна появляться новая строка « T for Tproger ». Обмен данными с компьютером можно использовать для отладки вашего устройства.

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

Прошиваем микроконтроллер и возвращаемся в Монитор порта. Вводим в верхнее поле 1 и нажимаем Отправить. После этого на плате должен загореться светодиод. Выключаем светодиод, отправив с Монитора 0 . Если же отправить символ T , в ответ мы должны получить строку « proger ».

Таким способом можно пересылать информацию с компьютера на Arduino и обратно. Подобным образом можно реализовать связь между двумя Arduino.

А как подключать модули?

Для работы с датчиками и модулями их изготовители создают специальные библиотеки. Они служат для простой интеграции модулей в вашу систему. Подключение библиотеки возможно с zip файла или с помощью Менеджера Библиотек.

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

ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ

Блог технической поддержки моих разработок

Урок 2. Плата Arduino UNO R3. Описание, характеристики.

В статье рассказывается о контроллере Arduino UNO R3, выбранном для демонстрации программ уроков. Сейчас необязательно внимательно изучать эту информацию. Рекомендую бегло просмотреть, чтобы иметь понятие об аппаратной части системы. В дальнейшем эту статью можно использовать как справочную информацию.

В качестве контроллера для программ уроков я выбрал плату Arduino UNO R3. Но ничего не мешает использовать и другие платы. Просто UNO R3 самый распространенный вариант контроллеров Ардуино.

Общая информация о контроллере.

Arduino UNO R3 выполнен на микроконтроллере ATmega328. У него:

  • 14 цифровых портов входа-выхода ( 6 из них поддерживают режим ШИМ модуляции);
  • 6 аналоговых входов;
  • частота тактирования 16 МГц;
  • USB порт;
  • разъем питания;
  • разъем внутрисхемного программирования;
  • кнопка сброса.

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

Технические характеристики.

Тип микроконтроллераATmega328P
Напряжение питания микроконтроллера5 В
Рекомендуемое напряжение питания платы7 – 12 В
Предельно допустимое напряжение питания платы6 – 20 В
Цифровые входы-выходы14 (из них 6 поддерживают ШИМ)
Выходы ШИМ модуляции6
Аналоговые входы6
Допустимый ток цифровых выходов20 мА
Допустимый ток выхода 3,3 В50 мА
Объем флэш памяти (FLASH)32 кБ (из которых 0,5 кБ используется загрузчиком)
Объем оперативной памяти (SRAM)2 кБ
Объем энергонезависимой памяти (EEPROM)1 кБ
Частота тактирования16 мГц
Длина платы68,6 мм
Ширина платы53,4 мм
Вес25 г

Программирование.

Контроллер программируется из интегрированной среды программного обеспечения Ардуино (IDE). Программирование происходит под управлением резидентного загрузчика по протоколу STK500. Аппаратный программатор при этом не требуется.

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

Отличие от других контроллеров Ардуино.

Arduino UNO R3, в отличие от предыдущих версий, не использует для подключения к компьютеру мост USB-UART FTDI. Эту функцию в нем выполняет микроконтроллер ATmega16U2.

Система питания.

Плата UNO может получать питание от USB порта или от внешнего источника. Источник питания выбирается автоматически. В качестве внешнего источника питания может использоваться сетевой адаптер или батарея. Адаптер подключается через разъем диаметром 2,1 мм (центральный контакт – положительный). Батарея подключается к контактам GND и Vin разъема POWER.

Напряжение внешнего источника питания может быть в диапазоне 6 – 20 В. Но рекомендуется не допускать снижение напряжения ниже 7 В из-за нестабильной работы устройства. Также нежелательно повышать напряжение питания более 12 В, т.к. может перегреется стабилизатор и выйти из строя. Т.е. рекомендуемый диапазон напряжения питания 7 – 12 В.

Для подключения питания могут быть использованы следующие выводы.

VinПитание платы от внешнего источника питания. Не связано с питанием 5 В от USB или выходами других стабилизаторов. Через этот контакт можно получать питание для своего устройства, если плата питается от адаптера.
5 VВыход стабилизатора напряжения платы. На нем напряжение 5 В при любом способе питания. Питать плату через этот вывод не рекомендуется, т.к. не используется стабилизатор, что может привести к выходу микроконтроллера из строя.
3 V 3Напряжение 3,3 В от стабилизатора напряжения на плате. Предельно допустимый ток потребления от этого вывода 50 мА.
GNDОбщий провод.
IOREFНа выводе информация о рабочем напряжении платы. Плата расширения может считать значение сигнала и переключиться на режим питания 5 В или 3,3 В.

Память.

У микроконтроллера три типа памяти:

  • 32 кБ флэш (FLASH);
  • 2 кБ оперативной памяти (SRAM);
  • 1 кБ энергонезависимой памяти (EEPROM).

Входы и выходы.

Каждый из 14 цифровых выводов может быть использован в качестве выхода или входа. Уровень напряжения на выводах 5 В. Рекомендовано вытекающий и втекающий ток каждого вывода ограничивать на уровне 20 мА. Предельно допустимое значение этого параметра составляет 40 мА. Каждый вывод имеет внутренний подтягивающий резистор сопротивлением 20-50 кОм. Резистор может быть отключен программно.

Некоторые выводы могут выполнять дополнительные функции.

Последовательный интерфейс: выводы 0 (Rx) и 1 (Tx). Используются для приема (Rx) и передачи (Tx) последовательных данных логических уровней TTL. Эти выводы подключены к выводам передачи данных микросхемы ATmega16U2, используемой в качестве моста USB-UART.

Внешние прерывания: выводы 2 и 3. Эти выводы могут быть использованы как входы внешних прерываний. Программно могут быть установлены на прерывание по низкому уровню, положительному или отрицательному фронту, или на изменение уровня сигнала.

ШИМ: выводы 3, 5, 6, 9, 10, 11. Могут работать в режиме ШИМ модуляции с разрешением 8 разрядов.

Последовательный интерфейс SPI: выводы 10(SS), 11(MOSI), 12(MISO), 13(SCK).

Светодиод: вывод 13. Светодиод, подключенный к выводу 13. Светится при высоком уровне сигнала на выводе.

Интерфейс TWI: вывод A4 или SDA и A5 или SCL. Коммуникационный интерфейс TWI.

У платы Arduino UNO есть 6 аналоговых входов, обозначенных A0-A5. Разрешающая способность аналогового цифрового преобразования 10 разрядов. По умолчанию, входное напряжение измеряется относительно земли в диапазоне 0-5 В, но может быть изменено с помощью вывода AREF и программных установок.

Еще 2 вывода платы имеют функции:

AREF. Опорное напряжение АЦП микроконтроллера.

RESET. Низкий уровень на этом выводе вызывает сброс микроконтроллера.

Коммуникационные интерфейсы.

Модуль Arduino UNO имеет средства для связи с компьютером, с другой платой UNO или с другими микроконтроллерами. Для этого на плате существует интерфейс UART с логическими уровнями TTL (5 В), связанный с выводами 0 (RX) и 1(TX). Микросхема ATmega16U2 на плате связывает UART интерфейс с USB портом компьютера. При подключении к порту компьютера, появляется виртуальный COM порт, через который программы компьютера работают с Ардуино. Прошивка ATmega16U2 использует стандартные драйверы USB-COM и установка дополнительных драйверов не требуется. Для операционной системы Windows необходим соответствующий .inf файл. В интегрированную среду программного обеспечения Ардуино (IDE) включен монитор обмена по последовательному интерфейсу, который позволяет посылать и получать с платы простые текстовые данные. На плате есть светодиоды RX и TX, которые индицируют состояние соответствующих сигналов для связи через USB (но не для последовательного интерфейса на выводах 0 и 1).

Микроконтроллер ATmega328 также поддерживает коммуникационные интерфейсы I2C (TWI) и SPI.

Автоматический (программный) сброс.

Для того, чтобы не приходилось каждый раз перед загрузкой программы нажимать кнопку сброс, на плате UNO реализована аппаратная функция сброса, инициируемая с подключенного компьютера. Один из сигналов управления потоком данных (DTR) микросхемы ATmega16U2 подключен к выводу сброса микроконтроллера ATmega328 через конденсатор емкостью 0,1 мкФ. Когда сигнал DTR переходит в низкое состояние, формируется импульс сброса микроконтроллера. Это решение позволяет загружать программу одним нажатием кнопки из интегрированной среды программирования Arduino (IDE).

Но такая функция может приводить к отрицательным последствиям. При подключении платы UNO к компьютеру с операционной системой Mac Os X или Linux, микроконтроллер будет сбрасываться при каждом соединении программы с платой. В течение половины секунды на плате UNO будет запущен загрузчик. Несмотря на то, что программа загрузчика игнорирует посторонние данные, она может принять несколько байтов из пакета сразу после установки соединения. Если в программе на плате Ардуино предусмотрено получение каких-либо данных при первом запуске, необходимо отправлять данные с задержкой примерно на 1 секунду после соединения.

На модуле UNO существует дорожка, которую можно перерезать для отключения функции автоматического сброса. Дорожка маркирована надписью ”RESET-EN”. Автоматический сброс также можно запретить, подключив резистор сопротивлением 110 Ом между линией питания 5 В и выводом RESET.

Защита USB порта от перегрузок.

В плате Arduino UNO линия питания от интерфейса USB защищена восстанавливаемым предохранителем. При превышении тока свыше 500 мА, предохранитель разрывает цепь до устранения короткого замыкания.

Схема контроллера Arduino UNO.

Проект 1. Инкубатор, собранный на Arduino UNO

Фермерам-гикам посвящается! Если вам нравится разводить и выращивать кур, то это статья для вас. Для тех, кто планирует самостоятельно конструировать инкубатор. Для него же наверняка придется придумывать автоматику. Дешевле и проще контроллера Ардуино на рынке не найти. Можно конечно найти и готовые устройства, и готовое оборудование, и готовые терморегуляторы. Но на вкус и цвет, как говорится. Для творческий людей мы рассмотрим, как строится наш ардуино инкубатор! Из этой статьи вы узнаете:

Привет ребят! Как ваши дела? С вами автор блога КИПиА (контрольно-измерительные приборы и автоматика), Сёма. На фирме я занимаюсь очередным интересным проектом — сушилкой для зерна. Проект я пишу на Codesys3.5 — в ближайшем будущем планирую опубликовать статью и выложить видео интерфейса, так что подписывайтесь на новости блога, чтобы не пропустить интересную публикацию. В в этом посте мы рассмотрим с вами проект на Ардуино. Это разработка устройства для инкубатора. Я думаю тема эта актуальна и интересна, так что приступаем.

Об инкубаторе.

Инкубатор- это аппарат для искусственного выведения молодняка различных птиц из яиц. По классификации их делят на следующие группы:

В конвейерных инкубаторах Яйца постепенно докладываются. Судя по названию «единовременные» понятно, одновременно закладывается партия яиц до полной загрузки инкубатора. Вот таким образом выглядит готовое устройство: На рынке множество разных видов аппаратов, начиная с огромных шкафов и заканчивая маленьким бытовой техникой размером с хлебопечку. Всё зависит от целей и задач, которые ставят перед собой люди. Если есть вопросы конкретно по конструкции, по лоткам, по технологии. Я рекомендую посетить вот этот сайт . Я не знаю автора данного сайта, но мне очень понравилось, как он подробно расписал работу инкубатора и технологию выращивания молодняка.

Внутреннее устройство инкубатора

С чего мы начнём? Из каких основных элементов состоит сам инкубатор? В чём смысл технологического процесса? Самыми основными регулируемыми параметрами являются температура и влажность. Сложный инкубатор на 100-500 яиц должен обладать следующим функционалом:

  1. Измерение температуры и влажности и вывод данных на экран;
  2. Точное регулирование вышеназванных физических величин;
  3. Управление автоматическим поворотом лотков через определённый промежуток времени;
  4. Управление вентиляторами;

Рассмотрим управление простейшим инкубатором на 10 яиц. Без всяких ПИД — законов и сложных премудростей. (для тех кто не знает, что такое ПИД — регулирование, это регулятор для точного поддержания температуры). Для управления микроклиматом в инкубаторе я использую следующие исполнительные механизмы — обычную лампочку накаливания на 75 W или на 100 W и вентилятор на 220 В. Принципиальная схема подключения всех элементов схемы к Arduino UNO: Для более сложных устройств для инкубаторов на 100-500 яиц обычно ставят вот такие механизмы:

  1. ТЭН (нагреватель);
  2. Генератор влажности (туманогенератор);
  3. Мотор-редуктор для поворота лотков;
  4. Вентилятор для улучшеной конвекции воздуха;

Так как площадь и объём инкубатора получается больше, то нужно ставить несколько датчиков и нагревательных элементов. Яйца обязательно нужно прогревать при определённой температуре (38-39 С°) и влажности. Что можно поставить из аппаратной части:

  1. Основной «мозг» — Arduino UNO;
  2. LCD дисплей 16×2 — на базе чипа HD44780;
  3. Датчик температуры и влажности — DHT22;
  4. Часы реального времени — DS1307;
  5. Датчик температуры цифровой – DS18B20;

Теперь рассмотрим скетч для Ардуино.

Программа для инкубатора

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

Рейтинг
( Пока оценок нет )
Загрузка ...
Adblock
detector