Машинка на ардуино скетч и схема: Bluetooth машинка на Arduino с двумя моторами: скетч и описание

Содержание

Машинка на ардуино с Wi-Fi управлением

       

Машинка на ардуино с WiFi управлением

 

Этот проект машинки на ардуино с Wi-Fi управлением делался совместно с сыном и двумя нашими помощниками для изучения возможностей приложения RemoteXY. О приложении я узнал случайно, когда искал в плей маркете программы для дистанционного управления.

А это наши помощники: Ричард и Феликс

                                                                         Сборка

Для проекта машинки на ардуино с Wi-Fi были куплены: четырёхколёсное шасси, ардуино нано и шилд с винтовыми зажимами для него, драйвер моторов на L298, модуль WiFi ESP8266-01, стабилизаторы питания на 3,3В для ESP8266 и регулируемый для всего остального. Для питания всей конструкции используются 3 аккумулятора 18650 от старой батареи ноутбука.

Сборка всей конструкции занимает немного времени. Единственное с чем пришлось повозится, так это с моторами. В наборе они пришли без проводов. Пришлось припаивать провода и, заодно, пленочные конденсаторы на 0,1 мкФ для подавления помех. Паять надо очень аккуратно, контакты тонкие и, при перегреве, начинают выпадать из пластмассы.

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

                                                                      Программа

После сборки приступаем к разработке интерфейса управления. Для этого заходим на сайт http://remotexy.com/ru/ , регистрируемся и начинаем творить. Интерфейс у редактора довольно простой, всё интуитивно понятно, к тому же на русском языке.

После создания нужного интерфейса, нажимаем кнопку “Получить исходный код”. В новом окне копируем полученный код в ардуино ИДЕ. Полученный код нужно доработать, так как он содержит только настройки соединения и код интерфейса для смартфона. Всё остальное: управление моторами, дополнительными устройствами, а также обратной связью от датчиков, нужно дописать. Но ничего сложного в этом нет, так как в коде есть подсказки, а на сайте – примеры.

Далее нужно установить приложение на смартфон. Мы установили платную версию, так как в бесплатной есть ограничения ( 5 элементов на экране ), и по времени использования. Платная версия работает стабильно, нареканий нет.

 

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

Библиотеку RemoteXY можно взять на сайте или здесь. Также выкладываю свой скетч, если кто хочет попробовать. Только проставьте в 30 и 31 строках имя и пароль точки доступа для ESP8266.

car_WiFi

RemoteXY

 

Arduino машинка на радиоуправлении

Робот – машинка на Ардуино становятся одним из самым популярных инженерных проектов в школьной робототехнике. Именно с таких устройств, автономных или управляемых со смартфона и bluetooth, начинается путь в робототехнику “после Lego”. К счастью, сегодня можно без труда купить все необходимые компоненты и достаточно быстро создать своего первого робота для езды по линии или объезда препятствий. В этой статье вы найдете подробную видео инструкцию как сделать продвинутый автомобиль Arduino Car своими руками, с питанием, датчиками линии, расстояния и управлении через bluetooth.

Робот на ардуино своими руками

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

Робот машина на Ардуино

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

Контроллер Ардуино

Куда уж без него, если мы говорим о проектах на этой платформе. Как правило, роботы машины делают на базе плат Arduino Uno и Nano. Mega будут слишком большие, Pro Mini сложнее подключать к компьютеру и соединять с остальными компонентами, а Leonardo требуют дополнительных навыков в программировании, они дороже и их основное преимущество (тесная интеграция с компьютером в качестве периферийного устройства) в данном случае не слишком востребована.

Есть еще вариант использования плат ESP8266 или ESP32, тогда в проекте появляется возможность управления машиной через WiFi. Но и сами платы и их программирование требует определенных навыков, в этой статье мы будем говорить преимущественно об Uno или Nano.

Конструкция, шасси и двигатели робота на Ардуино

Для того, чтобы что-то поехало или стало перемещаться, надо снабдить “это” колесами, гусеницами или манипуляторами-ногами. Вот тут выбор совершенно не ограничен, можно использовать совершенно любые комбинации и сочетания платформ. Как правило, в качестве начального варианта берутся уже готовые наборы платформ с Алиэкспресс.

Двигатель, шасси и колеса машинки на ардуино

Если работать со стандартными наборами вам не интересно, можно создать платформу своими руками. Например, разобрать игрушечные радиоуправляемые машинки или любые двигатели на 5-12 вольт, с редукторами или без. Колеса можно создать и самим, что тоже является интересной задачей.

Драйвер двигателей

Ардуино – достаточно ранимое устройство, не терпящее больших нагрузок по току. Соединяя его с “брутальными” мощными двигателями, не избежать беды. Поэтому для нормальной совместной работы нам нужно будет включить в схему робота компонент, отвечающий за управление двигателями – подающий и отключающий ток на их обмотки. Речь идет о микросхеме или готовом модуле, которые называют драйвером двигателя. На нашем сайте есть статьи, посвященные драйверам, построенным на схеме H-моста. Если вы покупаете готовые шасси, то обязательно предусмотрите возможность размещения на них подходящего драйвера.

Красивый корпус

Как правило, вся конструкция автомобиля строится вокруг его шасси. Если посмотреть примеры готовых проектов, то они часто выглядят как “провода на колесиках” – внешний вид их изобилует пучками соединительных проводов, ведущих от восседающего на троне контроллера Ардуино к драйверам, моторам и датчикам. Между тем, красивый и функциональный корпус не только вызывает правильные эстетические чувства и помогает выделить вашу модель от остальных. Хороший корпус может превратить игрушку в реальное устройство, помогает привить навыки конструирования и промышленного дизайна, что важно для инженеров любого возраста.

Питание робота

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

Питание робота на Ардуино

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

  • Обычные батарейки AA. Тут нужно понимать, что платы Arduino Uno, Nano и большинство двигателей, используемых в Ардуино-робототехнике, требуют напряжения в диапазоне 6-9 вольт. Поэтому придется собрать вместе последовательно не менее 4 батареек на 1,5 В, причем сами батарейки должны быть хорошего качества и обеспечивать работу с достаточно большим током. Например, большинство солевых батареек этим критериям не удовлетворяют. Батарейки AAA при создании ардуино-машинок практически не используются из-за своей пониженной емкости (хотя могут использоваться в миниатюрных моделях, где размер имеет первостепенное значение).
  • Аккумулятор AA. Здесь возникает еще большее ограничение по напряжению и току. Большинство аккумуляторов выдают напряжение 1,2 вольт, поэтому их требуется больше для “собирания” нужных нам 6-9 вольт. Несомненным плюсом является возможность перезарядки.
  • Литиевые аккумуляторы 18650. Это уже “серьезная артиллерия”, позволяющая получить большое время автономной работы, возможность подзарядки и приемлемые характеристики по току и напряжению. Рабочее напряжение для таких элементов питания – 3,7 В, что позволяет собирать готовую схему питания всего из двух элементов.
  • Другие источники питания. Сюда можно включить как более мощные и габаритные никель-металлгидридные, кадмиевые аккумуляторы, так и многочисленные литий-ионные “плоские” варианты, используемые в дронах, смартфонах или другой портативной цифровой технике.

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

Где купить платформу и запчасти

Все, о чем говорится в этой статье, можно без проблем купить на всем известном сайте. К сожалению, подавляющее большинство предложений основываются на стандартной платформе 4WD автомобиля с двумя несущими планками, не очень надежными двигателями и колесами, любящими ездить в “развалочку”. Но эти варианты относительно не дороги и вполне подойдут для начала работы.

Давно я уже не делал радио управляемые модели . Решил оживить свой старый проект: Радиоуправлениена Arduino + NRF24L01 + гироскоп GY-521 MPU-6050. Но не просто оживить. Но и доработать. Так как у меня есть 3D принтер . Раму для машины решил напечатать новую. Так же с кодом решил немного поработать. За это время знаний стало больше и на старые проекты уже смотрю совсем по другому. Но обо всем по порядку.

И так напечатал раму для Ардуино машинки . Фото уже выкладывал в группе в ВК. Вот что получилось:

Исходники для печати можете скачать тут.

Установил электронику: Arduino UNO, драйвер L298n, два мотор-редуктора с колесами и конечно же радио модуль nrf24l01.

Все комплектующие лучше покупать в Китае. Например на сайте

aliexpress. Потратите в 2 раза меньше. И доставка у недорогих товаров бесплатная или очень маленькая. А если купить у одного проводка. То можно сэкономить на доставке . Для этого берем 1 товар с платной доставкой. А остальные с бесплатной. И вам все положат в одну посылку и ВСЕ отправят платной доставкой. Вот такой небольшой ЛайфХак.

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

Установил 2 бокса под аккумуляторы 18650. Соединил их последовательно и подключил к драйверу L298n. Так как у драйвера есть понижающий стабилизатор на 5 вольт. С соответствующих разъемов мы берм 5в и подключаем Arduino UNO. Но тут есть минус. Нужно следить, чтобы аккумуляторы не пере разрядились. Иначе они выйдут из строя. Остальная часть схемы ни чем не отличается от предыдущего проекта.

Пульт управления берем из предыдущего проекта. Схема подключения пульта управления на Arduino + NRF24L01 + гироскоп GY-521 MPU-6050 . Выглядит вот так.

Скетч тоже без изменений.

Пульт планирую переделывать. Тем более он выглядит не очень красиво.

И ребенок у меня его модернизировал. Проводки пере подключал. Я конечно все восстановил. Но работает немного не так как раньше. Смотрите в видео всем отличие.

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

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

При отсутствии связи данные параметры были равны 0. А ноль по коду мы приводим к -100. Вращаем колесо в обратную сторону. Вот от сюда и проблема.

В итоге получилась вот такая машинка на Arduino радио модуле nrf24l01 с пультом управления. Который управляет машиной при наклоне пульта. Не нужно нажимать на кнопки.

