新卒エンジニアがボディハッキングしてみた!

はじめまして、新卒エンジニアのぬまちゃんです!

​ 入社してから約半年が経ち、会社にも慣れてきた今日このごろです。
今回は新卒エンジニアのぬまちゃんがマイクロチップをインプラントをしてみて思ったこととか書いていこうと思います。
初エンジニアブログ投稿...ブログを書くこと自体が初めてなのでお手柔らかにお願いします。

マイクロチップのインプラントってなんぞ?

少し痛い話をしますので嫌いな方は飛ばしてください。

​ まず、マイクロチップのインプラントとはマイクロチップ(ここではNFCチップ)を体内に入れる事を言います。
どんなチップを入れたかというとDANGEROUS THINGSのNFCチップを入れました(実際に入れたもの)。
チップにも色々種類があります。
米粒大のチップや、平たいチップ、容量が少ない・多いと様々です。
平たいチップは切開しないと入れることができないので今回は断念しましたが、そっちの方が読み書きの感度が高いらしいので少し検討中です。
そして、入れた箇所は右手の親指と人差し指の付け根のあたりです。

f:id:AdwaysEngineerBlog:20190927170947p:plain:w400

触ると「あ、ここにおるな」って分かる程度に表面にいます。
読み書きする時に痺れたりとかはなく、本当に触らないとわからないくらいに自然です。
もし取り外したい場合は、穴を開けて押し出せば取れるらしいです。
入れる時は全く痛くなかったです。

何できるん?

ほとんどないです!!

​ 現状でできることは飲み会で自慢するかNDEFで決まっているレコードタイプを入れるしかないです。
NDEF(NFC Data Exchange Format)とは、簡単に言うとNFCのデータフォーマットです。
そしてそのレコードタイプにはテキストだったりURIだったりを保存できます。他にはWi-Fiの設定とかも保存できるので、友達に自分家のWi-Fiを教える時に手をかざして読み取ってもらえれば接続できちゃいます。なんと便利!

でも、たった数百バイトの容量しかデータを保存できないので物足りない感はあります。
マイクロチップのインプラントで色々なことをしたい場合は色々なセンサーを備えたマイクロチップをインプラントしないといけないんですよね。

何やりたいん?

ほとんど何もできないなら自分でなにか作るしかない!
そこで、スマートロックを自作してみようかなと思いました。
手をかざして鍵の施錠ができるのってかっこいいですよね。
今回のブログで完成まで行きたかったのですが、
家の鍵を回すカバー的なパーツがまだ未完成なのでできていません。
鍵の回す所を計測して3Dモデル作って3Dプリンターを使って出力するのが大変で...

​ なので、今回のブログではとりあえずのお試しを作りました。
Raspberry PiにPaSoRiを繋いでスクリプト実行してチップを読み込ませるとモーターが回るというものです。
スクリプトはPython2系です。
実際にスマートロックを作る時は3系で書く予定です。

使ったもの

  • Raspberry Pi 3 modelB+
  • PaSoRi
  • サーボモーター
  • NFCチップ(手)

コード

import RPi.GPIO as GPIO
import time
import nfc
​
​
def startup(targets):
    print("> waiting for new NFC tags...")
    return targets
​
​
def connected(tag):
    print("> connected!")
    if tag.ndef:
        servo.ChangeDutyCycle(2.5)
        time.sleep(1)
        servo.ChangeDutyCycle(12)
        time.sleep(1)
    return True
​
​
def released(tag):
    print("> released!")
​
​
if __name__ == '__main__':
    clf = nfc.ContactlessFrontend('usb')
    GPIO.setmode(GPIO.BCM)
​
    GP_OUT = 4
    GPIO.setup(GP_OUT, GPIO.OUT)
​
    servo = GPIO.PWM(GP_OUT, 50)
    servo.start(0)
​
    if clf:
        while clf.connect(rdwr={
            'on-startup': startup,
            'on-connect': connected,
            'on-release': released,
        }):
            pass
​
    servo.stop()
    GPIO.cleanup()
​

実行

$ python smart-lock.py
$ > waiting for new NFC tags...
# チップを読み取る
$ > connected!
# ここで回ってます!!
$ > released!

まとめ

今回は、マイクロチップをインプラントしてみた新卒エンジニアが思ったこととかを書いてみました。
現状のマイクロチップインプラントではできることは少ないのですが、
どんどん増えていくといいなあと思ってる次第です。
自分でもマイクロチップを活用して何か作っていきたいと思っています。
次はスマートロックを完成させるまでをブログに書きたいですね!!