Examples!

このページの最新版は chirimen.org にあります。

CHIRIMEN for Raspberry Pi 対応デバイスのドライバ・回路図・サンプルコードをセットにした Example 集です。

アイコンの説明

回路図
実際の回路の配線のイメージ画像へのリンクです。
デモ
~/Desktop/gc/ ディレクトリ以下のサンプルコードを実行します。
JSBin
オンラインエディタ JSBin でサンプルコードを開きます。
CSB
オンラインエディタ CodeSandbox でサンプルコードを開きます。

GPIO Examples (API Spec)

Tips: デスクトップのピン配置図を見ながら配線するとミスしにくくなります。

GPIO-Button

概要

タクトスイッチを押すとLEDが点灯、離すと消灯します。
このサンプルでは、GPIOポートの読み込みに、onchange() を用いています。

使用パーツ

  • タクトスイッチ x 1
  • LED x 1
  • 抵抗(100Ω〜470Ω) x 1
    (220Ωのカラーコード:赤赤茶金)
  • ジャンパー(オス・メス)ケーブル x 4
  • ブレッドボード x 1
GPIO-readGpioValue

概要

タクトスイッチの状態(押されているか、押されていないか)を読み込みコンソールへLog出力します。
このサンプルでは、GPIOポートの読み込みを read() を用いたポーリング処理で実現しています。

使用パーツ

  • タクトスイッチ x 1
  • ジャンパー(オス・メス)ケーブル x 2
  • ブレッドボード x 1
GPIO-pirSensor

概要

人感センサーをGPIOで読み取り、画面に反映させます

使用パーツ

  • 人感センサー (KP-IR412) x 1
  • ジャンパー(オス・メス)ケーブル x 6
  • ブレッドボード x 1
GPIO-MultiBlinkAll

概要

大量のLEDをLチカさせます

使用パーツ

  • LED x 8
  • 抵抗器 (470Ω : 黄紫茶金) x 8
  • ジャンパー(オス・メス)ケーブル x 9
  • ジャンパー(オス・オス)ケーブル x 2
  • ブレッドボード x 1
GPIO-buttonAll

概要

大量のタクトスイッチの入力を得ます。GPIO 4, 5, 6 は Pull Up, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 は Pull Down であることに注意してタクトスイッチを接続します。

使用パーツ

Note: 下記はすべてのポートにスイッチをつけた場合 必要に応じて省略してください。
  • タクトスイッチ x 17
  • ジャンパー(オス・メス)ケーブル x 9
  • ジャンパー(オス・オス)ケーブル x 19
  • ブレッドボード x 1

I2C Examples (API Spec)

Tips: 配線とスレーブアドレスの確認には i2cdetect を使いましょう。
ブラウザ上で確認できる I2C Detect / ターミナルでコマンドを使う場合は i2cdetect -y 1

I2C-detect

概要

ウェブアプリ版のi2cdetect機能です。
i2cデバイスの接続状態をウェブブラウザ上で見ることができます。
I2C-SHT30

概要

I2C接続の温度・湿度センサーSHT30の値を表示します。

使用パーツ

I2C-ADT7410

概要

I2C接続の温度センサー「ADT7410」を用いて温度を計測し表示します。(このセンサーは4本のピンヘッダ経由で接続します。あらかじめピンヘッダをハンダ付けしておいてください。
詳しくは、チュートリアル2を参照ください。
※ジャンパー(メス・メス)ケーブルに直接刺すために、パッケージに付属の細ピンヘッダではなく標準サイズのピンヘッダを付けてください)

使用パーツ

I2C-Grove-Accelerometer

概要

I2C接続の3軸加速度センサーで取得した値を表示します。(このセンサーはGroveケーブル経由で接続します)
Grove-Accelerometerで使用されているチップは、ADXL345です。適切なケーブル接続とアドレスの確認をすればジェネリック品でも同様に使用できる可能性が高いです。 ジェネリック品の例

使用パーツ

I2C-Grove-Gesture

概要

I2C接続のジェスチャーセンサー(センサーの前で手などを動かすと動かした方向などのモーションを検出するセンサー)の検出結果を表示します。(このセンサーはGroveケーブル経由で接続します)
Grove-Gestureで使用されているチップは、PAJ7620U2です。ジェネリック品の例

