ネットワーク対応温度モニター サーバー+ツイッタークライアント機能をRTOSで実装

こちらの構想仕様にて記載している通知方法(サーバー+ツイッタークライアント)を同時に実装するべくイベント(割り込みやタイマー)管理を容易にできるようRTOSを使用したコードに書きなおしました。

DSCN0521

また、RTOSを使用に際してmbed LPC1768の32kByteではRAMが不足することからmbedマイコンボードをmbed FRDM-K64Fに変更しております。FRDM-K64Fの方が実売価格が1000円ほど安く性能も良いことからLAN接続工作物を作成する際には本家LPC1768よりFRDM-K64Fをお薦めしますが、FRDM-K64F独自の注意点もあることからプログラムの解説を交えながら記載します。

回路図

I2Cと電源を接続している程度のものです。

新しいビットマップ イメージ

プログラムソースはこちら

このままビルドして書き込んでも正常に動きません、OAutoKey.hを変更する必要があります。(下記参照)

各モジュールの概要

main関数があり、ステータスLED、LAN IPアドレス取得、各機能のスレッドやタイマーインスタンスが宣言されております。

 使用するポートの宣言をしています。

FRDM-K64F搭載のLEDをステータス表示に使用するためのものです。今のところ緑LEDをハートビードとして使用してプログラムが正常稼働中であることを表示させているのみです。

mbed用RTOSライブラリ

コンシューマーキーやアクセストークンだけ独立したファイルに記載しました。これらはユーザー個々で管理して秘密にしておく必要がありますので伏せてあります。ビルド前に個々に取得したものに書き換えてください。取得方法はこちらの前回記事を参照してください。

 こちらmain.cppをベースに作成し、ツイート内容を時間と温度・気圧・湿度・照度に変更、ツイート時間を10分おきとしております。ツイート前に内蔵RTCの時刻を補正する必要があり、NTPサーバーから時刻を取得することで補正します。

 こちらの流用物で改変していません。

各センサのインスタンスを宣言しているだけです。

照度センサーTSL2561のライブラリ流用です。

温度・湿度・気圧センサのBME280のライブラリ流用です。

FRDM-K64F搭載の電子コンパスと加速度センサのライブラリ類です。温度やホームオートメーション用サーバー目的では不要なセンサですが、FRDM-K64FのI2Cバスにボード上接続されている本センサを初期化しないとI2Cバスが正しく動作しません。main関数からは本ライブラリ内のクラスやインスタンス等は参照しておりませんが、インスタンスを宣言しておくことでセンサの初期化をします。

サンプルを元に改変したもので、クライアントからコマンド(温度:TMP , 湿度:HMD , 気圧:PRS  , 照度:ILM)を受け取ったらセンサから値を読んでクライアントに返すものです。

参照元のTCP/UDPサーバー関連ライブラリ

Leave a Reply

Your email address will not be published. Required fields are marked *