超聲波距離傳感器的功耗小、成本低,并且在距離檢測上擁有不俗的性能,而與此同時有許多人萌生嘗試用超聲波傳感器為有視覺障礙的人設計開發輔助視覺設備的念頭。
近年來,隨著開源硬件大熱,市場上出現了越來越多性能強大并且成本低廉的開發板。而有許多設計就選擇了用Ariduino來開發“導盲”裝置。下面這個實用的裝置,由電子制作收集整理:
“導盲”帽子",這頂帽子出自station420之手,采用了Arduino Uno、超聲波傳感器以及蜂鳴器等元件。其中通過傳感器可檢測到前方是否有障礙物,并通過蜂鳴器發出不同頻率的聲音來反饋與障礙物之間的距離,提醒佩戴者前方是否有危險。

整個裝置的結構非常簡單,將超聲波傳感器嵌于鴨嘴帽的帽檐,裝有Arduino、蜂鳴器和電池等主體電子設備的“黑盒”掛于帽子的后面。而使用時,佩戴者只需要“戴上”帽子,并不需要任何其它的繁瑣步驟。當然,在帽子上加裝這些裝置仍然有許多不盡人意的地方。
Arduino主板
為這個運用,我在網上找到了一個 Arduino超聲波測距程序,大家可以去實踐。程序如下:
arduio 超聲波測距模塊
------------------------------------------
5v ----- Vcc
GND ----- GND
pin 7 ----- Echo
pin 8 ----- Trig
程序如下:
const int PIN_ECHO = 7;
const int PIN_TRIG = 8;
const int PIN_LED = 13;
void setup()
{
Serial.begin(9600);
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_ECHO, INPUT);
pinMode(PIN_TRIG, OUTPUT);
}
// led blink
void blink(const int interval = 300)
{
digitalWrite(PIN_LED, HIGH);
delay(interval);
digitalWrite(PIN_LED, LOW);
delay(interval);
}
// distance detect
int distanceDetect()
{
digitalWrite(PIN_TRIG, LOW); // 保持超聲波控制接口低電平2us
delayMicroseconds(2);
digitalWrite(PIN_TRIG, HIGH); // 保持超聲波控制接口高電平10us
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW); // 超聲波控制接口轉低電平以觸發測距過程
// 距離測試公式為 脈沖長度 * 音速 / 2;
const int SONIC_SPEED = 340; // 音速在大氣中傳播速度為340米/秒
int duration = pulseIn(PIN_ECHO, HIGH); // 讀出脈沖時間
return duration * SONIC_SPEED / 2;
}
// loop control
void loop()
{
int val = Serial.read();
if (val == 'r')
{
// notify msg
blink();
Serial.println("cmd rcv, begin detect.");
// detect
int distance = distanceDetect();
if (0 >= distance)
{
Serial.println("detect fail.");
}
else
{
Serial.print("distance: ");
Serial.println(distance);
}
}
delay(500);
}
|