Планирую доработку пульта и машинки. Так что Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook. Всем Пока-Пока. И до встречи в следующем проекте.

Понравилась статья? Поделитесь ею с друзьями:

Этот урок показывает как сделать радиоуправляемую модель машины, которую можно контролировать через смартфон. В этом руководстве мы будем использовать плату Arduino Uno.

Шаг 1. Комплектующие

Для того, чтобы сделать модель машины на радиоуправлении (RC-машина) с использованием Ардуино и с возможностью контроля через смартфон, нам понадобятся следующие детали:

  1. Комплект шасси робота 4WD
  2. Arduino Uno
  3. Модуль H-моста LM298
  4. Модуль Bluetooth HC-05
  5. Батарея Li-po 12В
  6. Провода-перемычки
  7. Провода «папа-папа»
  8. Клейкая лента или любая другая лента
  9. Смартфон

Шаг 2. Шасси

Вы можете купить готовый комплект для сборки 4WD шасси или сделать его с помощью ПВХ или любого вида жесткой доски. Наш вариант на фото выше был куплен в онлайн-магазине. Вполне возможно сделать аналог этого шасси своими руками. Не имеет особого значения вид шасси, можно выбрать на свой вкус.

Шаг 3. Моторы (приводы)

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

Отрежьте 4 кусочка красного и черного провода длиной примерно от 5 до 6 дюймов (12 — 15 см). Можно использовать провода 0,5 мм. Снимите изоляцию с проводов на каждом конце. Припаяйте провода к клеммам двигателей.

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

Шаг 4. Установка двигателей

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

Шаг 5. Ардуино контроллер

Arduino UNO — это плата микроконтроллера с открытым исходным кодом, основой которой служит микроконтроллер Microchip ATmega328P и разработанная Arduino.cc.

Плата оснащена наборами цифровых и аналоговых пинов ввода/вывода (I/O), которые могут быть подключены к различным платам расширения (экранам) и другим цепям. Плата имеет 14 цифровых контактов, 6 аналоговых контактов и программируется с помощью Arduino IDE (интегрированная среда разработки) через USB-кабель типа B. Плата может питаться от USB-кабеля или от внешней 9-вольтовой батареи, хотя он принимает напряжение от 7 до 20 вольт, по аналогии с Arduino Nano и Leonardo.

Эталонный дизайн оборудования распространяется под лицензией Creative Commons Attribution Share-Alike 2.5 и доступен на веб-сайте Arduino. Макет и производственные файлы для некоторых версий оборудования также доступны. «Uno» означает один на итальянском языке и был выбран в честь выпуска Arduino Software (IDE) 1.0. Плата Uno и версия 1.0 программного обеспечения Arduino (IDE) были эталонными версиями Arduino, теперь разработанными для более новых выпусков.

Плата Uno является первой в серии плат Arduino c USB и эталонной моделью для последующих платформ. ATmega328 на Arduino Uno поставляется с предварительно запрограммированным загрузчиком, который позволяет загружать новый код без использования внешнего аппаратного программера с использованием оригинального протокола STK500. Uno также отличается от всех предыдущих плат тем, что не использует микросхему драйвера FTDI USB-to-serial. Вместо этого он использует Atmega16U2 (Atmega8U2 до версии R2), запрограммированный как преобразователь USB-to-serial.

Микроконтроллеры обычно программируются с использованием диалекта функций из языков программирования C и C++. В дополнение к использованию традиционных наборов инструментов компилятора проект Arduino предоставляет интегрированную среду разработки (IDE).

Шаг 6. H-мост (модуль LM 298)

Термин H-мост (англ. H-bridge) выведен из типичного графического представления такой схемы. Это схема, которая может приводить двигатель постоянного тока в прямом и обратном направлении, см. рисунок выше для понимания работы H-моста.

Он состоит из 4 электронных переключателей S1, S2, S3 и S4 (транзисторы / МОП-транзисторы (MOSFET) / IGBTS). Когда переключатели S1 и S4 замкнуты (а S2 и S3 разомкнуты), на двигатель идет положительное напряжение. Поэтому он вращается в прямом направлении. Аналогично, когда S2 и S3 замкнуты, а S1 и S4 открыты, обратное напряжение идет через двигатель, поэтому он вращается в обратном направлении.

H-мосты доступны в виде интегральных микросхем, или вы можете создать свой собственный, используя 4 обычных транзистора или полевых транзистора (MOSFET). В нашем случае мы используем микросхему H-моста LM298, которая позволяет контролировать скорость и направление вращения двигателей. Ниже перейдем к описанию пинов:

Выход 1: двигатель постоянного тока 1 «+» или шаговый двигатель A+

Выход 2: двигатель постоянного тока 1 «-» или шаговый двигатель A-

Выход 3: двигатель постоянного тока 2 «+» или шаговый двигатель B+

Выход 4: двигатель B выведен

12В контакт: 12В вход, но вы можете использовать от 7 до 35 В

GND: земля

Вывод 5В: выход 5 В, если перемычка 12 В на месте, идеально подходит для питания вашего Arduino

EnA: включает сигнал ШИМ для двигателя А

IN1: включить двигатель A

IN2: включить двигатель A

IN3: включить двигатель B

IN4: включить двигатель B

EnB: включает сигнал ШИМ для двигателя B

Шаг 7. Источник питания

Для нашей радиоуправляемой модели машины на основе Ардуино и с контролем через смартфон могут быть использованы следующие батареи:

  1. Щелочная батарея типа АА (не перезаряжаемая)
  2. AA NiMh или NiCd аккумулятор
  3. Литий-ионный аккумулятор
  4. Батарея LiPo

Шаг 8. Электрические соединения

Для реализации соединений нужны перемычки. Соедините красные провода двух двигателей (с каждой стороны) вместе и черные провода вместе. Таким образом у нас теперь есть два терминала с каждой стороны. MOTORA отвечает за два правых двигателя, соответственно два левых двигателя подключены к MOTORB. Следуйте инструкциям ниже, чтобы соединить все.

Соединения двигателей

Out1 -> Красный провод левого бокового мотора (+)

Out2 -> Черный провод левого двигателя (-)

Out3 -> Красный провод правой стороны двигателя (+)

Out4 -> Черный провод правой стороны двигателя (-)

LM298 -> Arduino

Модуль Bluetooth -> Arduino

Питание

12V -> Подключите красный провод аккумулятора

GND -> Подключите черный провод аккумулятора и вывод Arduino GND

5V -> Подключение к контакту Arduino 5V

Шаг 9. Логика управления

Логика управления описывается в таблице ниже.

Шаг 10. Приложение для смартфона

Скачать приложение и установить в смартфон вы можете через Google Play (ссылка).

Для управления RC-автомобилем мы используем смартфон. Смартфон подключается к контроллеру через модуль Bluetooth (HC-06/05). После установки приложения необходимо настроить связь с модулем Bluetooth. Пароль для связи: «1234».

Шаг 11. Код Ардуино

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

Подробные проекты на ардуино уно. Проекты на Arduino


Собрали лучшие и даже сумасшедшие Arduino-проекты, которые мы встретили в 2015 году.

Arduino Wake-Up Machine

Взлом кодовых замков с помощью Arduino

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

Робот, сортирующий Skittles

Проект распечатанного на 3D-принтере Arduino-робота, который поможет сэкономить время, необходимое на сортировку Skittles. Возможно, самое большое разочарование, что механизм не универсален и подходит для M&M’s. Видео и более подробное описание

Protopiper — гаджет для прототипирования

Удивительный гаджет для прототипирования. Устали бегать с рулеткой? Обладая этим устройством, вы можете быстро набросать эскиз размером с комнату.

Open Source снегоуборщик

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

Бластер для переключения музыки

У всех разные музыкальные вкусы. Но бывает так, что музыка просто ужасна. Она не нравится никому в компании. Так бывает. Если ваша мечта а такие моменты — выстрелить из пистолета и поменять музыку… то знайте, что проект реализован, мечты сбываются.

Придай своим волосам больше возможностей

Незаметно отправлять сообщения, запускать приложения, транслировать свое место положение — все это можно делать аккуратно поглаживая свои волосы — это так естественно для девушек.

Вяжи с Arduino

Чтобы вязать необязательно обращаться к бабушке или покупать профессиональное оборудование. Сделай сам робота, который вяжет, используя Arduino.

Робот BB-8 на Arduino

Проект для тех, кто мечтает сделать робота BB-8 из Звездных Войн.

О’кей Google, Сезам, открой дверь

В это проекте студент MIT реализовал открывание двери с помощью голосовой команды Google Now. Чтобы попасть в дом, нужно просто сказать: «Сезам, откройся». Видео и описание проекта .

Печатная машинка, играющая симфонию

Печатная машинка 1960 года превратилась не только в принтер, но и в музыкальный инструмент.

Робот AT-AT

Управляемый робот AT-AT из Звездных Войн.

Робот T-800 из Терминатора

В мире очень много поклонников фильма «Терминатор», но немногие воссоздали робота T-800. Подробнее почитать о проекте и посмотреть видео можно .

Робот миньон из яйца от Kinder-сюрприза

Веселый самодельный робот, которого можно сделать самому. Подробнее оп проекте .

Управление телевизором силой мысли

Пульт от телевизора больше не нужен. Все что нужно сделать — это подумать о смене канала. В проекте использован чип из игры Star Wars Force Trainer (Звездные войны), выпущенной в 2009 году. Подробнее .

Arduino/Genuino UNO — это флагманская плата для разработки собственных проектов, построения простых систем автоматики и робототехники на базе микроконтроллера ATmega328 с бесплатным программным обеспечением и открытой архитектурой. Arduino UNO R3 является сегодня самой популярной платформой для начинающих изобретателей, любителей мастерить своими руками, студентов и школьников.

Arduino UNO: распиновка платы

