TOPPERS 活用アイデア・アプリケーション開発
コンテスト

部門

：

アプリケーション開発部門

作品のタイトル

：

自動 ROM 書き込み装置デモ機作成者：

石岡之也（個人）

共同作業者

：

対象者

：

使用する開発成果物： TOPPERS/ASP 1.9.3

電子工作製作者

ARM Cortex-M4 アーキテクチャ・GCC 依存部パッケージ
コンフィギュレータ Release 1.9.6
目的・狙い
知り合いのＲＯＭ書き込み装置販売社さんから自動プログラミングシステムの展示会用のデモ機を作れないかとの相談があったことと、モータなどを使った動く電子工作品を作ってみたいという思いから、自動ＲＯＭ書き込みシステムの動作を題材に TOPPERS/ASPを使った電子工作品を製作しました。

アイデア/アプリケーションの概要
STM32F401-Nucleo をコントローラとして、DC モータ２つを使い平面上のＸＹ方向への移動、サーボモータによるＺ方向へのアップ／ダウンを基本動作とする作品。
自動 ROM 書き込み装置の動作を模すため、チップのピックアップ、ピンチェック位置への移動とピン面の撮影、書き込み位置への移動と書き込み状況の出力を行う。
ピンチェックと書き込み状況は、グラフィック LCD 上に画像と文字を出力することで表示を行う。

１．開発の背景
以前に知り合いのＲＯＭ書き込み装置販売社から大型の ROM 書き込み機である自動プログラミングシステムを展示会で売り込みたいが、筐体が大きく移動が容易でないためカタログや動画での展示になりインパクトが少ないとの相談を受けていた。
私も電子工作でモータなどを使った工作品を作ってみたいとの思いもあり、趣味の電子工作の範囲で自動ROM 書き込み装置のデモ機を作ってみようと考えた。
装置の基本動作は平面上の XY 方向への移動と、チップをピックアップする Z 方向のアップ／ダウンと複数のモータなどの制御が必要となることから、
TOPPERS/ASP を用いてマルチタスク化して ROM 書き込み動作全体の流れを１つのタスクで行い、X 方向と Y 方向の２つのモータ制御をそれぞれ別タスク化して制御を行うこととした。

図１ デモ機ターゲット例

図２ 製作デモ機
2 / 11

２．製作デモ機（１）XY 方向の移動
書き込み対象のマイコンやフラッシュメモリなどのチップをトレーやテープなどから書き込み位置やピックアップして移動するため、XY 方向への移動を行う機構が必要になる。
図３のようなステッピングモータ付きの１軸スライドを組み合わせて作ることも可能であるが、大掛かりになることと価格も比較的高く電子工作の範囲を外れると考えた。
検討したところタミヤの楽しい工作シリーズがモータを使ったキットや部品が販売されていて、図４のタンクセットを使うとベルトを使って１軸方向の搬送が可能なことから、２セット組み合わせて XY のステージを作ることとした。

図３

図４

製作では図５、図６のように下方部に上方部を乗せることになるため、下方部はタンクセット１つ分の２つのベルトで上方部を搬送することとし、上方部は小さなヘッド部の搬送なので１つのベルトのみを使うこととした。

移動方向

ヘッド部
上方部

移動方向

図５

図６

タンクセットはベルトの駆動を DC モータで行い、マイコンでこの DC モータを制御し、XY の任意の位置にヘッド部を移動させる。

3 / 11

（２）Z 方向の移動
Z 方向は CPU やフラッシュメモリを模した疑似チップをアップ／ダウンさせるだけなのと、ヘッド部の搬送や取り付けを容易にするため小型化できるよう図７のように小型サーボモータを使うこととした。

ヘッド部

移動方向

疑似チップ

図７（３）センサ
XY 方向の位置合わせのため図８のようにホームポジションを認識できるようセンサを配置する。
下方部の位置合わせは装置後方にセンサ１を配置し、上方部がホームポジションへ移動したことを認識できるようにする。
上方部の位置合わせは上方部の左端にセンサ２を配置し、ヘッド部がホームポジションへ移動委したことを認識できるようにする。

ホームポジション

センサ２

センサ１

図８
4 / 11

（４）LED 制御
ヘッド部を図９のチップ背面読み取り位置へ移動後、疑似的にチップ背面の撮影用照明として LED の点灯・消灯の制御を行う。
４つの LED の中心にある黒丸は疑似的にカメラのレンズを模している。

チップ背面読み取り位置

図９（５）グラフィック LCD
装置の状態を疑似的に表示するためグラフィック LCD へ図１０のような画像や文字の表示を行う。
画像は起動画面、チップ背面画像、書き込み状態の文字表示に用いる。
起動画面は電源投入かリセット後、最初にチップ背面画像を表示するまで行う。
チップ背面画像はチップ背面読み取り位置で LED 点灯後に表示する。表示する画像はプログラム内に BMPデータとして保持し、４つの画像を変更しながら繰り返し表示する。
書き込み状態の文字表示はチップ書き込み位置でチップ背面画像の下部に以下のメッセージを間隔を開けて表示する。
表示メッセージ
Writing
Writing
OK!
Verifying
Verifying OK!

起動画面

内容
書き込み中
書き込み成功ベリファイ中ベリファイ成功

チップ背面読み取り直後

書き込み成功・
ベリファイ開始
図１０

5 / 11

