遠隔押印マシーン『InCaaaan（インカーン）簡易版』の作り方

新型コロナ禍でテレワークが急速に普及しています。
しかしながら、押印が必要なため、テレワークができず、出社を余儀なくされてる人がたくさんいます。

そんな方々のために、出社しなくても押印ができるマシーン「InCaaaan（インカーン）」の作り方をご紹介します。
（本当は自分用の備忘録ですが）

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">遠隔押印マシーン「InCaaaan（インカーン）」 <a href="https://t.co/XFPVWRzcdP">pic.twitter.com/XFPVWRzcdP</a></p>&mdash; たつや@ 5/29cluster広島LT大会 (@tatsuya1970) <a href="https://twitter.com/tatsuya1970/status/1261915377052692486?ref_src=twsrc%5Etfw">May 17, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


これは、2019年9月開催の広島県主催のハッカソン [レッドハッカソンHIROSHIMA 2019](https://www.pref.hiroshima.lg.jp/site/innovation/redhack2019.html)で優勝した作品です。
ほとんどは、チームメイトの @oic0310 さんが実装し、すでにQiitaに作り方を投稿しています。

[InCaaaan:印鑑マシーンの作り方 超概要編](https://qiita.com/oic0310/items/fb0aca7d355df9ddafb3)
[InCaaaan:印鑑マシーンの作り方 上司ツール編](https://qiita.com/oic0310/items/a9b3f2178a11f0774bd8)
[InCaaaan:印鑑マシーンの作り方 部下ツール編]
(https://qiita.com/oic0310/items/52be3b2d982031defbc6)

今回私は「ボタンを押せば、押印マシーンが作動する」箇所だけとりあげた簡易版の作り方をご紹介します。

会社で InCaaaan の導入を検討するときに決裁者に見せるプロトタイピング用や、趣味の電子工作などでご参考にしていただければと思います。

##作るもの

###InCaaaan（インカーン）簡易版

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">遠隔押印マシーン「InCaaaan（インカーン）簡易版」 <a href="https://t.co/errXKyolEd">pic.twitter.com/errXKyolEd</a></p>&mdash; たつや@ 5/29cluster広島LT大会 (@tatsuya1970) <a href="https://twitter.com/tatsuya1970/status/1261922214657421312?ref_src=twsrc%5Etfw">May 17, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

###システム構成
<img width="1040" alt="仕組み.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/2b458635-5079-c628-85af-07414f59968a.png">


###必要なもの

- [SORACOM LTE-M Button](https://soracom.jp/products/gadgets/aws_button/)
- [obniz Board](https://obniz.io/ja/products/obnizboard)
- サーボモーター（[マイクロサーボ SG-5010](http://akizukidenshi.com/catalog/g/gM-08913/)）
- ケーブル（オスーオス）３本
- モバイルバッテリー
- 印鑑
- サーボモーターを固定するもの（本件では透明プラスチック）
- 土台（本件ではバインダーを使用）
- 両面テープ（強力なもの）
- グルーガン　または　結束バンド

<img width="924" alt="仕組み.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/367fe9c9-bce8-7839-867c-88ce02e4ab91.jpeg">




## SORACOM LTE-M Button

SORACOM LTE-M Button（以下ソラコムボタン）については、まずSORACOMのユーザーコンソールやAWSの AWS1-Clickで設定します。

設定方法は公式サイトのこの記事の ステップ１からステップ４が参考になります。
[SORACOM LTE-M Button powered by AWS をクリックしてSlackに通知する](https://dev.soracom.io/jp/start/aws_button_slack/)

この記事ではソラコムボタンを押したらslackに通知するようになっていますが、今回はその部分をobnizにhttp通信するようにします。

ソラコムボタンを押したらobnizにhttp通信するAWSのLambdaのコードは以下

```python:lambda_function.py
#!/usr/bin/python
# _*_ coding: utf-8 _*_

import json

def lambda_handler(event, context):
    import urllib.request
    url = 'https://obniz.io/.............' #obnizのURL
    req = urllib.request.Request(url)
    try:
        with urllib.request.urlopen(req) as res:
            body = res.read()
    except urllib.error.HTTPError as err:
        return {
            'statusCode': 404,
            'body': json.dumps(err.code)
        }
    except urllib.error.URLError as err:     
        return {
            'statusCode': 500,
            'body': json.dumps(err.reason)
        }
    return {
        'statusCode': 200,
        'body': json.dumps(body)    
    }
```

## サーボモーターを動かす
###obnizとサーボモーターをつなげる

ozniz ー　サーボモーター
io2 　ー 　signal（黄色の線）
io1　 ー 　vcc（オレンジの線）
io0 　ー　 gnd（茶色の線）
![obnizとサーボ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/78ec223e-f6bb-b0b9-198f-bdd614abf39f.jpeg)

### obnizの準備
公式サイトに書いてあるとおり簡単に始められます。
[obnizのはじめ方](https://obniz.io/ja/how_obniz_works#getStart)

### コード
obnizの開発者コンソールにコードを入力します。
ハッカソンのチームメイトのQiitaを参考にしました。（ほぼ丸写し）
[InCaaaan:印鑑マシーンの作り方 上司ツール編](https://qiita.com/oic0310/items/a9b3f2178a11f0774bd8)

```html:incan.html
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
  <script src="https://unpkg.com/obniz@2.4.0/obniz.js"></script>
</head>
<body>

<script>
var obniz = new Obniz("XXXX-YYYY"); // XXXX-YYYYはobnizのID
obniz.onconnect = async function () {
  var servo = obniz.wired("ServoMotor", {gnd:0, vcc:1, signal:2});
  servo.angle(128.0); // ここの角度を調整してください
  setTimeout(function(){
    servo.angle(0.0); 
  }, 3000);
   
</script>
</body>
```
コードを入力したら、開発者コンソールの「実行」ボタンをクリックすると、サーボモーターが動きます。
動くことを確認したら、いったん、サーボモーターとobnizを外します。

##工作

最後に、InCaaaan本体を組み立てます。
実は、コード書くより、ここが大変でした。

サーボモーターを固定します。
プラスチックに穴をあけてサーボモーターをネジで固定しました。
サーボモーターの下のカバーを外したらちょうどネジ穴があったのでそこを活用しました。

![サーボ固定.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/683a54db-588d-b380-7eaa-d7666866cd90.jpeg)


印鑑を何か棒のようなものをテープでぐるぐる巻きにして固定します。
（私はプラスチックのハンガーの一部を拝借しました）
![IMG_6187.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/20a25cab-2e27-a59e-a091-8e06cece1ae3.jpeg)

これを、サーボモーターにグルーガンで固定します。
角度調整後、結束バンドで固定した方がいいと思います。
![IMG_6199.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/67788cd8-cb79-ee98-7efa-e33681f30c1b.jpeg)


土台（バインダー）に強力な両面テープで固定して、
サーボモーターとobniz、obnizとモバイルバッテリーをつなげます。

完成！
![IMG_6202.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/f4a8f65a-d2f7-9972-6232-d2b5af8baabb.jpeg)

あとは、ソラコムボタンを押せば、どこからでも印鑑を押すことができます。

最初はうまく押印できないと思いますので、何度もobnizのコードの角度の微調整を行ってください。




それでは、テレワークの成功をお祈りいたします。