1cm角の気圧センサ、動作電圧 2.375V〜5.5V と 広範囲、温度センサも内蔵されているが詳細はマニュアルには書いていない 販売先はストロベリーリナックス ¥1,260円 I2Cインターフェイスは2本の線だけで通信できて 複数のデバイスをアドレス指定でデータ送受できるが”Arduino”のようなコンピューターが無ければ 少々データのReed、Writ が面倒。 そこで”Arduino Fio”とタッグを組んでみようと思う 接続はいたって簡単、下の図のようにするだけ |
||
★ Arduino Fio に気圧計測用スケッチを書き込む
プログラムするには、係数に符号付ビット、整数ビット、少数ビットがあるので非常に面倒です、 また温度センサも入っているので使わない手はないと思いますが |
||
I2Cデバイスはマスターとスレーブという関係で通信する、マスターは制御側でスレーブを選ぶときはデバイスのアドレスで特定する、 通信は、まずアドレスを指定して”何バイトおくれ”と、 リクエスト送信する、指定されたスレーブは”OK”の返事をして、要求分のデーターを送信する、といった具合です、詳しく知る必要は無いと思います、 「GarretLab」さんから拝借したスケッチは大変良く出来ているので安定してデータが来ます、スケッチの内容はさておき、概要だけ、 MPL115A2 は気圧と温度のアナログ値をAD変換しているので、マニュアルには”両方変換するにはアドレス0x12 に0x01を書き込んでください。”とあります スケッチの↓この部分です(Master Write) |
Cool Term で受信中の画像 |
★ 無理やり温度センサを使う
温度センサのADC値は温度が上がると減少し下がると増加する負特性でした、英語マニュアルに”-5.35/℃”とチラッと書いてあるのを発見しました、勝手に1次関数
だと考えて式を作ってみました、 このデバイス1個で気圧と温度が計測できるのだから、個別には、温度計測用の素子と回路が不要になりますね。 風速のスケッチはオリジナルですが、この気圧スケッチと組み合わせるのに苦労しました、公開は次に。
※ Arduinoは最新の 101を使う事、日本語にもなったし |
気圧センサは良いスケッチのおかげで、すんなりとArduino系で動きます。 |
|
|
Arduino Fio に XBee をソケットしようと”FANNEL”の ”XBeeConfigTool”で書き込んだら...XBeeが仲間外れになって戻らなくなった....これが泥沼か?...。 FANNELのコンフィグツールを使わないで設定してみる 1・XBeeのモードを”ATコマンドモード”にしてみた 2・Fio のUARTとの接続が上手くいくようにXBeeのシリアル設定”D7”と”D6”をハードウエア制御に変更
結果:Fioとは通信しているようだが、コーディネーターに届く情報は普通にXBee単体の時と変化なし。 |
基板に取り付けた、空きスペースに湿度センサを予定 Fioはアナログポートが多いので他にも付けれそう。 |
直ハンダしようと思ったがデュアルラインのソケットが有ったので1ピン足らなかったが思わぬメリットがあった。 |
★ 設定方法はいたって簡単! (結局は上で設定した通りで良かったみたいで届いているデータを見落としていただけでした) ■ 設定方法 1・普通に、Arduino Fioに使う XBeeをX-CTUで、 ATモードのファームウエアを選択する、タイプは コディネーターでもルーターでもエンドデバイスでも 何でも良いです。 2・PAN IDは現在Xbeeのネットワークに参加させたけれ ばそのグループの PAN IDにします 3・”Serial Interfacing”項目の”D7”をCTS制御に ”D6”をRTS制御にハードウエア制御に変更する。
その他の設定は自分のすきなように設定する、たぶん |
バッテリモニタと湿度センサーを追加、まだ基板スペースは余っている。 赤いLED(XBee電源)と緑のLED(無線通信中)が点灯中 |
Arduino Fio の裏に I2C気圧センサデバイスを取り付け たので基板ががら空きに。 |
リモートコマンドで Arduino Fio に送信は 今後調べることにする →結果→→→→→→ |
★ リモートコマンドが有効であると判明! Fioには無関係のようだがリモートコマンドでXbeeの ピン11を”DIGITAL Hi”のコマンドを送信したらピン11は Hiレベルに変わった、しかし接続端子が無いので直接 XBeeのピンにケーブルを取り付けなければいけないようだ、どうもFioはXBeeを無駄遣いしているようだ。 |
要望:Arduino
Fio はArduinoとしては無線UART機能 が追加されてケーブルの煩わしさから解き放た れた感に見えるが、XBee側 からしたら単なる モデムとしか扱わていない奴隷的扱いです、 もっとArduinoとXBeeは異種交配的な、混合種に なってほしいですね、どちらの機能も、ある程度 は使えるような。 |
■ XBeeのリモートコマンドとArduino Fioで連携プレー を試してみる(ソーラーバッテリーからの自動充電) 大まかな第一弾の概要は、 Fio でモニターしたバッテリー電圧が一定値より下がったら、コデディネーターから、XBeeリモートコマンドでポートを”H”か”L”にする、 Fio でポートをモニターしてコマンドに従ってソーラーバッテリーに接続する、か切断する 成功したら、第二弾としてソーラーパネルの仰角を、季節に合わせてサーボモーターで変化させる。 |
← 左の試みの結果はこのマスに書く予定 その前に Arduino Fio を改造? テストでPCからコマンドを送信してブザーをピーピー言わせてみた。 |
|
■ これで、メインバッテリーは自動充電 回路的にはいたって単純です
右枠に回路図 → |
幸いなことに、Fioの GNDはアイソレートされていないので共通に使用できたのが功を奏した、
|
変更・監視側から指令しないで、自分で充電コントロールをするようにArduino
Fio側に追加プログラムを入れました、これで Fio が自分で充電したり止めたりします。 //自動充電セクション if (BttVoltage < 3.5) { //電圧が下がったら充電ピン12を H レベルに digitalWrite(chargePin,HIGH); ChargeStat = 1; } //指定電圧になったらタイマセット(一回だけ通る) if (ChargeStat > 0 and ChargeStat < 2 ){ if (BttVoltage > 4.15){ Flag = 1; Holdtime=millis(); } } //電圧が上がったら充電ピン12を Lレベルに if ( BttVoltage > 4.15) { ChargeStat = 2; if (millis() > Holdtime + 3600000) { //規定電圧に達した後1時間充電す digitalWrite(chargePin,LOW); Flag = 0; ChargeStat = 0; } } |