使用パーツ

I2C-Grove-Light

概要

I2C接続の光センサーで取得した明るさを表示します。(このセンサーはGroveケーブル経由で接続します)
Grove-Lightで使用されているチップは、TSL2561です。ジェネリック品の例

使用パーツ

I2C-Grove-OledDisplay

概要

I2C接続の小さなOLED(有機EL 128x64px)ディスプレイへ文字を表示します。(このディスプレイはGroveケーブル経由で接続します)
Grove-OledDisplayで使用されているチップはSSD1308です。近いスペックのSSD1306を使ったものはジェネリック品が多数流通しています。ドライバをオプション付きで初期化するとSSD1306が使えます。ジェネリック品の例
SSD1306: 回路図 デモ

使用パーツ

I2C-Grove-Touch

概要

I2C接続のタッチセンサー(静電容量式タッチキー)によるタッチ検出をおこないます。(このセンサーはGroveケーブル経由で接続します)
Grove-Touchで使用されているチップは、MPR121です。ジェネリック品の例

使用パーツ

I2C-PCA9685

概要

I2C接続のPWMドライバー経由でサーボモーターを駆動します。(RaspberryからPWMドライバーをI2C接続し、 PWMドライバとサーボモータ、外部電源を接続します。詳細は回路図を参照ください)

使用パーツ

上記に加え、外部電源確保のため下記 1. あるいは 2. が必要になります。
  1. 電池BOX(4本用) x 1 (※電池BOXを利用する場合、PCA9685サーボドライバとの接続用に電池BOX側の電源ケーブルの終端をメスに加工する等の工夫が必要です)
  2. 「電源用マイクロUSBコネクタDIP化キット x 1」+「ブレッドボード x 1」「USB Micro B端子-標準A端子のケーブル x 1」+「スマホ用5V充電器 x 1」+ 「ジャンパー(メス・オス)ケーブル x 2」
I2C-ADS1015

概要

I2C接続のADC(アナログ・デジタルコンバータ)経由で可変抵抗器の値を表示します。

使用パーツ

  • ADS1015搭載 12BitADC 4CH 可変ゲインアンプ付き x 1 製品パッケージに付属するピンヘッダのハンダづけが必要です。
  • 10kΩ Bカーブ 可変抵抗器 x 1 ブレッドボードに直接刺せるタイプのものが必要です。例えばこれ
  • 1uF コンデンサ x 1
  • ジャンパー(オス・メス)ケーブル x 4
  • ジャンパー(オス・オス)ケーブル x 4
  • ブレッドボード x 1
I2C-GP2Y0E03

概要

I2C接続の赤外線測距センサー(センサーから障害物までの距離を測るセンサー)の値を表示します。(このセンサーはGroveケーブル経由で接続します)

使用パーツ

  • シャープ測距モジュールGP2Y0E03(I2C&アナログ出力) x 1 (※製品パッケージに付属の細いケーブルをブレッドボードに刺せるようにするため、ピンヘッダをハンダ付けするかQIコネクタを圧着する等の加工が必要です)
  • ジャンパー(オス・メス)ケーブル x 4
  • ジャンパー(オス・オス)ケーブル x 2
  • ブレッドボード x 1
I2C-S11059

概要

I2C接続のRGBカラーセンサーで取得した値を表示します。(このセンサーは4本のピンヘッダ経由で接続します。あらかじめピンヘッダをハンダ付けしておいてください。
※ジャンパー(メス・メス)ケーブルに直接刺すために、パッケージに付属の細ピンヘッダではなく標準サイズのピンヘッダを付けてください)

使用パーツ

  • I2C対応デジタルカラーセンサモジュールS11059-02DT x 1 (※製品パッケージに付属の細いケーブルをブレッドボードに刺せるようにするため、ピンヘッダをハンダ付けするかQIコネクタを圧着する等の加工が必要です)
  • ジャンパー(メス・メス)ケーブル x 4
I2C-VEML6070

概要

I2C接続のUVセンサー(紫外線の強さを測定することができるセンサー)で取得した値を表示します。(このセンサーは4本のピンヘッダ経由で接続します。あらかじめピンヘッダをハンダ付けしておいてください)
なお、必須ではありませんが紫外線ライトがあるとテストが捗ります。

