Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Система безопасности на основе Arduino

Компоненты и расходные материалы

Arduino UNO
× 1
Ультразвуковой датчик - HC-SR04 (общий)
× 1
Сервоприводы (Tower Pro MG996R)
× 1
Зуммер
× 1
Макет (общий)
× 1
Провода перемычки "папа / мама"
× 1
Пластиковый ящик
× 1

Необходимые инструменты и машины

Нож

Приложения и онлайн-сервисы

IDE Arduino
IDE обработки

Об этом проекте

Введение

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

Здесь ультразвуковой датчик обнаруживает объект, который находится в пределах его досягаемости, что активирует зуммер. Эти данные датчика также передаются в программное обеспечение Processing IDE, которое создает графическую карту.

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

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

Вот процедура проекта -

  • Подключите триггерный контакт датчика к контакту 2 Arduino.
  • Подключите эхо-вывод датчика к выводу 3 Arduino.
  • Подключите Vcc и GND источника питания датчика и заземления соответственно.
  • Поместите зуммер на макетную плату.
  • Подключите его положительный конец к выводу 10 Arduino, а отрицательный конец - к земле.
  • Подключите черный и красный провода серводвигателя к заземлению и питанию соответственно.
  • Подключите желтый провод серводвигателя к контакту 9 Arduino.
  • Подключите клемму 5V Arduino к источнику питания, а клемму GND Arduino - к земле.

Завершив эти соединения, поместите всю схему в коробку, как показано на рисунке.

Тогда пора писать код.

Код

  • Система безопасности_IDE
  • Обработка
Система безопасности_IDE C9Search
 #include . int tPin =2; int ePin =3; int buz =10; int d1, d2; int i =0; int sdistance; Servo myServo; void setup () {Serial.begin (9600); pinMode (tPin, ВЫХОД); pinMode (ePin, ВХОД); pinMode (buz, ВЫХОД); myServo.attach (9); } void loop () {для (я =0; я <=180; я + =10) {myServo.write (я); задержка (30); d2 =calculateDistance (); Serial.print (i); Serial.print (","); Серийный. Отпечаток (d2); Serial.print ("."); } для (я =180; я> 0; я =10) {myServo.write (я); задержка (30); d2 =calculateDistance (); Serial.print (i); Serial.print (","); Серийный. Отпечаток (d2); Serial.print ("."); }} int calculateDistance () {digitalWrite (tPin, ВЫСОКИЙ); задержка (1000); digitalWrite (tPin, LOW); d1 =pulseIn (ePin, HIGH); d2 =d1 * 0,0171821306; если (d2 <10) {digitalWrite (buz, HIGH); } else {digitalWrite (buz, LOW); } return d2; } 
