Pular para o conteúdo principal

Grove - Sensor Ultrassônico

pir

Este Grove - Sensor Ultrassônico é um módulo de medição de distância sem contato que funciona a 40KHz. Quando fornecemos um sinal de disparo em pulso com mais de 10uS através do pino de sinal, o Grove_Ultrasonic_Ranger emitirá 8 ciclos de nível de ciclo de 40kHz e detectará o eco. A largura de pulso do sinal de eco é proporcional à distância medida. Aqui está a fórmula: Distância = tempo em nível alto do sinal de eco * velocidade do som (340M/S)/2. O sinal de disparo e de eco do Grove_Ultrasonic_Ranger compartilham um único pino SIG.

atenção

Não conecte ou desconecte o Grove-Ultrasonic-Ranger com o sistema energizado, caso contrário o sensor será danificado. A área medida não deve ser inferior a 0,5 metros quadrados e deve ser lisa.

Versão

Versão do ProdutoAlteraçõesData de Lançamento
Grove-Ultrasonic ranger V1.0InicialMar 2012
Grove-Ultrasonic ranger V2.0Melhora a estabilidade de energia com placa principal de baixa tensão com as seguintes mudanças: 1. Adicionado um capacitor C14 2. Layout redesenhado para deixá-lo mais organizado 3. Compatível com sistema de tensão de 3,3VJulho 2017

Especificação

ParâmetroValor/Faixa
Tensão de operação3,2~5,2V
Corrente de operação8mA
Frequência ultrassônica40kHz
Faixa de medição2-350cm
Resolução1cm
SaídaPWM
Tamanho50mm X 25mm X 16mm
Peso13g
Ângulo de medição15 graus
Temperatura de trabalho-10~60 graus C
Sinal de disparo10uS TTL
Sinal de ecoTTL
dica

Para mais detalhes sobre módulos Grove, consulte Grove System

Plataformas Suportadas

ArduinoRaspberryArduPy
nota

As plataformas mencionadas acima como suportadas são uma indicação da compatibilidade teórica ou de software do módulo. Na maioria dos casos, fornecemos apenas biblioteca de software ou exemplos de código para a plataforma Arduino. Não é possível fornecer biblioteca de software / código de demonstração para todas as possíveis plataformas de MCU. Portanto, os usuários precisam escrever sua própria biblioteca de software.

Primeiros Passos

nota

Se esta é a primeira vez que você trabalha com Arduino, recomendamos firmemente que veja Getting Started with Arduino antes de começar.

Brincar com Arduino

Hardware

  • Passo 1. Prepare os seguintes itens:
Seeeduino V4.2Base ShieldGrove - Ultrasonic Ranger
enter image description hereenter image description hereenter image description here
Adquira agoraAdquira agoraAdquira agora
  • Passo 2. Conecte o Ultrasonic Ranger à porta D7 do Grove-Base Shield.

  • Passo 3. Conecte o Grove - Base Shield ao Seeeduino.

  • Passo 4. Conecte o Seeeduino ao PC via cabo USB.

nota

Se não tivermos o Grove Base Shield, também podemos conectar o Grove_Ultrasonic_Ranger diretamente ao Seeeduino como abaixo.

SeeeduinoGrove-Ultrasonic Ranger
5VVermelho
GNDPreto
Não ConectadoBranco
D7Amarelo

Software

#include "Ultrasonic.h"

Ultrasonic ultrasonic(7);
void setup()
{
Serial.begin(9600);
}
void loop()
{
long RangeInInches;
long RangeInCentimeters;

Serial.println("The distance to obstacles in front is: ");
RangeInInches = ultrasonic.MeasureInInches();
Serial.print(RangeInInches);//0~157 inches
Serial.println(" inch");
delay(250);

RangeInCentimeters = ultrasonic.MeasureInCentimeters(); // two measurements should keep an interval
Serial.print(RangeInCentimeters);//0~400cm
Serial.println(" cm");
delay(250);
}
  • Passo 4. Veremos a distância exibida no terminal como abaixo.
