Курс arduino – логика

Искусственный интеллект на базе Arduino

В настоящее время в Российском сегменте интернета недостаточно освещено современное состояние дел с применением искусственного интеллекта (ИИ) в робототехнике. Желание исправить эту ситуацию побудило опубликовать материал связанный с технологиями разработки интеллектуальных систем управления.

В работе рассматривается историческое развитие средств искусственного интеллекта (нечеткая логика (НЛ), генетические алгоритмы (ГА), нечеткие нейронные сети (ННС)) для проектирования системы автоматического управления (САУ).

Сравнение методологий проектирования проводится на примере робота, основанного на платформе Arduino.

Введение

В настоящий момент разработка, развитие и реализация эффективных высоких наукоемких информационных технологий (ИТ) (создаваемых в различных областях науки и техники) неразрывно связаны с необходимостью разработки и повышения уровня интеллектуальности используемых процессов и систем управления, объективно учитывающие в законах управления контекстуально-зависимые физические эффекты, ограничения и информационные границы, реально существующие в конкретных моделях объекта управления (ОУ). В теории и проектировании систем управления в настоящее время большое внимание уделяется выявлению роли и эффективному применению робастных интеллектуальных систем управления (ИСУ) в интенсивном развитии и качественном совершенствовании современных высоких ИТ интеллектуального управления сложными физическими ОУ. Сложность описания физических систем, в свою очередь, приводит к необходимости аппроксимации моделей ОУ и применению приближенных решений, которые не гарантируют необходимые и достаточные условия достижения цели управления в непредвиденных ситуациях и информационного риска. Поэтому в теории и систем управления одним из эффективных подходов снижения риска принятия решения (от неполноты описания модели ОУ) является разработка структур робастных ИСУ [1].

Эволюция интеллектуальный систем управления

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

С помощью разработанной системы стохастического моделирования, определялись предельные возможности классических САУ основанных на использовании исполнительного устройства САУ в виде традиционного ПИД-регулятора (см. Таблицу 1, позиция 1).

В результате проведенного исследования был установлен следующий факт: классические САУ, основанные на ПИД-регуляторе с постоянными коэффициентами усиления, часто не справляются с задачей управления в случае глобально неустойчивых и существенно нелинейных ОУ, находящихся под воздействием негауссовского (например, Рэлеевского) стохастического шума, а также в условиях временных задержек в каналах измерения. Этот факт объясняется следующими обстоятельствами. Классические САУ основаны на принципе глобальной отрицательной обратной связи и методе компенсации ошибки управления. Однако, в сложных ОУ (пример с Arduino-роботом ниже) недостаточно иметь результат оптимизации только по одному критерию качества управления, типа минимума ошибки управления. Поэтому на практике при проектировании ИСУ сложными ОУ возникает следующая проблема: как ввести в систему управления другие, дополнительные критерии качества управления?

Таблица 1. Эволюция ИСУ

К таким критериям относятся, например минимум производства энтропии в ОУ, и/или минимум производства энтропии в самой системе управления (учитывающие тепловые потери, потери полезной работы в объекте и системе управления), или другие более сложные, векторные критерии качества управления.

Примечание. Подобные и смежные вопросы построения физической теории управления рассматривались в работах А.А. Красовского, С.В. Емельянова, Ю.И. Самойленко, А.Г. Бутковского, Л.И. Розоноэра, Р. Поплавского, А.М. Цирлина А.П. Фрадкова и мн. др.

Разрешить этот вопрос с помощью процесса проектирования стандартного ПИД-регулятора с постоянными коэффициентами усиления практически невозможно.

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

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

Так, например, представленная в таблице 1-1 структура преобразуется в экспертную систему управления Таблица 1-2 последовательным наращиванием составляющих блоков в классической структуре САУ (в данном случае введением блока нечеткого вывода) и является примером первого поколения ИСУ (рис.1).
Рис. 1.

Система управления с нечетким регулятором Таким образом, первое поколение ИСУ представляло собой нечеткие экспертные системы (ЭС). Основную роль в этих ЭС играло качество базы знаний (БЗ), которое определялось опытом и субъективными знаниями человека-эксперта.

Однако, в случае управления глобально неустойчивыми и существенно нелинейными ОУ, находящимися под воздействием сложных стохастических шумов, даже опытному человеку-эксперту трудно подобрать оптимальную (с точки зрения качества управления) БЗ НР. Эта проблема — узкое место всех первых (и их последующих модификаций) ИСУ.