Что такое Arduino UNO Ch440 мы уже рассказывали, поэтому перейдем сразу к характеристикам и описанию платы Ардуино УНО. Распиновка и принципиальная схема платформы представлена на фото далее. Как мы уже говорили, вся линейка плат имеет полностью открытую архитектуру системы, что позволяет любому стороннему производителю копировать и модернизировать платы Arduino Genuino UNO.

Arduino UNO распиновка платы на русском, ICSP

UNO является лучшим вариантом для знакомства с микроконтроллерами. Плата имеет удобный размер и все необходимое для начала работы: 14 цифровых входов/выходов (6 портов могут работать в режиме ШИМ), 6 аналоговых входов для датчиков, разъем USB для программирования и разъем питания Arduino UNO от блока питания или кроны. Но главное — это огромное множество уроков и инструкций в Интернете.

Характеристики платы Arduino UNO

  • Микроконтроллер: ATmega328
  • Тактовая частота: 16 МГц
  • Напряжение логических уровней: 5 В
  • Входное напряжение питания: 7–12 В
  • Портов ввода-вывода общего назначения: 20
  • Максимальный ток с порта ввода-вывода: 40 мА
  • Максимальный выходной ток порта 3.3 В: 50 мА
  • Максимальный выходной ток порта 5 В: 800 мА
  • Портов с поддержкой ШИМ: 6
  • Портов, подключённых к АЦП: 6
  • Разрядность АЦП: 10 бит
  • Flash-память: 32 КБ
  • EEPROM-память: 1 КБ
  • Оперативная память: 2 КБ
  • Габариты: 69×53 мм

Arduino UNO: схема электрическая


Arduino UNO: порты ввода вывода, питание

Рабочее напряжение — 5 В при подключении через USB с любых устройств (компьютер, ноутбук, зарядка от смартфона и т.д.). При одновременном подключении внешнего адаптера (аккумулятора, кроны, блока питания), питание автоматически переключается, но плату можно по-прежнему программировать через компьютер. Рекомендуемое питание Arduino Uno от батареек или аккумулятора от 7 до 12 В.


Arduino UNO: питание от внешнего источника

5V – на пин Ардуино подает 5В, его можно использовать для питания устройств
3.3V – на пин подается напряжение 3.3В от внутреннего стабилизатора
GND – вывод земли
VIN – пин для подачи внешнего напряжения
IREF – пин для информирования о рабочем напряжении платы

Можно питание на микроконтроллер подать через порт VIN с помощью проводов. «Плюс» от внешнего источника подается на порт VIN, а «Минус» на GND (заземление). Подача внешнего напряжения 5 Вольт на пин 5V не допустимо, так как питание Genuino Arduino Uno обходит стороной стабилизатор, что может привести к поломке. Все цифровые порты на плате выдают стабилизированное напряжение в 5 Вольт.

Arduino UNO: прошивка, память



Программирование платы происходит в бесплатной среде Arduino IDE на русском , которую можно скачать на официальном сайте. Для подключения устройств и модулей используются коннекторы («папа-папа» и «папа-мама»), которые подключаются к портам Ардуино. Чтобы начать работать с платформой, перейдите в раздел Arduino uno r3 «Уроки для начинающих » , где представлены подробные инструкции с примерами.

Плата поддерживает три типа памяти:

Flash – память объемом 32 кБ, используется для хранения программы. Когда контроллер прошивается скетчем через USB, он записывается именно во Flash – память. Чтобы очистить память Arduino UNO следует загрузить пустой скетч.

SRAM память — это оперативная память Ардуино объемом 2 кБ. Здесь хранятся переменные и объекты, создаваемые в скетче. SRAM память энерго-зависимая, при отключении источника питания от платы, все данные удалятся.

EEPROM — это энергонезависимая память объемом 1кБ. Сюда можно записывать данные, которые при выключении питания не исчезнут. Минус EEPROM в ограничении циклов перезаписи — 100 000 раз по утверждениям производителя.

Описание Ардуино УНО на русском

Рекомендуем вам ознакомиться с другими платами из линейки Arduino-Genuino, например, аналог самой популярной платы UNO — RobotDyn UNO R3 от китайского производителя. Плата по своим характеристикам ничем не уступает официальному производителю, но при этом имеет более демократичную цену и ряд преимуществ. Таких как, более удобный USB-разъем и большее количество аналоговых входов.

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

В основе этого электронного конструктора лежит аппаратная платформа для ввода и вывода, которая программируется на языке Processing/Wiring , созданном на базе C++. Из каких компонентов состоит Arduino, что можно сделать с его помощью и как научиться обращаться с этим умным чипом?

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

Arduino подкупает своей универсальностью. Используя специальные расширяющие платы, этот контроллер может взаимодействовать с другими девайсами посредством Bluetooth, Wi-Fi, GPRS, осуществлять и принимать телефонные звонки и СМС.

Контроллер является не простой микросхемой, а платой, где реализована готовая схема питания и интерфейсы для присоединения к ПК, входные и выходные разъемы.

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

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

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

Проекты на Arduino: что можно сделать

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

Регулятор температуры в доме

Реализовать такой проект можно с использованием нескольких плат Arduino Nano и одной Arduino Uno/Mega, которая будет выступать в роли базы. Связь между модулями можно реализовать с помощью NRF24L01 – модуля радиосвязи, который дает возможность объединять до 6 плат.

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

Показатели с Arduino Nano будут передаваться на базу, в роли которой выступает Arduino Mega или Uno. К ней также необходимо присоединить приемник сигнала NRF24L01, источник питания и дисплей LCD для отображения текстовой информации. Располагать «базу» необходимо в непосредственной близости от системы отопления. Принимая и обрабатывая поступающие данные о влажности и температуре, база будет передавать системе отопления команды и повышении или понижении температуры.

ЧПУ-станок

Эта идея является одной из самых сложных в реализации. С помощью Arduino Mega вы сможете реализовать не только ЧПУ-станок, но и 3D принтер. Помимо самой платы, вам необходимы будут драйверы двигателей L298N, а также сами двигатели. Остальная часть работы – это рама и разработка программного кода.

Smart-теплица

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

Используя всего одну плату Arduino Mega и контроллер DHT22, вы сможете фиксировать и выводить на экран информацию о температуре в теплице, а также передавать команды на запуск полива, управление моторами для открытия и закрытия дверей.

Роботы

Роботы – лучшая игрушка не только для детей, но и для взрослых, особенно, когда имеется возможность ими управлять. Используя Arduino и различные подручные материалы, вы сможете сделать робота в любой конфигурации: от наиболее примитивных до сложных моделей.

Например, с помощью ультразвукового дальномера HC-SR04 ваш робот сможет фиксировать расстояние до препятствий и огибать их при движении. Применив драйвер двигателей L293D, вы получите в свое распоряжение 3 сервопривода и 4 двигателя. С помощью модуля HC-06 у вас появится возможность управлять своим детищем по Bluetooth через смартфон.

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

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

Как это реализовать?

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

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

Автоматическое управление температурой дома


По порядку: Arduino Nano, Arduino Uno и NRF24L01


Я не хотел называть этот пункт как «умный» дом, ведь эта идея заключается только в управлении температурой. Я бы реализовал эту идею с помощью нескольких Arduino Nano и одной Arduino Mega/Uno. Связь между ними будет осуществляться с помощью модуля радиосвязи NRF24L01. Этот модуль позволяет связывать между собой до шести Arduino.

Arduino Nano будет заключена в небольшой корпус вместе датчиком температуры и влажности DHT22, модулем радиосвязи NRF24L01 и источником питания — батарейкой, например. Несколько таких маленьких коробочек будут размещены по всему дому.


DHT2 и текстовый LCD дисплей


Данные с Arduino Nano будут приниматься «базой», которой является Arduino Uno или Mega, заключенная в большой корпус вместе с NRF24L01 (в качестве приемника), текстовым LCD-дисплеем и источником питания (батарейка). Все это будет находиться возле системы отопления. «База» сможет принимать и обрабатывать данные о температуре и в зависимости от значения этих данных, будет посылаться команда системе отопления — повысить или понизить температуру.

«Умная» теплица


Пример готового решения.


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


По порядку: Arduino Mega, DHT22 и текстовый LCD дисплей.


Одна Arduino способна контролировать температуру теплицы (с помощью того же датчика DHT22), выводить нужную информацию на LCD дисплей, подавать команду на открытие крана для подачи воды, а также управлять моторами для открытия и закрытия дверей.

ЧПУ станок


По порядку: Arduino Mega, L298N и шаговый двигатель.


Сюда же можно отнести и 3D принтеры. В интернете есть множество способов сделать ЧПУ станок на базе Arduino. Не все из них рабочие, но хорошие варианты точно найдутся. Из «железа» вам потребуется Arduino, желательно Mega, а также драйвер двигателей L298N и, естественно, сами двигатели. Все остальное — это рама и программный код. Должен заметить, что это одна из самых сложных идей в плане реализации.

Роботы


Пример готового решения.


Несомненно, роботы очень нравятся детям, особенно те, которыми они сами могут управлять. С помощью Arduino, роботов можно сделать даже из подручных материалов. Когда-то я рассматривал идею сделать робота в корпусе от пылесоса, который был очень похож на астромеханического дроида из «Звездных войн».

По порядку: HC-SR04, L293D, HC-06 и NRF24L01


Ультразвуковой дальномер HC-SR04 может определять расстояние до препятствий, чтобы в последствии их обогнуть. Драйвер двигателей L293D, который используется как плата расширения, способен управлять сразу четырьмя двигателями и тремя сервоприводами. В плане связи, мы не сильно ограничены. Можно использовать bluetooth-модуль HC-06, что позволит управлять вашим детищем со смартфона, но не может похвастаться хорошей дальностью связи, что не скажешь о уже известном модуле радиосвязи NRF24L01. Однако, тогда у вас пропадет возможность управления со смартфона.


