お天気情報・・・シールドとその応用
Arduino製作 第一弾!
※ 2023年2月現在、「galileo7」さんのサイトは消滅しております m(__)m 情報が古くて申し訳ございません。 m(__)m
Arudinoを触り始め、ちょっとはまってしまいました。と言うのも、実はArudinoにはライブラリィが豊富にあり、その上、
先駆者の御仁の方々もオリジナルのライブラリィをご提供していて、大半のことはArudinoで実現できてしまうそうです。
高電圧関連で、かねてから構想していたものがありました。
高電圧機器を扱うところでは必ず使用している計器があり、「温度」、「湿度」、「気圧」と言う三つの計器は高電圧
データの補正値に必要な情報で、高電圧機器のそばには必ず置いています。
マイコンを使ってスタンドアローンで動作するものを構想していて、上記3つの情報を、
例えば「SDカード」に記録するなどの「データロガ」の様なものを考えていました。これまでは製作するに当たり、部品を集め、はんだごてを握り、
せっせっとプログラムを書き・・・などしていると結構な時間がかかりるものでした。ところがArduinoの世界では、上記に関連する基板(シールドと言う)がすでに存在しており、
つなげるだけで動作すると言う手軽さが、何とも驚きでした。
’まさにこれ!’と見つけたのが、galileo7と言うWebショップサイトで、海外製品の輸入販売と
Arduinoなどのオリジナル製品を手掛ける会社で、「お天気シールド」なる製品でした。迷わずスグに申し込み、届いた中身のほとんどがキットで、
半田ごてをもって製作しなければならないものでしたが、そこは価格とのトレードです。Arduino328互換基板、センサーシールド(温度、湿度、気圧、照度のセンサーが搭載された基板)、
トークシールド(音声合成でしゃべる基板です)、I2C-LCD基板の4枚を組み立てました。センサーシールドは現在、
バージョン3になっています。(私は初期の物を購入しています)バージョン3は結構機能が増えて面白そうです。
さて今回Arduinoで初めての応用製品として、上記の「お天気シールド」に「しゃべる機能」、「LCD表示機能(I2Cバス基板対応)」、
「RTC搭載」、「SDカード記録機能」、「RS232C通信機能」を同時に運転するものを製作しましたので、レポートいたします。
この内、RS232C機能は元々搭載されているので、割愛します。またしゃべる機能はYouTubeに動画がアップされているもので、プログラムとしてはgalielo7さんからはダウンロードできません。
つまり、自分で製作しなければなりませんが、製作ヒントとなる資料はgalileo7さんのサイトにあります。
← この基板はHD44780系のチップを搭載したLCDをI2Cバスで制御する便利な基板です。大半の物が使用できますが、 注意することは、コネクタの1番ピンが「Vdd」か「GND」かを必ず確認して、ジャンパーピンをセットして下さい。 また基板では3.3Vの電源も使用でき、その場合5V駆動とは違う部品を搭載しなければなりません。詳細はサイトにある情報を確認して下さい。 私は、3.3V駆動と5V駆動の切り替えスイッチを取付ました。左写真のベロンとしたリード線の先端に切り替えスイッチを付けています。Arduinoとの接続は 電源5Vの2本とSDAとSCLの2本だけです。
全部重ねたていく状態が下記の物です。
ArduinoのCPU基板は色々な種類があります。ここでは「Arduino Duemilanove 328」に絞って紹介いたします。
本家のこの基板は「Arduino Uno」と言うものに進化しています。これらの違いについては、さまざまなサイト「最新のArduino」の検索で調べることができますが、主なものとして、
シリアルUSB変換チップがこれまでのFTDI社のものからATmega8U2チップに変わり、
ドライバーのインストールが簡単になったそうです。今後はこのArduino Unoに切り替えられていくようで、
一部の店ではArduino Duemilanove 328は販売されていないところもあるようです。ATmega8U2チップを搭載する基板を使う場合、
Arduino IDEのバージョン0021以降を使わなければなりません。
取り急ぎ、しゃべるスケッチをgalileo7さんに頼み、本体スケッチを頂きました。
この場を借りてお礼申し上げます。このスケッチを動作させるには、「NewSoftSerial.h」、「DateTime.h」、「DateTimeStrings.h」の
ライブラリィが必要になります。これらのライブラリィは本家Arduinoサイトで入手できます。
見つからないときは検索サイトでヒットしますので、入手して下さい。
なお、このスケッチをご希望の方は、恐れ入りますが、メールにて(Weartherduinoスケッチ希望と書き、お名前を付して下さい。規約に同意して頂ける条件で配布致します。
なお営利目的での配布は禁じております)ご依頼下さい。その際、フリーメールアドレスはご遠慮願います。
次に、LCD表示関連のライブラリィはgalileo7さんの ここ のサイトから入手できます。
Arduinoとの接続については配線しなければなりませんので、それらの資料も入手できます。
次にRTCですが、秋月電子さんで売られているRTCモジュールを使います。このライブラリィは「
なんでも作っちゃう、かも」さんのサイトの ここ で入手できます。
ありがとうございます!!<(_ _)>
最後にmicroSDシールドのライブラリィは、やはり「なんでも作っちゃう、
かも」さんのサイトの ここ で入手できます。しかし、買ってきたmicroSDシールドは配線が少し違います。
SD-カード側の「CS」端子がArduinoの「D8」に接続されています。
ここは思い切って「なんでも作っちゃう、かも」さんのサイトにある回路に改造します。パターンカットは1か所で、ジャンパーも1本で済むはずです。
ありがとうございます!!<(_ _)>
さて集めたライブラリィで、「おしゃべり機能」、「LCD表示機能」、「
SDカード記録機能」、「RTC機能」・・・をそれぞれ一部のプログラムやヘッダーファイルを変更するなどし、一つ一つの機能が動くことを確認した後、
最後に全て動作するプログラムに改造してコンパイルするとエラーなく行えました。約25kバイト強ほどのメモリー占有率を示したので、「
これはいける!」と思い、ボードにアップロードしたところ、最初のアナウンスで、暴走してしまいました。
原因を考えたところ、結構配列宣言でメモリーを食っていて、他のプログラムのメモリーと合わせると、ATmega328PのRAM領域
2Kバイトでは足らないことが分かりました。
「SDカード記録機能」または「おしゃべり機能」のどちらかを一方を外すと、
それなりに動くことは確認しました。
どうしようかと悩みました・・・Arudinoのプログラムを解析する力がまだありません・・・手っとり早く、メモリーの多いArudinoに変えれば何とかなると考え、探したところ、
ArduinoATmega128やその後継機のATmega2560が見つかりました。早速ATmega2560を手配することにし、入手することが出来ました。
しかし、ATmega2560の基板に他の基板を直接載せることは出来ても、完全互換ではない!ことに気付きました。仕方ないので、
ワイヤーピンを使って全ての配線をする羽目になりました。
最終的に仕上がったのは下記の写真の物です。Arduino ATmega2560と他の基板(シールド)が見苦しく、線が行きかっていますが、ATmaga用
のユニバーサル基板がありますので、暇な時にでも整理したいと思います。ちなみに一番右の写真では、LCDの後方端子部に、I2C-LCD基板を取り付けて、4本ケーブル
で接続しています。
そうこうしながらプログラムを改造して、全ての機能が使えるよう何とか動作させることが出来ました。詳しくは下記の動画を見て下さい。初めてYouTube
にアップロードすることになったのですが、長い映像になってしまいました。<m(__)m>
Weatherduinoを動作させた動画です。長い映像ですが、見てやって下さい。!