The distance to obstacles in front is:
2 inches
6 cm
The distance to obstacles in front is:
2 inches
6 cm
The distance to obstacles in front is:
2 inches
6 cm

Brincar com Codecraft

Hardware

Passo 1. Conecte um Grove - Ultrasonic Ranger à porta D7 de um Base Shield.

Passo 2. Conecte o Base Shield ao seu Seeeduino/Arduino.

Passo 3. Conecte o Seeeduino/Arduino ao seu PC via cabo USB.

Software

Passo 1. Abra o Codecraft, adicione o suporte a Arduino e arraste um procedimento principal para a área de trabalho.

nota

Se esta é a sua primeira vez usando o Codecraft, veja também o Guide for Codecraft using Arduino.

Passo 2. Arraste os blocos como na imagem abaixo ou abra o arquivo cdc que pode ser baixado no final desta página.

cc

Faça o upload do programa para o seu Arduino/Seeeduino.

success

Quando o envio do código terminar, você verá a distância exibida no Serial Monitor.

Brincar com Raspberry Pi (Com Grove Base Hat para Raspberry Pi)

Hardware

  • Passo 1. Itens utilizados neste projeto:
Raspberry piGrove Base Hat para RasPiGrove - Ultrasonic Ranger
enter image description hereenter image description hereenter image description here
Adquira agoraAdquira agoraAdquira agora
  • Passo 2. Conecte o Grove Base Hat ao Raspberry.

  • Passo 3. Conecte o Grove - Ultrasonic Ranger à porta D5 do Base Hat.

  • Passo 4. Conecte o Raspberry Pi ao PC por meio de um cabo USB.

nota

No passo 3 você pode conectar o sensor ultrassônico a qualquer porta GPIO, mas certifique-se de alterar o comando com o número de porta correspondente.

Software

nota

Se você estiver usando Raspberry Pi com Raspberrypi OS >= Bullseye, você deve usar esta linha de comando apenas com Python3.

  • Passo 1. Siga Setting Software para configurar o ambiente de desenvolvimento.

  • Passo 2. Baixe o arquivo-fonte clonando a biblioteca grove.py.

cd ~
git clone https://github.com/Seeed-Studio/grove.py
  • Passo 3. Execute os comandos abaixo para rodar o código.
cd grove.py/grove
python3 grove_ultrasonic_ranger.py 5 6

A seguir está o código grove_ultrasonic_ranger.py.

import sys
import time
from grove.gpio import GPIO

usleep = lambda x: time.sleep(x / 1000000.0)

_TIMEOUT1 = 1000
_TIMEOUT2 = 10000

class GroveUltrasonicRanger(object):
def __init__(self, pin):
self.dio =GPIO(pin)

def _get_distance(self):
self.dio.dir(GPIO.OUT)
self.dio.write(0)
usleep(2)
self.dio.write(1)
usleep(10)
self.dio.write(0)

self.dio.dir(GPIO.IN)

t0 = time.time()
count = 0
while count < _TIMEOUT1:
if self.dio.read():
break
count += 1
if count >= _TIMEOUT1:
return None

t1 = time.time()
count = 0
while count < _TIMEOUT2:
if not self.dio.read():
break
count += 1
if count >= _TIMEOUT2:
return None

t2 = time.time()

dt = int((t1 - t0) * 1000000)
if dt > 530:
return None

distance = ((t2 - t1) * 1000000 / 29 / 2) # cm

return distance

def get_distance(self):
while True:
dist = self._get_distance()
if dist:
return dist

Grove = GroveUltrasonicRanger

def main():
if len(sys.argv) < 2:
print('Usage: {} pin_number'.format(sys.argv[0]))
sys.exit(1)

sonar = GroveUltrasonicRanger(int(sys.argv[1]))

print('Detecting distance...')
while True:
print('{} cm'.format(sonar.get_distance()))
time.sleep(1)

if __name__ == '__main__':
main()
success