Поэтому, использование ЭС в качестве инструментария извлечения знаний и формирования БЗ (как основы технологии проектирования ИСУ) не привело к ожидаемому существенному успеху (хотя существует много примеров промышленного внедрения) в силу сложности ОУ и субъективности информации, вносимой экспертом.

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

Для решения подобных проблем были разработаны ИСУ второго поколения, используя технологии мягких вычислений, объединяющие в единую цепочку ГА, ННС и нечеткий регулятор (НР). Это позволило исключить субъективное мнение эксперта на этапе формирования структуры и параметров БЗ НР.

В свою очередь развитие ИСУ, основанных на мягких вычислениях, породило несколько подходов к формированию структур БЗ. Первоначально планировалось формировать некоторый достаточно огрубленный обучающий сигнал (ОС) от ГА, и извлекать БЗ путем аппроксимации полученного ОС на ННС.

Структура ИСУ второго поколения представлена путем введения в структуру ИСУ первого поколения блока, включающего в себя ГА и ННС (см., Таблицу 1 — 3).

В дальнейшем второе поколение ИСУ стало использовать новый вид обратной связи, называемой интеллектуальной глобальной обратной связью (ИГОС), представленной в Таблице 1, (позиция 4). Её использование дает возможность извлекать объективные знания непосредственно из самого динамического поведения ОУ и исполнительного устройства САУ. Контур ИГОС включает ГА для получения информации об оптимальном сигнале управления (исходя из динамического и термодинамического поведения самого ОУ и ПИД-регулятора) и ННС, аппроксимирующей данный оптимальный сигнал управления с помощью заданной структуры нейронной сети. Основным блоком в структуре ИСУ этого поколения является система моделирования оптимального сигнала управления (СМОСУ) с помощью ГА и критерия качества управления, заданного в виде одной из составляющих вектор-функции пригодности ГА (рис.2).

Рис. 2. Интеллектуальная система управления второго поколения Основной проблемой, решаемой ИСУ пятого поколения с ИГОС, является наличие возможности достижения требуемого уровня робастности на заданном классе как параметрических, так и внешних случайных возмущений различной вероятностной природы (с различными функциями плотности распределения вероятностей). Другой важной проблемой является определение требуемого соотношения между точностью описания (аппроксимации) ОС и необходимым уровнем робастности всей структуры ННС. Обе указанные проблемы решаются на втором этапе технологии построения БЗ ИСУ с помощью программных средств инструментария, названного «Оптимизатор Баз Знаний» (ОБЗ) (рис.3).
Рис. 3. Интеллектуальная система управления пятого поколения. С программным инструментарием ОБЗ Подробнее ознакомится с методикой проектирования ИСУ можно на примерах проектирования подобных систем:

Интеллектуальное управление манипулятором

Метод извлечения знаний из физически измеряемого сигнала
Удаленная настройка БЗ Рассмотрим пример применения ИСАУ.

Математическая модель и Робот

Управление объектом типа «Каретка — перевернутый маятник» (рис.4) является одной из типовых задач в теории управления, т.к. решение этой задачи наглядно демонстрирует качество САУ. Рассмотрим динамику модели в виде одноосевой каретки с перевёрнутым маятником, закреплённым на оси:
Рис.

4 Модель системы «Каретка- перевернутый маятник» Динамика этого ОУ описывается системой дифференциальных уравнений второго порядка, выводимых, с учетом сил трения и упругости каретки, из баланса моментов и проекций сил на горизонтальную ось Z:Уравнения для скорости производства энтропии следующие:В уравнениях z и «тета» — обобщенные координаты; g — ускорение свободного падения, мс — масса тележки, m — перевернутого маятника (называемого «шест»), l — половина длины маятник, k и а1 коэффициенты трения в z и «тета» соответственно, а2 — сила упругости тележки, «кси» внешний стохастический шум, а u — сила управления. Динамическая система обладает глобальной динамической неустойчивостью, при отсутствии управляющей силы происходит неограниченный рост угла отклонения, т.е. маятник падает. Задача управления системой состоит в том, чтобы воздействуя с помощью силы управления на тележку, удерживать (стабилизировать) маятник в вертикальном положении (угол отклонения оси маятника от вертикали к 0) в условиях изменения среды функционирования.
Рис.5. Математическая модель реализованная в среде Matlab Simulink Модель (рис.5) включает в себя ПИД — регулятор, шумы в системе управления и измерения, а также блок, формирующий сигнал для регулятора. Данная компьютерная модели используется для получения обучающего сигнала и настройки БЗ с использованием ОБЗ. Основные этапы построения БЗ с использованием ОБЗ рассмотрены в [1,9]. Данный тип ОУ является типовым (benchmark) для тестирования программного инструментария робастного интеллектуального управления. Примеры подобных систем рассмотрены в работах [2 – 8] и представлены на рис. 6.
Рис. 6. Аналогичные ОУ

