見出し画像

活動報告05(2021年3月)

プロジェクト薬箱「スタートライン4ヵ月目」
 DMM.make AKIBAは10F「Studio」と12F「Base」から構成されるのだけど、相互に行ったり来たりしていると階と名前が混乱して、今自分がどちらにいるのか分からなくなる。特に、エレベーターの昇降ボタンをよく押し間違える。Baseにいるのに上に行こうとしている人を見つけたら、きっとそれは私です。

さて、先月で電子回路の基本を理解できたので、今月は実際に電子回路図を作成してブレッドボードの組み立てを行う。具体的には、Raspberry PiのGPIOピンに接続するLEDとスイッチからなる電子回路を作成し、Pythonにより「LEDの点灯制御」と「スイッチの状態読み取り」を行うことが目標。

LEDの抵抗値の計算方法は簡単だけど、抵抗なのにワット数があるとかLEDの順電圧や輝度についての理解が足りず、何度もパーツショップに行く羽目になった。が、ここは秋葉原、すぐにミスを取り戻せる街。ネット記事も参考にしつつ試行錯誤を経て、最終的には4つの異なる色のLEDと、フルカラーLED、タクトスイッチを備えた「試作LED回路」を完成できた(タイトル画参照)。
 フルカラーLEDのアソードコモンを間違えて買ったり、タクトスイッチが押している間だけオンになることに気づかず、不良品として返品しかけたことは黙っていよう。同一パーツを複数買っておくと、こういったミスに気付きやすい

次にRaspberry PiのGPIOピンを制御する方法を学ぶ。まず、ターミナル上でコマンドを入力する方法を試す。gpioコマンドは、出力制御も入力読み取りの両方に対応でき、ステップ数も少ないのでとても楽。一方、echoコマンドとcatコマンドを使う方法は、valueファイルを通す分やや回りくどさを感じる。
 そして最後に本命のPythonを使う方法。RPi.GPIOというGPIO制御用のパッケージを使用するが、この場面でPythonによるプログラミングが必要となる。Atomエディタで、よく見かける「Hello, world!」のソースコードファイルを作成。ここで、2種類の実行方法(pythonコマンドを利用、ファイル自体を実行)があることを学んだが、どう使い分けるかまでは書いてなかった。

ここからは「試作LED回路」を動かすために、ピンポイントでのプログラミングを行う。GPIO制御に必要な各種のRPi.GPIOの関数を確認し、sleep関数とfor構文について学ぶ。Pythonでは、for文で処理するコードをインデントする必要があるのだが、インデントする範囲を間違えてしまったことに気づかず、当初は動作しなかった。エラーメッセージも参考にならない。それでも最終的には、全LEDを任意の秒数毎に順次点灯し、スイッチの状態を読み取るテストプログラムができて、実際の動作も確認。

一方、テックオーダーに提出していた仕様書に対しての返答があった。回路設計については作成目途が立ったものの、UIを含むソフトウェア設計は困難とのこと。このままでは、「中身のない箱」しか作れないことになる。
 現在はPythonのソースコードをある程度までならトレースし切り貼りできるようになった段階だが、付け焼刃は否めない。最終目標は、LED点灯だけでなく、カメラでの撮影と音声出力、液晶モニターには時計表示を含むUI等を表示したいと考えている。もはや場当たり的な対応では無理であり、あらためてPythonを系統立って理解しなければならない。

想定外の寄り道となってしまうが、Pythonで実現したいプログラムは明確なので、初心者から始めても途中の段階で区切りをつけられると思う。それに、より知識を深めた段階でテックオーダーする方が、現実的な製品に近づくことができる。ただし、時間は限られているので、猶予は1ヵ月間とした。どこまで進めるか・・・厳しいかも。

この記事が気に入ったらサポートをしてみませんか?