Se tudo correr bem, você poderá ver o seguinte resultado


pi@raspberrypi:~/grove.py/grove $ python3 grove_ultrasonic_ranger.py 5 6
Detecting distance...
121.757901948 cm
246.894770655 cm
2.60205104433 cm
0.205533257846 cm
0.657706425108 cm
247.433267791 cm
122.485489681 cm
^CTraceback (most recent call last):
File "grove_ultrasonic_ranger.py", line 110, in <module>
main()
File "grove_ultrasonic_ranger.py", line 107, in main
time.sleep(1)
KeyboardInterrupt

Você pode sair deste programa simplesmente pressionando ++ctrl+c++.

Brincar com Raspberry Pi (com GrovePi_Plus)

Hardware

  • Passo 1. Prepare os seguintes itens:
Raspberry piGrovePi_PlusGrove - Ultrasonic Ranger
enter image description hereenter image description hereenter image description here
Adquira agoraAdquira agoraAdquira agora
  • Passo 2. Conecte o GrovePi_Plus ao Raspberry.

  • Passo 3. Conecte o Grove-Ultrasonic Ranger à porta D4 do GrovePi_Plus.

  • Passo 4. Conecte o Raspberry ao PC através de um cabo USB.

Software

nota

Se você estiver usando Raspberry Pi com Raspberrypi OS >= Bullseye, deverá usar esta linha de comando apenas com Python3.

  • Passo 1. Siga Setting Software para configurar o ambiente de desenvolvimento.

  • Passo 2. Faça o git clone do repositório do Github.

cd ~
git clone https://github.com/DexterInd/GrovePi.git

  • Passo 3. Execute os comandos abaixo para usar o ultrasonic_ranger para medir a distância.
cd ~/GrovePi/Software/Python
python3 grove_ultrasonic.py

Aqui está o código grove_ultrasonic.py.

# GrovePi + Grove Ultrasonic Ranger

from grovepi import *

# Connect the Grove Ultrasonic Ranger to digital port D4
# SIG,NC,VCC,GND

ultrasonic_ranger = 4

while True:
try:
# Read distance value from Ultrasonic
print ultrasonicRead(ultrasonic_ranger)

except TypeError:
print "Error"
except IOError:
print "Error"
  • Passo 4. Veremos a distância exibida no terminal como abaixo.
pi@raspberrypi:~/GrovePi/Software/Python $ python3 grove_ultrasonic.py
9
9
9
9
9
9
9
9
9
9
9

Brincar com Wio Terminal (ArduPy)

Hardware

  • Passo 1. Prepare os seguintes itens:
Wio TerminalGrove - Ultrasonic Ranger
enter image description hereenter image description here
Adquira agoraAdquira agora
  • Passo 2. Conecte o Grove - Ultrasonic Ranger à porta D0 do Wio Terminal.

  • Passo 3. Conecte o Wio Terminal ao PC através de um cabo USB Tipo-C.

Software

  • Passo 1. Siga ArduPy Getting Started para configurar o ambiente de desenvolvimento ArduPy no Wio Terminal.

  • Passo 2. Certifique-se de que o firmware ArduPy contenha a biblioteca ArduPy do Ultrasonic Ranger usando os seguintes comandos. Para mais informações, siga aqui.

aip install Seeed-Studio/seeed-ardupy-ultrasonic-sensor
aip build
aip flash
  • Passo 3. Copie o código a seguir e salve-o como ArduPy-ultrasonic.py:
from arduino import grove_ultra_ranger
from machine import LCD
from machine import Sprite
import time

Ultrasonic = grove_ultra_ranger(0)
lcd = LCD()
spr = Sprite(lcd) # Create a buff