Рассмотрим устройство подобного макета ОУ. На рис. 7 представлен макет используемый для тестирования технологий проектирования ИСАУ с использованием ОБЗ. Подробно данный тип роботов рассмотрен тут.

Рис. 7. Макет системы В качестве измерительной системы (рис. 7, Sensor) в макете используется плата с комбинацией датчиков — гироскопа и акселерометра — 5 DoF (пять степеней свободы) IDG500/ADXL335. Ядром и центральным элементам системы является микроконтроллер компании Arduino основанный на процессоре ATmega328. Плата оборудована USB разъемом, для передачи данных с процессора на компьютер. Интерфейс USB используется при проведении экспериментов для передачи и приема данных (угла отклонения и величины управляющего воздействия), а также для удаленной настройки, речь о которой пойдет ниже. Подключение датчиков осуществляется с использованием аналоговых входов микроконтроллера. Базовые функции программ макета представлены на рис. 8., обобщённо их можно записать в псевдокод: • Измерение • Фильтрация • Управление • Подсчет времени (задержка).
Рис. 8. Псевдокод алгоритма работы робота Отметим, что алгоритм работы макета системы, представленный на рис. 8, является частным примером САУ с обратной связью, рассмотренной ранее (таблица 1-1).

Эксперимент

Для проверки робастности контроллеров мы используем две ситуации управления: 1) Типовую ситуацию — для которой разрабатывать регуляторы (ситуация описанная в ОС и мат.

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

В видео демонстрируются три типа регуляторов: 1) Классический ПИД — регулятор 2) Нечеткий регулятор на основе ОБЗ

3) Квантовый регулятор, основанный на новых типах вычислений с использованием скрытой квантовой информацией (описание квантового регулятора и технологии проектирования подобной ИСУ здесь и здесь).

Выводы

Структура данной технологии проектирования нечетких регуляторов и ИСУ должна включать в себя: o многокритериальный ГА для поиска оптимального управления и верификации математических моделей, o нечеткую нейронную сеть для аппроксимации найденного с помощью ГА оптимального сигнала управления и извлечение на его основе «оптимальной» БЗ, o «тонкую» настройку БЗ на основе ГА с использованием информационно-энтропийных критериев. ОБЗ позволяет осуществить принцип проектирования оптимальной ИСУ с максимальным уровнем надежности и управляемости сложным ОУ в условиях неопределенности исходной информации. Применение БЗ, спроектированных с помощью ОБЗ, в структуре ИСУ расширяет область промышленных приложений САУ к сложным динамическим ОУ.

Ссылки

Источник: https://habr.com/post/178323/

Курс робототехники и создания гаджетов «Arduino» | Hackspace Saint-Petersburg

Приглашаем на лучший очный образовательный курс по платформе Arduino в России! 

Этот курс рекомендован:

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

В данном курсе мы опираемся на популярную во всем мире платформу Ардуино!  Arduino достаточно универсальный контроллер, легко прошиваемый и управляемый с ПК, к которому можно прицепить великое множество дополнительных датчиков и устройств. Например можно подключить  датчик температуры, цвета или расстояния, светодиоды, кнопки, дисплеи, моторчики, передатчики wifi или bluetooth и многое многое другое. Платформа легко программируется через USB.