使用パーツ

I2C-VL53L0X

概要

I2C接続のレーザー距離センサーで取得した値を表示します。
GP2Y0E03よりも長距離(最長2m)の測定ができます。(このセンサーは4本のピンヘッダ経由で接続します。あらかじめピンヘッダをハンダ付けしておいてください。製品によってはチップ表面に黄色の保護フィルムがついているものがあります。剥して使用してください。)

使用パーツ

  • VL53L0X レーザー距離センサー x 1 (amazon, 秋月通商)
  • ジャンパー(メス・メス)ケーブル x 4
I2C-multi-sensors

概要

複数のセンサーを組み合わせて利用する場合のサンプルです。ここでは、ADT7410(温度センサー)と、Grove I2C デジタル光センサを接続し、それぞれのセンサーから取得した値を表示しています。複数のセンサーを接続する場合、Grove I2C ハブを利用すると便利です。

使用パーツ

Advanced Examples

上級者用・公式な動作が未検証のExample集です。

I2C-ADS1115

概要

I2C接続の16bitADC(アナログ・デジタルコンバータ)経由で可変抵抗器の値を表示します。

使用パーツ

I2C-arduino-steppingMotor

概要

Arduinoとモータードライバを経由してステッピングモータを動かすサンプルです。ステッピングモータを回すために必要なタイミングの制御に Arduino を I2C デバイスとして使用しています。このサンプルでは回転方向を反転させながら2回転ずつモーターを回します。

使用パーツ

I2C-BME280

概要

I2C接続の温度・湿度・気圧 複合センサーで取得した値を表示します。スレーブアドレスが 0x76 のものと 0x77 のものがあるので注意(このセンサーは4本のピンヘッダ経由で接続します。あらかじめピンヘッダをハンダ付けしておいてください)

使用パーツ

I2C-BMP180

概要

I2C接続の温度・気圧 複合センサーで取得した値を表示します。(このセンサーは4本のピンヘッダ経由で接続します。あらかじめピンヘッダをハンダ付けしておいてください)

使用パーツ

I2C-BMP280

概要

I2C接続の温度・気圧 複合センサーで取得した値を表示します。(BMP280は、BMP180とは別のデバイスです)

使用パーツ

I2C-MPU6050

概要

I2C接続の3軸ジャイロ+3軸加速度 複合センサーで取得した値を表示します。(このセンサーは4本のピンヘッダ経由で接続します。あらかじめピンヘッダをハンダ付けしておいてください)

使用パーツ

I2C-MPU9250

概要

I2C接続の3軸ジャイロ+3軸加速度+3軸磁気 複合センサーで取得した値を表示します。
このセンサーは、MPU6500(3軸ジャイロ+3軸加速度)とAK8963(3軸磁気)という二つのI2Cセンサが1パッケージに封入された複合センサです。適切に初期化されるとこれら2個のI2Cスレーブデバイスが出現します

使用パーツ

GPIO-HBridge

概要

GPIO接続のH-BridgeモータドライバでDCモータの正転・逆転制御を可能にします。
モータードライバ基板としては他にL9110S, MX1508などで動作実績がありあす

使用パーツ

  • TB6612FNGを使用する場合
    • TB6612FNG ブレイクアウト x 1
    • ジャンパー(メス・オス)ケーブル x 4
    • ジャンパー(オス・オス)ケーブル x 3
    • ブレッドボード x 1
    • DCモータ(6V) x 1
    • モータ用電源(6V) x 1
  • L298Nを使用する場合
    • L298N搭載モータドライバ基板 x 1
    • ジャンパー(メス・オス)ケーブル x 3
    • ジャンパーピン(モータードライバに付属) x 1
    • DCモータ(6V) x 1
    • モータ用電源(6V) x 1
    • モータの電源が6V未満のものの場合、モータ電源(+12V)からロジック電源を供給するジャンパピン(GNDと+12V端子付近にある)を外し+5V端子にロジック電源を供給する
  • TA7291Pを使用する場合
    • モータドライバIC TA7291P x 1
    • ブレッドボード x 1
    • ジャンパー 必要数
    • DCモータ(6V) x 1
    • コンデンサ(0.1μF) x 1
    • モータ用電源(6V) x 1
