當飛行器加入感測元件時會擦出怎麼樣的火花?我們嚮往的科技貼近生活該怎麼從而下手,不如從小小飛行器開始了解吧!

霸氣四軸器-Dragon Fly 新玩法:超音波、光強度、溫溼度大解鎖

許多的飛行秘密,其實都在背板的小洞上

小編學習日記這次要來分享,名字很霸氣的Dragon Fly,有購買的這款DragonFly 1.0 飛行器的玩家有沒有發現,它除了正面能插上飛行底板外,背後還留有許多接孔呢?今天小編就來告訴大家Dragon Fly 1.0除了能飛在空中之外,還有什麼新鮮的玩法哦~

 

超音波避障

超音波感測器是由超音波發射器、接收器和控制電路所組成。當它被觸發的時候,會發射一連串 40 kHz的聲波並且從離它最近的物體接收回音。人類的耳朵只能接收20~20K赫茲的頻率,所以在發射超音波的時候我們是聽不到的。

超音波感測的原理是利用超音波發射器 (Transmitter) 發射音波之後,碰到物體返回使接收器(Receiver)收到回音之間的時間差來計算與物體之間的距離。聲音的速度約為340M/s ;1000000/340*100=29.4

 

由上面的計算我們可以知道聲音傳播1公分所需要的時間為29.4 毫秒,所以我們在真正計算距離時使用公式distance = (duty/2)/29.4來得到我們需要感測的距離。

而 Arduino 程式碼如下:

int trig = A0;
int echo = A1;
int ini_time =1000;
long current_time =0;
float duty,distance;

void setup(){

Serial.begin(115200);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);

}

void loop(){

digitalWrite(trig,HIGH);
 delayMicroseconds(ini_time);
digitalWrite(trig,LOW);
 duty = pulseIn(echo,HIGH);
 distance = (duty/2)/29.4;
 delay(ini_time);
 Serial.print(“data:”);
current_time = millis();
Serial.print(“NO. “);
Serial.print (current_time/1000);
Serial.print(“, d = “);
Serial.print(distance);
Serial.println(” cm”);

}

實際結果如下:


光強度感測

光強度感測主要是通過光敏電阻來感測光源的刺激,當有光線照射時,電阻內原本處於穩定狀態的電子受到激發,成為自由電子。所以光線越強,產生的自由電子也就越多,電阻就會越小。

暗電阻:當電阻在完全沒有光線照射的狀態下(室溫),稱這時的電阻值為暗電阻(當電阻值穩定不變時,例如1kM歐姆),與暗電阻相對應的電流為暗電流。

亮電阻:當電阻在充足光線照射的狀態下(室溫),稱這時的電阻值為亮電阻(當電阻值穩定不變時,例如1歐姆),與亮電阻相對應的電流為亮電流。

光電流 = 亮電流 – 暗電流
當光敏電阻感受到強光時電阻下降,我們設計當電阻讀取的值小於500時將LED關閉,反之當讀取的值大於500代表沒有光源,將LED燈打開。

 

Arduino程式碼如下:

#define lightsensor  A1
#define led  A0
float light;

void setup() {
Serial.begin(115200);
pinMode(lightsensor, INPUT); //data pin for ambientlight sensor
pinMode(led, OUTPUT);

}

void loop() {
light = analogRead(lightsensor);
if (light < 500) {
digitalWrite(led, LOW);
}
if(light>500) {
    digitalWrite(led,HIGH);
    }

Serial.println(light);
delay(100);
}


溫溼度感測

DHT-11 是一個結合濕度計和測溫元件的複合式感測器,並與一個高性能8位元單晶片相連接,將所量測到的溫、濕度資料拆解成為數位訊號,再由 data pin腳將資料送出。使用上很簡單,但是抓取資料時必須要特別注意時間的掌控,而且每筆資料的抓取時間間隔要1~2秒鐘,不能做太快速的取樣。

其規格如下:

  1. 濕度測量範圍:20~90%RH
  2. 濕度測量精度:±5%RH
  3. 溫度測量範圍:0~50℃
  4. 溫度測量精度:±2℃
  5. 電源供應範圍: 3~5V
  6. 頻率不可超過:0.5Hz (每2秒一次)

在編輯arduino 程式碼之前我們需要從Github先下載DHT的 library,在下載完之後就可以來編寫DHT11的程式碼了喔~

Arduno程式碼如下:

#include “DHT.h”
#define DHTPIN A0
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
char o=’127′;
void setup() {
Serial.begin(115200);
Serial.println(“DHT11 test!”);
dht.begin();
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
  float f = dht.readTemperature(true);
  if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(“Failed to read from DHT !”);
return;
}
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(“Humidity: “);
Serial.print(h);
Serial.print(” %\t”);
Serial.print(“Temperature: “);
Serial.print(t);
Serial.print(” C \t”);
Serial.print(f);
Serial.print(” F \t\t”);
Serial.print(“Heat index: “);
Serial.print(hic);
Serial.print(” C \t”);
Serial.print(hif);
Serial.println(” F”);
}

 

實際測試如下

小編學習日記這次關於Dragon Fly介紹的都是基礎的應用,希望吸引更過人加入Maker 的行列。真正的實用科技不在於技術的高深複雜,而是在於科技事物更符合生活、更有創意,這也是我們Arklab一直推崇的創客精神。下篇的學習日記文章會繼續介紹其他的感測器,如果你對我們的產品有興趣的話,歡迎到 Arklab的蝦皮賣場  或 我們的官網商城內參觀購買哦!