def main():
spr.createSprite(320, 240)
while True:
spr.setTextSize(2)
spr.fillSprite(spr.color.BLACK)
spr.setTextColor(lcd.color.RED)
spr.drawString("Ultrasonic Sensor", 55, 10)
spr.drawFastHLine(40, 35, 240, lcd.color.DARKGREY)
spr.setTextColor(lcd.color.WHITE)
spr.drawString("- Centimeters: ", 20, 50)
spr.drawString("- Inches: ", 20, 80)
spr.drawNumber(Ultrasonic.cm, 200,50)
time.sleep_ms(50) # Needed for data to be read again
spr.drawNumber(Ultrasonic.inch, 130,80)
spr.pushSprite(0,0)
time.sleep_ms(500)

print("The distance to obstacles in front is:", Ultrasonic.cm, 'centimeter')
print("The distance to obstacles in front is:", Ultrasonic.inch, 'inches')

if __name__ == "__main__":
main()
  • Passo 4. Salve o ArduPy-ultrasonic.py em um local que você conheça. Execute o seguinte comando e substitua <YourPythonFilePath> pelo local do seu ArduPy-ultrasonic.py.
aip shell -n -c "runfile <YourPythonFilePath>"
# Example:
# aip shell -n -c "runfile /Users/ansonhe/Desktop/ArduPy-ultrasonic.py"
  • Passo 5. Veremos a distância exibida no terminal como abaixo, e também exibida na tela LCD do Wio Terminal.
ansonhe@Ansons-Macbook-Pro ~:aip shell -n -c "runfile /Users/ansonhe/Desktop/ArduPy-ultrasonic.py"
Positional argument (/dev/cu.usbmodem1413101) takes precedence over --open.
Connected to ardupy
The distance to obstacles in front is: 3 centimeter
The distance to obstacles in front is: 1 inches
The distance to obstacles in front is: 7 centimeter
The distance to obstacles in front is: 2 inches
The distance to obstacles in front is: 6 centimeter
The distance to obstacles in front is: 2 inches
The distance to obstacles in front is: 6 centimeter
The distance to obstacles in front is: 2 inches
The distance to obstacles in front is: 4 centimeter
The distance to obstacles in front is: 1 inches
The distance to obstacles in front is: 7 centimeter
The distance to obstacles in front is: 2 inches

FAQs

P1: Como o sensor Grove-Ultrasonic funciona?

  • R1: Quando fornecemos um sinal de gatilho de pulso com mais de 10uS através do pino de sinal, o Grove_Ultrasonic_Ranger emitirá 8 ciclos de nível de ciclo de 40kHz e detectará o eco. A largura de pulso do sinal de eco é proporcional à distância medida. Aqui está a fórmula: Distância = tempo em nível alto do sinal de eco * velocidade do som (340M/S)/2.

P2: Por que o sensor Grove-Ultrasonic tem apenas 1 pino de sinal, comparado com outros sensores ultrassônicos com pinos Trig e Echo?

  • R2: O trig e o sinal de eco do Grove_Ultrasonic_Ranger compartilham 1 pino SIG através do MCU.

P3: Podemos conectar vários sensores ultrassônicos a um Arduino?

  • R4: Sim, aqui está o exemplo, um sensor está conectado ao D2 e o outro ao D3.
#include "Ultrasonic.h"

Ultrasonic ultrasonic1(2);
Ultrasonic ultrasonic2(3);
void setup()
{
Serial.begin(9600);
}
void loop()
{
long RangeInCentimeters1;
long RangeInCentimeters2;

RangeInCentimeters1 = ultrasonic1.MeasureInCentimeters(); // two measurements should keep an interval
Serial.print(RangeInCentimeters1);//0~400cm
Serial.println(" cm");

RangeInCentimeters2 = ultrasonic2.MeasureInCentimeters(); // two measurements should keep an interval
Serial.print(RangeInCentimeters2);//0~400cm
Serial.println(" cm");

delay(250);
}

Recursos

Projeto

Hackeando as Escadas no Novo Escritório da Seeed: Transforme as escadas do escritório em uma instalação interativa, e até mesmo em uma forma legal de transmitir a mensagem "STAFF ONLY" aos visitantes.

Suporte Técnico & Discussão de Produto

Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...