Обработка Java
 import processing.serial. *; // импортирует библиотеку для последовательной связиimport java.awt.event.KeyEvent; // импортирует библиотеку для чтения данных из последовательного порта java.io.IOException; Serial myPort; // определяет объектный серийный номер // дефубирует переменные String angle =""; String distance =""; String data =""; String noObject; float pixsDistance; int iAngle, iDistance; int index1 =0; int index2 =0; PFont orcFont; void setup () {size (1366, 768); // *** ИЗМЕНИТЬ ЭТО НА РАЗРЕШЕНИЕ ЭКРАНА *** smooth (); myPort =новый последовательный порт (это, «COM3», 9600); // запускает последовательную связь myPort.bufferUntil ('.'); // считывает данные из последовательного порта до символа '.'. На самом деле он читается так:угол, расстояние.} Void draw () {fill (98,245,31); // имитация размытия при движении и медленного затухания движущейся линии noStroke (); заполнить (0,4); rect (0, 0, ширина, высота-высота * 0,065); заполнить (98 245,31); // зеленый цвет // вызывает функции отрисовки радара drawRadar (); drawLine (); drawObject (); drawText ();} void serialEvent (Serial myPort) {// начинает чтение данных из последовательного порта // читает данные из последовательного порта до символа '.' и помещает его в строковую переменную data. данные =myPort.readStringUntil ('.'); data =data.substring (0, data.length () - 1); index1 =data.indexOf (","); // находим символ ',' и помещаем его в переменную index1 angle =data.substring (0, index1); // считываем данные из позиции "0" в позицию переменной index1 или это значение угла, отправленного платой Arduino в последовательный порт distance =data.substring (index1 + 1, data.length ()); // считываем данные от позиции "index1" до конца данных pr, которые представляют собой значение расстояния // конвертирует строковые переменные в Integer iAngle =int (angle); iDistance =int (расстояние);} void drawRadar () {pushMatrix (); перевести (ширина / 2, высота-высота * 0,074); // перемещает начальные координаты в новое место noFill (); strokeWeight (2); инсульт (98 245,31); // рисует дуговые линии arc (0,0, (ширина-ширина * 0,0625), (ширина-ширина * 0,0625), PI, TWO_PI); arc (0,0, (ширина-ширина * 0,27), (ширина-ширина * 0,27), PI, TWO_PI); arc (0,0, (ширина-ширина * 0,479), (ширина-ширина * 0,479), PI, TWO_PI); arc (0,0, (ширина-ширина * 0,687), (ширина-ширина * 0,687), PI, TWO_PI); // рисует угловые линии line (-width / 2,0, width / 2,0); строка (0,0, (- ширина / 2) * cos (радианы (30)), (- ширина / 2) * sin (радианы (30))); строка (0,0, (- ширина / 2) * cos (радианы (60)), (- ширина / 2) * sin (радианы (60))); строка (0,0, (- ширина / 2) * cos (радианы (90)), (- ширина / 2) * sin (радианы (90))); строка (0,0, (- ширина / 2) * cos (радианы (120)), (- ширина / 2) * sin (радианы (120))); строка (0,0, (- ширина / 2) * cos (радианы (150)), (- ширина / 2) * sin (радианы (150))); линия ((- ширина / 2) * cos (радианы (30)), 0, ширина / 2,0); popMatrix ();} void drawObject () {pushMatrix (); перевести (ширина / 2, высота-высота * 0,074); // перемещает начальные координаты в новое место strokeWeight (9); инсульт (255,10,10); // красный цвет pixsDistance =iDistance * ((высота-высота * 0,1666) * 0,025); // покрывает расстояние от датчика от см до пикселей // ограничение диапазона 40 см if (iDistance <10) {// рисует объект в соответствии с углом и линией расстояния (pixsDistance * cos (radians (iAngle)) , -pixsDistance * sin (радианы (iAngle)), (ширина-ширина * 0,505) * cos (радианы (iAngle)), - (ширина-ширина * 0,505) * sin (радианы (iAngle))); } popMatrix ();} void drawLine () {pushMatrix (); strokeWeight (9); инсульт (30,250,60); перевести (ширина / 2, высота-высота * 0,074); // перемещает начальные координаты в новую позицию (0,0, (высота-высота * 0,12) * cos (радианы (iAngle)), - (высота-высота * 0,12) * sin (радианы (iAngle))); // рисует линию под углом popMatrix ();} void drawText () {// рисует текст на экране pushMatrix (); if (iDistance> 10) {noObject ="Вне диапазона"; } else {noObject ="В диапазоне"; } fill (0,0,0); noStroke (); rect (0, высота-высота * 0,0648, ширина, высота); заполнить (98 245,31); textSize (25); текст («2см», ширина-ширина * 0,3854, высота-высота * 0,0833); текст («4см», ширина-ширина * 0,281, высота-высота * 0,0833); текст («6см», ширина-ширина * 0,177, высота-высота * 0,0833); текст («10см», ширина-ширина * 0,0729, высота-высота * 0,0833); textSize (40); текст («Акшай6766», ширина-ширина * 0,875, высота-высота * 0,0277); текст ("Угол:" + iAngle + "", ширина-ширина * 0,48, высота-высота * 0,0277); текст ("Расстояние:", ширина-ширина * 0,26, высота-высота * 0,0277); if (iDistance <40) {текст ("" + iDistance + "см", ширина-ширина * 0,225, высота-высота * 0,0277); } textSize (25); заполнить (98 245,60); translate ((ширина-ширина * 0,4994) + ширина / 2 * cos (радианы (30)), (высота-высота * 0,0907) -ширина / 2 * sin (радианы (30))); повернуть (-радианы (-60)); текст («30», 0,0); resetMatrix (); translate ((ширина-ширина * 0,503) + ширина / 2 * cos (радианы (60)), (высота-высота * 0,0888) -ширина / 2 * sin (радианы (60))); повернуть (-радианы (-30)); текст («60», 0,0); resetMatrix (); translate ((ширина-ширина * 0,507) + ширина / 2 * cos (радианы (90)), (высота-высота * 0,0833) -ширина / 2 * sin (радианы (90))); повернуть (радианы (0)); текст («90», 0,0); resetMatrix (); translate (ширина-ширина * 0,513 + ширина / 2 * cos (радианы (120)), (высота-высота * 0,07129) -ширина / 2 * sin (радианы (120))); повернуть (радианы (-30)); текст («120», 0,0); resetMatrix (); translate ((ширина-ширина * 0,5104) + ширина / 2 * cos (радианы (150)), (высота-высота * 0,0574) -ширина / 2 * sin (радианы (150))); повернуть (радианы (-60)); текст («150», 0,0); popMatrix (); } 

Схема


Производственный процесс

  1. Детектор языка TinyML на основе Edge Impulse и Arduino
  2. Игра с гироскопом Arduino с MPU-6050
  3. Цифровые игральные кости Arduino
  4. Железный человек
  5. Найди меня
  6. Управление увлажнителем Arduino
  7. Сонар с использованием Arduino и отображение при обработке IDE
  8. MobBob:самостоятельный робот Arduino, управляемый смартфоном Android
  9. Реактивный настольный светильник для звука Arduino
  10. NeoMatrix Arduino Pong