---
# System prepended metadata

title: 發明展

---

# 發明展

## (P)防盜包包
#### 說明
>人離開時沒有偵測到手機藍芽訊號則進入防盜狀態
>防盜狀態中如果失重則蜂鳴器警報
>
![](https://i.imgur.com/k0nbv7i.png =80%x)


### 防盜系統程式邏輯

:::success
#### 手機部分 ---- App Inventorentor實現


< 待機循環狀態> (可切換)
 重複無限次:
> 
>等待3秒
>
> 檢測與防盜裝置藍芽的連線狀態:
> 
> 如果與裝置連線上，則 :
> > 發送訊息:`手機訊號` 給防盜裝置
> >偵測防盜裝置的發出的訊息:
> >如果收到訊息則手機顯示`與裝置連結中，訊息接收正常!`
> >若沒收到訊息則手機顯示`與裝置連結中，但訊息未接收到!`
> >>>
> 如果未與裝置連線上，則:
> >嘗試連線
> >如果連線成功，則手機顯示`與裝置恢復連線，等待三秒後進行訊息發送`
> >如果連線失敗，則手機顯示`與裝置連線失敗，等待三秒後重新嘗試連線`
___

<解除警報功能>
>持續發送`解除警報`訊息
:::


:::success
#### 防盜系統部分 ---- Arduino實現
重複無限次:
>
>等待1秒
>
>檢測`失重裝態`與`手機訊息接受狀態` 並且發送`裝置訊號`給手機，持續`5秒`
>
>如果有持續收到`手機訊號`    (可詳細設定判別模式)
>>則不作為
>>
>如果沒持續收到`手機訊號`，則進入`防盜模式`





___

防盜模式，重複無限次:
>檢測失重狀態，持續`10秒` (可詳細設定判別模式)
>如果失重狀態為`真`則進入`警報模式`
>如果剛剛解除了`警報模式`，則`解除防盜模式`

___

警報模式，重複無限次:
>`蜂鳴器`警報開啟
>偵測手機訊息，持續`5秒`
>>偵測到`解除警報`，則解除警報模式
:::


### 材料
>Arduino UNO＊1
藍牙模組HC-06＊1 或者 HC-05＊1
USB TO TTL線＊1
MPU6050 (GY-521) * 1  (陀螺儀+加速度模組)
蜂鳴器
麵包板 x1
連接線 * n

#### 採購網站
>[機器人王國](https://robotkingdom.com.tw/)
>[蝦皮](https://shopee.tw/)


#### 參考資料
[手機 App Inventorentor 透過藍牙傳送訊號給 Arduino](https://blog.cavedu.com/2013/11/08/appinventorandarduinowithbluetooth/)
[HC05具體說明](https://swf.com.tw/?p=693)
[藍芽模組與安卓互相發訊息](https://blog.cavedu.com/2017/10/18/hc05-hc06/)
[三軸陀螺儀+三軸加速計感測模組](https://atceiling.blogspot.com/2019/09/arduino57mpu-6050-gy-521.html)
http://mr-sochen.blogspot.com/2017/05/arduinohc-05-hc-06.html

## (P)智慧藥盒
### 說明
>1.事前設定好吃藥時間
>2.螢幕提示下次吃藥時間
>3.時間到裝置發出聲音，螢幕提示吃藥
>4.使用者聽到聲音後，按按鈕取藥吃藥
>5.裝置紀錄用藥時間點
>6.使用者可以查看吃藥時間、上次沒吃藥的時間、


### 材料
>DS1302 時鐘模組
>Keypad 4x4按鍵 
>Arduino UNO＊1
>藍牙模組HC-06＊1 或者 HC-05＊1
>USB TO TTL線＊1
>1602 LCD (顯示器)
>蜂鳴器
>連接線 * n
>麵包板 x1


### 參考

https://blog.jmaker.com.tw/arduino-ds1302-lcd
https://www.shs.edu.tw/works/essay/2020/10/2020101511013121.pdf
http://www.shs.edu.tw/works/essay/2018/03/2018032307445876.pdf


## (P)智慧輪椅

### 說明
>1.偵測傾斜到一定程度時，伸出輔助輪
>2.不傾斜時收回輔助輪


### 傾斜系統材料
>Arduino Uno 開發板
SW520D傾斜傳感器
LED x1
220歐姆電阻 x1
蜂鳴器 x1
麵包板 x1
排線 N 條

### 馬達部分
>待查

### 參考
https://atceiling.blogspot.com/2020/10/arduino82sw-520d.html
___


## (P)手勢辨認


![](https://1.bp.blogspot.com/-2kRk6Ga0fZ4/YWO28r4xiAI/AAAAAAAAE5c/Pg_njseyeokrKaphGj-WjXLii0wi5NAGQCLcBGAsYHQ/s1663/iThome_Day_26_Fig_01.jpg)

[圖片來源](https://ithelp.ithome.com.tw/articles/10279266)

```cpp=

/*
  APDS-9960 - Gesture Sensor
  >APDS-9960 - 手勢傳感器
  
  This example reads gesture data from the on-board APDS-9960 sensor 
  of the Nano 33 BLE Sense and prints any detected gestures to the Serial Monitor.
  
  >本範例透過 Arduino Nano 33 BLE Sense板上的APDS-9960 sensor  讀取 手勢資料，
  >並透過 Serial Monitor 輸出(印出資料)偵測到的手勢資料
  
  

  Gesture directions are as follows:
  - UP:    from USB connector towards antenna
  - DOWN:  from antenna towards USB connector
  - LEFT:  from analog pins side towards digital pins side
  - RIGHT: from digital pins side towards analog pins side

    >手勢方向感應如下
    >上 : USB接口 往 天線方向
    >下 : 天線 往 USB接口 方向
    >左 : 從類比接腳 往 數位接腳方向
    >右 : 從數位接腳 往 類比接腳方向


  The circuit:
  - Arduino Nano 33 BLE Sense
  
    >電路
    >-Arduino Nano 33 BLE Sense
    
    
  This example code is in the public domain.
  >本程式所有類別(class)的中的成員(members)及方法(method)均為公開存取(public)
*/

#include <Arduino_APDS9960.h>
//引入標頭檔 Arduino_APDS9960.h
//即引入Arduino_APDS9960庫，來去使用


void setup() {
  Serial.begin(9600);
  //串列埠初始化，初始化鮑率必須傳入來設定
  //鮑率(Braud)=9600，即每秒傳輸9600位元(bit)的資料
  
  while (!Serial);
  //假設上一行串列埠沒有開出來設定好，就讓程式卡在這行進入迴圈空轉。
    
  if (!APDS.begin()) {
    Serial.println("Error initializing APDS-9960 sensor!");
  }
  
  //初始化感應器 APDS.begin()，如果失敗則印出失敗訊息 "Error...."



  // for setGestureSensitivity(..) a value between 1 and 100 is required.
  // Higher values make the gesture recognition more sensitive but less accurate
  // (a wrong gesture may be detected). Lower values makes the gesture recognition
  // more accurate but less sensitive (some gestures may be missed).
  // Default is 80
  //APDS.setGestureSensitivity(80);

/*
 * 方法setGestureSensitivity(..)，可以傳入1~100的整數數值
 * 數值越高會讓手勢辨識越機敏，相對的你手勢要求的正確度就更高，
 * 所以更多不嚴謹的手勢，會被偵測出來，導致正確率下降。
 * 
 * 而數值越低會手勢辨識敏感度變低，所以偵測到的手勢正確率上升。
 * ("數值越低有些手勢可能會錯失掉"，我不知道是偵測不到還是敏感度變低後偵測結果會有偏 
 * 差，你們需要自己去嘗試)
 * 
 * 預設值為80
 * 
 * APDS.setGestureSensitivity(80);
 * 
 * */


  Serial.println("Detecting gestures ...");
  //串列埠輸出"偵測到手式"
  //這行程式表達意思有錯誤，理論上應該是跟上面的if式用else接在一起
  //上面那行 使APDS初始化 如果沒有失敗才印出這行，才合邏輯
  
}
void loop() {
  if (APDS.gestureAvailable()) {
    // a gesture was detected, read and print to Serial Monitor
    //APDS開始持續感應手勢
    int gesture = APDS.readGesture();

    //設置整數變數gesture為感應到的數值
    
    switch (gesture) {
    
      case GESTURE_UP:
      /* GESTURE_UP應該是某個內建好的整數常數
       * 假設 gesture 與 GESTURE_UP 相等則做下面的動作
       */
       
        Serial.println("Detected UP gesture");
        break;
        //上面判定好手勢向上後，
        //輸出"偵測到手勢向上"，即"Detected UP gesture"
        //透過break直接跳出 switch case區塊
        
        
    //以下就類推了
      case GESTURE_DOWN:
        Serial.println("Detected DOWN gesture");
        break;

      case GESTURE_LEFT:
        Serial.println("Detected LEFT gesture");
        break;

      case GESTURE_RIGHT:
        Serial.println("Detected RIGHT gesture");
        break;
        
    //如果輸入gesture不是以上數值，就執行這個區塊內的動作
      default:
        // ignore
        break;
    }
  }
}

```
```
int buzzer=13;
void setup() 
{ 
  pinMode(buzzer,OUTPUT);
} 
void loop() 
{ 
  int i;
  while(1) 
  { 
    for(i=0;i<50;i++)
    { 
      digitalWrite(buzzer,HIGH);
      delay(1);
      digitalWrite(buzzer,LOW);
      delay(1);
    } 
    delay(1000);
    for(i=0;i<100;i++)
    { 
      digitalWrite(buzzer,HIGH);
      delay(3);
      digitalWrite(buzzer,LOW);
      delay(3);
    } 
    delay(1000);
  } 
} 
```


```cpp=
/*
AUTHOR: Hazim Bitar (techbitar)
DATE: Aug 29, 2013
LICENSE: Public domain (use at your own risk)
CONTACT: techbitar at gmail dot com (techbitar.com)
*/
#include <Wire.h>
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
void setup()
{
  
 Serial.begin(9600);
 Serial.println("Enter AT commands:");
 BTSerial.begin(9600); // HC-05 default speed in AT command more
}
void loop()
{

  
}

```

https://electronics.stackexchange.com/questions/67739/hc-05-bluetooth-module-not-recognized-by-mobile-phone


https://livingtech.education/2018/06/03/arduino%E5%AF%A6%E7%94%A8-hc-05-at-mode%E4%B8%BB%E5%BE%9E%E9%85%8D%E5%B0%8D/