GPIO-I2C-PWMHBridge その1

概要

GPIO接続のH-Bridgeモータドライバ及びI2C接続のPWMドライバPCA9685でDCモータの正転・逆転さらに速度制御を可能にします。
H-BridgeモータドライバはL298N以外にTB6612FNGでも動作実績あり

使用パーツ

GPIO-I2C-PWMHBridge その2

概要

H-BridgeモータドライバとPWMドライバPCA9685でDCモータの正逆転速度制御をします。こちらの回路ではPWM信号を2つ使います。
PWM端子やENABLE端子などを持たないコントローラにも応用できます。
L298N以外に、L9110S, MX1508などでの動作実績あり

使用パーツ

I2C-NEOPIXEL_I2C

概要

Neopixel LED (シンプルな配線の多数のLEDの発光を個々に制御できるフルカラーLED)をATTINY85をI2Cコントローラにして使用します。ATTINY85にはここで紹介されているファームウェアを焼いておく必要があります。
簡単に組み立てられるようにしたオープンソースハードの専用コントローラボードもあります

使用パーツ

  • ATTINY85 x 1
  • I2Cレベルコンバータ x 1
  • Neopixel LEDモジュール(テープマトリクスリングなどがあります。LED150連程度までのものに対応) x 1
  • 10KΩ抵抗 x 1
  • 0.1μFセラミックコンデンサ x 1
  • 配線・ブレッドボード類 x 1式
I2C-PCF8591

概要

I2C接続の8ビットAD,DAコンバータPCF8591を使います。
このボードには、以下の部品が搭載されており、ジャンパ設定によりこれらの素子が使えます(工場出荷時はジャンパ設定状態)
  • AIN0: 可変抵抗器 (オームの法則で電圧を出力)
  • AIN1: CDS (光の強度が増加すると電気抵抗が低下する素子)
  • AIN2: サーミスタ (温度変化に対して電気抵抗が変化する素子)
  • AOUT: LED (AIN3にDACの値を入れることもできる(回路図参照))

使用パーツ

概要

WebBluetooth経由で、micro:bitの内蔵センサーやGPIO, I2C端子を使います。
Raspberry PiのChromiumブラウザ上で動くウェブアプリから、WebGPIO, WebI2C準拠のAPIでmicro:bitの端子を利用します。
このように、ワイヤレスのCHIRIMEN環境といえるものになっており、CHIRIMEN for Raspberry Pi (Raspberry PiのGPIO,I2C端子)とも同時に利用できます。
ウェアラブルデバイスのプロトタイピングも可能でしょう。
詳しくはCHIRIMEN with micro:bitのページを参照してください。

使用パーツ

単体で使う場合(内蔵センサ・ボタン・LEDを使う)

micro:bitのGPIO Port0,1,2を使う場合

  • ワニ口クリップ付きコード

Port3以上を使う場合

  • micro:bit用ブレークアウトボード
    例:(1),(2),(3)
I2C-AMG8833

概要

I2C接続のサーモグラフィーデバイス AMG8833を使用します。

使用パーツ

I2C-ADS1115-LoadCell

概要

I2C接続の16bitADC(アナログ・デジタルコンバータ)経由でロードセル(加重センサ)の値を表示します。

使用パーツ

I2C-BH1750

概要

I2C接続の照度センサーBH1750の値を表示します。

使用パーツ

I2C-TCS34725

概要

I2C接続の色センサーTCS34725の値を表示します。

使用パーツ

I2C-VL53L1X

概要

I2C接続のレーザー距離センサーで取得した値を表示します。
VL53L1Xは、VL53L0Xよりもさらに長距離(最長4m)の測定ができます。(このセンサーは4本のピンヘッダ経由で接続します。あらかじめピンヘッダをハンダ付けしておいてください。製品によってはチップ表面に黄色の保護フィルムがついているものがあります。剥して使用してください。)

使用パーツ

  • VL53L1X レーザー距離センサー ブレークアウト基板 x 1 (switch science, amazon)
  • ジャンパー(メス・メス)ケーブル x 4
I2C-INA219

概要

I2C接続のDC電流センサーINA219で取得した値を表示します。
電圧と電力も取得できます。

