筆者について

Ari Mahpour

Ariは、設計、デバイスパッケージ、テスト、および電気、機械、およびソフトウェアシステムの統合において幅広い経験を持つエンジニアです。彼は、設計/デザイン、検証、テストのエンジニアをまとめて団結したグループとして機能させることに情熱を注いでいます。

最新の記事

Generative AIを使用して組み込みコードを書き込み、実行する Generative AIを使用して組み込みコードを書き込み、実行する 1 min Altium Designer Projects ハードウェアと会話するカスタムGPTアクションの構築方法と AIラボアシスタントの構築で、Generative AIを使用してハードウェアを制御する方法を学びました。ChatGPT内でカスタムGPTアクションを利用することで、ChatGPTにラズベリーパイからLEDを点滅させるだけでなく、実験室の機器を制御しデータを取得する能力を与えることができました。これは、人工知能をラボアシスタントとして使用し、機器から取得したデータを処理することができることを意味します。この記事では、Generative AIによってコードを書くだけでなく、組み込みターゲット上で実行し、その過程でフィードバックを受け取ることによって、さらに一歩進んでいます。 背景 Generative AIを使用してコードを書くことは、組み込みシステムでさえ、新しいことではありません。既にコードを一から完全に書くか、提案するだけの多くのツールがあります。ChatGPT、Gemini、Claudeなどの最も人気のある大規模言語モデルは、すべてコードを書くのがかなり得意になっています(比較については、 Gemini vs. ChatGPT: どちらがより良いコードを書くかを参照してください)。私は1年以上前からChatGPTがコードを生成することについて書いてきました( ChatGPTを使用した自動テストを参照)し、それが今日の開発の唯一の方法であると説教してきました。本当の挑戦は、開発のループにAIを取り入れることです。 コード生成はある程度までしか役立ちませんが、Generative AIを使用する場合、それが機能することを検証し保証するには異なるアプローチが必要です。ChatGPTとのコードインタープリターは、ある程度、生成されたコードを実行し、それがあなたのために機能することを検証できるカプセル化されたPython環境を提供します。私はそれをさらに一歩進め、組み込みシステムで同じことを達成できるかどうかを見てみたいと思いました。OpenAIのChatGPTを使用するには2つのルートがあります。最も一般的なルートは、OpenAI APIを使用するクローズドループアプリケーションを作成することです。それはAPIを使用して大規模言語モデル(LLM)からコードをプロンプトして取得し、それをコンパイルし、Arduinoにロードし、生成されたコードの機能を検証するために追加のカスタムコードを使用します。私はGPTアクションを使用して、「コードペアリング体験」にすることで異なるアプローチを取ることにしました。その体験は次のようなものです: 図1: GPTアクションの例 例は単純かもしれません(つまり、オンボードLEDの点滅)が、上記のデモンストレーションで全てがまとまっています。私はカスタムGPTに明確な指示を与えることができ、期待通りに指示に従ってくれました。また、実際にデバイスにアップロードされ、LEDが1秒ごとに点滅することも確認できました。カスタムGPTを閉じたループシステムと比較して使用する良い点は、プロンプト内でかなり簡単に繰り返し作業ができることです: 図2: Arduinoスケッチの反復 記事を読む
ハードウェア・イン・ザ・ループテストのためのビルドおよびランタイム環境のコンテナ化 1 min Altium Designer Projects 最近、継続的インテグレーションシステムを使用した自動テストのための環境をコンテナ化することについて多くの質問を受けています。その文の大部分が理解できなかったとしても心配しないでください。なぜなら、コンテナ、Docker、およびそれらを組み込み環境やハードウェアインザループテストでどのように活用するかについて、詳しく説明するつもりだからです。 コンテナとは何か? コンテナについては、 Dockerからのこの記事を含む、優れた記事がたくさんあります(Dockerは最も人気のあるコンテナランタイムエンジンの一つです)。ビルド環境(例:組み込みシステム)やテスト環境(例:ハードウェアインザループテスト)でのコンテナの使用は、新しいマシンを立ち上げるたびにすべての面倒な設定を抽象化する能力を私たちに与えてくれます。これは、新しいテストマシンに関連するだけでなく、組み込みファームウェアのビルドのためにクラウドでの運用をスケーリングする際にも関連します。 これらの日にどんな規模の運用を行っているかに関わらず、多くの企業は裸のメタルサーバーを維持する負担をクラウドにオフロードすることを活用しています。DevOpsの原則では、書いたソフトウェアがいつでも、どこでも、任意の場所でビルドして実行できることを常に確実にしたいと考えています。クラウドで新しいマシンを絶えず立ち上げ、コンパイルソフトウェア、ライブラリ、その他のソフトウェアパッケージをインストールすることはうまくスケールしません。これが、まさにコンテナ化が非常に人気になっている理由です。ビルド(またはランタイム環境)を取り、非常に軽量な仮想マシンにパッケージ化し、それをクラウドであれ自分のパーソナルコンピュータであれ、任意のマシンで実行できるように配信できます。 コンテナの作成と使用 プロジェクトでこれらのコンテナを実際に作成して使用する方法を探りましょう。コンテナイメージの作成を始めるとき、まず「ベースイメージ」として既存のものから始める必要があります。ほとんどの場合、Debian、Ubuntu、AlpineなどのLinuxオペレーティングシステムのバリアントで十分です。Dockerfileを作成するときは、次のようにイメージを参照します: FROM ubuntu:latest これは、ベースオペレーティングシステムが最新のUbuntu Dockerイメージを実行することを示しています。その後、ビルドまたはテスト環境に必要なライブラリをインストールする必要があります。 ある例のリポジトリでは、Debianパッケージマネージャ(Apt)を使用してArduino IDEをインストールし、さらにArduino Samボードドライバーをインストールすることで、より多くのレイヤーを追加しました。このコンテナを特権モードで実行する(またはデバイスへのボリュームマウントポイントを渡す)ことで、Dockerしか含まれていない真新しいマシン(つまり、IDEやドライバーは含まれていない)で、コマンドライン経由でArduinoスケッチをコンパイルしてアップロードできます。 テスト対象のデバイスに接続された機器でも同じことができます。 このDockerコンテナでは、Analog Discovery 2デバイスを動作させるために必要な依存関係とソフトウェアをすべてインストールしています。理論的には、新品のマシン(Dockerのみを含む)にDockerコンテナを展開し、何の問題もなくAnalog Discovery 2と通信を開始できます。Analog 記事を読む