Аккумуляторы 18650


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

Итог

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

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

Arduino — это маленькое электронное устройство, состоящее из одной печатной платы, которое способно управлять разными датчиками, электродвигателями, освещением, передавать и принимать данные… Arduino — это целое семейство устройств разных размеров и возможностей. А также это целый зоопарк клонов Ардуино и мир ардуино-совместимых устройств. Но давайте обо всём по порядку.

1

«Мозг» Arduino

«Мозг» Arduino — это микроконтроллер семейства Atmega . Микроконтроллер представляет из себя микропроцессор с памятью и различными периферийными устройствами, реализованный на одной микросхеме. Фактически это однокристальный микрокомпьютер, который способен выполнять относительно простые задачи. Разные модели из семейства Arduino оснащены разными микроконтроллерами.

Atmega328 — мозг Arduino UNO

На фото микроконтроллер Atmega328 . Такие микроконтроллеры стоят на Arduino UNO и Arduino Nano (но в другом корпусе).

2

«Руки» Arduino

Но какой толк от мозга, если он не имеет рук? Руками в данном случае служат электрические выводы , размещённые по периметру платы Arduino. Есть платы с большим количеством выводов, есть с меньшим. Например, самая большая плата в семействе Ардуино — Arduino Mega — имеет более 70 независимых выводов, а самая маленькая — Arduino Pro Mini — всего 22 вывода.


На фотографии показаны в сравнении Arduino Mega и Arduino Pro Mini. Представляете, что мог бы делать человек, имея столько рук, сколько Arduino Mega — выводов?

3

Цифровые и аналоговые выводы

Не все выводы у Arduino одинаковые. Есть выводы цифровые , а есть аналоговые . Принципиальная разница между ними в том, что на цифровых выводах может быть только два значения: либо логическая «1» (TRUE, от 3 до 5 вольт), либо логический «0» (FALSE, от 0 до 1,5 вольт), а на аналоговых выводах диапазон от логической «1» до «0» поделён на множество мелких участков.

Зачем это нужно? Давайте рассмотрим такой наглядный пример. Если подключить к цифровому выводу Arduino светодиод и подать на вывод логическую «1», то светодиод загорится с максимальной яркостью; если подать «0» — светодиод погаснет. Никаких промежуточных вариантов нет. Если светодиод подключить к аналоговому выводу, то яркостью светодиода можно управлять плавно. На практике к аналоговым выводам чаще всего подключаются какие-либо аналоговые датчики.

4

Чем может управлять Arduino

В итоге такое количество «рук» у Arduino позволяет подключать к нему огромное количество различных периферийных устройств. Среди них, например:

  • кнопки, герконы и джойстики,
  • светодиоды и фотодиоды,
  • микрофоны и динамики,
  • электродвигатели и сервоприводы,
  • ЖК дисплеи,
  • считыватели радиометок (RFID и NFC),
  • bluetooth, WiFi и Ethernet модули,
  • считыватели SD карт,
  • радиоприёмники и радиопередатчики,
  • GPS и GSM модули…

А также десятки различных датчиков:

  • освещённости,
  • магнитного поля,
  • ультразвуковые и лазерные дальномеры,
  • гироскопы и акселерометры,
  • датчики дыма и состава воздуха,
  • датчики давления, температуры и влажности…

И ещё многое, многое другое

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


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

5

Общение с Arduino

Как же процессор узнаёт, что именно ему следует делать? Вы должны рассказать ему это. Написание сообщений для Arduino называется программирование . Существует язык для общения с микроконтроллером, упрощённый и адаптированный специально для Arduino. Освоить этот язык совсем не сложно при желании и определённой настойчивости, даже если вы никогда раньше не программировали.

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

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

Вы можете заказать Arduino и множество разнообразных датчиков для него в китайском онлайн-магазине Али-Экспресс . Здесь цены ниже, но доставка занимает время от 3 недель до 1,5 месяцев. Можно заказать Arduino в магазине электроники Voltiq.ru . Здесь цены чуть выше, чем в китайских интернет-магазинах, но не придётся ждать целый месяц. Ещё один хороший магазин электроники и робототехники — FastNVR.ru .

Ну и напоследок, посмотрите, какие разные и замечательные проекты можно воплотить с помощью Ардуино!

Набор-конструктор для сборки «умной» машинки на Arduino.

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

Покупать можно, хотя набор и не без недостатков.

Подробнее под катом.


Да, тем кто не в курсе, что такое Arduino, рекомендую почитать сдесь, а также заглянуть сюда.

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

Это не самое выгодное предложение на Али, но самое недорогое, которое было на тот момент с возможностью доставки почтой Сингапура(быстрее доставка).

О нелегкой судьбе посылки

Оформлен заказ был 22.07.2013г., прибыло в почтовое отделение 14.08.2013г.

Это моя первая посылка, которая пришла в таком состоянии:

Хотя продавец не поскупился на «пупырку», это не спасло некоторые детали воздействия почты России — сломалась одна из пластиковых площадок для крепления электроники:

Ну не беда, клей в доме есть.

На пластиковые площадки наклеена бумага, чтобы они не царапались при транспортировке.

В комплекте присутствовало всё, что было указано в описании лота:

— два мотора с редукторами,
— пара колес,
— ролик (типа мебельного, только маленький),
— две пластиковых площадки,
— сервопривод,
— поворотный кронштейн для крепления датчика расстояния,
— набор латунных стоек и винтиков-гаечек,
— ультразвуковой датчик расстояния,
— электронная плата управления двигателями,
— маленькая макетная плата,
— держатель для 6 батарей формата АА,
— держатель для батареи типа «Крона»,
— плата с микроконтроллером, Arduino-совместимая Funduino. Версия Duemilanove с небольшими доработками.
— интерфейсный USB-кабель для подключения к ПК,
— комплект соединительных проводков типа мама-мама.

Вот полезное содержимое посылки, нет только поломанной верхней площадки:

При сборке мне дополнительно понадобилось около десятка проводков типа папа-мама.

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

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

Качество изготовления электронных компонентов особых нареканий не вызывает, качество скажем так «хорошее китайское».

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

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

Также пришлось подрезать-подточить пластиковую крестовину крепления сервопривода (думаю сервопривод тоже должен быть другой модели).

Но все эти недостатки не мешают собрать вполне работоспособное устройство.

Идущие в комплекте держатели для батареек я использовать не стал — запитал всю схему от пары литиевых аккумуляторов типа 18650. Также добавил в схему вольтметр и кнопку запуска программы.
Вот что получилось в итоге:

Еще немного фото

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

Плата управления двигателями.
УЗ-сенсор.
Сервопривод.

Алгоритм работы машинки простой:

— едем вперед, УЗ-сенсор отслеживает расстояние до препятствия,
— если препятствие близко останавливаемся и отъезжаем назад,
— вертим УЗ-сенсором по сторонам и определяем где до препятствий наибольшее расстояние,
— разворачиваемся в ту сторону и едем,
— все повторяется.

Несмотря на то, что после сборки остались лишние винтики все работает. Вот видео с демонстрацией работы устройства:

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

В общем игрушкой я доволен, мозг размял и вообще.

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

Ссылка на скетч (программу для контроллера) — вот.

Благодарю за внимание.

IRJET-Запрошенная вами страница не найдена на нашем сайте Март 2022 г. Выполняется публикация…

Просмотр статей


IRJET Получен «Импакт-фактор научного журнала: 7,529» за 2020 год.

Подтвердить здесь Система управления качеством.


IRJET приглашает статьи из различных технических и научных дисциплин для тома 9, выпуск 4 (апрель 2022 г.) Документы


IRJET Получил «Импакт-фактор научного журнала: 7,529» за 2020 год.

Подтвердить здесь


IRJET Получил сертификат о регистрации ISO 9001:2008 для своей системы управления качеством.


IRJET приглашает статьи из различных технических и научных дисциплин для тома 9, выпуск 4 (апрель 2022 г.) Документы


IRJET Получил «Импакт-фактор научного журнала: 7,529» за 2020 год.

Подтвердить здесь


IRJET Получил сертификат о регистрации ISO 9001:2008 для своей системы управления качеством.


IRJET приглашает статьи из различных технических и научных дисциплин для тома 9, выпуск 4 (апрель 2022 г.) Документы


IRJET Получил «Импакт-фактор научного журнала: 7,529» за 2020 год.

Подтвердить здесь


IRJET Получил сертификат о регистрации ISO 9001:2008 для своей системы управления качеством.


IRJET приглашает статьи из различных технических и научных дисциплин для тома 9, выпуск 4 (апрель 2022 г.) Документы


IRJET Получил «Импакт-фактор научного журнала: 7,529» за 2020 год.

Подтвердить здесь


IRJET Получил сертификат о регистрации ISO 9001:2008 для своей системы управления качеством.


IRJET приглашает статьи из различных технических и научных дисциплин для тома 9, выпуск 4 (апрель 2022 г.) Документы


IRJET Получил «Импакт-фактор научного журнала: 7,529» за 2020 год.

Подтвердить здесь


IRJET Получил сертификат о регистрации ISO 9001:2008 для своей системы управления качеством.


IRJET приглашает статьи из различных технических и научных дисциплин для тома 9, выпуск 4 (апрель 2022 г.) Документы


IRJET Получил «Импакт-фактор научного журнала: 7,529» за 2020 год.

Подтвердить здесь


IRJET Получил сертификат о регистрации ISO 9001:2008 для своей системы управления качеством.


IRJET приглашает статьи из различных технических и научных дисциплин для тома 9, выпуск 4 (апрель 2022 г.) Документы


IRJET Получил «Импакт-фактор научного журнала: 7,529» за 2020 год.

Подтвердить здесь


IRJET Получил сертификат о регистрации ISO 9001:2008 для своей системы управления качеством.


Построение конечного автомата | Потрясающий слайдер

