Создание интерактивных объектов и сред на базе платформы Arduino. Часть 2

Создание интерактивных объектов и сред на базе платформы Arduino. Часть 2

Подключение Arduino к MATLAB (R2008a или более поздней версии) выполняйте в следующей последовательности: 1. Скачайте пакет ArduinoIO с официального сайта MathWorks: ]]> http://www.mathworks.com/matlabcentral/fileexchange/32374 ]]>

2. Распакуйте пакет, например, в c:\arduinoIO:

3. Загрузите МатЛАБ 4. Выполните команды >>cd c:\arduinoIO % переход в директорию >>install_arduino % установка >>savepath

5. Запишите в платформу Arduino прошивку-ретранслятор. Ее задача принимать и выполнять команды из порта. Один вариант прошивки поддерживает только функции работы с аналоговыми и цифровыми портами, другой - еще и шаговые двигатели. Для последнего требуется специальная библиотека, которую можно взять ]]> здесь ]]> . Ее требуется распаковать в папку Arduino-XXX/libraries/ Открываем файл c:\arduinoIO\pde\adiosrv\adiosrv.pde или c:\arduinoIO\pde\srv\srv.pde из среды Arduino и прошиваем

6. В консоле MATLAB создайте объект: >> a=arduino('COM3') 7. Проверьте правильность подключения следующими командами обращения МатЛАБ к Arduino >>a.pinMode(13,'OUTPUT') >> a.digitalWrite(13,1) % запись в порт “1”, на плате должен загореться светодиод >> a.digitalWrite(13, % запись в порт “0”, диод на плате должен погаснуть >>foo=a.analogRead(1) % чтение с аналогового входа, при открытом входе foo > 0

ПОДКЛЮЧЕНИЕ ARDUINO К SIMULINK ( ]]> http://robocraft.ru/blog/741.html ]]> )

Для подключения Arduino к Simulink (+SimulinkCoder + EmbeddedCoder) MATLAB (R2010a) или более поздней версии выполните следующие шаги: 1. Скачайте пакет SimulinkSupportPackageforArduino ]]> http://www.mathworks.com/matlabcentral/fileexchange/30277 ]]> 2. Распакуйте пакет, например в c:\arduino_simulink 3. Загрузите MatLAB 4. Выполните следующие команды для добавления путей: >>cd c:\arduino_simulink >> addpath(fullfile(pwd,'arduino'),fullfile(pwd,'blocks'),fullfile(pwd,'demos')) >>savepath

5. Обновите кастомизацию: >>sl_refresh_customizations

6. Подключите платформу Arduino к USB порту компьютера . 7. Укажите путь к среде arduino >>arduino.Prefs.setArduinoPath('c:\ArduinoTarget')

8. Выведите список всех доступных платформ

>> arduino.Prefs.setBoard Specify one of the following board labels: 'uno' (Arduino Uno) 'mega2560' (Arduino Mega 2560) 'mega' (Arduino Mega (ATmega1280)) 9. Задайте текущую платформу 'uno'командой >>arduino.Prefs.setBoard('uno')

10. Проверьте доступные порты: >>comPorts=arduino.Prefs.searchForComPort

В результате получите, например, comPorts ='COM3' 11. Подключите Arduino к COM порту: >>arduino.Prefs.setComPort('COM3')

12. Проверьте подключение Simulink к Arduino, по работе демонстрационных примеров папки для этого:

12.1 Откройте первый пример Simulink модели командой >>demo_arduino_blink

и установите параметры модели:

12.2 Комбинацией Ctrl+B или командой Tools>>Codegeneration>>BuildModel запустите кросс-компилятор. 12.3 Нажмите кнопку “Start simulation” код платформы прошивается и выполняется в Arduino. Контрольный светодиод Arduino (pin 13) начинает мигать. 12.4 Для ручного управления светодиодом Arduino через Simulink и наблюдением за входом Pin 2 АЦП Arduino откройте другую модель demo_arduino_serial_communication_host.mdl:

В блоке “Lunch target side” этой модели Simulink содержится код Arduino который загружается в него перед запуском модели. Модель Simulink имеет следующие параметры.

12.5 Настройте номера COM порта модели на номер COM порта платформы Arduino. 12.6 Для изучения, редактирования или компиляции кода прошиваемомого в Arduino необходимо дважды щелкнуть по блоку “Lunch target side”.

Обратный переход в модель Simulink можно выполнить через активацию блока “Lunch host side” окна кода прошиваемого в Arduino. Для успешной компиляции кода Arduino необходимо настроить следующие параметры.

12.7 Комбинацией Ctrl+B или командой Tools>>Codegeneration>>BuildModel запустите кросс-компилятор. Успешная компиляция сопровождается выводом следующего сообщения в командном окне. ### Successful completion of build procedure for model: demo_arduino_blink 12.8 Нажатием клавиши "старт" меню загрузите код в Arduino и запустите Simulink модель на выполнение.

12.9 Поверьте возможность переключения светодиода Pin 13 arduino и отображение кода АЦП Pin 2 при помощи demo_arduino_serial_communication_host.mdl модели 13. Проверьте наличие разделов Arduino (Arduino IO Library и Arduino Target) в библиотеке Simulink:

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

ПОДКЛЮЧЕНИЕ ARDUINO К LabVIEW

Для работы с платформой Arduino в LabView установите NI LabVIEW Interface for Arduino Toolkit ]]> http://sine.ni.com/nips/cds/view/p/lang/ru/nid/209835 ]]>

Этот пакет имеет следующие особенности: • Обеспечивает доступ к цифровым и аналоговым портам, ШИМ, интерфейсам I2C и SPI • Обеспечивает работу с двигателями под управлением программ загруженных на Arduino • Имеет примеры для решения разнообразных задач и ввода данных с датчиков • Поддерживает работу с Arduino через USB, serial, Bluetooth или XBee • Частота USB петли - 200 Hz, беспроводной - 25 Hz

ПРИМЕРЫ ПОЛУЧЕНИЯ ПРОВЕРЕННЫХ РЕЗУЛЬТАТОВ И ВАРИАНТЫ ДЛЯ САМОКОНТРОЛЯ

Задание 1. Программирование Arduino в интегрированной среде. 1. Запустите Arduino IDE –C:\arduino-1.0.3\arduino.exe 2. Настройте номер COM-порта среды (Tools > Serial port) на работу с COM портом Adruino из списка устройств компьютера 3. Выберите тип платы Tools > Board > Arduino UNO 4. Откройте пример программы повторяющегося включения / выключения светодиода File > Open > c:\arduino-1.0.3\examples\01.Basics\Blink\Blink.ino и запустите его. 5. По миганию светодиода убедитесь, что платформа Arduino работает. 6. Рассмотрите код программы.

ВОПРОСЫ: • Каков размер прошитой программы? • Каков размер памяти программ Arduino? • Какова частота мигания светодиода?

7. Откройте и запустите пример File > Open > c:\arduino-1.0.3\examples\01.Basics\ AnalogReadSerial\ AnalogReadSerial.ino. Пример читает аналоговый вход N0 и выводит результат в канал последовательной передачи, связанный с COM портом компьютера. 8. Запустите программу COM Port Toolkit. Обратите внимание на поток принимаемых данных. 9. Сравните форматы следующих команд Arduino, передающие данные в канал COM порта компьютера: println; print, write. 10. Осторожно подсоедините аналоговый вход к земле. 11. Запишите значения считываемые из COM порта. 12. Не выключая COM Port Toolkit попробуйте снова выполнить программу Blink.ino 13. Закройте COM Port Toolkit и попробуйте снова выполнить программу Blink.ino

ВОПРОСЫ: • Почему при работающей программе COM Port Toolkit невозможно перепрограммировать Arduino? • Какова скорость считывания АЦП? • Какой код АЦП соответствует нулевому напряжению на входе АЦП?

