Основные понятия электроники и контроллер Arduino

Основные понятия электроники

Электронное устройство

Любое электронное устройство должно быть подключено к источнику питания, + и –.

(В лекции рассматриваем только постоянный ток.)

Датчик температуры

2) Обычно электронные устройства имеют несколько сигнальных контактов для выдачи/приёма данных.

3) Недопустимо прямое соединение + и –.

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

Аналоговое устройство

1) Ток в вольтах

Потенциометр

2) ШИМ (Широтно-импульсная модуляция)

http://musiccreate.ru/images/articles/005

/arduino.ru/sites/default/files/pwm_ru.png

Цифровое устройство

Цифровой сигнал, закодированный двумя уровнями тока

0011001010011000

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

Гироскоп/акселерометр

GY-521 - Гироскоп + акселерометр на ИС MPU6050

https://vk.com/photo-63602362_325730697

Примеры устройств

http://www.itsahit.com/rikard/Restorations/images/JP6/uncleanpcbpotsandall.jpg

http://www.djtechtools.com/wp-content/uploads/2008/11/nano-sliders.jpg

ИК датчики движения

Активные

стоит излучатель и приемник.

acroname Sharp IR (в России пока не нашел) - меряет также расстояние.

Autonics BA2M-DDT - по типу реле, выдает бинарный сигнал если объект ближе некоторого расстояния.

Проблемы - если объект черный, то могут не сработать так как они рассчитаны на то, что объект отражает свет. Показатель расстояния зависит от цвета объекта.

Пассивные

Использутся в охранных системах.

Основаны на измерении (теплового) ИК-излучения от объектов

Ультразвуковой датчик расстояния - сонар

Maxbotix LV-MAXSONAR-EZ1

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

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

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

Детектор движения

HC-SR501 - ИК детектор движения https://vk.com/photo-63602362_320206638

Настройки детектора движения

Настройка чувствительности Настройка задержки (между срабатываниями)

Тензодатчик (измерение силы)

https://vk.com/photo-63602362_352390624

Датчик уровня жидкости

https://vk.com/photo-63602362_318052401

Датчик температуры

Датчик температуры DS18B20 (влагозащищённый)

https://vk.com/photo-63602362_348476303

Сегментный дисплей

Четырёхразрядный семисегментныйиндикатор

https://vk.com/photo-63602362_349083198

Светодиодная матрица

Светодиодная матрица 8x8 RGB 60мм https://vk.com/photo-63602362_354022621

Arduino

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

Arduino может работать как автономная микропроцессорная плата.

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

Например, Flash, Processing, Max/MSP, Pure Data, SuperCollider, OpenFrameworks.

Аппаратура

Плата Arduino состоит из микроконтроллера Atmel AVR, а также элементов обвязки для программирования и интеграции с другими схемами.

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

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

Контроллер Arduino

Arduino UNO R3

https://vk.com/photo-63602362_323260084

Программа для мигания встроенным светодиодом

Запустить Arduino.exe, затем в меню выбрать File - Examples - Digital - Blink

int ledPin = 13; // LED connected to digital pin 13 - это также выводит и на встр.ламп.

// The setup() method runs once, when the sketch starts

void setup() {

// initialize the digital pin as an output:

pinMode(ledPin, OUTPUT);

}

// the loop() method runs over and over again,

// as long as the Arduino has power

void loop()

{

digitalWrite(ledPin, HIGH); // set the LED on

delay(1000); // wait for a second

digitalWrite(ledPin, LOW); // set the LED off

delay(1000); // wait for a second

}

Программа для мигания внешним светодиодом

Подключим светодиод к цифровому выходу 12, и AREF (он подключен к питанию)

(С точки зрения радиоэлектроники не очень корректно - надо еще резистор, но для примера нормально)

В предыдущей программе изменить строку:

int ledPin = 12;

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

Но нас больше интересует, как ввести данные для использования в OpenFrameworks. Займемся этим.

Подключение потенциометра (фейдера)

Как передать данные от Arduino в PC - Serial Port.

