Знакомство и программирование Arduino

Маховский Иван Николаевич
ученик 10 класса
КГУ «Благовещенская средняя школа №1»

Научный руководитель: учитель физики

Яценко Евгений Петрович

 

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

Цельюработы является ознакомить с основными элементами и этапами программирования Arduino

Из цели вытекает ряд задач, поставленных для данного научного проекта:

·Знакомство с литературой и интернет-источниками по теме исследования;

·Сборка парктронинка и сборка машины под управлением Bluetooth

·Написание кода для программирования.

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

Практическая часть.

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

Процесс программирования состоит из следующих этапов:

Назначение переменных

Функция void setup предназначена для инициализации переменных, определение режимов выводов, запуска используемых библиотек и т.д. Функция setup запускается только один раз, после каждой подачи питания или сброса платы Arduino.

Функция loop предназначена инициализирует и устанавливает первоначальные значения, функция loop() делает точь-в-точь то, что означает её название, и крутится в цикле, позволяя вашей программе совершать вычисления и реагировать на них.

Для программирования платы Arduinoпосле написания нужного кода необходимо во вкладке инструменты выбрать используемую плату Arduino(различают основные платы: ArduinoNano,ArduinoUno,ArduinoMega) и порт, к которому подсоединена плата к компьютеру, с помощью USB шнура .

1.Для сборки парктроника необходимо: ArduinoNano, датчик расстояния HC-S04, светодиод, резистор на 220 Ом, соединительные провода, макетная плата, батарея 9В.

Все элементы необходимо соединить согласно (Рис 2, Приложение 1).

Используемые элементы подключаются к цифровым пинам Arduino в нашем случае: анод светодиод к 12 цифровому пину Arduino, к катоду подсоеденяется резистор на 220 Ом и затем к GND , Trig- к 10 цифровому пину Arduinо и Echoк 11. Вывод VCC предназначен для питания элемента от Arduinо подсоединяется к пину Arduinо 5V. Вывод GND (Земля) подключается к аналогичному пину Arduinо

На вывод Trig посылается импульс длительностью 10мкс. Дальномер генерирует посылку из 8 ультразвуковых 40КГц импульсов. Которые, отражаясь от большинства поверхностей, возвращаются обратно, если не угаснут в пути. Сразу после отправки сигнала на Trig начинаем ожидать ответного положительного сигнала выводе Echo, длительностью от 150мкс до 25мс, который пропорционален расстоянию до объекта. Точнее времени прохождения от датчика до препятствия и обратно. Если ответа нет (датчик не услышит своего эха) – то сигнал вернется длиною в 38 мс. Расстояние до объекта (препятствия) вычисляется по следующей простой формуле:

L=F/58

Где:L– расстояние в сантиметрах до объекта, аF– длина импульса на выводе Echo.
Рекомендуемое время опроса датчика 50мс или 20Гц.

2. При программировании парктроника, всреде Arduinо объявляем переменные и присваиваем им пины на плате Arduinо:

#define Trig 10

#define Echo 11

#define ledPin 12

В void setup Trig и ledPin необходимо инициировать как выход при помощи команды OUTPUT, а Echo – как вход – INPUT. В void loop при помощи операторов if...else задаем, в каком случае должен загореться светодиод. Команда if (distance_sm<10) {digitalWrite(ledPin, HIGH);} говорит о том, если расстояние до преграды менее 10 сантиметров то светодиод горит. Далее команда else {digitalWrite(ledPin, LOW);} - иначе не горит. Полный скетч программирования парктроника указан в приложении 2 (Скетч 1).

3. Следующим шагом является сборка машины под управлением Bluetooth. Для этого необходимы следующие элементы: ArduinoUno, модуль Bluetooth,Motor shieldL298N, два мотора, батарея 9В, макетная плата и телефон под управлением Android.

Все детали необходимо соединить согласно (Рис. 3, Приложение 1)

Для начала необходимо подключить Motor shield l298n , он позволит управлять двумя двигателями постоянного тока с помощью платы Arduino. Подключаем Motor shield к цифровым портамArduinoUno. В нашем случае: in1 подсоединяем к 5 пину, in2к 6, in3 к 10 и in 4 к 11. Все переменые необходимо инициировать как выходы при помощи команды OUTPUT. Функция analogWrite() управляет скоростью электродвигателя.

Вывод 12V предназначенный для питания, подсоединяется к пину Arduinо VIN. Вывод GND (Земля) подключается в порт GNDна плате Arduinо. К, Motor shield подсоединяем два мотора. Motor shield позволит регулировать скорость и направление каждого из них. Далее к Arduino Uno присоединяем модуль Bluetooth , который позволит дистанционно управлять машиной с помощью телефона Android. TXDприсоединяется к цировому пину RXD, а RXDк TXDсоответственно. Для питания Bluetooth модуля необходимо VCC подсоеденить к 3V.GNDподключается к соответствющему порту на платеArduino.

Для управления данной сборкой необходима программа RC-Controller, которая имеется в свободном доступе в Play Market. Для подключения программы к сборке нужно выполнить поиск устройств. Найдя в списке устройств HC-06, подключить сборку к Android. После данных действий программа готова к работе.

Вывод

По результатам данного проекта можно судить, что программирование собственных проектов в настоящие время доступно и актуально. При помощи Arduinoи ее комплектующих можно собрать любой проект, который будет ограничиваться только фантазией. Дальнейшее работа над данным проектом планируется модернизация парктроника – это изменение интенсивности мигания светодиода по мере приближения к препятствию и дополнить его пьезоэлементом. Так же для компактности планируется объединение двух кодов в один, для загрузки на одну плату Arduino. Результат проекта отображен на рис. 4 Приложение 1

