はじめまして。minakataです。
株式会社WOWNのエンジニア見習いで、現在は社内のロボティクス事業の見習いとして参加しています。
「ロボティクス事業」と呼ぶとなんだか仰々しいですが、現在行なっている作業は小さなドローンの制御です。僕はまだ見習いなので、すでに組み上がっているドローンの構造を見たりコードを読んだりして勉強している段階です。現在の機体はマイクロコンピュータのRaspberry Pi(ラズベリー・パイ:通称ラズパイ)を使用し、移動用のモーターを動かしたり、カメラやセンサーを使って移動方向を補正したり、障害物を回避する制御を行なっているようです。
せっかくなのでこのブログを使って、見習いの僕がゼロから知った「ドローンとマイクロコンピュータの話」を書きたいと思います。なるべくゼロからの初心を忘れないように書きたいです。
マイクロコンピュータと”つながる”
我々が使うパソコンも、マウスやキーボードがなければ操作や入力ができず、ディスプレイやスピーカーがなければ情報の出力ができないように、マイクロコンピュータ単体だけではできる事が限られています。
マイクロコンピュータになにか動作をさせたければ、モーターやカメラやスピーカーなどのモジュールを繋ぐ必要があります。
では、どうやってマイクロコンピュータとモジュールを繋ぐのでしょうか?僕たちが日常的に使うマウスやキーボードのようにUSB端子で繋ぐのでしょうか?
いいえ、USB端子はマイクロコンピュータに対してサイズが大きく、メインの接続手段には向いていません。Raspberry PiにはUSBポートが用意されていますが、たった4つのポートだけで全体の1/6ほどのサイズを占有しています。こんなサイズではたくさんのモジュールを繋ぐことはできません。
マイクロコンピュータと小さなモジュールとを繋ぐためには、GPIO (General Purpose Input/Output:汎用入出力端子)という規格を使用するのです。
画像上側にある”櫛(くし)”のような小さなピンの並びがGPIOの集まりです。
Raspberry Piには40本のピンがあり、このピン1本1本と線を繋ぎます。
つながる”ルール”
ここでひとつ”ルール”があります。
さっき見た櫛のようなGPIOのピンですが、パッと見では40本すべてが同じ見た目ですよね?
ところがGPIOが扱う信号(データ)にはPWMやSPIなどと種類があり、ズラッと並んだピンの中には特定の種類の信号を扱えるピン/扱えないピンが存在します。ほとんどの信号を処理できるピンもあれば、ほぼ読み取れないピンもあります。繋げたいモジュールに合ったピンを選ぶ必要があるのですね。
どのピンが何に対応しているのかは、残念ながらピンに直接文字で書いたりはしていないので、公式ドキュメントを読むなどして調べるしかありません。小さくて見辛いですが、数え間違いには気をつけましょう。
マイクロコンピュータは一筋縄ではいきません。僕たちが普段触れているパソコンやスマホとはいろんなことが違います。
まずは「マイクロコンピュータとモジュールを繋ぐためにはGPIOというものを使うんだ」というお話でした。
ぜひ覚えて帰ってください。GPIO。
今回はただ線で繋いだだけなので、まだドローンは動きません。
次回、ドローンが動くために必要な「プログラム」編です。
また僕が躓いたときに続きます。
WEB制作・ITに関するお悩みや
ご質問等お気軽にご相談ください