目次
Tips・テクニック
CHIRIMEN を使う上で知っておくと良い Tips 集のページです。良くある質問については FAQ ページ に、デバッグの仕方や良くあるエラーメッセージに対応は デバッグページ に書いているので、そちらも合わせてご覧ください。
新しいデバイスを使うコツ
まずハード(電気回路)が正しく組まれていることを確認してからソフトウェアに取り掛かると良いでしょう。その意味でサンプルコードがある、次の"かんたん"の章に記載されているデバイスは、ハードを組んだ後、そこに掲載されている確実に動くサンプルコードを使って動作を試してから、それを改造して自分の用途に合ったコードを書いてみましょう。
かんたん
回路図とサンプルコードまであるもの
CHIRIMEN Raspi3 の examples に既に回路図とサンプルコードが用意されているもの
一部は、SD メモリー内の examples には掲載されていませんが、Web 上の最新イメージのexamplesで追加されているものです。SD メモリー内の examples からは[Latest version of this page on chirimen.org] リンクで辿れます。アプリケーションやドライバのコードは、サンプルコードのページを表示した後、ソースコードを表示(CTRL-U もしくは右クリックでソースを表示)させ、ソース内の script タグのリンクから辿れます。
センサー類
- 温度センサー (ADT7410, 温度を測定)
- 加速度センサー (Grove Accelerometer, 振動や傾き、加速を測定)
- ジャイロセンサー (MPU6050, MPU9250, 回転速度(角速度)を測定)
- 色センサー (S11059, 色を測定)
- RGB センサーだが実際の色とは結構ずれた色が検知されることがあることに注意
- 明るさセンサー (Grove Light, 明るさを測定)
- 紫外線センサー (VEML6070, 紫外線 UV を測定)
- 太陽光が当たるようなところでなければ数値が非常に小さくなることに注意
- タッチセンサー (Grove Touch, 人が触れたことを測定)
- 測距センサー (GP2Y0E03, VL53L0X, 距離を測定)
- 計測可能な距離の範囲に注意
- ジェスチャーセンサー (Grove Gesture, ジェスチャー操作を検知)
- センサーの前で手などを上下左右や右左回り、近づける、離れるなどする振る舞いを検知
- スイッチ全般 (GPIO)
- 人感センサー (GPIO)
- 焦電型赤外線人感センサーで 3V 出力のものに対応。5V 出力を繋がないよう注意
- 湿度、気圧センサー (BME280(湿度と気圧), BMP280(気圧), BMP180(気圧)を計測)
- 電圧 (ADS1015, ADS1115, PCF8591)
- 電圧や抵抗値で出力されるアナログセンサーへの応用は下の章を参照してください。
アクチュエータ類
-
サーボモーター : PCA9685
-
DC モーター
- 片方向 On/Off のみ チュートリアルの FET を用いた DCFan の回路が使えます(下記正転逆転回路で GPIO を1個だけ繋げても同様に制御できます)
- 正転逆転 (GPIO-HBridge)
- 速度もコントロール (GPIO-I2C-PWMHBridge その1, GPIO-I2C-PWMHBridge その2)
解説記事があり簡単なもの
CHIRIMEN の中には入ってないけど、サンプル記事があり簡単なもの
一般的な Web 技術でサンプルがあるもの
ブラウザの一般的な機能として利用可能なデバイス
- カメラ (Raspberry Pi 専用カメラや USB カメラ) やマイク (USB マイク)
- いずれも WebRTC の getUserMedia() という機能を用いて制御可能
- 表示、画像の取得、録音などのコードサンプルは WebRTC や getUserMedia で探すと見つかります。例えばこちら: https://webrtc.github.io/samples/
- jsBin など iframe 内で実行する環境ではブラウザ Feature Policy の影響を受ける環境 (最新の Chrome) では使えない場合があるので注意
そのほか簡単にできること
複数のデバイス間 (Raspi はもちろんスマホなどとも) 通信したい。
- WebSocket を使えば簡単にできます
- jsbin ですぐに試せるサンプル
- 同じ room 名の指定で開いているブラウザ間でメッセージが送受信されます
- jsbin ですぐに試せるサンプル
- 大きなデータ (カメラの動画や音声ストリームとか) は、WebRTC などを検討しよう
- Skyway などのサービスを利用するのが手軽でおススメ。WebRTC おもしろいけど闇が深い領域なのでハッカソンの 1 日だけで1から実装するのは難しい。
あまり難しくない
アナログセンサー
ADC (ADS1015, アナログ電圧信号をデジタルに変換するデバイス) のサンプル (~/Desktop/gc/i2c-ADS1015/) で読み取って使えるアナログデバイス
- ボリューム (ポテンショメータ:可変抵抗) ※ ADC 経由
- CdS (明るさをたくさん取りたい時など) ※ ADC 経由
- 湿度センサー ※ ADC 経由
- 曲げセンサー ※ ADC 経由
- 振動センサー(ピエゾ) ※ ADC 経由
note: 上記センサーの多くは抵抗値が変化するものです。オームの法則を用いて抵抗値を電圧に変換したものを ADC に入力します。
MIDI 機器
MIDI 端子で通信ができるデバイス
- USB-MIDI 機器 (USB 経由)
- こちらのサンプル をダウンロードして手元の HTML で読み込めば使えます
- 残念ながら、2018 年 12 月現在は Feature Policy が有効なブラウザ環境では jsBin 上では動作しません
- こちらのサンプル をダウンロードして手元の HTML で読み込めば使えます
モーターの制御
- GPIO 経由でモーターを(正転・反転)動かしたい これは"かんたん"の章に掲載されています。
- TP7291 などを GPIO と外部電源で使えます
I2C でモーター制御
ポンプ・スプレー
- DC モーター用いたポンプや電動スプレーを、FET を使った DC モーターの片方向の制御の回路を使って動かすことができます。水が回路にかからないように注意してください。
そのほかあまり難しくないこと
ローカルのネイティブコードなどと連携する
- ローカルコード側を WebSocket 対応させるか、ブラウザとネイティブコードを中継させる簡単な WebSocket サーバを実装することで実現できます
意外に大変かも
ドライバーの用意されていない I2C デバイス
CHIRIMEN for Raspberry Pi 3 にサンプルがないものは I2C デバイスドライバーのコードをデータシートや他の言語の実装例から JavaScript に移植する必要があります。I2C 接続、3.3V のものを選べば使える可能性があるが意外に大変なことが多いです。
- ガスセンサー ※I2C 接続
- タッチセンサー(マトリクス) ※I2C 接続
そのままでは使えないもの
センサーやデバイスを買ってきても CHIRIMEN の JavaScript からは普通に使えないもの
- SPI/UART 接続のセンサー全般
- 間に Arduino を経由させるなどして、I2C へ変換する必要がある
- もしくはローカルで動かしたものとブラウザを WebSocket 通信させて利用する
Others
そのほかの Tips です。
- モーターを単純に回したり止めたりしたい。→ MOSFET のチュートリアルを使えば GPIO でできる
- ソレノイドを動かしたい → 同上
- PWM を流したい
- 単純なものは PCA9685 を使う(DC モータの制御、LED の明るさ制御、サーボモータの制御) LED 以外はexamplesで紹介
- 複雑なものは Raspberry Pi では動かないので、Arduino を経由するなどする。 参考 https://qiita.com/tadfmac/items/a4cdbf915698573ab36d
- 多数のフルカラー LED を個々に点灯制御したい → examplesの Neopixel_I2C を参照
Windows PC から Raspi3 にリモートデスクトップで接続する
Windows の PC からリモートデスクトップで接続し、Raspi を PC 側から操作することができるようにする。
chirimen のバージョン20181010、Windows 10(1809)で動作確認しています。
Raspi3 にXRDPを導入する
XRDP とは Linux 上で RDP を用いたリモートデスクトップを利用可能にするためのパッケージです。詳細はこちら。
- Raspi3 のターミナルで以下のコマンドを実行する。
$ sudo apt update $ sudo apt -y install xrdp
xrdp を(再)起動する
- Raspi3 のターミナルで以下のコマンドを実行する。
sudo service restart xrdp
Windows の PC から接続する
-
Windows に標準で付属しているリモートデスクトップ接続(アプリケーション)を起動する。
スタートメニューから "mstsc" と検索するとすぐに見つけることができます。
-
起動した画面の「コンピュータ」のテキストボックスに Raspi3 の ip アドレスを入力し接続をクリックします。
接続をクリックするとセキュリティの警告が表示されることがありますが、そのまま続行して構いません。
Raspi3 の ip アドレスの確認方法の一例:Raspi3 のターミナルで "ip a" と入力 (ほかにも多々方法はあります)
-
接続出来たらログイン画面が表示されるため、そこに username と password を入力してログインしてください。
初期のユーザ名とパスワードは Chirimen のドキュメントをご確認ください。また、Session の項目は Xorg のままで構いません。