Texas Instruments 技術情報

新人奮闘記事 第5回「更なる難問、ロボットのプログラム統合」

[最終更新日 : 2016/10/06]


前回の奮闘記!

時計機能とLCDへI2C通信のテストを行いますが、LCDが表示されない事態に!
なんとかI2Cの動作周波数を変更することでLCDの時計表示はできましたが、解決までに時間を取られてしまいました。
ここから巻き返しを図ります!

第4回「新人の躓き、ディスプレイの時計表示」

こんにちは。クライフです。
今回は、ユーザが設定するのに必要な入力系のテストを行います。そして、これまでのテスト回路をまとめた基板の製作とテストプログラムを一つのプログラムをまとめる結合作業に取り掛かります。

入力スイッチの追加

タクトスイッチ

時刻設定、アラーム時刻設定をユーザで行うためにタクトスイッチを用意します。スイッチは評価ボードに備わっているスイッチの回路図とサンプルコードを参考にして、回路とテストプログラムを作成しました。これで、スイッチを押すことで前回LCDに表示させた時刻が変化し、各桁の時刻設定ができるようになりました。

結合作業(基板編)

はんだ付け作業

各部品のテストはこれで終わりました。いよいよロボット本体のハードウェアの製作になります。まずは第1回で作成した回路図から必要な部品を基板に固定するはんだづけの作業になります。

この製作のなかではじめてのはんだ付け作業。ですが、ブレッドボード上で回路テストは済んでいましたので、配線ミスなどは特になく、基板を製作することができました。基板製作で大きく時間が取られず、前回の遅れを取り戻せた感じです。

結合作業(プログラム編)

次はプログラムを結合していきます。ここが今回の製作課題で一番の山場になります。これまでセンサ、モータ、LCD、スイッチのテストプログラムを書いてきました。これらのソースコードを組み合わせ、“目覚ましロボット”の仕様に合わせたプログラムを書いていきます。

ここで、私がイメージしている目覚ましロボットのシステムの動きを状態遷移図にして示します。これは目覚ましロボットがイベントごとにどういう状態に遷移するかを示した図になります。

状態遷移図

スイッチ基板

製作したスイッチ基板は右図のように配置しており、状態遷移図のある状態のときに特定のボタンを押すことでモードが切り替わります。各モードの内容は次の通りです。

モード名称 処理内容
待機モード 消費電力を抑えて待機
時刻設定モード スイッチで現在時刻を設定
時計モード LCDの時計表示
アラーム設定モード スイッチでアラーム時刻を設定
動作モード ロボットがブザーを鳴らしながら動作

これを実現できるようプログラムを書いていきます。今までのプログラムを結合するだけあって、行数が非常に多くなりました。書いてはエラーが発生、直せば新しいエラーが出る、これを何度も繰り返し、プログラムとにらめっこする毎日でした・・・。

最後の戦い ~結合テスト~

苦労してできた結合プログラムを使い、最後は、結合テストに入ります。デバッグは仕様とは違う動作を見つけ、それを修正する作業になります。まずはロボット本体を作ります。第3回でモータのテストに使用した土台に各部品、基板を載せていきます。次に状態遷移図のように動作できるか確認し、動作できなければできるようにプログラムを書きなおし続けます。時間との勝負ですが、やれるだけのことはやります!!

何度も試行錯誤して、、、つ、ついに動き出しました!
・・・が、センサが反応しなくなるという問題が生じました。

最初数回はセンサが反応してロボットが旋回してくれていたのですが、何度かセンサが反応すると突然センサが反応しなくなります。いろいろ試したのですが、解決が見えてきません・・・。この状況を先輩に尋ねてみるとある問題を指摘されました。

『割り込み処理が長くない?』

マイコンには通常の処理の最中、ある条件になると通常の処理を中断して別の処理を行うよう設定することができます。わたしもADCと1秒経過を計測するWDT、スイッチに割り込みを使用していました。実はMSP430の割り込みはその処理が終わるまでの間、他の割り込み処理を受け付けないようになっています。このことに気付かず、割り込み処理をひどく長い処理にしていたため、(特に、WDTの処理の中のLCD通信処理に数百マイクロ秒も要していました・・・)今回の問題を引き起こしてしまいました。
このままではロボットが壁を押し続けるか、落下して壊れてしまうので、割り込み処理が短くなるようソースコードを書き直していきます。

果たして、目覚ましロボットは完成するのか・・・。そして完成したものはどんなロボットの姿なのか・・・。思い描いていた完成イメージ図を見てご想像してみてください。次回でいよいよ製作課題完結!?

目覚ましロボットイメージ図

新人奮闘記事シリーズはこちら

新人奮闘記事 第1回「はじまる、新人FAEの奮闘」

新人奮闘記事 第2回「製作始動、ロボットの目“センサ”」

新人奮闘記事 第3回「順調ペース、ロボットの足"モータ"」

新人奮闘記事 第4回「新人の躓き、ディスプレイの時計表示」

新人奮闘記事 第5回「更なる難問、ロボットのプログラム統合」

新人奮闘記事 第6回「目覚めるか、目覚ましロボット」

実験に使用したTI製品の詳細はこちら

MSP430 LaunchPad バリュー・ライン開発キット MSP-EXP430G2

取り扱いメーカー

お問い合わせ