Задание 2. Связь платформы Arduino с МатЛАБ 1. Разработайте программу (m-код MatLAB) приема и отображения данных, принимаемых от Arduino через COM порт. 2. Разработайте программу (m-код MatLAB) переключения светодиода Arduino (pin 13).

Задание 3. Создание интерактивной среды МатЛАБ на базе платформы Arduino 1. Разработайте Simulink модель приема и отображения данных, принимаемых от Arduino через COM порт. 2. Разработайте Simulink модель переключения светодиода Arduino (pin 13).

Задание 4. Создание интерактивной среды МатЛАБ на базе платформы Arduino 1. Подключите Arduino к MatLAB (R2008a или более поздней версии) как показано выше в разделе “Общие сведения”. 2. В среде MatLAB постройте осциллограф аналогового сигнала АЦП 1 платформы Adruino. Для решения задачи могут пригодиться следующие команды МатЛАБ: for, plot, pause, a.analogRead(1). Пример MatLAB кода и график результата показан ниже. figure for i = 1:100 plot(i,a.analogRead(1),'xb'); hold on; end grid xlabel ('Time, sample'); ylabel ('ADC 1, output code'); title ('Arduino ADC against time')

ВОПРОСЫ: • Какова максимальная скорость отображения аналогового сигнала? • Как повысить скорость чтения АЦП?

Задание 5. Создание интерактивной среды МатЛАБ – Simulink на базе платформы Arduino 1. Подключите Arduino к Simulink MatLAB (R2010a или более поздней версии) как показано выше в разделе “Общие сведения”. 2. Прошейте в Arduino модель simulink demo_arduino_serial_communication.mdl 3. Используя блоки библиотеки Simulink и модели demo_arduino_serial_communication_host.mdl соберите модель управления светодиодом с обратной связью, показанную ниже.

4. Настройте конфигурационные параметры вашей модели:

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

6. Отсоедините USB кабель от Arduino. 7. Вместе с преподавателем подключите датчик температуры LM35 (5V – красный провод, выход 10 мВ/С - зеленый провод, земля – синий провод) к платформ Arduino. LM35:

8. Доработайте последнюю модель: 9. Подключите Arduino USB кабелем к компьютеру. 10. Запустите модель. 11. Изменяя температуру на датчике убедитесь в работоспособности среды Simulink – платформа Arduino.

Задание 6. Построение RTсистемы Simulink – Arduino на базе таймера Arduino 1. Используя следующие примеры постройте систему, которая работает в режиме реального времени с тактом 0.1c. Система ручным переключателем модели Simulink управляет состоянием светодиода платформы (Pin 13), принимает код переключателя от Arduino в Simulink и отображает его. Модель Simulink и параметры блоков модели:

Параметры конфигурации Модели Simulink:

Код RT программы Arduino: /* Communication with Simulink model in RT mode

created 20 April 2013 modified by Bob Davidov

This example code is in the public domain. */ int led = 13; unsigned long set_time = 0; int thisChar = 14;

void setup() < // Open serial communications and wait for port to open: Serial.begin(9600); Serial.flush(); // clear input buffer pinMode(led, OUTPUT); >

void loop() < // get any incoming bytes: if (Serial.available() > < thisChar = Serial.read(); if (thisChar) digitalWrite(led, HIGH); else digitalWrite(led, LOW); > unsigned long time = millis(); if (time > set_time) < set_time = set_time + 100; Serial.print("A"); // DEC, HEX, OCT, BIN, BYTE //8.599E+8 Serial.write(thisChar); // Serial.write(12); // LOWBYTE // Serial.write(34); // HIGH BYTE > >

КОНТРОЛЬНЫЕ ВОПРОСЫ 1. Как обеспечивается связь среды проектирования систем управления MatLAB и Smulink с внешней средой через платформу Ardulino. 2. Как построить реальную систему термостатирования релейного типа на базе MatLAB, MatLAB-Smulink и платформы Ardulino

📎📎📎📎📎📎📎📎📎📎