С помощью этой платформы можно своими руками собрать такие устройства как: интересные интерактивные гаджеты, домашних роботов, летательные аппараты, управление чем-либо через интернет и даже лазерную арфу (http://hacknmod.com/hack/create-techno-with-a-laser-harp/). Топ-40 устройств на Arduino можно посмотреть тут hackspb.ru/top-40-arduino-proektov

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

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

Преимущества нашего курса:

• Курсы доступны для практически любого уровня знаний (достаточно школьной информатики и физики);
• Вам будут бесплатно предоставлены различные модули для изучения на занятиях (Температурный датчик, GPRS, Ethernet, i2c, Bluetooth и другие);
• Вы соберете на курсах колесного робота;
• Вы гарантированно освоите основы и хитрости работы с Arduino. Сэкономите время на поиске информации в интернете и разборе сложного материала в одиночку;
• По окончанию курса соберете собственный проект;
• По окончании курса Вы собираете свой собственный проект, а мы помогаем Вам!

Занятия проходят группах по 7-10 человек.  Занятия по будням (конкретные дни зависят от группы) с 19.00 до 22.00. Курс прошло уже более 90 человек!

Стоимость и требования к участникам:

Требования к начальному уровню знаний: Знание основ программирования (опыт программирования на любом языке) и электротехники школьного уровня (например, что такое конденсатор и закон Ома), уверенное владение ПК. Если опыта в программировании нет — советуем Вам прочитать любой учебник по основам программирования на таких языках как С++, Java, PHP, JavaScript или других.

Для прохождения курса необходимо наличие собственного стартового набора компонентов и аналог платы Arduino. Мы рекомендуем платы формата NANO так как они более удобнее для макетных плат. Приобрести платы по оптимальным ценам можно у нас.

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

Начальный набор компонентов (950р.):

– Плата для прототипирования; набор проводов (джамперов); полевой транзистор; набор резисторов (постоянные по 220 Ом), постоянный на 4,7 кОм, переменный до 10 кОм ; 15 светодиодов; RGB-светодиод;  кнопки;  зуммер (пищалка); 7-сегментный индикатор; датчик света; два сдвиговых регистра 74HC595;

Стандартный набор (1300 руб.):

– Начальный набор; драйвер двигателя;  ЖК Дисплей

Купить это можно прямо перед курсами.

Стоимость курса из 11 занятий — 4000 рублей для студентов и школьников и 5000 рублей для остальных.

При успешной сдаче своего проекта — вручается сертификат.

Запись на курсы:  http://hackspb.ru/_kursi

Программа курсов:

1)Урок первый – Введение.
Знакомство с платформой Arduino, ее характеристиками и ограничениями. Первые функции; Мигание светодиодом и управление с ПК.

2)Урок второй – Светомузыка.
Плавное мигание светодиодом; RGB светодиод; знакомство переменным резистором и с фоторезистором; Знакомство с динамиком; Таймер.

3)Урок третий – Множим порты.
Изучаем работу сдвигового регистра; Стандарт SPI; Семисегментный индикатор;

4) Урок четвёртый – Подключаем цифровые девайсы.
Подключение двухстрокового дисплея; знакомство с цифровым датчиком температуры Dallas Technologies; Интерфейс OneWire; Создание цифрового термометра на arduino;

5) Урок пятый — Нагрузка движением.

Транзистор и силовой мост. Реле. Виды двигателей. Передаточное число. Подключение сервопривода; Шаговый двигатель;

6) Урок «Колесная робоплатформа»

Драйвер двигателя. Аккумуляторы. Ультразвуковой дальномер. Ориентирование.

7) Bluetooth,  ИК

Управление через интернет
PHP, Ethernet shield

9) I2C, Processing

10) GPRS, MEMS датчики

11)  Дополнительные шилды, вопросы по проектам, доделка заданий

Получить ответы на все интересующие Вас вопросы Вы можете по телефонам: +7 921 9314159 (менеджер курсов)  и hackspb@gmail.com

Фотографии с наших занятий:

Проекты участников прошедших курсы:

Устройство для автоматической фотосъемки со вспышкой очень быстрых событий (падение капли или другого предмета)

Источник: http://hackspb.ru/obuchenie/kurs_arduino/

Arduino: Программирование без программирования — DRIVE2

На сегодняшний день Ардуино является одним из самых простых способов освоить микроконтроллеры: благодаря простому интерфейсу, простоте (можно сказать даже примитивности) “языка Ардуино” программирование микроконтроллеров становится доступно даже школьникам.

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

Итак встречаем: Scratch, ArduBloсk и FLProg — три попытки сделать так, чтобы программирование стало доступно даже дошкольникам 🙂

Scratch
Страница проекта — s4a.cat/В 2003 году группа исследователей под руководством Митчела Резника из MIT Media Lab решила сделать общедоступный язык программирования. В результате через 4 года появился Scratch — “среда для обучения школьников программированию”.

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