Arduino обменивается с PC данными через последовательный COM-порт. Мы подключили через USB - в этом случае COM-порт эмулируется.

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

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

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

Подключение сонара к аналоговому входу Arduino

Скомпилировав и закачав эту программу в устройство,

нужно в Arduino IDE нажать кнопку "Serial Monitor",

и появится список считанных значений.

...

sensor = 50

sensor = 50

sensor = 143

sensor = 143

sensor = 140

sensor = 140

sensor = 50

sensor = 48

...

ПРИМЕЧАНИЕ Повышение точности измерений сонара

Если в Setup() добавить analogReference(INTERNAL); то будет измерение точнее - так как сравнивать не с 5 В, а 1.1В

(другие значения - DEFAULT = 5В, EXTERNAL - внешний, сравнение с AREF)

Протокол Firmata

Мы рассмотрели пример, как с помощью класса ofSerial можно работать с последовательным портом.

Это позволяет обмениваться данными с Arduino.

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

Неудобство: для каждой новой конфигурации датчиков нужно перепрограммировать и отлаживать Arduino и процедуру обмена данными в OpenFrameworks.

Решение: использовать протокол Firmata, специально созданный для упрощения операций ввода/вывода данных.

А на стороне Arduino программа она не меняется: все настройки делаются через OpenFrameworks / Processing / Max/MSP.

Протокол Firmata

Firmata is a generic protocol for communicating with microcontrollers from software on a host computer. It is intended to work with any host computer software package. Right now there is a matching object in a number of languages. It is easy to add objects for other software to use this protocol. Basically, this firmware establishes a protocol for talking to the Arduino from the host software. The aim is to allow people to completely control the Arduino from software on the host computer.

http://firmata.org

Класс ofArduino в OpenFrameworks использует Firmata, и имеет простые команды для подключения к Arduino и ввода-вывода данных с портов Arduino, например:

int getAnalog(int pin) - считать данные с аналогового входа номер pin

int getDigital(int pin) - считать данные с цифрового входа номер pin

Чтобы этим пользоваться, надо поставить в Arduino программу работы с Firmata, см. далее.

Пример обмена данными OpenFrameworks - Firmata - Arduino

  1. На стороне Arduino: закачать программу

Firmata - StandartFirmata

  1. На стороне OpenFrameworks:

запустить пример FirmataExample, предварительно указав в нем в строке используемый порт

(это могут быть COM4, COM6, COM7 и т.д.):

ard.connect("COM6", 57600);

(3. Если работа идет с тем же сонаром - стоит в Arduino - Setup() добавить analogReference(INTERNAL); для повышения точности измерений, см. примечание выше).

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

Если же список портов на экран не вывелся, то при включенном устройстве можно посмотреть его в Диспетчере Устройств.

Пример обмена данными OpenFrameworks - Firmata - Arduino

Проект с увеличивающимся квадратом

Цель: исследование точности и устойчивости измерений сонара.

На основе примера firmataExample сделать проект, в котором рисуется квадрат, размеры которого зависят от измеренного расстояния.

Проект: управление генератором звука с помощью сонара

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

  1. Генерацию звука рекомендуется делать на основе примера audioOutputExample.

  2. Данные, приходящие с сонара, стоит сглаживать.

Простейший фильтр:

filtered = f * value + (1-f) * filtered.

где filtered - сглаженное значение, value - новое значение, f - коэффициент фильтра, от 0 до 1, например, 0.2 или 0.01.

Физические вычисления

Профессор Йоичи Нагашима.

Университет Искусства и Культуры,

г. Шизуока (Япония)

Композитор, инженер, изобретатель,

автор нескольких книг по физическим вычислениям (на японском)

Сайт:

nagasm.org/ASL/index.html

Art & Science Laboratory

2010 - Екатеринбург, УГК,

Выступление с произведением

“Ural Power” на фестивале SYNC’2010

Мастер-классы по Max/MSP

/www.youtube.com/watch?v=32FLFkgZYKk

лето 2016 - Екатеринбург, Москва, С.-Петербург (?)
Мастер-классы, выступления

results matching ""

    No results matching ""