市販arduinoタイプ   

5 気圧計その2(BMP180) 
4 MPU-6050 3軸加速度センサー モジュールをテストする 
3 気圧センサーbmp180をテストする 
2 動かしてみる 
1 はじめに 






5 気圧計その2(BMP180)  2016.02.03

 amazonで購入した気圧センサーBMP180(下記)をR8C/M12Aで使おうとしましたが失敗に終わりました。RTC、EEPROM、温度センサー、気圧センサーLPS25HではI2C通信に成功した自作のルーチンが通用しなかったのです。読み取りを試みたのですが全く読み出せませんでした。

しかし、下記に書いたようにArduinoでそのライブラリを使えばいとも簡単に読み出しが可能です。R8C/M12Aを諦めてArduinoで処理を考えました。が、pro mini互換機は1つしかないので手持ちのATmega328pを8MHzの水晶で動かして、プログラム(スケッチ)は pro mini 8MHz として作って、そのhexファイルをAVRライタで書き込むことにしました。(Arduino互換機を買わなくても良い)





リチウムイオン充電池1本で、3.3Vで動作させたかったのですが、LCDの負電源を作るために割り込みで100kHz程度の矩形波がほしいのですが、割り込みでは5kHzくらいが限界のようでそれ以上早くするとメインルーチンが動かなくなりました。というわけで5V動作としています。
このセンサーには5Vをかけるな、とありますがモジュールには3端子レギューレータがついていて、しかし3.3V端子には4.2Vが出ており理解に苦しみます。データラインは5Vトレラントだという説もあります。

プログラム(スケッチ)自体はこのように簡単なものになりました。
// BMP085_33v8mhz_1.ino

#include <LiquidCrystal.h>
  LiquidCrystal lcd(8,9,4,5,6,7);
#include <Wire.h>
#include <Adafruit_BMP085.h>


Adafruit_BMP085 bmp;
  
void setup() {
  Serial.begin(9600);
  if (!bmp.begin()) {
  Serial.println("Could not find a valid BMP085 sensor, check wiring!");
  while (1) {}
  }
  lcd.begin(16,2); 
}
  
void loop() {
    Serial.print(bmp.readTemperature());
    Serial.print(" *C        ");
        
    Serial.print((bmp.readPressure()+430)/100.0);
    Serial.println(" hPa");

    lcd.clear();
    lcd.setCursor(1,0);
    lcd.print((bmp.readPressure()+430)/100.0);
    lcd.print("         ");
    
    lcd.setCursor(9,1);
    lcd.print(bmp.readTemperature());

    delay(5000);
}
 補正について: 気圧計その1では測定値をそのまま表示しました。私の部屋では、海面から50mほど高いところにありますから6hPaほど低くなるはずですが天気図との関係から海面更正値が見えるほうが便利です。1号機は天気図と大きくは変わらないのでこのままで良いとしています。
今回の2号機では1号機とずれがありますので1号機に合わせるべくプログラムで4.3hPaを加算しています。
なお、温度計は1号機と 0.5℃ も違わないようです。

(追記 2016.02.09)LCDを中国製に変更
1月28日に注文してあったLCDが届きました。送料込み275円というものです(今はもっと安くなっています)。LEDのバックライト照明があって、青色背景に白文字で表示されるものです。

この基板は写真でわかるよに端子にVss、Vcc、D7などの「端子名」が印刷されています。LCDには1番端子がVccのものとGNDのものがあります。パターンをみて決めるのですが、これはその必要がありません。親切です。

LEDには220Ωの電流制限抵抗を入れています。回路の電源は5Vです。Vo調節用に10kの可変抵抗をつけています。このLCDは明るくても暗くても見やすいようです。この値段では間違いなく合格としておきましょう。
5 気圧計その2(BMP180) おわり


4 MPU-6050 3軸加速度センサー モジュールをテストする  2016.01.23

 amazonで同時に購入した「MPU-6050 使用 3軸ジャイロスコープ・3軸加速度センサー モジュールGY-521」をテストしました。送料込み¥285であったので、どのような物かもわからずに注文しました。
web上を見ているとこのページにarduinoとして製作記がありましたので、コピーでテストをしました。


右端の基板がそれです。左端はarduino pro mini互換機です。
接続は次のとおりです。
   pro mini     センサー 
            Vcc →+3.3V
   GND        GND
   A5        SCL
   A4        SDA
   D2        INT

実行時のTeraTerm画面です。


左から エラー番号、温度、X,Y,Zの加速度(G)、X,Y,Zの傾斜角度、ジャイロからX,Y,Zの角速度(度/s)だそうです。

扱いが理解できていないのですが、とりあえず動作することだけは確認できました。

4 MPU-6050 3軸加速度センサー モジュールをテストする おわり


3 気圧センサーbmp180をテストする 
 amazonで気圧センサーモジュール BMP180 BOSCH(BMP180 BOSCH温度モジュール 空気圧モジュール 空気圧センサー [並行輸入品]ノーブランド品¥ 285 送料込み)を購入してみました。気圧センサーモジュールとしては安いと思います。