В моем последнем значительном проекте Arduino я столкнулся с концепцией конечного автомата. У меня не было времени вникать в это тогда, но когда я начал думать о программном обеспечении для этого слайдера, это снова пришло мне в голову, и я решил исследовать.

Что такое конечный автомат?

Перефразируя из Википедии:

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

Когда мы думаем о полезных машинах — вещах, которые что-то делают, это минимальное определение можно немного расширить. В частности, в каждом состоянии есть какой-то выход: мигает свет, крутится двигатель или регистрируется сообщение об ошибке.Вот описание с большим акцентом на аппаратное обеспечение из State Machines и Arduino:

.

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

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

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

Почему это полезно?

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

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

Упрощает обработку событий

Из конечного автомата UML — Википедия:

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

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

Заставляет вас решить большинство проблем, прежде чем писать какой-либо код

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

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

Рисование схемы конечного автомата

Для рисования диаграмм я использовал превосходную программу Omnigraffle. Обратите внимание, что это не блок-схемы.Есть несколько ресурсов (см. ниже), которые подробно рассказывают о том, как нарисовать синтаксически правильную диаграмму, даже некоторые специальные программы для моделирования, но меня больше всего интересовало правильное понимание основ, захват:

  • Все возможные состояния
  • Все соответствующие события, которые могут произойти в каждом состоянии, и какие переходы они вызывают в другие состояния

Вот моя первая грубая попытка:

После нескольких часов работы я получил нечто более полное и с пугающим количеством стрелок.

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

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

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

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

Упрощение

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

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

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

К тому времени, когда я это понял, я написал весь код для сложной версии. Однако это был полезный урок сложности: по мере добавления состояний в конечный автомат сложность возрастает нелинейно; и может быстро выйти из-под контроля.Я также смог глубже изучить библиотеку степперов, которую использую. И было круто наблюдать, как машина калибрует себя; так что мне немного грустно видеть, что это происходит.

Я разместил старый — сложный — код в репозитории на случай, если кому-то интересно: fab-slider/arduino-code/old-complex-state-machine at master · andrewsleigh/fab-slider · GitHub

Леса код

Код для обработки этого в Arduino очень прост. Во-первых, настройте перечисление для хранения всех возможных состояний:

  перечисление возможных состояний {
  В ЭТОМ,
  ТРАВЕРС,
  ПРЕРЫВАНИЕ
};
  

Затем создайте переменную этого типа для отслеживания текущего состояния:

  перечисление возможных состояний текущее состояние;
  

Затем в вашей основной функции loop() используйте оператор switch для управления потоком через состояния:

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

  случай ТРАВЕРС:
    // перемещаем ползунок с любыми параметрами, установленными пользователем
    // больше не получать входные данные от пользовательских элементов управления
    // остановимся и отступим, когда дойдем до конечной остановки

    перерыв;

  случай ПРЕРЫВАНИЕ:
    // остановить двигатель, вывести сообщения об ошибках

    перерыв;
}
  

Дальнейшее чтение

Вот некоторые ресурсы, которые я считаю полезными

Теория конечных автоматов

На схемах

На машинах состояний в Arduino

Следующие шаги

Еще кое-что, о чем я хочу поговорить в ближайшее время:

Умный торговый автомат для кофе

с использованием Arduino

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

Мы можем использовать этот проект для демонстрации инженерных проектов для студентов, изучающих электронику, электротехнику, а также в офисах.

Кофе — второй по популярности напиток в мире и один из старейших напитков мира. Согласно Википедии, каждый день во всем мире выпивается более 2 миллиардов чашек кофе. Как инженеры или работающие профессионалы, мы все знаем, как важен для нас кофе. Хороший кофе делает наш день лучше и освежает настроение. Исследования показывают, что любители кофе, как правило, живут дольше, но при умеренном потреблении кофе. А приготовление хорошего кофе — одна из самых искусных работ и трудоемких процессов, ведь мы хотим, чтобы кофе был готов за считанные минуты.Теперь вот наш проект подходит к картине, этот умный торговый автомат для кофе может приготовить хороший кофе за пару минут. Существуют различные вкусы кофе, и наш умный торговый автомат может предоставить нам 4 различных вкуса, которые наиболее популярны, такие как латте, капучино, эспрессо и кофе мокко. Вот видео-демонстрация этого проекта:

Программное обеспечение для установки:

Поскольку мы собираемся разработать этот проект с использованием Proteus Simulation вместо использования реальных компонентов.Как и в симуляции, мы можем выяснить проблему, которая может возникнуть при работе с реальными компонентами и которая может повредить наши компоненты.

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

Итак, мы должны установить библиотеки, которые мы собираемся использовать в этом проекте:

  • Библиотека Arduino для Proteus: мы должны добавить платы Arduino в список компонентов Proteus.
  • ЖК-библиотека для Proteus: мы должны добавить ЖК-модуль в Proteus Suite.

Вы можете загрузить весь этот проект, например Proteus Simulation и Arduino Code, нажав кнопку ниже

Скачать умный торговый автомат для кофе с помощью Arduino

Торговый автомат для интеллектуального кофе с использованием Arduino

Это необходимые компоненты для торгового автомата для интеллектуального кофе, а именно:

  • ЖК-дисплей 20X4: он используется для отображения сообщений, связанных с пользователем, таких как состояние торгового автомата.
  • Arduino UNO: Он используется в качестве мозга нашего проекта. Все операции и принятие решений будут осуществляться с помощью этого микроконтроллера.
  • Двигатель постоянного тока: Используется для дозирования ингредиентов кофе и миксера.
  • Кнопки: используется как вариант взаимодействия с пользователем.

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

Мы подключили ЖК-дисплей с помощью расширителя I2C GPIO, поскольку у нас есть ограничения на контакты GPIO для подключения других периферийных устройств к Arduino UNO. Расширителю I2C Gpio требуется только два контакта, поскольку мы знаем, что I2C использует контакты SCL (последовательные часы) и SDA (последовательные данные) для связи.

Необходимые компоненты:
  1. Arduino UNO
  2. ЖК-дисплей
  3. 4 кнопки
  4. 8 двигателей
  5. PCF8574

Подробная информация о компонентах

Arduino UNO:

Мы можем использовать любую макетную плату Arduino, но в этом проекте мы использовали плату Arduino UNO.

  • Arduino UNO — одна из программируемых плат микроконтроллеров с открытым исходным кодом семейства Arduino.
  • Он содержит микроконтроллер Atmel Microchip ATMega328 или ATMega328P с 8-разрядным процессорным ядром RISC Гарвардской архитектуры и флэш-памятью объемом 32 КБ.
  • Arduino UNO включает в себя 14 контактов цифрового ввода/вывода, из которых 6 также являются контактами PWM, и 6 контактов аналогового ввода/вывода с разрешением 10 бит (0-1024).
  • Arduino UNO имеет только 1 аппаратный вывод UART (но мы можем использовать и другие выводы для связи UART, используя библиотеку SoftwareSerial в Arduino), 1 I2C и 1 SPI.

PCF8574:

Мы использовали эту микросхему в качестве расширителя GPIO для нашего проекта, поскольку у нас есть ограничения на доступность контактов GPIO в Arduino UNO.

  • Это 8-разрядный модуль ввода-вывода, кремниевый расширитель CMOS GPIO.
  • Его можно использовать для записи данных на контакты, а также для чтения данных с этих контактов.
  • Он использует протокол I2C для связи с ведущим устройством.
  • Поскольку мы знаем, что протокол I2C использует адрес ведомого устройства для отправки или получения данных от ведомого устройства, для этого он имеет 3 контакта A0, A1, A2 для установки адреса ведомого устройства.

  • Адрес подчиненного устройства для PCF8574 начинается с 0x20 до 0x27. Это означает, что мы можем добавить только 8 микросхем PCF8574 непосредственно к главному контроллеру.
  • На следующем изображении поясняется логика подчиненного адреса PCF8574.

  • Используется для подключения LCD модуля к Arduino UNO в нашем проекте.
  • Если вы хотите узнать больше об микросхеме PCF8574, вы можете обратиться к техническому описанию по следующему адресу: PCF8574 Техническое описание

ЖК-дисплей

ЖК-дисплей используется для отображения сообщений, связанных с пользователем, в этом проекте.

  • ЖК-дисплей представляет собой сокращенную форму жидкокристаллического дисплея, который в основном построен с использованием жидкокристаллической технологии.
  • Доступны ЖК-дисплеи разных размеров, в этом проекте мы использовали размер 20X4.
  • Здесь 20X4 означает, что одновременно может отображаться 80 символов ASCII.
  • На ЖК-дисплее 16 контактов. Мы не будем использовать каждый контакт ЖК-дисплея в этом проекте.
  • Он имеет 8 контактов данных, 1 контакт выбора чтения/записи, 1 контакт режима регистрации, 1 контакт включения, 2 контакта для подсветки и 2 контакта для питания, 1 контакт управления контрастом.
  • В ЖК-дисплее в основном есть два типа регистров: регистр команд и регистр данных.
  • Когда мы устанавливаем контакт RS (выбор регистра) в высокий логический уровень, он выбирает режим регистра данных, а в низком логическом режиме он выбирает регистр команд.
  • Для отображения данных на ЖК-дисплее мы установим вывод RS в высокий логический уровень.

Моделирование Proteus торгового автомата Smart Coffee:

Теперь пришло время приступить к разработке Proteus Simulation нашего торгового автомата Smart Coffee.

  • Самое главное, убедитесь, что Proteus установлен на вашем ПК, и заранее скачайте все необходимые библиотеки для Proteus.
  • Для этого проекта нам понадобятся библиотеки модулей Arduino и LCD.
  • Убедитесь, что вы прочитали о том, как использовать библиотеки в программном обеспечении Proteus.

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

  • Нам нужны следующие компоненты, поэтому выберите их все из библиотеки компонентов Proteus.

