兩年前在CSDN上面也寫過HC-SR04模塊的使用,當時是使用的wiringPi庫操作的,這次使用的Node.js。這個系列的文章也都是使用Node.js操作樹莓派。
1.產品特點HC-SR04 超聲波測距模塊可提供 2cm-400cm 的非接觸式距離感測功能, 測距精度可達高到 3mm;模塊包括超聲波發射器、接收器與控制電路。基本工作原理:
採用 IO 口 TRIG 觸發測距,給至少 10us 的高電平信號;
模塊自動發送 8 個 40khz 的方波,自動檢測是否有信號返回;
有信號返回,通過 IO 口 ECHO 輸出一個高電平,高電平持續的時間就是超聲
波從發射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2;
2.實物圖3.引腳說明序號注意:
此模塊不宜帶電連接,若要帶電連接,則先讓模塊的 GND 端先連接,否則會影響 模塊的正常工作。
測距時,被測物體的面積不少於 0.5 平方米且平面儘量要求平整,否則影響測量的
這裡的時序圖和產品特點中介紹的也就一樣了。
6.實驗電路圖
7.實驗代碼
const Gpio = require('pigpio').Gpio;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); const watchHCSR04 = () => { let startTick; echo.on('alert', (level, tick) => { if (level == 1) { startTick = tick; } else { const endTick = tick; const diff = (endTick >> 0) - (startTick >> 0); console.log('測量的距離 = ',diff / 2 / MICROSECDONDS_PER_CM + 'cm'); } });};watchHCSR04();setInterval(() => { trigger.trigger(10, 1); }, 1000);
這次使用的是pigpio這個庫,這個庫使用的引腳關係是BCM編碼,之前的rpio這個庫使用的物理引腳BOARD編碼。這裡是最大的區別,其他的就是看文檔怎麼使用了。
關於引腳圖可以看之前的文章。
8.測量數據
root@raspberrypi:/home/pi/Desktop/nodePai測量的距離 = 133.5944925cm測量的距離 = 133.1826405cm測量的距離 = 132.3932575cm測量的距離 = 196.48772499999998cm測量的距離 = 196.57352749999998cm測量的距離 = 196.48772499999998cm測量的距離 = 135.56795cm測量的距離 = 31.403715cm測量的距離 = 29.7734675cm
經過最近的使用發現,在用Node.js操作樹莓派使用這些模塊,都不需要去怎麼在乎時序圖,在I2C和SPI中這兩個中體現還要明顯。
這裡我們可以發散一下,當距離小於某一個值的時候,就讓蜂鳴器響,隨著距離的減小,蜂鳴器的響動頻率越來越大;這裡就是我們常見的汽車後面的超聲波雷達了,汽車後面使用的收發一體的超聲波探頭。
請他喝杯咖啡吧