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

整個(gè)裝置的結(jié)構(gòu)非常簡(jiǎn)單,將超聲波傳感器嵌于鴨嘴帽的帽檐,裝有Arduino、蜂鳴器和電池等主體電子設(shè)備的“黑盒”掛于帽子的后面。而使用時(shí),佩戴者只需要“戴上”帽子,并不需要任何其它的繁瑣步驟。當(dāng)然,在帽子上加裝這些裝置仍然有許多不盡人意的地方。
Arduino主板
為這個(gè)運(yùn)用,我在網(wǎng)上找到了一個(gè) Arduino超聲波測(cè)距程序,大家可以去實(shí)踐。程序如下:
arduio 超聲波測(cè)距模塊
------------------------------------------
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); // 超聲波控制接口轉(zhuǎn)低電平以觸發(fā)測(cè)距過(guò)程
// 距離測(cè)試公式為 脈沖長(zhǎng)度 * 音速 / 2;
const int SONIC_SPEED = 340; // 音速在大氣中傳播速度為340米/秒
int duration = pulseIn(PIN_ECHO, HIGH); // 讀出脈沖時(shí)間
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);
}
|
|