オープンソースを使えるなら、ハードウェアも作れる
(redeem-tomorrow.com)- 物理的な制約のためハードウェアは依然として難しいが、オープンソースコードを活用する力と部品エコシステムのおかげで、ソフトウェア開発者でも実用的な装置を自作しやすくなった
- Arduino以降、マイクロコントローラーボードは大きく多様化し、ESP32 や Pico W のようなボードはWiFi・Bluetoothまで内蔵し、安価な部品の上でカスタムロジックを繰り返し実装できるようにしている
- I2C と StemmaQT/Qwiic ベースの部品は、センサーや入力デバイスをはんだ付けなしで接続できるようにし、回路設計よりもライブラリとサンプルコードの組み合わせに集中できるようにする
- 3DプリンターとCADツールを使えば、回路を収める カスタム筐体 まで自作でき、低い材料費と高速な出力で配置や熱の問題を繰り返し修正できる
- オープンソース的な組み合わせ可能性、ドキュメント、コミュニティ支援がハードウェア製作にも入り込み、個人が自分の課題を解決する物理的な製品を作れる環境になっている
ハードウェア製作が依然として難しいのに、以前より簡単になった理由
- ハードウェアは触れられる物理的な成果を生み出すという点で、ソフトウェアだけでは得にくい力があるが、そのぶん 複雑さ も大きい
- 回路はコードよりデバッグが難しいことがあり、論理や電圧が合っていても、配線、空間配置、放熱といった 物理的制約 も同時に扱わなければならない
- ハードウェア製品の開発は、一般的な製品開発の難しさに物理世界の制約が加わったものだ
- ThermTermプロジェクトは、既存のヒートポンプリモコンの読みにくいUIと不便なプログラミング体験を変え、ヒートポンプをホームオートメーションシステムに統合するために作られた
- 完成した装置は家の中に5台設置されている
- 開発者は電子工学の専門家ではないが、オープンソースコードと部品エコシステムを活用して装置を完成させた
- オープンソースコードを使うということは、リポジトリ探索、他人のコードの理解、問題解決、コミュニティで助けを探すこと、良いプロジェクトと悪いプロジェクトを見分けることまで含む
- こうした経験は、ビットの世界を越えて電子や原子の世界へ拡張できる
マイクロコントローラーとソフトウェアエコシステム
- Arduinoは、初心者が簡単なCコードを書いて数分で フィジカルコンピューティング体験 を得られるようにした、開発者体験の転換点だった
- その後、マイクロコントローラーボードのエコシステムは大きく広がった
- ボードはサンドイッチ大から切手大まで、さまざまな規模と構成で提供されている
- マイクロコントローラーは、安価な部品の上でカスタムロジックを継続的に反復できる基盤になった
- ボードごとにコネクター、アクセサリー、チップアーキテクチャが異なる
- ESP32 ベースのボードや Pico W は、WiFiとBluetooth機能まで含んでいる
- 多様なボードをひとつに束ねる軸は ソフトウェアエコシステム だ
- ネットワーキング、ボタン処理などさまざまな問題を解決するオープンソースのArduinoコードが存在する
- ボードアーキテクチャが違っていても、たいていはArduino環境へのポートがあり、既存コードをプロジェクトに活用できる
- C/C++ではなくPythonを好むなら、MicroPython と CircuitPython を代替として使える
I2CとStemmaQT/Qwiicが生んだ組み立て式電子工作プロジェクト
- I2C は1982年に登場した2線式シリアルデータ標準で、電源とGNDの2本を加えることで、1本のバスに複数のデバイスを接続できる
- 趣味のハードウェア製作者にとって最も難しい部分は、たいてい 回路設計 だ
- 電子の世界は、物理法則と何十年にもわたる部品知識が絡み合う領域だ
- 電圧調整、抵抗管理、物理的に頑丈で保守しやすい構成まで考慮しなければならない
- 現代のソフトウェア開発でデータベース、UIフレームワーク、HTTPライブラリを組み合わせるように、ハードウェアでも似た 組み合わせ方 が可能になっている
- Adafruitの StemmaQT と Sparkfunの Qwiic はI2Cベースのケーブル標準で、複数のボードをはんだ付けなしで素早く接続できるようにする
- ヒートポンプコントローラーには次の部品がI2Cで接続されている
- ESP32ベースの画面内蔵マイクロコントローラー
- 照度センサー: 明るい照明時に自動で暗くするため
- 温湿度センサー: 部屋の実際の温度データを得るため
- ロータリーエンコーダーボード: 温度設定と電源切り替え用のダイヤルを作るため
- 各ボードは、よく設計されたライブラリのように内部実装の詳細を隠してくれる
- 電源管理やロータリーエンコーダー信号の解釈といった細部を自分で扱う必要がない
- 配線した後は、各部品の サンプルコード を見つけて、プロジェクト向けに書き換えればよい
- 部品販売業者はサポートライブラリとドキュメントを積極的に維持しており、Adafruitはこうした組み合わせ方を支える 便利でユニークなボード を数百種類提供している
回路を物理的な製品として完成させる
- 動作する回路を作った後は、自分で カスタム筐体 を設計して製作できる
- 約500ドルで Prusaの3Dプリンター を買える
- Prusaのプリンターは箱から出してすぐにしっかり動く
- Prusaのクロスプラットフォームな スライサーソフトウェア とよく統合されている
- ユーザーコミュニティが非常に活発で、助けを得やすい
- この価格帯の造形サイズは大きくないが、電子工作プロジェクトには十分だ
- オープンハードウェア販売業者は、製品の3Dモデルを提供していることが多く、CADプログラムで正確なケース設計ができる
- 3Dプリントは反復コストが低く、速度も速い
- 新しい設計を試すのに数セント分の材料と印刷時間があればよい
- ヒートポンプコントローラーでは、マイクロコントローラーの廃熱が温度センサーの値を偏らせていたが、2つのセンサーを筐体上部へ移す反復設計で解決した
- 3Dプリントには学習曲線がある
CADとコミュニティが下げた参入障壁
- CADのスキルも必要だが、思ったほど苦痛ではなく、むしろ楽しいこともある
- CAD作業は、単純な平面図形をスケッチし、それを3Dオブジェクトへ押し出したり引いたりし、小さな細部を削り出したりする過程に近い
- いくつかの安価なデスクトップCADソフトウェアは、古いFlashアプリをIE6で使っているような不便さがあったが、iPad向けの Shapr3D はApple Pencilで直感的なモデリングを可能にする
- 3Dプリントのような新しい技術を学ぶときには、コミュニティ が大きな役割を果たす
- 趣味ユーザーが3Dプリントに深く関わっている
- モデル設計から印刷中の熱問題のデバッグまで、助けを見つけられる
- 今のハードウェア製作環境には、オープンソースの省力化、組み合わせ可能性、楽しさが入り込んでいる
- 個人でも自分に必要な装置を直接作ることができ、ヒートポンプコントローラーのように、家庭で最も大きなエネルギー消費機器を自動化し遠隔制御するところまで実現できる
1件のコメント
Hacker News の意見
「オープンソースを使えるなら、ハードウェアのプロトタイプも作れる」くらいに、もう少し複雑な言い方をしたい
ハードウェアを作るということには、長期間、現実世界で耐えられるほど頑丈に作ることも含まれる。湿度センサーが周囲環境からどう影響を受けるか、包装袋まで含めて考慮する必要があり、実際にそこで痛い目に遭ったこともある。ドリフトが大きくなったときの再校正計画も必要だ。ワイヤーハーネス用コネクタは、製品寿命の間に想定される接続/切断回数に耐えられなければならないし、バッテリー交換などでエンクロージャを開けるときに損傷しないよう、ハーネスの長さも合わせる必要がある
周囲環境が設計の他の部分に及ぼす影響も考えるべきだ。例えば湿度の高い環境で、ハーネスとコネクタの両方に金めっき接点を使わなかったために、定期的に接点を清掃しなければならないような状況は避けるべきだ
もちろん、こうしたことの大半は独学で学んだし、趣味の開発者でも十分に到達可能だ。ただ、スマートリレーコントローラを1つ別のものに置き換えることと、クリスマスプレゼントとして義理の姉妹に渡してもよい程度のスマートリレーコントローラを作ることの間には大きな違いがある
プロトタイプ段階に到達しても、オープンソースハードウェアはたいてい、作った本人1人にしか役に立たない可能性が高い
プロトタイプを作ることと、他の趣味開発者が複製・改造・使用できるほど十分に詳しくビルド手順を文書化することの間には大きな違いがある。ハードウェアの文書化はソフトウェアの文書化よりずっと難しいし、魅力的なプロジェクトなら、はんだ付けやレーザーカット部品の注文経験がまったくない人たちも飛び込んでくるだろうが、彼らを支援するのは難しい
そこからさらに一段上がり、Tindieで数個余分に売る程度であっても、他の趣味開発者に設計を販売することになり、一般向けに販売するならFCCの干渉認証が必要になり、設計欠陥で家が何軒か燃えれば会社が責任を負うレベルになる。ハードウェア企業が専門基準に従う本物のエンジニアを雇うのには理由がある。ソフトウェアのように1個あたりの限界費用が1セント未満ではない状況では、キャッシュフローや事業上の問題も付いて回る
こうした各段階でハードウェアを何度も反復する必要があることが多く、その分リードタイムと費用がかかる
壊れたら新品を買うこともできず、妥当な価格で修理業者を呼ぶことも難しい。ソフトウェアが付いていれば、保守も必要になる可能性が高い。1つ欲しかったなら、プロジェクト拡張のためにもう1つ必要になる可能性も高い
信頼できるハードウェア装置を設計することはできるが、予算が大きくなければ、野球バットで殴られたり、コネクタにエポキシが流れ込んだりする状況まで耐えられるようにはできない。だから実際に誰かに何かを作ってほしいと言われたら、できる限り既製品の部品で解決しようとする
電子工作は本当に楽しいが、結局は完全にユニークで代替不可能な物が残るという点が楽しさを削ぐ。重要な用途に使えば責任要素になり、たいてい1つの用途に縛られ、不要になれば汎用の既製品と違ってゴミになる
ESPHomeとAmazonのモジュール、3Dプリントは、多くの場合かなり良いバランスを与えてくれる。再構成が可能で、機械はんだ付けレベルの信頼性、あらかじめ用意されたソフトウェアスタックを得られ、それでいて新しい物を作るのに十分な柔軟性がある
ハードウェア設計は、現実世界に被害を与える前の最後の防衛線だ
ヒューズ、静電気放電およびサージ保護、ウォッチドッグタイマーのような要素は、趣味プロジェクトやオープンソース設計でもよく抜け落ちる。こうしたものがいつ必要かを知るには、ときに苦労して得た経験が必要になる
設計まで手伝うのは避けようとしたが、しつこく迫られたので、TO-3パッケージの7812をいくつか並列につなぐ案を提案した。ベンチテストでは動作し、彼は帰っていった
数年後、そういうやり方をしてはいけないと学んだ。レギュレータの1つが負荷を引き受けて過負荷になる可能性があるからだ。代わりに、パストランジスタや別の仕組みで単一のレギュレータに仕事をさせるべきだ。今でも、あの人の飛行機が炎に包まれて墜落していないか気になる
小型パッケージのMCU開発ボードでできる範囲を超えるものを作ろうと調べてみたが、頭にうまく入ってこなかった。自分が苦手な要素が多すぎた
ここのコメントには門番的な態度とシニシズムが多い。難しいことが簡単になるたびに、いちばん苦労した純粋主義者たちが現れて、あなたが簡単にやっていることは、自分たちがごく幼い頃からやってきた難しいことほど良くないのだと教えに来るものだ
組み合わせ方式は、プロトタイプや小規模生産には素晴らしい。腕が上がり、BOM最適化や製造容易性設計(DFM)を学ぶようになれば、MCUボードを自前で設計したものに置き換え始めるだろう。10ドルのI2Cロータリーエンコーダが、抵抗、コンデンサ、ショットキーダイオード、ヘックスインバータを合わせた1ドル分の部品で置き換えられることも分かってくる
JLBPCBやPCBWayのような会社が3DプリントやCNCサービスを提供しているので、始めるために3Dプリンタを買う必要すらない
さらに https://wokwi.com/ があれば、プロトタイプ部品すら不要かもしれない
ハードウェアエンジニア向けのソフトウェア市場は、純粋なソフトウェアやDevOps、インフラ分野ほど創造的でも野心的でもない感じがする
大きな機会がある
興味深いし、自分も書き手と同じ立場にいる。最近、組み込み機器をもっといじり始めて、井戸の水位センサーを作っている
最初はNRFベースのボードを使おうとしたが、SDKのエコシステムで行き詰まった。経験豊富な企業の組み込みエンジニア向けという印象が強かった。そこで、ずっと単純なESP32-C3/S3ボードに戻ったのだが、優秀で広くサポートされており、設定が簡単でかなり安定している。距離センサーHC-SR04につないで距離計算が動くようにした。バッテリー駆動にするには、センサーが5Vを要求するので電圧変換器も追加する必要があるが、少し読んで失敗してみると十分簡単だった
そうするとボードとケーブルがぐちゃぐちゃになり、ボードにはんだ付けしなければならないので、工具と多少の試行錯誤が必要になる。今度は筐体がないので市販のジャンクションボックスをいくつか試したが完璧ではなく、結局、自分で3Dプリンタを買うことにした。未来は来ていて、自分で出力し、モデリングを学ぶというわけだ
3Dプリンタは、他のすべてに比べるとむしろかなり簡単だった。プリンタを受け取ってから1時間もしないうちに最初のモデルを出力し、プログラム式のOpenSCADや、今好んでいるCadQueryでのモデリングも、数時間いじれば覚えやすかった。プリンタを持ってちょうど1週間で、成功した出力物をほぼ12個作り、使えて機能する部品もいくつか設計した
3Dプリンタを恐れる必要はない。良いプリンタを500ドルよりずっと安く買うこともできる。軽く使われた中古のSovol SV06を150ユーロで買ったし、新品でも220ユーロだが、とてもよく動く
目的に合う既製の井戸水位センサーが見つからなかったので、自作している。最終的なBOM価格はおそらく20ユーロくらいだろう。学んでいじった時間は数百時間で、そのために買った物の費用は、プリンタ、コネクタ用クリンパ、ケーブル、MCU、はんだ付け用ボード、センサー、バッテリーホルダー、電子部品、フィラメント、はんだごてなどを合わせて、今では500ユーロくらいになっている。それでも全部価値があった
3Dプリンティングには学習曲線があり、ここで最も急な要素かもしれない
CADは好きだが、3Dプリンティングは本当に嫌いだ。「うまくいかない可能性があるものは、うまくいかない」というマーフィーの法則を説明するために発明された装置のように思える
出力ノズルは毎回詰まる。フィラメントは最悪の位置で切れ、取り除くには一部分解が必要になる。長時間の出力の途中で理由もなく止まる。ベッドは決して正確に平らではない。フィラメントのスプールを十分自由に回るようにしておかないと、機械がフィラメントを引っ張ってスプールを落とし、そのスプールが復讐するかのように機械全体を引きずり落とす
もちろん何時間もかかる
ファイルを送ると物体を送ってくれる外部業者を使ったときのほうが、ずっと運が良かった。高価で、自宅でやるより時間がかかることも多いが、心の平穏には値段を付けられない
例えば、いくつかの問題に対する産業的な解決策は、作業ごとにチェックリストベースでプリンタを点検することだろうが、家庭ではひどく退屈な作業になる
現実と直接接するソフトウェアも、こうした問題に悩まされる
冶金学において鋳造は非常に古い技術だ。最も単純とまでは言わないが、産業化以前の人々でも見いだせるほど単純だったという点は、複雑さについて物語っている
旋盤加工は円柱や多面体から始める
ところが私たちは、多面体から形状を削り出すか、何もないところから積み上げる方法ばかり使っている。複雑で凹状だったり結び目状だったりする物体なら、低解像度の積層出力と高解像度の切削加工を組み合わせるほうが、よりもっともらしく見える
CNC機械には自由度がもう1つ必要かもしれない。完全な「つかむ尻尾」まではいかなくても、切削ヘッドを45度ほど傾けられれば、積層造形と切削加工が作れる形状の差はかなり縮まるはずだ
ソフトウェアだけをやってきた人間として、この記事は今後ハードウェアプロジェクトに挑戦するうえで大きな勇気をくれる
正直、より大きな問題は、自作のハードウェアプロジェクトで解決する用途が特にないことのように思う。生活や家の中で、ハードウェアプロジェクトで直すべき不足を感じていない
また、たいていは手の届く範囲で最良の解決策を求めている。これまでは商用製品で十分満足できた。お金を払って問題を解決する製品を買えるなら、自分で作って頭を抱える代わりに、喜んでそうするつもりだ。自分の時間が何より価値があると考えているからだ
結局ハードウェアに足を踏み入れるには、市場の既製品では解決されない、十分にいら立たしい問題が必要なのだと思う。既製品がひどいか、そもそも存在しない場合だ
今日のインターネットに典型的なコンテンツのように聞こえる。検索エンジンに見つけてもらえるだけのバズワードは十分あるが、実際に役立つには抽象的すぎる
「Prusaには勝てない。プリンタは箱から出してすぐ完璧に動く」という言葉には、古くて遅いという代償がある
Prusaが事実上市場を他社に明け渡した後では、褒めるだけではいられない
200ドルなら、MK3/MK3Sをより賢く反復したSovol SV06を買えるし、ハードウェアもソフトウェアもオープンソースだ。500ドルなら、はるかに高速で、スライサーまでよりよく垂直統合されたBambu P1Pを買える。そこからさらに100ドル出せばP1Sを買え、P1Pと同じ機能を持ちながら高温出力の準備までできている
私には無理そう
軍隊でマイクロ波通信機器の修理をしていた。教育課程でいちばんつらかった部分は基本的なはんだ付けだった。どうしてもはんだ付けができず、指先の器用さはレンガ並みだった
数年前、指先の器用さテストを含む総合職業適性評価を受けた。試験を受けてかなりうまくできたと思っていたのに、下位5%という結果を聞かされた。もし私が外科医になっていたら、医療過誤保険料が年収より高くなっていただろう
それはハードウェアを作っているのではなく、既存のハードウェア部品をつなぎ、インターフェースしているだけだ
たいていの用途では、ハードウェア部品を自分で設計するより、そのほうが理にかなっている可能性が高い
ただし回路設計のようなものとは同じではなく、その意味でタイトルは少し誤解を招く
木材をCNC機械に入れて加工しても、私は何かを作ったと考える。自分で木を育てたわけでも、伐採したわけでも、乾燥させたわけでも、CNCに入れるための正確なサイズに切ったわけでもなくても同じだ
ハードウェアプロジェクトや製品を実際に作り、市場に出すのに助けが必要なら、いつでも連絡してほしい。連絡先はプロフィールにある