亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

基于 Arduino 的安全系统

组件和用品

Arduino UNO
× 1
超声波传感器 - HC-SR04(通用)
× 1
舵机(Tower Pro MG996R)
× 1
蜂鸣器
× 1
面包板(通用)
× 1
公/母跳线
× 1
塑料盒
× 1

必要的工具和机器

应用和在线服务

Arduino IDE
处理IDE

关于这个项目

简介

该项目是一个基于Arduino的安全系统,由Arduino Uno、伺服电机、超声波传感器和压电蜂鸣器组成。

在这里,超声波传感器感测到其范围内的物体,从而激活蜂鸣器。该传感器数据还会输入到 Processing IDE 软件中,该软件会创建一个图形地图。

伺服电机用于旋转超声波传感器,以覆盖大面积。

这是一个非常简单的项目,可以在一个小时内完成。

这是项目的程序 -

  • 将传感器的触发引脚连接到 Arduino 的引脚 2
  • 将传感器的 Echo 引脚连接到 Arduino 的引脚 3
  • 分别连接传感器电源和地的 Vcc 和 GND
  • 将蜂鸣器放在面包板上
  • 将其正极连接到 Arduino 的引脚 10 并将负极接地
  • 将伺服电机的黑线和红线分别接地和供电
  • 将伺服电机的黄线连接到 Arduino 的 Pin 9
  • Arduino 的 5V 端接电源,Arduino 的 GND 端接地

完成这些连接后,将整个电路放入盒子内,如图所示。

然后是时候编写代码了。

代码

  • 安全系统_IDE
  • 处理
