ハードウェア

ソフトウェアエンジニアがハードウェアのプログラミングをする時に注意すべきこと

by Robin Glauser

ソフトウェアのコードをPythonやJavaScriptで記述しソフトウェアを動作させることと、マイコンの一つであるArduinoなどのハードウェアをプログラミングしてハードウェアを動かすことは、どちらもPCやプログラミング言語を用いて行うという観点からは似ているように思えますが、実際には異なる点が多くあります。ハードウェアのプログラミングに取り組んだソフトウェアエンジニアのMalte Vrampeさんが、自らの失敗を元に学んだことを語っています。

Learning hardware programming as a software engineer
https://blog.athrunen.dev/learning-hardware-programming-as-a-software-engineer/

まずハードウェアのプログラミングを理解するためには、ピンアウト(配置)を理解することが大切だと述べられています。同じようなボードは同じピンアウトである場合が多いですが、例えばピンの一部が制限されているなど、ピンアウト自体にはプログラミングに必要な情報が含まれていない場合があり、実際のボードの型番からボードのプラットフォームやファームウェアのピン定義を調べることも大切とのこと。

by Harrison Broadbent

ピンアウトがわかったら、どのピンがどのような役割を担っており、何に使うべきなのかを把握する必要があります。最も基本的なピンはデジタルピンと呼ばれ、ボタンが押されているかどうかといったオンオフを伝達する役割があります。

しかし、より細かい制御が必要な場合は、アナログピンを使用する必要があります。アナログピンから出力される信号はADCと呼ばれるコンバーターを利用してアナログ信号からデジタル信号へ変換され読み取られますが、変換の精度はデバイスの分解能によってまちまちです。例えばESP32は分解能が12bitなので、4096段階までしかデジタル信号で表現できません。アナログ信号はデジタル信号に変換されるので、本当の意味での正確な信号を出力することはできませんが、オンの状態の時間幅を変化させるPWMという手法を用いてアナログ信号を表現することができます。アナログピンはセンサーから正確なデータを取得したり、LEDを暗くしたりするために使用されます。

デジタルピンとアナログピンに加えて、デバイスが通信できるようにするための通信ピンがあります。通信ピンには直接通信用のUARTやボード上の内部通信用のI2C、デバイス間通信用のSPI1-Wireなど、いくつかのインターフェースがあります。

by Spencer

デバイス自体で使用されるピンなのか、デバイスをコントロールするピンなのかに注意しないと、予期しない動作につながる可能性があるとのこと。間違って内蔵LEDを光らせてしまう程度なら問題ありませんが、オンボードのフラッシュメモリが故障してしまう可能性もあります。また、ESP32の場合は人間が触っているかどうかを検出できるタッチピンや、電圧を制御することでアナログ信号を出力できるDACもあります。

ソフトウェアではプログラムの一部分を簡単に新しいものと入れ替えることが可能ですが、ハードウェアではいつも簡単にいくとは限らないとのこと。デバイス全体を一から組み上げる必要があるのと同時に、デバイスの互換性や故障する可能性の有無も確認しなければならないと述べられています。EasyEDAのようなツールやブレッドボードがあれば互換性や故障の問題を無視して調査したりテストすることが可能になります。また、テキストエディタのVisual Studio CodeAtomの拡張機能として提供されているPlatformIOを利用すれば、接続されたデバイスと同じようにローカルのマシンでもテストを実行したり、プログラムをデバイスにアップロードすることができます。

A new generation ecosystem for embedded development · PlatformIO
https://platformio.org/


ソフトウェアの問題によってPCが燃え始めることはまずありませんが、間違ったピンを使っていたり、不適切なタイミングでリレーを切り替えたりするなどといったハードウェアのミスは重大な被害を引き起こす可能性があります。こうした被害を防ぐには、慎重に設計したり、高価な部品や重要な部品にはヒューズをつけて過電圧による故障を防いだり、壊れやすい部品はソケットを用意してはんだ付けの時間を節約したりすることが大切だとVrampeさんは語っています。

この記事のタイトルとURLをコピーする

・関連記事
Qualcommが次世代のハイエンドスマホ向けSoC「Snapdragon 865」発表、5Gモデムの統合はナシ - GIGAZINE

日本の電子部品産業はなぜ衰退してしまったのか? - GIGAZINE

Googleが1万年かかる計算問題を3分20秒で解き終える量子コンピューターを完成させる - GIGAZINE

Raspberry Pi 4の「特定の解像度でWi-Fiが不安定になる」問題を実際に検証してみた - GIGAZINE

指先サイズで500円なのにWi-Fi内蔵・Linux搭載でIoTにも使えるコンピューター「Omega2」 - GIGAZINE

in ソフトウェア,   ハードウェア, Posted by log1n_yi

You can read the machine translated English article here.