.. note::
Hola, ¡bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook! Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
**¿Por qué unirse?**
- **Soporte experto**: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprende y comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Previsualizaciones exclusivas**: Accede anticipadamente a nuevos anuncios de productos y adelantos.
- **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
- **Promociones y sorteos festivos**: Participa en sorteos y promociones festivas.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo.
.. _2.2.8_js:
2.2.8 Sensor Ultrasónico
============================
Introducción
---------------
El sensor ultrasónico utiliza ultrasonidos para detectar objetos y medir distancias
con precisión. Emite ondas ultrasónicas y las convierte en señales electrónicas.
Componentes necesarios
---------------------------
En este proyecto, necesitamos los siguientes componentes.
.. image:: ../img/list_2.2.5.png
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nombre
- ARTÍCULOS EN ESTE KIT
- ENLACE
* - Kit Raphael
- 337
- |link_Raphael_kit|
También puedes comprarlos por separado en los enlaces a continuación.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCCIÓN DE COMPONENTES
- ENLACE DE COMPRA
* - :ref:`cpn_gpio_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_ultrasonic_sensor`
- |link_ultrasonic_buy|
Diagrama esquemático
-------------------------
.. image:: ../img/image329.png
Procedimientos experimentales
--------------------------------
**Paso 1:** Construye el circuito.
.. image:: ../img/image220.png
**Paso 2:** Ve a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/raphael-kit/nodejs/
**Paso 3:** Ejecuta el código.
.. raw:: html
.. code-block::
sudo node ultrasonic_sensor.js
Una vez ejecutado el código, el módulo del sensor ultrasónico detecta la distancia entre
el obstáculo al frente y el propio módulo, luego el valor de la distancia se imprimirá en
la pantalla.
**Código**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
// The number of microseconds it takes sound to travel 1cm at 20 degrees celcius
const MICROSECDONDS_PER_CM = 1e6/34321;
const trigger = new Gpio(23, {mode: Gpio.OUTPUT});
const echo = new Gpio(24, {mode: Gpio.INPUT, alert: true});
trigger.digitalWrite(0); // Make sure trigger is low
const watchHCSR04 = () => {
let startTick;
echo.on('alert', (level, tick) => {
if (level === 1) {
startTick = tick;
} else {
const endTick = tick;
const diff = (endTick >> 0) - (startTick >> 0); // Unsigned 32 bit arithmetic
console.log(diff / 2 / MICROSECDONDS_PER_CM);
}
});
};
watchHCSR04();
// Trigger a distance measurement once per second
setInterval(() => {
trigger.trigger(10, 1); // Set trigger high for 10 microseconds
}, 1000);
**Explicación del Código**
La función ``trigger`` se puede usar para generar un pulso en un GPIO y
``alerts`` se pueden usar para determinar el tiempo de un cambio de estado GPIO
con precisión de unos pocos microsegundos.
Estas dos características se pueden combinar para medir la distancia usando un sensor
ultrasónico HC-SR04.
.. code-block:: js
setInterval(() => {
trigger.trigger(10, 1); // Set trigger high for 10 microseconds
}, 1000);
This is to periodically send out a 10us ultrasonic pulse.
.. code-block:: js
const watchHCSR04 = () => {
echo.on('alert', (level, tick) => {
if (level === 1) {
startTick = tick;
} else {
const endTick = tick;
const diff = (endTick >> 0) - (startTick >> 0); // Unsigned 32 bit arithmetic
console.log(diff / 2 / MICROSECDONDS_PER_CM);
}
});
};
Esta función configura una alerta que registrará el tiempo entre el envío del pulso (level es 1) y la recepción del eco (level es 0).
Multiplicando la diferencia de tiempo por la velocidad del sonido (y dividiendo por 2), se puede obtener la distancia al obstáculo delante.
.. https://github.com/fivdi/pigpio
Imagen del fenómeno
-------------------
.. image:: ../img/image221.jpeg