2016年11月18日 星期五

老皮講堂-如何藉由超聲波模組(HC-SR04)來偵測距離

       大家好! 今天主要來簡單介紹一下, 怎麼透過Arduino板子及超聲波模組(HC-SR04)來偵測距離並能在1602LCD屏幕上顯示.

       關於超聲波模組(HC-SR04), 請參考以下照片. 至於工作原理, 可在網路上搜尋關鍵字, 即可參考得知, 在此不多作描述. 
       主要Spec => 量測範圍 : 2~450cm, 精度 : 3mm, 有效量測角度: <15度.











     
       另外, 這邊比較特別的是想要把偵測到的距離, 顯示在一個簡單的1602 LCD屏幕, 此處選用的是1602 藍屏 LCM含I2C TWI轉接板.















       
      
      
      以下是整體的接線圖, 其中HC-SR04 & 1602 LCD都吃5V的電. 1602 LCD的SDA接在類比A04端口, SCL則皆在A05端口. 1602 LCD的TrigPIN則接在數字2端口, EchoPIN則接在數字3端口.








       








      以下是程序碼, 提供參考!
=======================================================================
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);   // LCD接腳定義
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
lcd.begin();
for (int i = 0; i < 2; i++) {       //閃2次
  lcd.backlight();                  // 開啟背光
  delay(250);
  lcd.noBacklight();                // 關閉背光
  delay(250);
}
  lcd.backlight();                    // 開啟背光


}
void loop()
{
lcd.clear();
lcd.setCursor(1, 0);                //(第1格,第0行),設定游標位置在第一行第2格
lcd.print("DIS=");
digitalWrite(TrigPin, LOW); //低高低電平發一個短時間脈衝去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);

cm = pulseIn(EchoPin, HIGH) / 58.0; //將回波時間換算成cm
cm = (int(cm * 100.0)) / 100.0; //保留兩位小數
Serial.println("sc;");
  Serial.println("sd0,0;");
  Serial.println("ssHC-SR04:;");
  Serial.println("sd0,8;");
  Serial.print("ss");
  Serial.print(cm);
  Serial.println(";");
  Serial.println("ssCM;");
  lcd.setCursor(5, 0);
  lcd.print(cm);
  lcd.print(" cm");
  delay(3000);

}

影片紀錄(延伸應用設計):


2016年11月6日 星期日

老皮講堂-關於水龍頭 過濾水(水鵝頭) & 廚房(龍頭)

最近發現家裡的廚房水龍頭紛紛出現異象...


問題點:

1. 家裡的過濾水(水鵝頭) , 使用了七年, 這根金屬管壁面竟然出現了大幅的鏽蝕, 雖然照片是外表面, 但不知內管壁會是怎樣, 我們都是用這根管出來的水再接水去煮沸來飲用,  如今此管變成這副德性, 實在用的心不安. 最擔心的是, 若此管材質為銅, 目前表面的電鍍層看似已經被腐蝕破壞了, 是否有可能變出綠色的銅鏽? 這可是飲用水之來源啊, 不可不慎!



























2. 家裡的廚房(龍頭) , 使用了七年, 那根看似厚實的龍嘴, 竟然也出現裂縫, 尤其使用熱水時, 水會從此縫更明顯的噴出, 實在危險, 被噴到不得了啊! 看來這根也該換了...>< !




















解決方式:

1. 關於過濾水(水鵝頭) , 打算選購材質為不銹鋼304的, 我想這樣應該能較能避免再次生鏽吧!
PS: 因為家中是使用PE 2分管來跟水鵝頭作連接的, 因此選購時要特別注意管徑呀!
==>最後去X天拍賣選了一款中價位的不鏽鋼水鵝頭, 1pcs花了750NTD(含運費).

2. 關於廚房(龍頭), 因為這個頭出來的水, 不是給人喝的, 所以材質就不要太介意, 能用就好了!
畢竟錢歹賺啊!
==>最後還是去X天拍賣選了一款廉價的龍頭, 1pcs花了445NTD(含運費).