使用パーツ

  • INA219 DC電流センサー ブレークアウト基板 x 1 (AKIZUKI, amazon)
  • ジャンパー(メス・メス)ケーブル x 4
  • モーターなどのDCの負荷(回路図ではちびギヤモーター)
  • DC電源(回路図では単三x2電池・ボックス)
  • 負荷の接続に必要な配線を適宜
I2C-MLX90614

概要

I2C接続の赤外線温度センサーMLX90614で取得した値を表示します。
周囲温度も取得できます。

使用パーツ

  • MLX90614 赤外線温度センサー ブレークアウト基板 x 1 (amazon)
  • ジャンパー(メス・メス)ケーブル x 4
I2C-APDS9960

概要

近接・環境光・ジェスチャーセンサーAPDS9960で取得した値を表示します。

使用パーツ

  • APDS9960 ブレークアウト基板 x 1 (amazon)
  • ジャンパー(メス・メス)ケーブル x 4
I2C-seesaw

概要

I2C接続の多機能インターフェースボードseesawを使用します。
adafruitのseesawはデジタル入出力、アナログ入力、PWM出力、NeopixelLEDドライブ等の機能を持つ多目的なインターフェースボードです。このサンプルではNeopixelLED以外の機能を動かしています。

使用パーツ

  • seesaw - ATSAMD09 ブレークアウト基板 x 1 (switch science, amazon)
  • ジャンパー(メス・オス)ケーブル x 11
  • ジャンパー(オス・オス)ケーブル x 5
  • ジャンパー(メス・メス)ケーブル x 6
  • タクトスイッチ x 3
  • LED x 5
  • 抵抗(100Ω〜470Ω) x 5
    (220Ωのカラーコード:赤赤茶金)
  • 半固定抵抗 x 1(1KΩ~10KΩ)
I2C-seesawNpix

概要

I2C接続の多機能インターフェースボードseesawを使用します。
このサンプルではNeopixelLEDモジュールを2個ドライブしています。

使用パーツ

  • seesaw - ATSAMD09 ブレークアウト基板 x 1 (switch science, amazon)
  • ジャンパー・分岐用ブレッドボード等:任意数
  • Neopixel LEDモジュール x 2(テープマトリックスリングなどがあります。LED85連までのもの(×最大7個)に対応)
I2C-CCS811

概要

I2C接続のCO2, TVOCセンサCS811を使用します。

注意事項

参照1や、参照2にあるようにCCS811はI2Cのビットレートを下げないと動きません。(I2Cのクロックストレッチとよばれる仕様にRaspberry Piのチップが対応していないためとのこと)
CHIRIMEN for Raspberry Pi 環境(RaspbianにCHIRIMEN用環境設定を入れたもの)に以下の変更をしてください。 /boot/config.txtの末尾の設定を、dtparam=i2c_baudrate=10000 に変更(デフォルトより一桁少なく)してリブートします。
サイドエフェクトとして、他に接続しているI2Cデバイスがある場合、そちらの通信速度も低下します。大量のデータを送受信するタイプのデバイスですと速度低下の影響があるかもしれません。

使用パーツ

  • CS811 ブレークアウト基板 x 1 (switch science, amazon)
  • ジャンパー(メス・メス)ケーブル x 5
I2C-BME680

概要

I2C接続の温度・湿度・気圧 複合センサーで取得した値を表示します。スレーブアドレスが 0x76 のものと 0x77 のものがあるので注意(このセンサーは4本のピンヘッダ経由で接続します。あらかじめピンヘッダをハンダ付けしておいてください)

使用パーツ

GPIO-A4988

概要

GPIO接続のステッピングモータコントローラA4988でステッピングモータ(2相バイポーラ)をコントロールします。ステッピングモータは停止中も常に電流が流れているため容易に加熱します。火傷に注意!

使用パーツ

I2C-HTU21D

概要

I2C接続の温度・湿度 複合センサーで取得した値を表示します。(このセンサーは4本のピンヘッダ経由で接続します。あらかじめピンヘッダをハンダ付けしておいてください)

使用パーツ

I2C-SCD40

概要