Литература:

1. Петин В.А. - Проекты с использованием контроллера Arduino (Электроника) 2014

2. Улли Соммер - Программирование микроконтроллерных плат ArduinoFreeduino – 2012

3. http://arduino.ru/Reference


Приложение 1

Знакомство и программирование Arduino

 Рис. 1. Среда программирования Arduino

Знакомство и программирование Arduino

Рис. 2. Схема парктроника

 

Знакомство и программирование Arduino

 Рис. 3. Схема машины под управлением Bluetooth

Знакомство и программирование Arduino

 

Знакомство и программирование Arduino

Рис. 4. Парктроник в действии

Приложение 2

Скетч 1. программирования парктроника

#define Trig 10

#define Echo 11

#define ledPin 12

void setup()

{

pinMode(Trig, OUTPUT);

pinMode(Echo, INPUT);

pinMode(ledPin, OUTPUT);

Serial.begin(9600);

}

unsigned int impulseTime=0;

unsigned int distance_sm=0;

void loop()

{

digitalWrite(Trig, HIGH);

delayMicroseconds(10);

digitalWrite(Trig, LOW);

impulseTime=pulseIn(Echo, HIGH);

distance_sm=impulseTime/58;

Serial.println(distance_sm);

if (distance_sm<10)

{

digitalWrite(ledPin, HIGH);

}

else

{

digitalWrite(ledPin, LOW);

}

delay(100);

}

Скетч 2. программирования машины под управлением Bluetooth

#define in1 8

#define in2 9

#define in3 10

#define in4 11

int command;

int Speed = 204;

int Speedsec;

int buttonState = 0;

int lastButtonState = 0;

int Turnradius = 0;

int brakeTime = 45;

int brkonoff = 1;

void setup() {

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

Serial.begin(9600);

}

void loop() {

if (Serial.available() > 0) {

command = Serial.read();

Stop();

switch (command)

{

case 'R':

forward();

break;

case 'L':

back();

break;

case 'B':

left();

break;

case 'F':

right();

break;

case 'G':

forwardleft();

break;

case 'I':

forwardright();

break;

case 'H':

backleft();

break;

case 'J':

backright();

break;

case '0':

Speed = 100;

break;

case '1':

Speed = 140;

break;

case '2':

Speed = 153;

break;

case '3':

Speed = 165;

break;

case '4':

Speed = 178;

break;

case '5':

Speed = 191;

break;

case '6':

Speed = 204;

break;

case '7':

Speed = 216;

break;

case '8':

Speed = 229;

break;

case '9':

Speed = 242;

break;

case 'q':

Speed = 255;

break;

}

Speedsec = Turnradius;

if (brkonoff == 1) {

brakeOn();

} else {

brakeOff();

}

}

}

void forward() {

analogWrite(in1, Speed);

analogWrite(in3, Speed);

}

 

void back() {

analogWrite(in2, Speed);

analogWrite(in4, Speed);

}

 

void left() {

analogWrite(in3, Speed);

analogWrite(in2, Speed);

}

 

void right() {

analogWrite(in4, Speed);

analogWrite(in1, Speed);

}

void forwardleft() {

analogWrite(in1, Speedsec);

analogWrite(in3, Speed);

}

void forwardright() {

analogWrite(in1, Speed);

analogWrite(in3, Speedsec);

}

void backright() {

analogWrite(in2, Speed);

analogWrite(in4, Speedsec);

}

void backleft() {

analogWrite(in2, Speedsec);

analogWrite(in4, Speed);

}

 

void Stop() {

analogWrite(in1, 0);

analogWrite(in2, 0);

analogWrite(in3, 0);

analogWrite(in4, 0);

}

 

void brakeOn() {

buttonState = command;

if (buttonState != lastButtonState) {

if (lastButtonState == 'F') {

if (buttonState == 'S') {

back();

delay(brakeTime);

Stop();

}

}

if (lastButtonState == 'B') {

if (buttonState == 'S') {

forward();

delay(brakeTime);

Stop();

}

}

if (lastButtonState == 'L') {

if (buttonState == 'S') {

right();

delay(brakeTime);

Stop();

}

}

if (lastButtonState == 'R') {

if (buttonState == 'S') {

left();

delay(brakeTime);

Stop();

}

}

}

lastButtonState = buttonState;

}

void brakeOff() {

}

скачать dle 11.0фильмы бесплатно

Конференции

Реформа образования: проблемы и перспективы (для учителей)

Наука XXI века: новые достижения (для учащихся)

Конкурсы для учащихся

➤ Взгляд в будущее (конкурс сочинений)

Русская поэзия последних десятилетий XX века (Литературный конкурс)

Конкурсы для учителей

Лучшая презентация к уроку

Лучшая разработка внеклассного мероприятия

Лучшая разработка классного часа

Лучший сценарий праздника

Лучший сайт педагога

Лучшая разработка урока с использованием ИКТ

Лучшая разработка открытого урока

Лучшая разработка урока в начальной школе

Лучшая разработка практического занятия

Лучший конспект занятия с использованием игровых приёмов

Лучший конспект занятия в детском саду

Лучшая разработка занятия по патриотическому воспитанию

Лучшая разработка родительского собрания

Лучшая разработка занятия по экологическому воспитанию

Лучшая разработка занятия в классе предшкольной подготовки

Лучшая разработка мастер-класса

Лучшая разработка спортивно-массового мероприятия

Лучшая разработка тренинга