スマホやタブレットのタッチパネルを自動でタッチする装置のつくり方

# 解決する課題

スマホやタブレットなどのタッチパネル製品で抱えている以下の問題を解決します。

- アプリを制作しているときに、テストするために手動でタッチするのは大変
- カメラアプリで定期的に撮影してタイムラプス動画を作りたい
- iPhoneの[スイッチコントロール](https://support.apple.com/ja-jp/HT201370)では、痒い所に手が届かない
- ゲーム周回時に、連打したり何度も同じ場所をタッチするのが面倒くさい

# 解決する方法

マイコンとタッチ部品を使って、**タッチパネルを自動でタッチする機器**を作成しました。
合わせて、**スマホ上に機器を固定できる**ようにしました。

- 作業時間：30分
- 部品費用：1200円くらい（余ってるマイコンがあれば600円くらい）

## 用意する物

- マイコン：Seeeduino XIAO (SAMD21 Cortex M0+)
    - 特長：**Arduino互換**、**USB-C**で**小型**（最小！？）、**低価格**（最安！？）
    - データシート：[PDF](https://files.seeedstudio.com/wiki/Seeeduino-XIAO/res/ATSAMD21G18A-MU-Datasheet.pdf)
    - 購入先：[スイッチサイエンス](https://www.switch-science.com/catalog/6335/) 594円[^1]

<img alt="Seeeduino-XIAO-pinout" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691672/92b2c815-bd23-faab-baad-b267b363f6df.jpeg" width=50%>

- タッチ部品：OMRON G6L-1F

    - 特長：世界最低背クラスの超薄型1極フラットリレー
    - データシート：[PDF](https://www.fa.omron.co.jp/data_pdf/cat/g6l_ds_j_1_5.pdf?id=2838)
    - 購入先：[スイッチサイエンス](https://www.switch-science.com/catalog/2455/) 662円[^1]

<img alt="OMRON G6L-1F" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691672/ca2cc7aa-f65e-1a53-660f-ba190e9634be.jpeg" width=50%">

[^1]: 2020/11/10時点

## 作業（ハードウェア）

2つの基板をワイヤーでハンダ付けします。（導電性接着剤でもよいです）
接続するピンは下記の表のとおりです。

| マイコン（ピン名称）<br/>Seeeduino XIAO | タッチ部品（ピン名称）<br/>OMRON G6L-1F |
|:--|:--|:--|
| 5V | 5V |
| GND | GND |
| A10 （デジタルピンならどこでもよいです） | EN |

<img alt="Wiring Diagram" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691672/36b2d339-02c3-ef81-5283-fef575c320b7.png" width=50%">

ピンソケットを付けると、他の用途で使用するときに便利です。

<img alt="Seeeduino XIAO" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691672/b5fd1993-85dc-a38b-d7bb-998b1cac05b9.jpeg" width=50%">

## 作業（ソフトウェア）

### Arduino IDEの初期設定（Seeeduino XIAOを使用する場合）
1. メニューバーから「ファイル ＞ 環境設定」を選択
2. 追加のボードマネージャーのURLのテキストボックス右側のアイコンをクリック
3. 「<https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json>」を追加する
<img alt="Arduino Setting" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691672/f3e365dd-6e46-b54a-e9d1-7344f399230f.png" width=50%">
4. メニューバーから「ツール ＞ ボード:(...) ＞ ボードマネージャー」を選択
5. テキストボックスに「XIAO」を入力して検索する
6. 「Seeed SAMD Boards」が出てきたら、インストールをクリック
7. メニューバーから「ツール ＞ ボード:(...) ＞ Seeed SAMD (...) ＞ Seeeduino XIAO」を選択
<img alt="Arduino Setting Board Manager" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691672/d6cf0120-b8b2-2b63-a778-ad8f8df84f43.png" width=50%">

### プログラム（スケッチ）を書き込む

1. 下記を記述（時間を短くすれば、連打速度が速くなります）
2. パソコンとマイコン（Seeeduino XIAO）をUSB（Type-C）で接続する
3. Arduino IDEの「→」をクリックしてマイコンボードに書き込む
4. 書き込み後、リレー音が**カチカチ**と鳴ることを確認する

```c:RelayTouch.ino
#define PIN_TOUCH A10    // マイコンのピン設定（タッチ部品のENが接続されているピン）
void setup(){
    pinMode(PIN_TOUCH, OUTPUT);
}

void loop(){
  digitalWrite(PIN_TOUCH, HIGH);
  delay(25);    // 25ms間ONする（適当）

  digitalWrite(PIN_TOUCH, LOW);
  delay(1000);  // 1s間OFFする（適当）
}
```

## 動作確認

コンセント or モバイルバッテリーからマイコンへUSB給電すれば、動作が始まります。
タッチ部品の裏側の**金属部分**をタッチパネルに接触させて、反応すれば完成！！！

### タッチ部品の固定

**洗濯バサミの片側にタッチ部品を接着剤で付ける**と、簡単に固定できます（オススメ！）

<img alt="Usage Example" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691672/738c96fe-8e26-559f-9123-a747d6dc99d0.jpeg" width=50%">