Electric Imp でI2Cを動かす方法
下記は参考に書いたサンプルソースで実際に動く保証をするものではありません
——————————————————————
[Device]
——————————————————————
//6軸加速度センサMPU-6050の値を想定しています。 i2c <- hardware.i2cQP; //最初に、I2Cを使うことを宣言します。 //i2cQPは、使用するI2Cのポート番号です。 //imp004m impExplorer Kitで使用できるI2Cは i2cQPの //みなので問題ありませんが、 //モジュールや基板によってはポート番号が変わる場合 //がありますのでご注意が必要で i2c.configure(CLOCK_SPEED_400_KHZ); //I2Cのクロックを設定します。I2Cのクロックはセンサーの //仕様に合わせて設定しますが、基本は400KHzで動作します。 local address = (0x68<<1); //I2Cでアクセスするセンサーのアドレスを指定します。 //今回使用するセンサーはMPU-6050です。MPU-6050のアドレス //は b1101000 であり、 //16進数で記述すると0x68になります。 ここではI2Cのアドレス //を8ビットで表記するので、1ビット分左にずらして指定します。 //readとwriteを使ってデータのやりとりを行います。 i2c.write(address,"\x6B\x00"); //MPU-6050のデーターシートより、0x6Bに0x00を書き込むことで //Resetが解除され使用開始することができます。 //I2Cでのデータのやりとりは文字列で行います。16進数のデータ //を\x00と表記して記述します。癖がありますが、慣れると書き //易いです。 //続いて、readですが、 local result = i2c.read(address,"\x3b", 14); //と記述します。"/x3b"は、読み出したいレジスタのアドレスで、 //その次の14で読み出すデータサイズを指定します。 //これにより、3軸の加速度データとジャイロデータを読み出す //ことができます。 //その後、センサーより受け取ったデータを Agent Codeに転送します。 agent.send("reading.sent", result);——————————————————————
[Agent]
——————————————————————device.on("reading.sent",stream); //で受け取り、指定したstream関数を読み出します。 function stream(data) { server.log(data); } //これにより、センサーを受け取ったデータを確認することができます。文・ソース:北神
株式会社アバンドでは、IoTに関するネットワーク開発、ハードウエア開発を行っております。