最近の組み込み未経験者は、ArduinoでIoTを作るところから始める人が多いです。
しかし、私は言いたいです。未経験者はいきなりIoTやっちゃダメです。
IoTやるなら求めたいこと
とは言っても、今は求められているスキルだし、ネット上にサンプルがたくさんあるし、
取り掛かりとしてやりたくなるのはわかります。
けど、もっと地味で泥臭いことをやった方が、現場感覚から言えば好かれます。
もしIoTをやるんだったら、例えば、
WiFiのSSIDとパスワードをスマホアプリから設定できるようにしているとか、
消費電力を抑えるために必要最低限のWiFi接続にとどめるようなコード設計をしているとか、
何かトラブった時にエラーで止まらず、抜けられるようになっているとか、
ある程度作り込んだ設計になってくると、話は変わってきますかね。
作りこんだ設計をするには
けど、そんなこと言ったって、どうすれば作り込んだ設計ができるのかなんて、想像もできませんと思うことでしょう。
これを解決するには、自分で作ったものを実際に日常生活で使ってみることです。
自分で使っていると、「もっとこうしたい」「ああしたい」ということが出てきて、
じゃあそれを実現するためにはどうすればいいのか調べて、設計に落とし込むことができるようになってきます。
そして、こうした設計はだいたい華やかなものではなくて、見た目には何も変わらない地味なことだったりします。
加えて、実装するのに結構苦労することが多いです。
けど、それでいいんです。その苦労は、わかる人にはわかります。
未経験者は小さく積み上げる
私は、未経験者はとにかく簡単なものから取り組んで、知識や経験を積み上げていったほうがいいと思っています。
いきなりモジュール化されたセンサーをつなげて、I2Cでデータを取得して、
自宅のWiFiからクラウドに上げるなんてIoTのアプリケーションを作っても、
中身がよくわかってなければ、次の展開として何をしていいかがわからないままです。
だいたいみんな、ここで止まっていると思います。
ライブラリを使わない開発を心がける
じゃあ、知識や経験を積み上げるためにどうすればいいのかということで、
ライブラリーに依存した開発をしないということを、まずは意識するといいんじゃないかと思います。
ライブラリーのおかげでラクできますが、未経験者にとって中身は読める代物ではありません。
まずは、ライブラリーに依存しない開発をやってみて、組み込み開発というものに慣れることが必要です。
ちなみに、ライブラリについて説明しておくと、ソースコードの上の方に #include
って書いてるあれのことです。
ヘッダーファイルと言って、ソースファイル内の処理が書かれた関数の一覧をリンクさせて、別のファイルからアクセスできるようにしてくれています。
だから、関数を呼ぶだけで別のソースファイルの処理が実行できるようになっています。
ソフトの限界を知り、ハードに手を付ける
そして、ライブラリーに依存しない設計をやるうちに、ハードウェアを絡めていかないと、
ソフトウェアだけでできることには限界がある、ということに気づいてくると思います。
そうすると、今度はハード側を理解する必要が出てきます。
電気の流れがどうなっているか勉強しながら、電子部品を手配して、小さな構成で一つ一つ試して、
「接触不良でうまく動かないな」とか、時には部品を壊したり、自分が危険な思いをしながら、
身をもって学ぶのが大事です。
こうした経験を続けると、回路図が読めるようになってきて、
どの時点で信号がどうなっているのかが見えるようになってきます。
例えば、トランジスタを二つ連結させるダーリントン接続は、「最初のトランジスタに入ってくる信号がすごく小さいんだろう」とか、
「ローパスフィルターをかましてるってことは、ここで高周波成分をカットしてるんだろうな」とか、
「オペアンプでボルテージフォロワーしているってことは、後段の出力インピーダンスを下げているのかな」とか。
どういう思想で回路を作っているのかがわかると、回路図を見るのも結構面白くなってきますよ。
回路シミュレータで理論と実践を
いや、けどそうは言うものの、
「自分のイメージした信号波形と、実際の波形が合ってるかってどうすればわかるんですか?」
と思った方もいるかもしれません。
これは非常にいいツールがあります。LTSpiceという回路シミュレーターを使うことです。
無料で使えますし、ハードウェアをやっている組み込みエンジニアは、ほぼ全員LTSpiceを使っていると思います。
実際、私がメーカーで働いていた時は、皆これを使ってました。
ただ、ハードウェアが難しい点として、LTSpiceのような回路シミュレーターで想定していた信号波形と、
基板に実際に起こして動かした時とでは、信号の波形が微妙に変わってしまうことがあります。
基板のパターン配線の引き回しで容量結合しているとか、周辺部品の影響を受けて、思わぬ形で波形が歪んでしまったりするんですよね。
周辺機器を用いて開発を深める
こうした実際の波形を確かめるとなった時に、今度はオシロスコープとか信号発生器とか、周辺機器を取り揃えてやる必要が出てきます。
波形がちょっと歪んでるなってなった場合は、部品の定数を変更してみるとか、引き回しを変えてみるとかしながら、想定した動作をするように改善していきます。
まあ、けど周辺機器を揃えて、実際の波形を見て対応するところまで、一人でやる必要はないかなと思っていて、
現場に出て、みんなで相談しながらやっていくのが一番いいと思いますね。
未経験から組み込みエンジニアになりたいと思ったら、まずはソフトが書けて、回路図が読めるところまでできれば十分かなとは思います。
正直、私は回路図は読めるんですけども、回路設計はそんなにできなくて、
「なぜこの部品はこの定数なのか」とか説明できないものも結構あって、いまだにわからないことも多いです。
まとめ
ということで、ちょっと話が大きくなってしまったんですけど、
組み込みを初めてやるんだったら、ライブラリーを使わない小さな開発を地道に続けるのがまずは必要で、
そこからハードウェアの領域に、だんだんと広げていくといいと思います。
そこからさらに突き詰めると、周辺機器を取り揃えることになっていきます。
こうした開発というのは、地味なことがすごく多いんですけど、業界の人とかはその苦労はだいたいわかるので、
苦労した経験が多いほど、好印象を持たれやすいかなとは思います。
ということで、終わります。ありがとうございました!
コメント