Security System_IDEC9Search
#include 。 int tPin =2;int ePin =3;int buz =10;int d1,d2;int i =0;int sdistance;Servo myServo;无效设置(){ Serial.begin(9600); pinMode(tPin, 输出); pinMode(ePin, 输入); pinMode(嗡嗡声,输出); myServo.attach(9); }void loop() { for(i=0;i<=180;i +=10) { myServo.write(i);延迟(30); d2 =计算距离(); Serial.print(i); Serial.print(",");序列号。打印(d2); Serial.print("."); } for(i=180;i>0; i-=10){ myServo.write(i);延迟(30); d2 =计算距离(); Serial.print(i); Serial.print(",");序列号。打印(d2); Serial.print("."); }}int calculateDistance(){ digitalWrite(tPin,HIGH);延迟(1000);数字写入(tPin,低); d1 =脉冲输入(ePin,高); d2 =d1 * 0.0171821306; if (d2 <10) { digitalWrite(buz,HIGH); } else { digitalWrite(buz,LOW);返回 d2; }
处理Java
import processing.serial.*; // 为串行通信导入库import java.awt.event.KeyEvent; // 导入用于从串口读取数据的库import java.io.IOException;Serial myPort; // 定义对象序列// deubes variablesString angle="";String distance="";String data="";String noObject;float pixsDistance;int iAngle, iDistance;int index1=0;int index2=0;PFont orcFont;无效设置(){大小(1366、768); // ***将其更改为您的屏幕分辨率*** smooth(); myPort =new Serial(this,"COM3", 9600); // 开始串行通信 myPort.bufferUntil('.'); // 从串口读取数据直到字符'.'。所以实际上它是这样写的:angle,distance.}void draw() { fill(98,245,31); // 模拟移动线的运动模糊和缓慢淡入淡出 noStroke();填充(0,4); rect(0, 0, width, height-height*0.065);填充(98,245,31); // 绿色 // 调用绘制雷达的函数 drawRadar();画线();绘制对象(); drawText();}void serialEvent (Serial myPort) { // 开始从串行端口读取数据 // 从串行端口读取数据直到字符 '.'并将其放入字符串变量“data”中。 data =myPort.readStringUntil('.'); data =data.substring(0,data.length()-1); index1 =data.indexOf(","); // 找到字符 ',' 并将其放入变量 "index1" angle=data.substring(0, index1); // 从位置“0”读取数据到变量 index1 的位置或即 Arduino Board 发送到串口的角度值 distance=data.substring(index1+1, data.length()); // 读取从位置“index1”到数据末尾的数据,即距离值 // 将字符串变量转换为整数 iAngle =int(angle); iDistance =int(distance);}void drawRadar() { pushMatrix();翻译(宽/2,高-高*0.074); // 将起始坐标移动到新位置 noFill();行程重量(2);中风(98,245,31); // 绘制弧线 arc(0,0,(width-width*0.0625),(width-width*0.0625),PI,TWO_PI); arc(0,0,(width-width*0.27),(width-width*0.27),PI,TWO_PI); arc(0,0,(width-width*0.479),(width-width*0.479),PI,TWO_PI); arc(0,0,(width-width*0.687),(width-width*0.687),PI,TWO_PI); // 绘制角度线 line(-width/2,0,width/2,0); line(0,0,(-width/2)*cos(radians(30)),(-width/2)*sin(radians(30))); line(0,0,(-width/2)*cos(radians(60)),(-width/2)*sin(radians(60))); line(0,0,(-width/2)*cos(radians(90)),(-width/2)*sin(radians(90))); line(0,0,(-width/2)*cos(radians(120)),(-width/2)*sin(radians(120))); line(0,0,(-width/2)*cos(radians(150)),(-width/2)*sin(radians(150))); line((-width/2)*cos(radians(30)),0,width/2,0); popMatrix();}void drawObject() { pushMatrix();翻译(宽/2,高-高*0.074); // 将起始坐标移动到新位置 strokeWeight(9);中风(255,10,10); // 红色 pixsDistance =iDistance*((height-height*0.1666)*0.025); // 覆盖传感器从厘米到像素的距离 // 将范围限制为 40 厘米 if(iDistance<10){ // 根据角度和距离绘制对象 line(pixsDistance*cos(radians(iAngle)) ,-pixsDistance*sin(radians(iAngle)),(width-width*0.505)*cos(radians(iAngle)),-(width-width*0.505)*sin(radians(iAngle))); } popMatrix();}void drawLine() { pushMatrix();行程重量(9);行程(30,250,60);翻译(宽/2,高-高*0.074); // 将起始坐标移动到新的位置 line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle))); // 根据角度绘制线条 popMatrix();}void drawText() { // 在屏幕上绘制文本 pushMatrix(); if(iDistance>10) { noObject ="超出范围"; } else { noObject ="在范围内"; } 填充(0,0,0); noStroke(); rect(0,高-高*0.0648,宽,高);填充(98,245,31);文本大小(25); text("2cm",宽-宽*0.3854,高-高*0.0833); text("4cm",宽-宽*0.281,高-高*0.0833); text("6cm",宽-宽*0.177,高-高*0.0833); text("10cm",宽-宽*0.0729,高-高*0.0833);文本大小(40);文本(“Akshay6766”,宽-宽*0.875,高-高*0.0277); text("角度:" + iAngle +" ",宽-宽*0.48,高-高*0.0277); text("距离:",宽-宽*0.26,高-高*0.0277); if(iDistance<40) { text(" " + iDistance +" cm", width-width*0.225, height-height*0.0277); } 文本大小(25);填充(98,245,60);翻译((宽-宽*0.4994)+宽/2*cos(弧度(30)),(高-高*0.0907)-宽度/2*sin(弧度(30)));旋转(-弧度(-60));文本(“30”,0,0);重置矩阵();翻译((宽-宽*0.503)+宽/2*cos(弧度(60)),(高-高*0.0888)-宽度/2*sin(弧度(60)));旋转(-弧度(-30));文本(“60”,0,0);重置矩阵(); translate((宽-宽*0.507)+width/2*cos(radians(90)),(height-height*0.0833)-width/2*sin(radians(90)));旋转(弧度(0));文本(“90”,0,0);重置矩阵();翻译(宽-宽*0.513+宽/2*cos(弧度(120)),(高-高*0.07129)-宽度/2*sin(弧度(120)));旋转(弧度(-30));文本(“120”,0,0);重置矩阵();翻译((宽-宽*0.5104)+宽/2*cos(弧度(150)),(高-高*0.0574)-宽度/2*sin(弧度(150)));旋转(弧度(-60));文本(“150”,0,0); popMatrix(); }

示意图


制造工艺

  1. TinyML-Language Detector-基于 Edge Impulse &Arduino
  2. Arduino Gyroscope Game with MPU-6050
  3. Arduino 数字骰子
  4. 钢铁侠
  5. 找到我
  6. Arduino 加湿器控制
  7. Sonar 使用 arduino 并在处理 IDE 上显示
  8. MobBob:由 Android 智能手机控制的 DIY Arduino 机器人
  9. Arduino Audio Reactive Desk Light
  10. NeoMatrix Arduino Pong
  11. Arduino Joystick
  12. 计步器(Arduino 101)