Introduction: Sensor De Deslizamento
O sensor de deslizamento tem como objetivo detectar movimentos de terra em encostas, por exemplo, e emitir sinais que alertam para uma população local de risco de deslizamento.
Supplies
O que outras pessoas estão dizendo
Step 1: Materiais
-Placa de Arduíno Uno;
-Sensor Mpu 6050;
-Cabos de cores diferentes;
-Software Arduíno IDE;
-Cabo USB das duas pontas;
-Cápsula para proteger o sistema.
Step 2: Conexões Placa De Arduíno - Sensor
SLC - A5;
SDA - A4;
VCC - 5v;
GND - gnd
Esses cabos devem ser conectados nos terminais acima
Step 3: Código
<p>//Carrega a biblioteca Wire<br> #include<wire.h></p><p> //Endereco I2C do MPU6050 const int MPU=0x68; //Variaveis para armazenar valores dos sensores int AcX=0,AcY=0,AcZ=0,Tempo=2000; float AngPlanoZX; float AngPlanoZY; float TempoZX ; float TempoZY; const int LED = 13;//Informa que o LED que irá acender e apagar será o da Placa de ArduínoUno </p><p> void setup() { pinMode (LED, OUTPUT); //Define o pino do LED como saída Serial.begin(9600); //Inicia a comunicação com o computador, com uma taxa de transmissão de 9600 bits per second Wire.begin(); //Inicia a biblioteca Wire Wire.beginTransmission(MPU); //Inicia a transmissão dos dados do sensor Wire.write(0x6B); //Inicializa o MPU-6050 Wire.write(0); Wire.endTransmission(true); } void Piscar(int Intensidade)//Função que irá controlar a intensidade da piscada, em relação ao ângulo de inclinação que o sensor se encontra { switch (Intensidade){ case 1: Tempo=TempoZX; break;//Informa um primeiro caso para a piscada do LED case 2: Tempo=TempoZY; break;//Informa um segundo caso para a piscada do LED } digitalWrite(LED, HIGH);//Liga o LED delay(Tempo);//Espera digitalWrite(LED, LOW);//Desliga o LED delay(Tempo); } void loop() { Wire.beginTransmission(MPU); Wire.write(0x3B); // Wire.endTransmission(false); //Solicita os dados do sensor Wire.requestFrom(MPU,14,true); //Armazena o valor dos sensores nas variaveis correspondentes AcX=Wire.read()<<8|Wire.read(); AcY=Wire.read()<<8|Wire.read(); AcZ=Wire.read()<<8|Wire.read(); </p><p> //calculo para converter o valor bruto do acelerometro float Ax=AcX*(9.81/16384); float Ay=AcY*(9.81/16384); float Az=AcZ*(9.81/16384); </p><p> //Conversão dos valores obtidos, em radianos, para graus AngPlanoZX= (atan(Ax/Az))*(180/PI); AngPlanoZY= (atan(Ay/Az))*(180/PI); //Verificação da inclinação do sensor de massa if (AngPlanoZX>(15) || AngPlanoZX<(-15)) { //Função que parametriza o tempo da piscada do led TempoZX= 1000+((1000-50)/(15-90)*(abs(AngPlanoZX)-15)); Serial.print ("O ângulo de inclinação do sensor é de = "); Serial.print(AngPlanoZX); Serial.println("°");//Informa o ângulo de inclinação do sensor Serial.println ("AVISO! POSSIBILIDADE DE DESLIZAMENTO DE MASSA!");//Envia a mensagem para o monitor serial Serial.println(" "); Piscar(1);//Inicia o primeiro caso da piscada do LED } else if (AngPlanoZY>(15) || AngPlanoZY<(-15)) { //Função que parametriza o tempo da piscada do led TempoZY= 1000+((1000-50)/(15-90)*(abs(AngPlanoZY)-15)); Serial.print ("O ângulo de inclinação do sensor é de = "); Serial.print(AngPlanoZY); Serial.println("°");//Informa o ângulo de inclinação do sensor Serial.println ("AVISO! POSSIBILIDADE DE DESLIZAMENTO DE MASSA!");//Envia a mensagem para o monitor serial Serial.println(" "); Piscar(2);//Inicia o segundo caso da piscada do LED } else { digitalWrite(LED, LOW);//Desliga o LED //Imprime os valores da aceleração lido pelo sensor antes do calculo. Serial.println("\n"); Serial.print("AcX = "); Serial.print(AcX); Serial.print(" ");//Informa o valor da acelaração medido pelo sensor, em bits, no eixo X //Envia valor Y do acelerometro para a serial Serial.print(" | AcY = "); Serial.print(AcY); Serial.print(" ");//Informa o valor da acelaração medido pelo sensor, em bits, no eixo Y //Envia valor Z do acelerometro para a serial Serial.print(" | AcZ = "); Serial.println(AcZ);//Informa o valor da acelaração medido pelo sensor, em bits, no eixo Z //Valor da aceleração após o cálculo. Serial.print("AcX = "); Serial.print(Ax); Serial.print(" m/s²");//Informa o valor da acelaração medido pelo sensor, em m/s², no eixo X Serial.print(" | AcY = "); Serial.print(Ay); Serial.print(" m/s²");//Informa o valor da acelaração medido pelo sensor, em m/s², no eixo Y Serial.print(" | AcZ = "); Serial.print(Az);Serial.println(" m/s²");//Informa o valor da acelaração medido pelo sensor, em m/s², no eixo Z</p><p> Serial.print("Ângulo de inclinação do eixo Z no plano ZX= "); Serial.print(AngPlanoZX); Serial.println("°");//Informa o ângulo de inclinação Serial.print("Ângulo de inclinação do eixo Z no plano ZY= "); Serial.print(AngPlanoZY); Serial.println("°"); Serial.println("-----------------------------------------");//Informa o ângulo de inclinação } //Aguarda 2000 ms e reinicia o processo delay(Tempo); }</p>
Step 4: Resultado Final
Sensor funcionando.
Comments