1 of 14

3DSにデータを

自動送信したかった

2015/08/15 kernel/vm 名古屋

野首貴嗣/NOKUBI Takatsugu

knok@daionet.gr.jp/@knok

2 of 14

Nintendo 3DS

  • 任天堂の携帯ゲームコンソール
    • CPU: Nintendo 1048 0H
      • ARM 11相当

3 of 14

プチコン3号

  • 3DSで動作するBASIC処理系
    • 株式会社スマイルブームの製品
    • http://smileboom.com/special/ptcm3/
    • DL販売のみ (税込1000円)
    • バイトコードにコンパイルしてVM上で動作
    • プログラムの交換は専用のサーバーを介してやりとり

4 of 14

困ったこと

  • 入力手段はタッチパネル上のソフトウェアキーボードのみ
    • Bluetoothキーボードも使えない
      • バトル&ゲット ポケモンタイピングDSでは使えた
        • カセット側にBTコントローラを搭載
  • カメラ操作不可
    • 旧DS用プチコンmkIIはできていた
    • QRコードでデータをやりとりする手段があった
  • SDカード内は暗号化されている

5 of 14

なんとかしたい

  • 昔買ったガジェットを思い出した
    • Axniper
      • USB接続 カメラ付きBBガン
      • http://www.donya.jp/item/25694.html
      • 在庫処分セールで2000円だった

UVCカメラ

BB弾装弾口

6 of 14

キーボードを狙い撃つ

  • USB serialから命令を送信
    • PL-2303
  • カメラは普通のUVC video
  • OpenCVでキーボードを認識
  • キーを狙ってFire!

7 of 14

想定外の問題

  • BBガンに反応しない
  • 3DSのタッチパネルは感圧式
    • パネルの接触時間が短すぎる?
  • そもそもの問題として
    • 一度に装填できる弾数は15発
    • 仮に動いたとしても非効率
    • 1文字打つのにかかる時間はおそらく手動の方が高速

8 of 14

他のソリューション

  • ドット絵入力装置
    • https://media.dmm-make.com/item/2897/
    • moriyan6001氏作
      • サーボモーターによる操作
  • ソフトウェアモデム
    • http://rei.to/petitmodem.html
    • rei氏作
      • マイクとスピーカーによるデータ転送

9 of 14

ソフトウェアモデム

  • 音波にデータを載せる
  • FSK Frequency Shift Keying
    • 周波数変換式変調方式

Ref:

通信用語の基礎知識

http://www.wdic.org/w/WDIC/FSK

10 of 14

同種のアプローチ

iPhoneのオーディオ端子を使って通信をする

http://arms22.blog91.fc2.com/blog-entry-350.html

http://togetter.com/li/30190

  • ArduinoとiPhoneで音声通信

11 of 14

PetitModem

12 of 14

まとめ

  • プチコン3号にデータ転送をしたかった
    • けどできなかった
    • コードを書き始める前にタッチパネルの反応をテストするべきだった
  • PetitModemをありがたく使わせてもらうのが吉
    • 他のオープンソースをベースにするときも安心
    • ライセンス文面をあのキーボードで入力しなくていい

13 of 14

14 of 14

今後

  • PetitModemPCのLinux移植
    • オリジナルのソースはrei氏より受領
      • 問い合わせればもらえる
      • 300bpsでの波形生成までは目途がついている
  • Axniperをばらす?
    • シリアル通信で制御できる2軸モーター+トリガー
    • moriyan6001氏と同じアプローチが可能?