• 公開日:2021年08月05日
  • | 更新日:2022年11月30日

自動開閉ゴミ箱作ってみた。 第3話 「理想のゴミ箱完成までに立ちはだかる数々の困難」

前回まで

こんにちは、たまちゃんです。前回の記事で、「手をかざすと自動で開閉するごみ箱」のハード&ソフトの仕様や、使っているセンサーなどをご紹介しました。

仕様が出来たから、実際に手を動かして完成まで駆け抜けよう、そんな感じで意気込んでいましたが現実は甘くなかったです。1ヶ月の製作自習を通して、様々な困難が待ち受けていました。

製作自習期間でつまずいたところを数えだすときりがないので、今回は2つ抜粋してご紹介させていただきます!

つまずいたところ① リアルタイムクロックが正しい値を返してくれない?

リアルタイムクロックとは?

まずは、リアルタイムクロックです。リアルタイムクロック(Real time clock)とは、一言でいうと年月日や曜日などの時刻を保持する機能を持つICです。今回はゴミの日通知機能を実装する目的として、マイコンの外部にリアルタイムクロックを配置しました。そして、シリアル通信方式の1つであるI2Cでマイコンとの通信を行いました。

リアルタイムクロックが正しい値を返してくれない?

実際にリアルタイムクロックに設定した日時を、マイコンで読み取る作業を行いました。

しかし、ここで大きな壁が!!

なんと実際に読み取った値が、設定した日時と異なっている場合があるのです。これでは、ゴミの日の朝にアラームで知らせてくれるゴミ箱がうまく実装できません。

解決した流れ

では、どのように問題点を見つけていけばよいでしょうか。

まず初めにリアルタイムクロック→マイコンにデータが送られているかを確認してみます。ここでは実際にオシロスコープを使って波形が出ていることを確認できました。
次に、その波形から得られた値を書き出してみました。すると、正しい日時のデータが送られてくる場合もあれば、そうでない場合もあることに気づきました。また誤った値が送られてきたときに、その値にも規則性があることに気づきました。そこでデータシートのレジスタを再確認してみました。

以下の表は今回使用したリアルタイムクロックのデータシートに記載されているレジスタの一例です。

 


表1. リアルタイムクロックのレジスタの一例
出典:EPSON TOYOCOM RTC-8564JE/NBアプリケーションマニュアル

Dayの行を例に見てみると、bit6, bit7は×となっており、読み出し不定となっています。つまり×のbitは1が送られてくるか、0が送られてくるか分かりませんよ!という意味になります。なのでこの場合だと、bit6, bit7にマスク処理を行ってあげる必要がありました。

具体的にはbit6,bit7が0、それ以外が1の00111111(16進数で表記すると0x3F)とリアルタイムクロックから送られてきたDayの論理積をとることで、bit6,bit7の値にかかわらず、設定した正確な日時を得ることが出来ます。

データシートは基本的なことはしっかり書かれているので、きちんと読み込まないといけないなと、新人エンジニアとして重要な教訓になりました!

つまずいたところ② マイコンのポートが反応しない?

ポート2.0, ポート2.1が反応しない現象

ふたが開く、ふたが閉まったことをマイコンに知らせるためにMSP430LaunchPadの、P2.0とP2.1にはセンサーを接続していました。そこで実際に、センサーとマイコンを接続した後にセンサーから信号が送られているかを確認しました。
ところがIDE上でP2.0とP2.1のレジスタ値を見てみると、センサーからデータが送られてきたら、P2.0とP2.1がそれぞれLow→Highに切り替わるはずなのですが、全く反応がなくLowで遷移したままという現象が起きました。

問題を切り分けて、原因を突き止める

製作自習中、よく上司の方に相談することがありました。そこで上司の方は「問題を切り分けて、何が原因かを絞り込んでいく作業が重要だよ。」と、口癖のように仰っていました。

切り分け① マイコン or センサー

今回はそのアドバイスを実際に生かして、問題を切り分けて考えてみたいと思います。

まずは、マイコン側の問題か、センサー側の問題かの2つに分けられると思います。そこでオシロスコープを使って、マイコンのピンに信号が入ってきているかを確認しました。すると、実際にマイコンのピンにセンサーから信号が送られていることを確認できました。なので1つ目の切り分けとしてマイコン側に問題があることが、突き止められました。

切り分け② 現在使用しているマイコンのみの問題 or 他のマイコンにも共通する問題

次に、現在使っているマイコンのみの問題か、もしくはどのマイコンにも共通する問題なのかの切り分けを行いました。実際に予備として用意していた同じ型番のマイコンを使って、ソフトウェアの書き込み動作を行い、検証しました。するとP2.0とP2.1がそれぞれLow→Highに切り替わり正常に動作することが確認できました。

したがって、もともと持っていたマイコンの問題であることが分かりました。

そこまでわかると、ゴールが見えてきそうですね!

データシートをみてみるとそこには大きなヒントが・・・

実際に、EVMでP2.0とP2.1がどこに繋がっているかデータシートで確認してみました。

図1. MSP430FR2433 LaunchPadのP2.0とP2.1の接続先
出典:Texas Instruments – MSP430FR2433 LaunchPad™ Development Kit

 

図1の赤色の点線で囲まれた部分は、P2.0とP2.1の接続先です。データシート上には、外部クリスタルをMSP430FR2433に接続するには、0Ωの抵抗R4とR5を外す必要があり、そしてR2とR3は短絡させる必要があります、という記載がありました。
実際に、MSP430FR2433 LaunchPad上の回路を見てみると、R4とR5が外されて、R2とR3が短絡されていました。なるほど、前回LaunchPadを使った先輩が外部クリスタルを使用するために回路構成を少し変えていたことが原因だったのか!!

はんだを付け替えると、P2.0とP2.1がセンサーからの入力に対してしっかり反応してくれるようになりました!!

やはり、データシートに立ち返って、しっかり読み込むことは非常に重要ですね。

次回予告

そんな感じで、紆余曲折をしながら、あっという間に1ヶ月が過ぎ、いよいよ製作自習発表会当日を迎えます。おっと、長くなりましたので、一旦第3話はここで終わりたいと思います。

発表会の様子は次回の記事(最終回)でしっかりとお伝えします!さーて、ゴミ箱は本番しっかりと動いてくれたのか、乞うご期待!

自動開閉ゴミ箱作ってみた。

第1話 「何を作ろう?そもそもマイコンって何ができるの。」

第2話「手をかざすと自動で開閉するごみ箱」