この素子のデータシートを見ると読み出しと計算がかなり複雑です。I2C接続ですがワード単位で11のデータを読み出し、複雑な計算をする必要があります。
横着して、プログラムがないものかとwebを調べました。通常のC言語のプログラムは見つけられなかったのですが arduino pro mini で製作されているサイトがありました。
そこの紹介でadafruit/Adafruit-BMP085-Libraryの BMP085test(BMP085test.ino)、Adafruit_BMP085.cpp、Adafruit_BMP085.h を使うことにしました。なお、BMP180はBMP085の後継機種で互換性があるそうです。(この3つのファイルはダウンロードできないようで、画面をコピーしてエディタで修正しました。)

arduinoに不慣れなためインクルードファイルの置き場所と方法がわかりません。webで検索しました。  ・適当な名前のフォルダ(私は bmp180 としました)を作り、その中に
  @ ,hファイル
  A .cファイル
  B keywords.txt
  を入れます。
私の場合は
  BMP180
   |- Adafruit_BMP085.h
   |- Adafruit_BMP085.cpp
   |- keywords.txt
となります。
なお、keywords.txtの内容はわからないまま例のとおりとしました。
  bmp180 KEYWORD1
  Begin KEYWORD2
  End KEYWORD2
  Output KEYWORD2
2016.02.03 少しわかりました。KEYWORD2を指定するとその語が橙色で表示されます。
このフォルダーを arduino-1.6.7-windows\arduino-1.6.7\libraries のなかにコピーすれば以後使えるようになります。(私は通常のインストールをしていないので上記のフォルダは 「ユーザー名\Arduino」にありました。

BMP085test.inoファイルは、新規作成を立て、全文を貼り付けて、この名前で保存しました。
試しにコンパイルしてみましたがエラーなく正常終了しました。

次は書き込み準備です。
上の写真のようにモジュールをセットしましたが、mini は5V仕様でUSBからVccを取る構造です。しかしモジュールは3.6V以下です。USBのVccを切り離し別電源の3.3Vに繋ぎました。本来16MHzでは3.3Vは無理なのですが強行します。書き込みは長時間の後にエラーになりました。
5Vが必要かと思い、気圧センサーモジュールの配線をすべてはずして(念のためSDA、SCLも)5Vにしましたがなぜかエラーになります。最後にUSB5V電源に戻すと書き込みができました。(何が悪いのかわかりません)

TeraTermを立ち上げると出てきたのがこの画面です。

予定の画面が簡単に現れました。
しかし、0.5秒で変わるので数値を読むのが困難です。

ほしいのは気温と測定値の気圧ですから表示を簡単にしました。また、測定も5秒間隔にしています。

変更後、3.3Vで書き込みを試したところ、長時間(4分くらい)の後に書き込めました。

以上で気圧センサーモジュールのテストは終了です。安い買い物でしたが立派に使えるようです。
ただ、プログラムについては人様の物をいただいただけで何もしていません。感謝。
このセンサーもR8C/M12Aで使ってみたいと思っていますが、いつになるでしょうか。

以前に作ったものと比べると およそ4hPa ほで低く出ます。私の部屋は海抜50mほどありますので、海面に比べると6hPaくらい低く出ると思うのですが、海面の高さでの値が見えるほうが天気図とも合わせやすくなります。正確な値が出るものなら +6 で海面高さの値を表示したいと思います。

 3 気圧センサーbmp180をテストする おわり


2 動かしてみる 
UNOはUSBコードも付いているので(写真の物は違います)ハードに手を加えなくてもテストが出来ます。
arduinoのIDEをここからダウンロードしました。 私がDLしたのはarduino-1.6.7-windows.zipで、zipファイルのものにしました。
最初はノートPCのwin10でテストし、後にデスクトップのwin8.1でテストしましたが当然ながら同じ結果になりました。
USB素子が、私は初めて見るCH340Cというもので、ドライバーが見つかりにくいとの話がありましたが、今回はコードを繋ぐだけで自動的にドライバーがインストールされました。

IDEを開いてLチカのコードを書き(スケッチでしたね)、メニュー → ツール で、マイコンボードarduino/Genuino UNOを選び、書き込み装置aduino as ISP を選ぶと使えます。COMポートは自動で見つからなければ適当なものを選びます。

Lチカで点灯/消灯時間を変えることで、書き込みが完全に行われたことが確認できます。

次にminiです。これはUSBコンバーターがついていないので準備する必要があります。以前にAVRの書き込みに使ったり、arduinoもどきの実験をしたとのFT232RLがありましたので接続コードを作ってつなぎました。


接続をよく忘れるのでここに残しておきます。


テストはデスクトップでのみ行いました。変更はUNOをmini(ATmega328 5V 16MHz)に変更するだけです。
しかし、なぜかエラーで書き込めません。reset sw を押しても見たのですが10回ほど書き込めませんでした。そのうち突然書き込めるようになり、その後も書き込めています。原因はまだわかりませんがやや不安定なところは感じています。しかし、おおむねは使えそうです。




1 はじめに 
2016.01.10  アマゾンで中国製の廉価なarduino互換品がありましたのでテストしてみました。UNO(以下UNOとします)が送料込みで630円でUSBコードがついています。pro mini(以下miniとします)は355円でした。だめもとで注文したのですが、使えそうな雰囲気です。



小さな袋に詰め込んだ状態で届きましたので心配でしたが、見た目はそう悪くはないようです。ゆがみもひどくはありません。もちろん説明書はおろか納品書もありません。





工事中 inserted by FC2 system