【IoT工作】Location_Clockの電気回路組み立てとコード書き込み

IoT

Location Clockの組み立てとコード書き込み

前回は電子部品を組み込むハードの設計と加工を行いました。

【IoT工作】Location Clock ハード設計
前回に引き続きIFTTTとBlynkを連携させて位置情報をESP8266に送信し、ステッピングモーターの角度に反映させる【Location Clock】の作成です。今回は電子部品たちを組み込むハード設計になりますので、よろしかったらご覧ください。

今回はマイコンやら表示機やらモーターやらの電気回路半田付け作業と、構想から若干回路とコードを変えたのでそれらの解説を行っていきたいと思います。

使用していますマイコンはESP8266です。

コードの修正と解説

以前設計したコードから以下の点を変えております。

【IoT工作】Location_Clockの作成のコード&机上デバック
IoT工作として位置情報を取得して時計の針を動かすLocation Clockの作成シリーズ、プログラムコードと机上デバック編です。この記事でほぼ機能が決まるとおもうのでよろしかったらどうぞです。ESP32を使用しています。もしくはM5Stack。
  • 7セグ表示機のNTPサーバー時計
  • 原点センサを【フォトマイクロセンサ】⇒【フォトリフレクタ】

7セグ表示機時計の追加は家族からの要望で卓上時計が入用だったので、機能を追加した次第です。

原点センサの変更はハード設計ミスで取り付けることができなかった、、、

設計手順は重要ですね。はい。。。

という事で、スペースを取らない埋め込み型の反射型センサ(フォトリフレクタ)TCRT5000を使うことにしました。

他は基本的には変えていなく、前回のコードのフローチャート通りです。

追加コード:7セグ表示機

時刻を表示するための4桁7セグLED表示機を追加しました(間にコロンがあるもの)。表示機の制御に関してはLEDドライはTM1637を使用しています。

TM1637はI2Cライクなシリアル通信タイプです。信号線はデータとクロックの2線しか使用しないために省配線にぴったりです。TM1637の制御方法に関しては以下の記事で紹介しています。

【TM1637】I2Cライクな7セグメントLEDドライバの紹介
I2Cによく似た通信方式を採用している7セグLEDドライバ【TM1637】の紹介記事です。本記事ではデータシートを基に表示方法を詳しく解説していきます。最終的にはライブラリ不使用のコードも公開中です。

記事内ではライブラリ不使用で、位置からコードを書いていますが、本記事ではTM1637Display.hライブラリを使用したいと思います。

Github TM1637/TM1637Display.h

追加コード:NTPサーバーからの時刻データ取得

NTPサーバーへのアクセスとデータ取得コードに関してはESP8266のサンプルコードを転用しています。

NTPサンプルコードスケッチ例⇒ESP8266Wifi⇒NTPClient

使用しているNTPサーバーは日本標準時(JST)グループの公開サーバーである“ntp.nict.jp”です。

ここで気を付けたいのが、NTPサーバーから時刻データを取得する時、日本のタイムゾーンは標準時間から9時間進んでいるので+9時間の調整を行う必要があります。

NTPサーバーからの読み取りと7セグ表示機への時間表示の更新はループカウントを設けてintervalの時間毎に行っています。本コードでは30秒を更新間隔としています。読み取り時は待機状態の時(case0)に読み取るので、ステッピングモーターが動いているときや原点復帰の時はNTPサーバーからの時刻取得や表示機の更新は行わないようにしています。

追加コード:フォトリフレクタによる原点復帰

フォトリフレクタを使う時に気を付けたいのは“フォトマイクロセンサと比較してアナログ値の振る舞いが逆転する”という事です。

フォトマイクロセンサは遮光されていない時はフォトトランジスタのインピーダンスは小さくなります。逆にフォトリフレクタの場合は反射光によりフォトトランジスタのインピーダンスが小さくなるので原点のドグが被った時にインピーダンスが小さくなるという事です。

という事で、以前のコードと比較して不等号を逆転させています。

POINT

  • フォトマイクロセンサ:原点検知時にインピーダンス大
  • フォトリフレクタ:原点検知時にインピーダンス小

電気回路組み立て

組み立てということで、まずはESP8266周りを半田付けして電子回路部分を組み立てていきます。そのあとに、前回作成したベースフレームに組み込んでいこうかと思います。

※ステッピングモーターの仕様が5V~だったので5V昇圧DCDCを追加しました。

【電気回路図】

ESP8266周りの半田付け

■ 4桁7セグ表示機の取付

まず7セグ表示機をESP8266に取り付けて単体で動作確認をしていきます。

■ステッピングモータードライバの取り付け

ESP8266の3.3V出力を使用します。しかし、ステッピングモーターの動作電圧は5V~なので昇圧DCDCを取り付けます。(本来だったらモーター用に別電源を設けた方がいいですが、常時回っているわけでもないので今回は目をつぶりました)

■ステッピングモーターの動作確認

モータードライバが取り付けられたら、ステッピングモーターの動作確認を行います。テストプログラムは以前ステッピングモーターを紹介した時に使用したものを使用しました。

【組み込み基礎】ステッピングモーターの解説とArduino制御
角度制御でおなじみのステッピングモーターの解説になります。記事の後半にはArduinoでの1相励磁方式、1-2相励磁方式での制御コードを載せております。ライブラリ不使用なので動作確認にご使用ください。

■フォトリフレクタの組付け

フォトリフレクタはフォトダイオードと赤外線LEDの組み合わせなので電流調整の抵抗と分圧抵抗を付ける必要があります。今回はユニバーサル基板に抵抗とフォトリフレクタをはんだ付けしてモジュール化しました。

おわりに

電気回路の組み立ては上記で終了です。

ベースに組み込む前にバラックの状態でプログラムを書き込んで動作確認してみましょう。最終的にはIFTTTのLocationとWebhooksを連携させる予定ですが、動作確認では【Locatio】の代わりに【Button wedget】を使用するといいと思います。

次は最終回で加工したベース板に組み付けて動作確認です。

ではまた!

コメント

タイトルとURLをコピーしました