見出し画像

連載企画"ソフトウェア開発者によるハードウェア開発のすすめ(仮)"

こんにちは、ピーバンドットコムの廣瀬です。
昨今ArduinoやRaspberry pi、M5Stackなどの影響で、ソフトウェアエンジニアの方からの問い合わせが増えています。
中には汎用のCPUボードで試作を行い、オリジナルの基板を作製したいという問い合わせもありますが、基板を作製することに壁があるように感じている方も少なくないようです。
弊社のパートナーエンジニアの一人である藤田さんも元々はソフトウェアエンジニアでしたが、今では自らCADを使い、基板や筐体を作製しています。

↓藤田さんのnoteはこちら

そこで、ハードウェア開発に関してソフトウェアエンジニア目線で語っていただく連載企画を開始します!
タイトルはまだ仮ですが、
ソフトウェア開発者によるハードウェア開発のすすめ
です。
記事に関するコメントやこんなこともやってほしいなどリクエストもお待ちしてます!
早速ですが第一回、お楽しみください!


第一回

挨拶

 私はこれまでソフトウェア開発者として色々な会社で色々なプロジェクトに従事してきました。主にスタートアップ企業にいることがほとんどです。会社やプロジェクトで必要になる知識を身につけていく内に自然とソフトウェアとハードウェア両方の開発をするようになり、今ではハードウェア開発も担当しています。ソフトウェア開発者として日々スキルを磨いている人の中にハードウェアにも興味を惹かれる人は一定数いるように思います。その中にはソフトウェア開発のようにハードウェア開発のスキルが身につかず、乗り越えられない壁を感じている人もまた一定数いるように思います。

製品やサービスのアイデアを考えるのにソフトウェアもハードウェアも区切りはありません。どちらも同じように扱える方が良いはずです。

しかし、扱う知識や道具の違いもあり初めの一歩を進める前に壁に立ち阻まれてしまうのも頷けます。壁を感じて進めない、そんな人に向けて助けになるような、そんな内容の記事を投稿したいと思います。

連載のテーマ

 ソフトウェア開発で言語やライブラリの初心者が最初に目にするプログラムは "Hello World" であることが多いです。これは "Hello World" という文字列を表示することを目的としたものですが、ハードウェアでは Lチカと呼ばれるものが相当します。LED をチカチカさせるプログラムの意味で、ウェブで検索すれば色々なものが結果に表示されると思います。Arduino を使った例が多いかと思います。

ブレッドボード上に砲弾型のLEDとArduino のピンを繋いで、 GPIOを制御してLEDを点灯・消灯させる。

ウェブ上で上記のような記事を見て購買意欲を刺激され、Arduino を新規購入した人もいるでしょう。購入したかは別としても誰しもが一度はやったことがあるのではないでしょうか?

ただ、これを試しただけではそれほど応用は効かず楽しくないです。この先に何をやるのかが重要です。

この連載のテーマとしては、"この先" に該当するものを扱っていきたいと思います。

マイクロコントローラーユニット(MCU)

 先ほど例に出した Arduinoやその他の開発ボードにはマイクロコントローラーユニット(以下MCU) と呼ばれる IC が載っています。ピンに接続し、さまざまな動作を提供しているのは実際にはこの MCU です。MCU の機能をピンへの接続という提供方法にまで簡略化しています。簡略化した結果、MCU の仕組みに一切触れることなく使用できます。これはこれで素晴らしいことですが、ハードウェアの開発をする場合には MCU の知識は切り離せません。簡略化された枠組みの中から抜け出し、MCU に触れてみましょう。このMCUを扱えるようになることがハードウェア開発への近道かもしれません。

 MCUは各社さまざまな製品が出ています。用途によって最適なものを選ぶことが重要です。製品それぞれにデータシートという仕様書が用意されていて、仕様を把握するのに1000ページのPDFを読まないとならない、などは普通です。最適なものを選ぶ前にできるだけ沢山試してみたい、などと思うかもしれませんが、このようにデータシートを把握することは時間がかかることなので、初めはMCUは一つに絞ったほうが理解しやすいです。

 Espressif 社の ESP32 というMCUが無線を搭載しており比較的演算能力も高いのでこちらを使っていきます。SDK は一部を除いてソースが公開されており、 FreeRTOS も既に統合されています。良くできているので、後により高度な事を試したくなった時でもそのまま実用に足るものとなってます。

基板の作成

 ハードウェアプロジェクトが進む中で基板を起こして最初のプロトタイプが上がってくる前後で大きく状況が違います。最初の生成物で全てが最適な設計になっていることはまずないのでここから検証、改善をしてより良くなっていきます。ウェブサービス開発などのステージング環境にdevelop ブランチをデプロイする、ということと同じことだと思います。

また、ブレッドボード上、ユニバーサル基板上の回路では再現性や常用に課題があり、生成物の最終的な形式としては相応しくないです。基板を作成することで、発注するだけで再現でき、改善可能になるので良いのではないでしょうか。

以上より、まずは ESP32 を使ったLチカ基板を作成してみることをテーマとします。

いいなと思ったら応援しよう!