Принципиальная схема и работа:
  • Теперь давайте спроектируем нашу схему, сначала разместим все выбранные компоненты в Proteus Workplace, как показано на рисунке ниже:

  • 13
  • 13 ЖК-модуль и PCF8574, так как мы используем только 4-контактный режим ЖК-дисплея.
  • После этого мы запустим соединения I2C расширителя GPIO PCF8574, подключим контакты SDA, SCL PCF8574 к контактам SDA, SCL Arduino UNO, которые являются контактами A4, A5 макетной платы.
  • Как мы знаем, мы должны установить адрес ведомого устройства PCF8574, используя контакты A0, A1, A2. И в этом проекте мы собираемся использовать подчиненный адрес 0x20, поэтому для этого нам нужно соединить все контакты с землей. (Как мы уже видели на приведенном выше изображении адресации PCF8574)
    • На следующем этапе мы собираемся подключить кнопки к цифровым контактам D2, D3, D4, D5 Arduino как «Латте», «Капучино». , «Эспрессо», «Кафе Мокко» соответственно, а еще одна клемма кнопок подключена к земле.Поскольку мы собираемся использовать кнопки в неактивном низком состоянии, это означает, что когда мы нажимаем кнопку, она дает нам логическое состояние LOW.
    • У вас может возникнуть сомнение, почему мы не использовали резисторы PULL-UP с кнопками, потому что мы будем обрабатывать это в нашем коде. Arduino UNO поставляется с внутренним подтягивающим резистором номиналом 20-50 кОм.
    • Теперь подключите двигатели постоянного тока для каждого контейнера, двигатели контейнеров для воды, кофе и сахара подключены к цифровым контактам D10, D12, D11 Arduino соответственно.Подключите двигатели подачи кофе для каждого типа латте, капучино, эспрессо, кафе мокко с помощью цифровых контактов D6, D7, D8, D9 соответственно. И, наконец, подключите микшер к контакту D13.
    • Поскольку мы в основном завершили монтажную часть, первое, в чем мы должны убедиться, прежде чем приступить к моделированию, это то, что все компоненты должны иметь достаточное питание и заземление. И земля должна быть общей во всей цепи.

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

    Код Arduino для умного кофейного автомата

    Если вы уже знаете о синтаксисе и структуре скетча Arduino, это хорошо, но если вы еще не ознакомились, не беспокойтесь, мы объясним это вам шаг за шагом.

    Язык кодирования Arduino в основном соответствует синтаксису и структуре языка программирования C++, поэтому, если вы знакомы с C++, то для вас будет проще простого понять код, но все же, если у вас нет каких-либо базовых знаний , вам не о чем беспокоиться, мы прикроем вашу спину.

    Кодирование Arduino имеет строгую структуру, состоящую в основном из двух разделов. мы должны написать наш код в этих двух функциях.

    Поскольку мы собираемся объяснять код Arduino, будет легко понять, если вы уже открыли код в Arduino IDE.

    Код объявления:
    • Когда мы начнем наш код, мы сначала включим все необходимые библиотеки, которые мы собираемся использовать в этом проекте.
    • Таким образом, нашим первым шагом будет загрузка необходимых библиотек, если они еще не предустановлены в Arduino IDE.
    • В основном мы будем использовать только две библиотеки, одну для ЖК-дисплея, а другую для связи I2C.
    • И функции, связанные с I2C, входят в библиотеку Wire, которая будет предварительно установлена ​​в Arduino ID, нам не нужно устанавливать ее явно.
    • Для ЖК-модуля мы будем использовать библиотеку Liquid Crystal_I2C, которую необходимо установить.
    • Мы можем установить библиотеки, связанные с Arduino, из Arduino IDE, выбрав «Sketch > Include Library > Manage Library» .Теперь в менеджере библиотек мы можем искать нужные нам библиотеки. Мы также можем установить библиотеки с помощью zip-файлов.

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

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

    • Вы, должно быть, сомневаетесь, почему мы не определили контакты для I2C.
    • Поскольку эти контакты предопределены в библиотеке Wire, мы не можем назначить какие-либо другие контакты для связи I2C.
    • Теперь мы определим и объявим все переменные, которые требуются в нашем проекте.
    • Существует массив цен на кофе размером 4, так как мы предоставим только 4 вида кофе и переменную строкового типа для хранения названий вкусов кофе.

    Функция Arduino Setup():

    В этой функции Arduino Setup() мы напишем раздел кода, который будет выполняться только один раз.

    • Итак, в основном мы будем писать объявления, определять тип контактов и инициализировать периферийные устройства, такие как ЖК-модуль.
    • Мы хотим принимать пользовательский ввод с кнопок, поэтому мы объявим их как тип INPUT.
    • Мы не подключали резисторы PULL UP в кнопках, как вы читали выше, мы обработаем это в коде, поэтому мы объявили его как режим INPUT_PULLUP.
    •  Мы объявили выводы двигателя режимом OUTPUT, потому что хотим управлять двигателями.

    • После этого мы инициализируем ЖК-модуль, затем включим подсветку ЖК-дисплея, установим курсор на индекс 0,0 и с помощью ‘lcd.print()’, напечатаем приветственное сообщение. на ЖК-модуле.
    • В функции setCursor первый аргумент используется для оси X, а второй аргумент — для оси Y.
    • Будет отображаться приветственное сообщение в течение 1 секунды, так как мы дали задержку в 1000 миллисекунд после очистки дисплея.

    Функция Arduino Loop():

    Функция Arduino Loop запускается после функции «void setup()» .

    • В этом разделе мы напишем код, необходимый для работы в непрерывном цикле. Поэтому мы напишем наш основной код приложения здесь.
    • Итак, когда код достигает секции пустого цикла, сначала мы отобразим вкус и цену кофе на ЖК-дисплее, поскольку мы хотим показать пользователю, какой тип кофе готовит наш торговый автомат, и цену каждого из них по отдельности.

    >> Теперь напишем секцию для чтения пользовательского ввода с кнопок. Поскольку мы установили, что условие будет истинным, когда кнопка будет в логическом НИЗКОМ состоянии.

    >> Теперь, когда пользователь нажмет кнопку, состояние вывода кнопки будет изменено на логическое НИЗКОЕ состояние, и тогда наше условие «если» будет истинным, а код и наша операция войдут в состояние «если». раздел «условия».

    >> Здесь мы покажем пользователю текущую стадию процесса приготовления кофе.Итак, мы очистим ЖК-дисплей, а затем установим курсор на индекс 0,0. После этого мы выведем сообщение о сборе ингредиентов.

    • Поскольку мы не очистили дисплей, на нем будет отображаться то же сообщение.
    • После задержки в 1 секунду мы запустим мотор контейнера для воды, чтобы налить воду на 2 секунды.
    • После этого мы установим штифт контейнера для воды в положение НИЗКИЙ, а штифт мотора контейнера для сахара — в ВЫСОКИЙ на 2 секунды, аналогично для штифта контейнера для кофе.

    • Теперь мы запустим мотор для выбранного вкуса кофе на 2 секунды, а затем остановим его.
    • Поскольку сейчас готовится выбранный нами кофе, мы отобразим соответствующее сообщение.
    • Чтобы отобразить любое новое сообщение, мы должны очистить наш дисплей от ранее занятого текста.

    • Теперь запустим мотор миксера на 10 секунд, чтобы смешать все высыпанные ингредиенты.

    >> Теперь наш выбранный кофе готов.Таким образом, мы очистим ЖК-дисплей и установим курсор, и напечатаем сообщение о приготовленном кофе с его ценой.

    Результаты/Работа:
    • Ниже представлена ​​блок-схема кофейного автомата:

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

    • Теперь он будет отображать тип кофе как «Латте», «Капучино», «Эспрессо», «Кафе Мокко» и соответствующие цены.

    • Предположим, пользователь сегодня хочет выпить латте, поэтому он нажмет кнопку для того же, после чего начнется наш процесс приготовления кофе.
    • На первом ЖК-дисплее появится сообщение «Подождите, идет сбор ингредиентов», и он будет ждать 1 секунду.

    • После этого он начнет лить воду на 2 секунды, затем остановит этот мотор.
    • После этого он начнет сыпать сахар на 2 секунды, затем остановит мотор.
    • Наконец, он начнет наливать кофе в течение 2 секунд, затем остановит этот мотор.
    • Запустится двигатель выбранного типа кофе, чтобы разлить кофе в контейнер, а затем он будет ждать 1 секунду.
    • Теперь на ЖК-дисплее будет отображаться сообщение о приготовлении кофе: «Подождите, ваш насыщенный латте готовится…», поскольку пользователь выбрал латте, поэтому отображается «Латте готовится…».

    • Теперь мы запустим миксер, чтобы смешать все ингредиенты в течение 10 секунд.
    • Мы снова очистим ЖК-дисплей, чтобы отобразить сообщение о приготовленном кофе: «Ваш насыщенный латте готов. Пожалуйста, соберите свою сумму — 5/-».

    • Затем ждет 5 секунд, очищает дисплей и снова показывает цену и доступные сорта кофе.

    • Поскольку Proteus требует шестнадцатеричный файл кода для запуска моделирования.
    • Итак, для этого откройте Arduino IDE и проверьте свой код, прежде чем создавать шестнадцатеричный файл, нажав кнопку «Проверить», чтобы исправить любые ошибки.
    • Чтобы получить шестнадцатеричный файл из Arduino IDE, нажмите «Sketch > Export Compiled Binary».
    • Ваш шестнадцатеричный файл будет успешно сгенерирован, теперь поместите этот шестнадцатеричный файл на плату Arduino UNO в программе Proteus.
    • Теперь все готово, пора запустить симуляцию и выпить вкусный виртуальный кофе.

    Надеюсь, вы поняли всю работу нашего проекта умного торгового автомата и вам понравилось.Я думаю, что мы объяснили почти все, но все же, если у вас есть какие-либо сомнения или улучшения, сообщите нам об этом в разделе комментариев.

    Спасибо, что уделили свое драгоценное время чтению.

    Светофор, конечный автомат с Arduino — Arduining

    Это упражнение с Arduino вдохновлено курсом:

    Встраиваемые системы — Shape The World

    Глава: Конечные автоматы

    Др.Джон Вальвано, профессор кафедры электротехники и вычислительной техники Техасского университета.

    http://users.ece.utexas.edu/~valvano/Volume1/E-Book/C10_FiniteStateMachines.htm

    — Код C был скорректирован для работы в Arduino UNO.

    — Внесены некоторые изменения в метки для лучшего понимания.

    -Большая часть времени была посвящена созданию понятных иллюстраций и диаграмм.

    Как поясняется в главе, Ojetive:

    Спроектируйте контроллер светофора для пересечения двух одинаково загруженных улиц с односторонним движением.

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

    Контроллер светофора с двумя датчиками и 6 лампами.

    Два датчика определяют наличие автомобилей в каждом направлении.

    Два светофора (красный, желтый, зеленый) для управления транспортным потоком.

    Список эвристик, описывающих работу светофора:

    — Если машины не едут, оставайтесь в ЗЕЛЁНОМ состоянии. (какая не имеет значения).

    — Чтобы изменить ЗЕЛЕНЫЙ на КРАСНЫЙ, зажгите ЖЕЛТЫЙ свет на 0,5 секунды.

    -ЗЕЛЕНЫЙ свет горит не менее 3 секунд.

    -Если машины едут только в одном направлении, двигайтесь и оставайтесь ЗЕЛЕНЫМ в этом направлении.

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

    Общая схема системы:

    Определение входов и выходов:

    Два входа от переключателей, обнаруживающих присутствие автомобилей в каждом направлении .

    Шесть выходов для управления светом (КРАСНЫЙ, ЖЕЛТЫЙ, ЗЕЛЕНЫЙ) в каждом направлении.

    Таблица переходов конечного автомата

    Определены четыре состояния:

    State O: goS    Автомобили, движущиеся в южном направлении с ЗЕЛЕНЫМ сигналом, в западном направлении с КРАСНЫМ сигналом.

    Состояние 1: ожидание Автомобили, ожидающие в южном направлении ЖЕЛТЫЙ сигнал, в западном направлении — КРАСНЫЙ сигнал.

    Состояние 2: goW    Автомобили, движущиеся в западном направлении с ЗЕЛЕНЫМ сигналом, в южном направлении с КРАСНЫМ сигналом.

    Состояние 3: ожиданиеW Автомобили, ожидающие в южном направлении ЖЕЛТЫЙ сигнал, южное направление с КРАСНЫМ сигналом.

    Каждое состояние описывается графически в следующей форме:

    Полная схема конечного автомата:

    Схема подключения к Arduino UNO:

    Это эскиз :

     /*Traffic_Light.ino 17 сентября 2015 г. Arduining.com
    Реализация контроллера светофора с использованием моделирования конечных автоматов.Использование прямого управления портом в Arduino UNO.
    Создание структуры данных в C.
    Контакты 0 и 1 порта B в качестве входов (контакты 8 и 9 Arduino):
    Контакт 8 = северный переключатель
    Контакт 9 = Восточный переключатель
    Контакты 2–7 порта D в качестве выходов (контакты 2–7 Arduino):
    Контакт 2 = северный красный свет
    Контакт 3 = северный желтый свет
    Контакт 4 = северный зеленый свет
    Контакт 5 = восточный красный свет
    Контакт 6 = восточный желтый свет
    Контакт 7 = восточный зеленый свет
    На основе: Конечные автоматыОт:  http://users.ece.utexas.edu/~valvano/Volume1/E-Book/
      */
    #define SENSORS  PINB      // определяем порт ATmega328 для чтения переключателей
    #define LIGHTS   PORTD     // определяем порт ATmega328 для управления освещением
    // Связанная структура данных
    структура состояния {
     внутренний выход;
     время;
     интервал Следующий[4];};
    typedef const struct State STyp;
    #define гоС   0
    #определить ожиданиеS 1
    #define goW   2
    #определить ожиданиеW 3
    STyp FSM[4]={
     {0x21,3000,{goS,waitS,goS,waitS}},      //Состояние 0 (goS)  идти на юг.{0x22, 500,{goW,goW,goW,goW}},       //Состояние 1 (waitS) ждать Юг.
     {0x0C,3000,{goW,goW,waitW,waitW}},    //Состояние 2 (goW)  идти на запад.
     {0x14, 500,{goS,goS,goS,goS}}}; //Состояние 3 (waitW) ожидание Запад.
    внутреннее состояние; // индекс текущего состояния
    интервал ввода;
    
    недействительная установка () {
     ДДРБ &= B11111100; // Контакты 0 и 1 порта B в качестве входов (контакты 8 и 9 Arduino)
     DDRD |= B11111100; // Контакты 2–7 порта D в качестве выходов (контакты 2–7 Arduino)
    }
    
    недействительный цикл () {
     СВЕТ = (FSM[State].Out)<<2; // установить свет
     задержка(FSM[состояние].Время);
     Вход = ДАТЧИКИ & B00000011; // считываем датчики
     Состояние = FSM[Состояние].Следующий[Ввод];
    }
    
     

     

    Будем признательны за любые комментарии, направленные на улучшение этой презентации, спасибо за посещение Arduining.com

    Нравится:

    Нравится Загрузка...

    Родственные

    Запрограммируйте Arduino с помощью конечных автоматов за 5 минут

    Вы когда-нибудь программировали Arduino? Вас когда-нибудь беспокоили сложные потоки управления, написанные на чистом C? Может быть, вы уже слышали о диаграммах состояний и конечных автоматах? В этом сообщении блога я покажу вам, как всего за 5 минут запрограммировать Arduino на основе модели с помощью YAKINDU Statechart Tools (SCT).

    Было предпринято несколько попыток запрограммировать Arduino с помощью YAKINDU SCT, как описано Марко Шолтиссеком или Рене Бекманном. Однако, когда я пытался научить программировать Arduino с помощью YAKINDU SCT в Летней школе автомобильной инженерии программного обеспечения 2016 года в Университете прикладных наук и искусств в Дортмунде, я обнаружил, что это трудно понять и внедрить без соответствующего инструментария. Поэтому я сел и реализовал поддержку Arduino для YAKINDU SCT, чтобы сгенерировать много связующего кода, необходимого для запуска конечных автоматов на Arduino.

    YAKINDU Statechart Tools для Arduino основан на Eclipse, YAKINDU Statechart Tools и Eclipse C/C++ Development Tooling (CDT). Он устанавливает исходный проект, содержащий пустую диаграмму состояний, которую вам просто нужно заполнить своими собственными идеями. Единственная часть, которую вам все еще нужно запрограммировать самостоятельно, — это связь между диаграммой состояний и оборудованием, то есть инициализация оборудования и обновление состояния оборудования в зависимости от состояния диаграммы состояний и наоборот.

    Теперь давайте взглянем на инструменты.На приведенном ниже снимке экрана вы найдете хорошо известный пример Arduino «Hello World» — мигающий светодиод — запрограммированный как диаграмма состояний. Я создал проект Arduino SCT с помощью мастера. Он открыл пустую диаграмму состояний с пустым объявлением интерфейса. Я буду использовать эту диаграмму состояний для моделирования мигающего светодиода и создания конечного автомата, работающего на плате Arduino Uno.

    Светодиод имеет два состояния: включен и выключен. Поэтому я объявляю логическую переменную на , представляющую включение и выключение со значениями true и false в интерфейсе.В диаграмме состояний я создаю два состояния On и Off . После развертывания на Arduino выполнение программы начинается с входа в диаграмму состояний через черную точку — состояние Entry , изображенное на диаграмме состояний. После входа в statechart он сразу меняет свое состояние через первый переход — это стрелка из состояния Entry в состояние On . При входе в состояние On логической переменной on присваивается значение true .Через 500 миллисекунд состояние меняется на Off , а для переменной on устанавливается значение false . Снова, еще через 500 миллисекунд, он снова переключается на On . Это продолжается и продолжается и продолжается .... пока вы не вытащите вилку из розетки.

    Как только я закончу моделирование, я, возможно, захочу смоделировать свою модель с помощью YAKINDU SCT, чтобы узнать, работает ли она так, как ожидалось. Вы найдете более подробную информацию о моделировании и симуляции в документации YAKINDU SCT. На основе этой диаграммы состояний я генерирую конечный автомат в коде C++, который выполняет диаграмму состояний на моем Arduino.Все, что мне еще нужно сделать, это соединить диаграмму состояний с оборудованием. Я делаю это, редактируя методы init() и runCycle() класса BlinkConnector :

    • В методе init() я настроил светодиод, встроенный в плату Arduino Uno. Этот метод вызывается один раз при запуске выполнения программы — аналог функции setup() в обычном скетче Arduino.
    • Метод runCycle() является аналогом функции loop() скетча Arduino.Он вызывается регулярно, один раз в каждом цикле выполнения диаграммы состояний. Здесь я установил вывод светодиода в соответствии с логической переменной диаграммы состояний на .

    Теперь я компилирую код и загружаю его на свою плату Arduino. Вот он, мигающий светодиод через пять минут!

    Хорошо, вы правы, этот пример можно реализовать на простом C и загрузить в Arduino менее чем за пять минут. Это так просто. Но можете ли вы представить усилия по разработке конечного автомата на простом C со сложностью светофора для пешеходного перехода, показанного на рисунке ниже? И даже этот пример все еще простой.Кстати, вы найдете этот пример, а также пример Blink в среде YAKINDU SCT для Arduino.

    На моих страницах GitHub вы найдете полное пошаговое руководство, начиная с установки, настройки, моделирования, симуляции, генерации кода и развертывания кода. Он также интегрирован в онлайн-справку YAKINDU Statechart Tools for Arduino.

    В настоящее время YAKINDU SCT для Arduino поддерживает только микропроцессоры ATmega 168/328, используемые, например, в широко распространенных и хорошо известных платах Arduino Uno.Кроме того, по умолчанию используется Таймер 1 микропроцессора. Если какая-то библиотека, которая вам нужна, также зависит от Таймера 1, у вас проблемы. Существуют и другие различные ограничения. Итак, в ближайшем будущем я планирую расширить инструментарий YAKINDU SCT для Arduino, чтобы он поддерживал больше реализаций таймеров и других микропроцессоров.

    Оставайтесь с нами!

    Давайте узнаем, как использовать конечный автомат с Arduino

    Как говорит Википедия:

    конечный автомат (FSM) или конечный автомат (FSA, множественное число: автоматы), конечный автомат или просто состояние машина, представляет собой математическую модель вычислений.Это абстрактная машина, которая может находиться ровно в одном из конечного числа состояний в любой момент времени. FSM может переходить из одного состояния в другое в ответ на некоторые входные данные; переход из одного состояния в другое называется переходом. Конечный автомат определяется списком его состояний, начальным состоянием и входными данными, запускающими каждый переход.

    Другими словами, FSM может быть правильным выбором во многих случаях с нашей платой разработки по ряду очень веских причин:

    • Конечные автоматы гибки
    • Простота перехода от значимой абстракции к выполнению кода
    • Низкая нагрузка на процессор
    • Простое определение достижимости состояния

    Теория, лежащая в основе этого, фантастична, но как это преобразовать в работающий эскиз Arduino ?

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

    Таким образом, мы можем сосредоточиться на том, что действительно важно для FSM: на модели!

    Среди многих видов графического моделирования будет использоваться что-то очень похожее на GRAFCET/SFC, которое очень хорошо поддается описанию последовательных операций, легко транслируемых в код (он был создан именно для этой цели). Несмотря на правила GRAFCET/SFC, эта библиотека допускает только одно активное состояние одновременно (по крайней мере, на данный момент) и поддерживаются только некоторые квалификаторы действий: N, S, R, D, L (я бы сказал, самые полезные).

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

    Это графическое представление этой простой модели автоматизации:

    Модель PedestrainLight SFC

    Чтобы познакомиться с SFC и библиотекой, попробуйте добавить дополнительную и полезную функциональность!

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

    Автомат для продажи жидкостей на базе Arduino

    Автомат по продаже жидкостей на основе системы радиочастотной идентификации (RFID). Фиксированное количество жидкости можно дозировать, проведя меткой RFID по считывателю RFID. Буквенно-цифровой ЖК-дисплей используется для отображения операций и инструкций, которым должны следовать пользователи при дозировании жидкости. Эта машина может быть внедрена в таких организациях, как больницы и колледжи (медицинские, инженерные и т. д.), чтобы обеспечить круглосуточное обслуживание клиентов без участия человека.

    Торговый автомат имеет много преимуществ и очень выгоден во многих отношениях. Некоторые примеры приведены ниже:

    1. В больницах может использоваться как автомат по продаже молока. Пациенты могут купить молоко в автомате, не выходя на рынок.
    2. В образовательных организациях некоторые магазины работают по фиксированному графику. С этой машиной вы получаете круглосуточное обслуживание.
    3. На мероприятиях/мероприятиях эту машину можно использовать для раздачи сока с разными вкусами.
    4. В сельской местности эту машину можно использовать для раздачи воды для различных целей, в том числе для питья и полива растений, для повышения производительности и качества.

    Концепция этого проекта может быть полезна любителям и дизайнерам для дальнейшего проектирования прочной механической машины. В этой статье «Сделай сам» описывается программирование и взаимодействие схемы в соответствии с рабочим прототипом без механических частей конструкции. Основные компоненты, необходимые для этого проекта, перечислены в таблице на следующей странице.Блок-схема автомата по продаже жидкостей на базе Arduino показана на рис. 1.

    Рис. 1: Блок-схема автомата по продаже жидкостей на базе Arduino

    Схема и работа

    Принципиальная схема автомата по продаже жидкостей на базе Arduino показана на рис. 2. Этот проект состоит из аналогового датчика расхода, метки RFID, считывателя RFID, ЖК-дисплея 16x2, соленоида, Arduino Uno, одноканального реле и источника питания постоянного тока 12 В. поставка.

    Рис. 2: Принципиальная схема автомата по продаже жидкости

    Аналоговый датчик расхода воды

    Этот датчик измеряет расход жидкости.Он имеет два отверстия — одно для забора жидкости, другое — для оттока.

    Работает по принципу эффекта Холла. Эффект Холла используется в расходомере с небольшим ротором в форме вентилятора/пропеллера, который размещается на пути потока жидкости.

    Он имеет три провода: красный провод для напряжения питания, черный провод для заземления и желтый провод для сбора выходного сигнала датчика Холла. Напряжение питания может быть от 5В до 18В постоянного тока.

    RFID-считыватель

    Модуль

    EM-18 RFID (см.3) используется для чтения RFID-метки. Он декодирует и передает сигнал на Arduino через протокол последовательной связи.

    Рис. 3: RFID-считыватель EM-18

    LCD

    ЖК-дисплей 16×2 (жидкокристаллический дисплей) отображает данные, полученные от платы Arduino.
    Соленоид. Соленоид 12 В используется для управления потоком жидкости. Когда на соленоид подается питание, он открывает свой клапан и позволяет жидкости течь через датчик потока; в противном случае он остается закрытым и не позволяет жидкости проходить через него. Электромагнитный клапан, используемый в этом проекте, показан на рис.4.

    Рис. 4: Электромагнитный клапан

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

    Рис. 5: Аналоговый датчик расхода, подключенный к Arduino

    . Когда жидкость протекает через датчик расхода, она давит на ребра ротора, заставляя его вращаться. Вал ротора соединен с датчиком Холла. Это устройство катушки с током и магнита, соединенного с валом ротора, таким образом, напряжение/импульс индуцируется при вращении этого ротора.В этом расходомере на каждый литр жидкости, проходящий через датчик в минуту, выдается около 4,5 импульсов.

    Выходной контакт этого датчика расхода подключен к цифровому контакту 2 Arduino. Когда жидкость течет, выходные импульсы подсчитываются микроконтроллером в Arduino.

    Общее количество полученных импульсов преобразуется в определенные единицы измерения, такие как миллилитр в секунду или литр в минуту. Это происходит из-за изменяющегося магнитного поля, вызванного магнитом, прикрепленным к валу ротора.Здесь скорость потока в литрах в минуту (л/мин) рассчитывается с использованием простой формулы преобразования.

    Pin Tx считывателя EM-18 подключен к приемному контакту Rx Arduino. Когда метка RFID проходит через считыватель EM-18, она отправляет данные в Arduino. При совпадении с запрограммированными данными подает сигнал на вход драйвера реле, состоящего из транзистора BC547 (T1). Этот входной сигнал заставляет транзистор работать, реле RL1 получает питание, которое, в свою очередь, подключает источник питания 12 В к соленоиду через контакт NO реле, и соленоид получает питание.В то же время в первой строке ЖК-дисплея 1 отображается сообщение «Поставьте кастрюлю/кувшин/чашку».

    Подача питания на соленоид позволяет жидкости проходить через датчик расхода. Когда жидкость начинает течь через датчик расхода, количество подаваемой жидкости отображается во второй строке ЖК-дисплея 1.

    При прохождении заданного (запрограммированного в коде) количества жидкости через датчик расхода реле автоматически обесточивается и подача жидкости прекращается. В то же время в первой строке ЖК-дисплея 1 отображается сообщение «Уберите кастрюлю/кувшин/чашку».
    Если вам снова нужно такое же количество жидкости, просто снова проведите RFID-картой по считывателю RFID. Вы можете повторять это снова и снова, пока количество жидкости в контейнере не закончится.

    Программное обеспечение

    Программный код (liquid_vending.ino) написан на языке программирования Arduino. Arduino IDE используется для компиляции и загрузки скетча в микроконтроллер ATmega328 платы Arduino. Каждая метка RFID имеет уникальный номер. Этот номер должен быть включен в код/скетч Arduino.

    Код

    Arduino использует заголовочный файл LiquidCrystal.h для ЖК-дисплея и последовательной связи для считывания данных со считывателя RFID. Используются две встроенные функции, а именно Serial.available() для возврата номера метки RFID, поступившей в последовательный буфер, и Serial.readString() для чтения строки номеров меток RFID.

    В этом коде/эскизе мы использовали переменную типа «int amount=1000». Это дает количество жидкости по умолчанию 1000 миллилитров или один литр на одно считывание карты. Просто измените значение суммы в соответствии с вашими требованиями.

    Скачать исходную папку:
    нажмите здесь

    Строительство и испытания

    1. Соедините все компоненты и модули согласно принципиальной схеме.
    2. Подключите источник питания 12 В от адаптера 12 В или батареи 12 В к контакту Vin Arduino, драйверу реле и к контакту NO реле.
    3. Подсоедините общий контакт реле к соленоиду, как показано на принципиальной схеме.
    4. Проверьте количество жидкости по умолчанию в коде для выдачи в минуту.
    5. Проведите меткой RFID над считывателем EM-18.Если он соответствует запрограммированному коду RFID-метки, реле и соленоид сработают, вода из источника (крана) потечет через датчик расхода.
    6. Вы получите всю необходимую информацию о ЖК-дисплее 1, как уже объяснялось.

    Убедитесь в наличии достаточного количества жидкости в источнике (водопроводном кране или контейнере). Меньшее количество жидкости в источнике означает меньшее давление в потоке жидкости в трубе, что приводит к неточности измерения расхода жидкости.

    Добавить комментарий

    Ваш адрес email не будет опубликован.