I2C接続のCO2センサーで取得した値を表示します。(このセンサーは4本のピンヘッダ経由で接続します。あらかじめピンヘッダをハンダ付けしておいてください)

使用パーツ

OTHERS-CAMERA

概要

Raspberry Pi専用カメラモジュールは、Chromiumのカメラデバイスとして認識され、WebRTCのgetUserMedia() APIで使用可能です。
接続方法の2ページ目(Raspberry Pi Configuration)まで実施すると、デモが動作します。

使用パーツ

  • Raspberry Piカメラモジュール x 1 (例1例2例3)
  • カメラ接続ケーブル(カメラモジュールに同梱されていると思います)
I2C-HT16K33

概要

I2C接続のマトリクスLEDモジュール

使用パーツ

Remote Examples リモートコントロールのサンプルです

Note: relayServer.js を使用しています。

REMOTE-LED

概要

LEDをリモートからオンオフします。LEDの代わりにMOSFETを使ってモーターを制御することもできます

使用パーツ

  • LED x 1
  • 抵抗(100Ω〜470Ω) x 1
    (220Ωのカラーコード:赤赤茶金)
  • ジャンパー(オス・メス)ケーブル x 2
  • ブレッドボード x 1
REMOTE-HBridge

概要

リモートからGPIO接続のH-BridgeモータドライバでDCモータを正転・逆転制御します。

使用パーツ

  • TB6612FNGを使用する場合
    • TB6612FNG ブレイクアウト x 1
    • ジャンパー(メス・オス)ケーブル x 4
    • ジャンパー(オス・オス)ケーブル x 3
    • ブレッドボード x 1
    • DCモータ(6V) x 1
    • モータ用電源(6V) x 1
  • L298Nを使用する場合
    • L298N搭載モータドライバ基板 x 1
    • ジャンパー(メス・オス)ケーブル x 3
    • ジャンパーピン(モータードライバに付属) x 1
    • DCモータ(6V) x 1
    • モータ用電源(6V) x 1
    • モータの電源が6V未満のものの場合、モータ電源(+12V)からロジック電源を供給するジャンパピン(GNDと+12V端子付近にある)を外し+5V端子にロジック電源を供給する
  • TA7291Pを使用する場合
    • モータドライバIC TA7291P x 1
    • ブレッドボード x 1
    • ジャンパー 必要数
    • DCモータ(6V) x 1
    • コンデンサ(0.1μF) x 1
    • モータ用電源(6V) x 1
REMOTE-SW

概要

タクトスイッチを押した状態をリモートからモニタ出来ます。タクトスイッチの代わりに人感センサーやセンサーマット等のON/OFF型センサーを使うと遠隔監視システムができます。おまけとしてGPIOに繋いだLEDも点灯させています。

使用パーツ

  • タクトスイッチ x 1
  • LED x 1
  • 抵抗(100Ω〜470Ω) x 1
    (220Ωのカラーコード:赤赤茶金)
  • ジャンパー(オス・メス)ケーブル x 4
  • ブレッドボード x 1
REMOTE-I2C-SHT30

概要

I2C接続の温度・湿度センサーSHT30の値を表示します。

使用パーツ

REMOTE-I2C-PCA9685

概要

I2C接続のPWMドライバー経由でサーボモーターを駆動します。(RaspberryからPWMドライバーをI2C接続し、 PWMドライバとサーボモータ、外部電源を接続します。詳細は回路図を参照ください)

使用パーツ

上記に加え、外部電源確保のため下記 1. あるいは 2. が必要になります。
  1. 電池BOX(4本用) x 1 (※電池BOXを利用する場合、PCA9685サーボドライバとの接続用に電池BOX側の電源ケーブルの終端をメスに加工する等の工夫が必要です)
  2. 「電源用マイクロUSBコネクタDIP化キット x 1」+「ブレッドボード x 1」「USB Micro B端子-標準A端子のケーブル x 1」+「スマホ用5V充電器 x 1」+ 「ジャンパー(メス・オス)ケーブル x 2」
REMOTE-OTHERS-CAMERA

概要

リモートからカメラ画像の撮影指示と表示を行います

使用パーツ

  • Raspberry Piカメラモジュール x 1 (例1例2例3)
  • カメラ接続ケーブル(カメラモジュールに同梱されていると思います)