Это объектно-ориентированная среда, в основе которой лежит принцип конструктора LEGO и в которой программы собираются из разноцветных блоков-кирпичиков команд точно так же, как собираются из разноцветных кирпичиков конструкторы Лего.

Среда русифицирована, для нее есть много инструкций и руководств на русском языке. Проекты, создаваемые в Scratch, выкладываются на сайте проекта scratch.mit.edu/, все они доступны для скачивания и использования. Среда доступна для работы ребенка с раннего возраста, немного умеющего читать и пользоваться мышью.

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

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

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

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

S4A представляет собой скетч прошивки s4a.cat/downloads/S4AFirmware15.ino, которая загружается в Ардуино, делает его исполнительным устройством, программа выполняется на компьютере, Ардуино её физически выполняет, передавая сигналы на выходы платы. Ардуино в этом случае через Serial-соединение получает от Скретча команды какие порты в какой уровень установить и передает на ПК измеренные уровни с входов.

Более подробно можно узнать либо на странице проекта, либо посмотрев видео от Амперки — www.youtube.com/playlist?…OzZQGDFdoRfldtqbmNU6a-PIp

ArduBloсk
Страница проекта -blog.ardublock.com/Имен разработчиков и их локализации мне найти не удалось, но данный проект активно продвигается разработчиком плат sparkfun, поэтому ИМХО это их проект.

Ardublock это графический язык программирования для Arduino, предназначенный для непрограммистов и простой в использовании. В отличии от Скретча ArduBloсk встраивается в среду Arduino IDE и генерит программый скетч, загружаемый в МК.

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

Среди руссоязычного сообщества проект известен благодаря учителю-энтузиасту из Лабинска Александру Сергеевичу Аликину — geektimes.ru/post/258834/

FLProg
Страница проекта — flprog.ru/
Проект развивается силами одного человека — Сергея Глушенко. Основная идея заключается в том, чтобы адаптировать применяющиеся в области программирования промышленных контроллеров языки FBD и LAD к Ардуино.

FBD (Function Block Diagram) — графический язык программирования стандарта МЭК 61131-3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков.

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

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

Ladder Diagram (LD, LAD, РКС) — язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Ориентирован на инженеров по автоматизации, работающих на промышленных предприятиях.

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

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

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

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

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

Источник: https://www.drive2.ru/b/2729013/

Курс Arduino по-взрослому 17+

Приглашаем на курс программирования «Arduino по-взрослому».

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

– подсвечивать помещение любыми цветами радуги

– сообщать текущую температуру и влажность

– поливать комнатные растения