ベリファイ成功（６）マイコンボード
モータやセンサ、グラフィック LCD などを制御するため、図１１のように STM32F401RE を搭載した
STM32F401-Nucleo をマイコンボードとして利用する。
STM32F401-Nucleo を選んだ理由は以下の通り。
・対応した TOPPERS/ASP のソースコードが提供されている。
・入手が容易。
・複数のタスクを動作させるのに十分な SRAM を搭載している。
・チップ背面画像をソース内に埋め込めるだけの Flash メモリを搭載している。
・余裕をもってモータ、センサを制御できる処理速度をもつ。

図１１

6 / 11３．動作の流れ
デモ機は電源投入後、図１２に示すような流れで動作を行う。
①電源投入後、その場でグラフィックス LCD へ起動画面を表示し、疑似チップ（ヘッド）をアップ。
ただし、初期位置は電源切断時の位置で不定。
②ホームポジションへ移動。
③チップのピックアップ、ドロップオフ位置へ移動し、疑似チップをダウン→アップ。
④チップ背面読み取り位置へ移動し、LED を点灯。
グラフィック LCD へチップ裏面画像を表示後、LED を消灯。
⑤チップ書き込み位置へ移動し、疑似チップをダウン。
グラフィック LCD へ「Writing」→「OK!」→Verifying」→「OK!」を表示。
疑似チップをアップ。
以後、③から⑤を繰り返す。

②⑤

①③
図１２

7 / 11④

４．開発環境
Raspberry Pi / Ubuntu 20.04 上に ARM クロスコンパイラのインストールと TOPPERS 成果物を展開してプログラムの作成とビルドを行う。
ビルド環境の構築は以下の URL に記した「ラズパイを使った TOPPERS 用 Cortex-M 開発環境の構築」を参考に行うことができる。
<https://qiita.com/Yukiya_Ishioka/items/e68a6aabf72f0721948d>
以下に開発環境に必要なソフトウェアとそのダウンロード元を記す。
●TOPPERS/ASP カーネル ターゲット非依存部パッケージ< https://www.toppers.jp/download.cgi/asp-1.9.3.tar.gz >●TOPPERS/ASP カーネル ターゲット依存部
ARM Cortex-M4 アーキテクチャ・GCC 依存部パッケージ< https://www.toppers.jp/download.cgi/asp_arch_arm_m4_gcc-1.9.6.tar.gz >STM32F401RE-Nucleo：stm32f401nucleo_gcc●コンフィギュレータ Release 1.9.6< https://www.toppers.jp/download.cgi/cfg-1.9.6.tar.gz >●ビルド用プラットフォーム
Ubuntu 20.04.1 / Raspberry Pi aarch64 用< https://ubuntu.com/download/raspberry-pi/thank-you?version=20.04.1&architecture=arm64+raspi >●クロスコンパイラ
GNU Arm Embedded Toolchain: 10-2020-q2-preview June 29, 2020 (Linux AArch64 用)<
https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q2/gcc-arm-none-eabi-10-2020-q2-previe
w-aarch64-linux.tar.bz2 >8 / 11５．ハードウェア構成

グラフィックLCD
CS:
PA8SPI2
マイクロスイッチ１PB1

5V 外部電源
PA12LED
４個

LED ドライバ

STM32F401RE-Nucleo
マイクロスイッチ２PB2
3.3V
5V
PB4
PB5TIM3(PWM)
PC7

レベルシフタ
１

PB14
PB15

3V 外部電源モータ
ドライバ１

DC モータ１モータ
ドライバ２

DC モータ２
5V

レベルシフタ２9 / 11

サーボモータ６．ソフトウェア構成

main_task()
ハード初期化LCD 起動画面表示
タスク起動
task1()
デモ・シナリオ機能
ヘッドアップ
ホームポジション移動
イベントフラグ１設定
イベントフラグ２設定
書き込み繰り返し処理
イベントフラグ１設定
イベントフラグ２設定
task2()
モータ１制御機能
イベントフラグ１チェック
正転要求
モータ１正転駆動
要求時間繰り返し
逆転要求
モータ１逆転駆動
スイッチ１チェック
要求時間繰り返し
イベントフラグ１クリア
処理繰り返しtask3()
モータ２制御機能
イベントフラグ２チェック
正転要求
モータ２正転駆動
要求時間繰り返し
逆転要求
モータ２逆転駆動
スイッチ２チェック
要求時間繰り返し
イベントフラグ２クリア
処理繰り返しSPI2 制御

グラフィック
LCD 制御LED 制御TIM3 制御（PWM 制御）

サーボモータモータ１
正転（CW）制御モータ１モータ１反転（CCW）制御

スイッチ１読出モータ２正転（CW）制御
モータ２
モータ２反転（CCW）制御

スイッチ２読出10 / 11

グラフィックLCD

７．参考情報（１）動作動画
今回作成した自動 ROM 書き込み装置デモ機が実際に動作している模様を以下へアップした。
・自動 ROM 書き込み装置デモ機
https://youtu.be/CWu7RO0UEKM
・自動 ROM 書き込み装置デモ機 その２
https://youtu.be/OMoQiXXVKC8（２）マイコンボード
ＳＴマイクロエレクトロニクス社 STM32F401RE-NUCLEO ボード<https://akizukidenshi.com/catalog/g/gM-07723/>（４）2.8 インチ液晶モジュール
ILI9341 コントローラを搭載した SPI 接続の 320x240 ドットのカラーグラフィック LCD
検出信号のグラフ表示用<http://www.aitendo.com/product/16038>（５）タンク工作基本キット
タミヤ 楽しい工作シリーズ タンク工作基本キット< https://akizukidenshi.com/catalog/g/gK-09102/>

11 / 11