0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi PicoのePaper表示を、治具とカメラとGemini APIで自動テストしてみた

0
Posted at

はじめに

AIが作るのをサポートしてくれる今、簡単にソフトが作れます。ただ、組込ソフトの場合、作った後のテストがめんどくさい...と思っていました

というのも、組込機器はボタンを押したり目視での確認が必要です。ソフトウェアだけでなく、ハードウェアがあるので

なんとかしたいなと思い、今回の装置を作ってみました

結果、ボタンを押す作業から画面の表示の判定まで自動化することが出来ました!

できたこと

もともと作ろうとしているのは、タイムレコーダーのようなものです。Raspberry Pi Picoに ePaper を付けて電池駆動させます

例えば、ボタンを押すと時刻を記録しePaperに表示します

今回はそのAボタンを押すところからePaperに時刻が表示されるまでの一連の操作が自動化出来ました

しくみ

タイムレコーダーの機能として、Aボタン(図1 ★1)を押すと、ePaperに時刻が表示されます(図1 ★2)
このテストを行うために、次のステップを実行しています

  1. テスト治具がボタン操作できるようにしました(図1 ★4)
  2. テスト治具から自動でボタンを押せます (押した事を人間が分かるように、押下時に緑LEDが点灯します)
  3. カメラでePaperの画面を撮影し(図1 ★5)、Gemini APIを使ってAIで結果判定します
  4. AIのテスト結果がレポートされます(図2 ★3)

図1: システム全体の写真

システム全体の写真

図2: テスト結果のレポート (Google Antivravity)

テスト結果のレポート

図3: 回路

回路図

Gemini API と Google Antigravity

次の内容をAIで実現しました

  • プロンプト: 「ePaperの文字読取」「日時・状態の抽出」「期待値との照合(OK/NG判定)」を画像(Base64)を同時に送信
  • 判定精度: 7セグ風のフォントや打刻履歴(0002-0003 等)を認識
  • 処理方法: Python標準ライブラリ(urllib)のみで gemini-3.6-flash の REST API を呼び出し、外部SDK依存なしで実装
  • 結果連携: 処理後の文字列を解析してテスト結果JSON(撮影情報+AI判定結果)にまとめ、テストの合否を記録
  • 開発効率: Google Antigravity (愛称Andy。由来よく分からず)とペアプロ。API選定・排他制御・タイムアウト・AI連携までの詳細設計と実装・実機デプロイを行った

Geminiの出力送信プロンプト例(AIJudgeが自動生成)

この画像は電子ペーパー(ePaper)ディスプレイの写真です
画面に表示されている内容を読み取り、以下の形式で報告してください:

  1. 【読取結果】画面に表示されている文字・数字・記号をすべて書き出してください

  2. 【日時】表示されている日付と時刻があれば記載してください

  3. 【状態】画面下部の状態表示(SLEEP/KEEP、READY/START等)を記載してください

  4. 【判定】以下の期待内容と照合し、一致しているか判定してください:
    期待: ePaper画面に日付(MM/DD)、打刻行(HHMM-HHMM)、下部に現在時刻とボタンガイドが表示されていること

    判定結果を「OK」または「NG」で回答し、理由を簡潔に述べてください

返ってきた実際の判定結果(Geminiの出力)

1. 【読取結果】
  - 日付ヘッダー部分:08/22
  - 左側(打刻履歴):
      - 0002-0003
      - 0944-0945
      - 2322-2323
      - 2359-2343
      - 1102-1104
  - 画面下部:
      - ガイド:A=START B=FINISH C=KEEP
      - 時計:08/22 23:04
      - ステータス:SLEEP READY

2. 【日時】
  - 上部ヘッダー:08/22
  - 下部時計表示:08/22 23:04

3. 【状態】
  - 画面下部右側に SLEEP READY と表示されています。

4. 【判定】
  - 判定結果:OK
  - 理由:画面上部に日付(08/22)、中央左に打刻行(0002-0003 等の HHMM-HHMM 形式)、下部に現在時刻(08/22 23:04)とボタンガイド(A=START B=FINISH C=KEEP)が鮮明に表示されており、期待内容と完全に一致しているため。

工夫したこと

人間がパソコンからテスト内容を決め、ツールにテスト実行を指示すると、全自動でテストができるようにしました

新しい機能を作ったり、修正した時は「Test_0001をやっておいて」と、言うだけでテストを実行・レポートしてくれます

過去にやったテストを人間が繰り返し実施する必要はもう、ありません
スイッチを何度も押さなくてすみます!!何度バグっても、そのたびに文句言わずにテストしてくれます!やった

次のステップ

  • AIでテストの判定をするところまで「とりあえず」できたので、色々精度上げていきたいです
  • キャプチャの画面からもわかるとおり、1つのテストが出来ただけで、そもそも作ろうとしていた装置はまだ完成していません。さぁ、本来の機能を作らないと
  • テスト治具は大容量のEEPROM, 電流電圧測定機能もあります。どれぐらいバッテリ駆動できるかなど確認していきます
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?