等收到後, 再好好處理一下了.

2016年11月5日 星期六

老皮講堂-如何藉由Arduino跟安卓手機的通訊來控制一顆LED燈的明滅

大家好! 今天主要來簡單介紹一下, 怎麼透過Arduino板子及藍芽模組(HC-05)來跟Android手機做個連接. 讓手機上的App軟體可以控制麵包板上的LED燈開與關.

1. 首先我們必須先去下載一個App軟體, 名字叫作 " LED Controller "
這個軟體, 我們可以去以下這個網站下載.
https://github.com/Mayoogh/Arduino-Bluetooth-Basic

最主要我們要能下載到 "LED Controller.apk" 這個檔案. 我們可以使用電腦下載後,
再藉由E-mail附加此檔案寄信到自己的信箱, 然後用手機去開啟便可以安裝.
以下就是這個軟體的icon. 安裝好了, 當然我們就可以在手機上開啟這個Free軟體.














2. 接下來, 這邊使用了一個類似Arduino UNO的板子叫做Funduino, 當然它的功能是跟Arduino UNO一樣, 只是它多了一些讓USER方便使用的針腳.
 
怎麼接線, 請參考下面的接線圖.

整體的接線圖如上, 其中藍芽模組是使用型號為HC-05.

LED在麵包板上, 正極(長腳)會串接一個220歐姆的電阻, 避免LED燒掉, 然後接到MB上Power插孔的5V,負極則接到Power插孔的接地Gnd.









HC-05上面的接線如左, 其中Vcc請接到數字接口Pin 13, GND則接到數字接口Pin 的GND.
RXD則接到數字接口Pin1(TX).
TXD則接到數字接口Pin0(RX).
請注意: RXD跟TXD接到主板上的TX跟RX是正好相反喔!














3. 燒錄程序, 這個程序的來源同樣來自https://github.com/Mayoogh/Arduino-Bluetooth-Basic
程序內容如下:

/*
 *  Bluetooh Basic: LED ON OFF - Avishkar
 *  Coder - Mayoogh Girish
 *  Website - http://bit.do/Avishkar
 *  Download the App :
 *  This program lets you to control a LED on pin 13 of arduino using a bluetooth module
 */
char data = 0;                //Variable for storing received data
void setup()
{
  Serial.begin(9600);         //Sets the data rate in bits per second (baud) for serial data transmission
  pinMode(13, OUTPUT);        //Sets digital pin 13 as output pin
}
void loop()
{
  if(Serial.available() > 0)  // Send data only when you receive data:
  {
    data = Serial.read();      //Read the incoming data and store it into variable data
    Serial.print(data);        //Print Value inside data in Serial monitor
    Serial.print("\n");        //New line
    if(data == '1')            //Checks whether value of data is equal to 1
      digitalWrite(13, HIGH);  //If value is 1 then LED turns ON
    else if(data == '0')       //Checks whether value of data is equal to 0
      digitalWrite(13, LOW);   //If value is 0 then LED turns OFF
  }                          

}

4. 接下來, 我們可以開始進行測試了. 當然首先需要進行藍芽連線. HC-05的連線密碼一般是0000 或者 1234,  自己試試應該可以. 接著開啟" LED Controller "這個App程式.
 

此程式的第一個畫面, 就是讓你確認藍芽模組配對無誤, 接著進入第二個畫面, 即是一個簡單的ON跟OFF開關, 很清楚地, 當你按下ON時LED就會亮燈, 當你按下OFF時LED就會熄滅. 若操作無誤, LED有正常運作, 這樣就算完成了這個課程.

PS : 你也可以參考Arduino官方網站的教學說明.
https://create.arduino.cc/projecthub/user206876468/arduino-bluetooth-basic-tutorial-d8b737?ref=platform&ref_id=424_trending___&offset=120