– управлять электрической розеткой 220 Вольт (6 режимов управления: «Ночник по датчику движения», «Обогреватель», «Кондиционер», «Вытяжка», «Таймер включения розетки», «Таймер отключения розетки».

– поддерживает удаленное управление со смартфона:

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

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

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

Курс «Ардуино для начинающих» поможет освоить школьную дисциплину «Физика». Одно дело изучать по учебникам теорию закона Ома. Совсем другое – собрать схему управления с переменным потенциометром, регулирующим яркость подсветки и разобраться, как это работает!

RSE1 – SMARTBOX:

– без пайки

– все детали уже включены в комплект

– выдаются все необходимые инструменты

Среда Arduino – это микроконтроллер с возможностью графического программирования.

На занятиях подросток:

  • Соберет с нуля свое собственное полезное для дома электронное устройство из класса «УМНЫЙ ДОМ»
  • Поймет как управлять микроконтроллером при помощи программного кода
  • Освоит графическое программирование (в среде Ardublock)
  • Научится разрабатывать собственные программы и загружать их в плату (на языке C++)
  • Научится понимать схемы оборудования
  • Изучит принципы работы электронных датчиков и управляющих устройств
  • Научится производить монтаж электрических компонентов и отладку устройства
  • Познакомится с основами электрики и электроники
  • Научится использовать электромонтажные инструменты

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

Не требуется специальных знаний. Занятия построены «от простого к сложному». За 16 занятий подросток освоит необходимую теорию и практику для создания многофункционального устройства RSE1 – SMARTBOX.

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

Структурное программирование:

На каждом занятии изучаем работу нового датчика. Составляем модуль, управляющий именно этим датчиком. На последнем занятии собираем получившиеся модули в единое целое – прошивку RSE1 – SMARTBOX.

Все комплектующие и инструменты предоставляются к занятиям ООО “Робошкола Электроник” без оплаты. По желанию можно приобрести набор комплектующих для проекта RSE1 – SMARTBOX. Тогда подросток сможет забирать его с собой после занятий, а также самостоятельно экспериментировать дома. Стоимость полного набора комплектующих Arduino 3999 рублей.

В курс включены следующие уроки arduino uno:

  1. Знакомство с Arduino. Управление светодиодом.
  2. Управление RGB светодиодной лентой с помощью Arduino.
  3. Реле. Управление нагрузкой. Условный оператор, переменные, millis().
  4. Датчик движения. Датчик освещенности. Логические операции.
  5. Создание своего проекта Arduino.

    Самостоятельная работа.

  6. Датчик температуры и влажности.
  7. 4-сегментный цифровой дисплей и библиотека DigitalTube.
  8. Кнопки. Потенциометр. EEPROM.
  9. Ультразвуковой дальномер HC-SR04.
  10. Удаленное управление Arduino через Bluetooth.
  11. Удаленное управление Arduino (часть 2): RemoteXY.

  12. Создание своего проекта Arduino. Самостоятельная работа.
  13. Собираем проект RSE-01.
  14. Arduino без Arduino: использование чипа Atmel328P-PU.
  15. Управление серводвигателями и мотором. Motor Shield.
  16. Собираем радиоуправляемую Bluetooth машинку на Arduino.

PS Рабочее название проекта Arduino RSE-01 было такое:

Электроник Arduino SMARTBOX

Фото с занятий

Источник: http://robotoshkola.ru/kurs-arduino-dlya-vzroslyih-17/

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

Для тех, кто не разделяет железо и код.

10 марта 20173 минуты9908

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

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

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

Что такое Arduino

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

В самом простейшем случае Arduino — печатная плата, на которой расположен контроллер, кварцевый генератор, АЦП/ЦАП, несколько разъёмов, диодов и кнопок.

Остальное — дело рук хозяина: хотите — создавайте робота, хотите — программно-аппаратную платформу для «умного» дома, ну или забудьте про практическую пользу и развлекайтесь.

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

Arduino достаточно ограниченная платформа в плане возможностей программирования, особенно в сравнении с Raspberry Pi.

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

За основу здесь принят C/C++, но с использованием различных IDE и библиотек вы получите доступ к оперированию Python, C#, Go, а также таким детским развлечениям, как Snap! и ArduBlock. О том как, когда и кому их использовать, поговорим далее.

C/C++

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

Найти все доступные команды «для новичка» можно здесь, но никто не мешает вам воспользоваться исходными возможностями языка C++, никаких надстроек не потребуетс.

Если же есть желание поиграть с «чистым» C, то к вашим услугам программа WinAVR, предназначенная, как следует из названия, для взаимодействия ОС Windows и МК серии AVR, которые и используются на Arduino. Более подробное руководство можете прочитать вот здесь.

Использование C/C++ рекомендуется тем, кто уже имеет представление о программировании, выучил в школе пару языков и хочет создать на Arduino что-то большее, чем светодиодную «мигалку» или простую машинку.

Ardublock

Временно отойдем от языков взрослых к любимому ребятней языку Scratch, а вернее к его адаптации — Ardublock. Здесь всё тоже самое, но с адаптацией к вашей платформе: цветные блоки, конструктор, русские названия, простейшая логика.

Такой вариант здорово подойдет даже тем, кто с программированием не знаком вовсе.

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

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

Для установки скачанный файл переименовываем в «ardublock-all» и запихиваем в папку «Мои документы/Arduino/tools/ArduBlockTool/tool». Если её не существует – создаем.

Если что-то не поняли, то вот здесь более подробно.

Snap!

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

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

Рекомендуется младшей возрастной группе, тем, кто учил программирование так давно, что уже ничего не помнит и тем, кто хочет завлечь своего ребенка в IT через Scratch и Snap!.

Python

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

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

 Начать изучение Python вы можете с нашего бесплатного интенсива “Основы языка Python”.

Итак, для этого вам понадобится библиотеки PySerial (ранее, возможно, вы использовали её для общения с портами компьютера) и vPython. О том, как правильно всё настроить и заставить в конечном счёте работать, можете соответственно почитать здесь и здесь.

Go и другие языки

Подобно тому, как Arduino взаимодействует с Python через библиотеку PySerial, он может взаимодействовать и с Go, и c Java, и с HTML, и с чем только захотите.

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

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

Источник: https://geekbrains.ru/posts/arduino_and_languages

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}