概要
Flash Memory は、LEDの点灯パターンを記憶し、同じ順序でボタンを押していくサイモンゲーム風の記憶ゲームです。
名刺基板 & 完成図
私と名刺交換する時に「基板名刺ありますか?」と聞くと入手できます。
(リアルのものづくりイベントに参加する際はX(@SukekeLab)で告知する予定です。)
プレイ動画
遊び方
このゲームは、光と音のパターンを記憶して、それを正確に再現するシンプルな記憶力ゲームです。
- ゲームの開始
電源を入れると、7セグメントLEDに現在のハイスコアが表示されます。 スタートボタンを押すと、ゲームが始まります。
- パターンを記憶する
ゲームが始まると、4色のLEDが順番に光り、それぞれに対応した音が鳴ります。これが「お手本」のパターンです。 最初は1つのパターンから始まり、レベルが上がるごとにパターンが1つずつ長くなっていきます。
- パターンを再現する
お手本のパターンが終わったら、あなたの番です! 光った順番通りに、対応する色のボタンを押してください。 ボタンを押すと、確認のためにLEDが光り、音が鳴ります。
- 次のレベルへ
パターンを正しく入力できると、成功を知らせる短いアニメーションが流れます。 その後、今までのパターンに新しいパターンが1つ追加され、次のレベルに進みます。
- ゲームオーバー
間違ったボタンを押してしまったり、制限時間内に入力できなかったりすると、ゲームオーバーです。 ゲームオーバーになると、今回のスコア(クリアしたレベル数)が表示されます。 もし、ハイスコアを更新した場合は、特別なアニメーションが流れます!
さあ、あなたの記憶力の限界に挑戦してみましょう!
補足1: ハイスコアのリセット方法
ハイスコアを「0」にリセットしたい場合は、ゲーム開始前の画面でスタートボタンと赤色のボタンを同時に押してください。
必要な部品
全て秋月電子通商で購入可能です。
合計622円。
※電子部品は10個セットや100個セットでのセット販売が多いですが、下表は1セットの価格ではなく、部品1個あたりの価格で記載しています。
※2025/8/15時点の情報です。
No. | 部品 | 画像 | 単価[円] | 個数[個] |
---|---|---|---|---|
1 | STM32マイコン STM32C011F4P6 | ![]() | 80 | 1 |
2 | 圧電スピーカー PKM13EPYH4000-A0 | ![]() | 30 | 1 |
3 | 2桁7セグメントLED C-552SRD-NW-A B/W | ![]() | 110 | 1 |
4 | トランジスタ 2SC1815 | ![]() | 5 | 2 |
5 | 5mm赤色LED OSR5JA5E34B | ![]() | 10 | 1 |
6 | 5mm青色LED OSB5SA5B64A | ![]() | 25 | 1 |
7 | 5mm黄色LED OSY5JA5E34B | ![]() | 10 | 1 |
8 | 5mm緑色LED OSG8HA5E34B | ![]() | 10 | 1 |
9 | 赤色タクトスイッチ DTS-63-F-N-V-RED | ![]() | 10 | 1 |
10 | 青色タクトスイッチ DTS-63-N-V-BLU | ![]() | 10 | 1 |
11 | 黄色タクトスイッチ DTS-63-N-V-YLW | ![]() | 15 | 1 |
12 | 緑色タクトスイッチ DTS-63-N-V-GRN | ![]() | 15 | 1 |
13 | 黒色タクトスイッチ DTS-63-N-V-BLK | ![]() | 15 | 1 |
14 | 100Ω抵抗 CF25J100RB | ![]() | 1.5 | 1 |
15 | 330Ω抵抗 CF25J330RB | ![]() | 1.8 | 7 |
16 | 1kΩ抵抗 CF25J1KB | ![]() | 1 | 3 |
17 | 2.2kΩ抵抗 CF25J2K2B | ![]() | 1.7 | 2 |
18 | ボタン電池基板取付用ホルダー CR2032用 CH25-2032LF | ![]() | 100 | 1 |
19 | 分割ロングピンソケット FHU-1x42SG | ![]() | 1.9 | 6 |
20 | スライドスイッチ 6011S1M1RE-G | ![]() | 100 | 1 |
21 | ボタン電池 CR2032 | ![]() | 40 | 1 |
その他、実装に必要になる道具
持っていない場合は購入してください。
代用できるものがあれば購入しなくて大丈夫です。
マイコンのはんだ付けは難しいので、φ0.3mmのはんだ、スタンドルーペ、ピンセットは必須です。
はんだごては温度調整機能があると便利です。基本は350度ですが、こて先が劣化して、はんだが溶けにくくなってきたら、~380度くらいに調整するとはんだ付けしやすいです。
ニッパーは「ツノダ つかめるニッパー TH-125NC 125mm」の購入を強くおすすめします。ピンの切り残しがなく基板を触って安全になるのはもちろん、ピン切断時の破片が飛び散りにくいので、目に破片が入るリスクも下げられます。
No. | 部品 | 画像 | 単価[円] | 個数[個] |
---|---|---|---|---|
1 | STM32マイコン用デバッガ STLINK-V3MINIE | ![]() | 2200 | 1 |
2 | 0kΩ抵抗 RD25S 0E | ![]() | 1 | 6 |
3 | ICクリップテストリードS両端 TLA-101 | ![]() | 1330 | 1 |
4 | ジャンパーワイヤ ZYJ-W1 | ![]() | 4.2 | 6 |
5 | 銀レス鉛フリーはんだ 精密プリント基板用 Φ0.8mm SD-72 | ![]() | 440 | 1 |
6 | はんだ用ブローケース BC-1 | ![]() | 80 | 1 |
7 | 鉛フリーはんだ表面実装部品用 5m巻 φ0.3mm SF-A5M03 | ![]() | 350 | 1 |
8 | はんだ吸取線 CP-1515 | ![]() | 210 | 1 |
8 | 精密ピンセット TS-15 | ![]() | 300 | 1 |
8 | ツノダ つかめるニッパー TH-125NC 125mm | ![]() | 1440 | 1 |
8 | ライト付きスタンドルーペ レンズ系11cm 400-LPE016 | ![]() | 3780 | 1 |
8 | はんだごて FX600-02 | ![]() | 5200 | 1 |
8 | こて台 FH300-81 | ![]() | 840 | 1 |
組み立て方法
- 部品の準備: 上記部品リストを参考に、必要な部品を揃えます。
- はんだ付け: 背の低い部品からはんだ付けしていきます。
- STM32マイコン ※はんだ付けが難しいので下記手順でのはんだ付けがおすすめです。
- スタンドルーペを使用して基板上のマイコン設置用のランド(マイコンの各ピンが載る銀色の部分)を確認します。
- 基板上のマイコン設置用のランドにφ0.3mmのはんだをあらかじめ少し付けます。
- STM32マイコンをピンセットで基板上のマイコン設置用ランドの上に固定しながら、350度に加熱したはんだごてでマイコンのピンを上から押し当ててはんだ付けします。
- ※1 マスキングテープでの固定だとマイコンの片側しか見えず失敗しやすいため、ピンセットでズレがないか確認しながらはんだ付けするのがおすすめです。
- ※2 はんだ付けするピンは4つ角を対角線上に順番に止め、固定されていることを確認してから残りのピンを1ピンずつはんだ付けします。
- 抵抗(100Ω、330Ω、1kΩ、2.2kΩ)
- トランジスタ
- 圧電スピーカー
- タクトスイッチ
- 2桁7セグメントLED
- スライドスイッチ
- ピンソケット
- LED
- ボタン電池ホルダー
- STM32マイコン ※はんだ付けが難しいので下記手順でのはんだ付けがおすすめです。
- 動作確認:
- ボタン電池を入れ、スライドスイッチをONにして各色のタクトスイッチを押すと、対応した色のLEDが光ります。これで電源からLED、タクトスイッチ周りの回路は正常であることが確認できます。不具合があればはんだ付けを疑ってください。
- STM32CubeProgrammerでSTLINKを経由してマイコンに接続できるかどうかで、マイコンのはんだ付けが正常に行えているか判定します。
- STLINK-V3MINIEと付属のジャンパーワイヤーからSWD用のピンを0Ω抵抗とマスキングテープを使用して生やします。
- ※1 使用するピンは赤線を引いた3(VCC),4(SWDIO),5(GND),6(SWCLK),7(GND),12(NRST)の6ピンです。
- ※2 STLINK V3MINIEに付属したジャンパーワイヤー(メス-メス)を利用してマイコンとSTLINKを接続する際、ピン配置を間違いやすいので注意してください。ジャンパーワイヤーの穴を、出っ張りがある方を上にした時、ドキュメントのピン配置が左右対称になっている状態です。下図の通り接続されていればOKです。
- ※3 上図の通り、私はジャンパーワイヤーの穴に0Ω抵抗をジャンパピンとして生やし、絶縁&ピン説明のためにマスキングテープを巻いています。VCC、GND、GND、SWDIO、SWCLK、NRSTをマスキングテープに書いておくと分かりやすいです。
- ※1 使用するピンは赤線を引いた3(VCC),4(SWDIO),5(GND),6(SWCLK),7(GND),12(NRST)の6ピンです。
- STLINK-V3MINIEとマイコンをSWD(Serial Wire Debug)というインターフェース規格で接続します。基板上に上からVCC、SWDIO、GND、GND、SWCLK、NRSTと記載しているので、STLINK側とマイコン側を接続します。
- STLINKをPCに接続し、Flash Memory基板の電源をONにした状態で、STM32CubeProgrammerを開き、[接続]を押します。「データが正常に読み取られました」とログに表示されれば正常です!
ここで不具合があれば、下記を疑ってください。
- PCがSTLINKを認識していますか?(認識していない場合はおそらくSTLINKの使用が初めての方なので、こちらにアクセスして、STSW-LINK007の最新版をインストールしてください。STSW-LINK007 は、USB ポート経由で ST-LINK、ST-LINK/V2、ST-LINK/V2-1、および STLINK-V3 ボードのファームウェアをアップグレードするアプリケーションです。)
- 基板の電源がONになっていますか?(LEDの隣にあるタクトスイッチを押して、LEDが光れば問題ありません。)
- SWD用のピンが間違えていませんか?(基板側とSTLINK側の両方にミスがないか確認してください。)
- ピンとランドが上手くはんだ付けできていないか、隣接するピンが繋がってしまっていませんか?(上から見ても問題なく見える場合は、全ピンを再度はんだごてで押し当ててはんだ付けし直してみてください。)
- STLINK-V3MINIEと付属のジャンパーワイヤーからSWD用のピンを0Ω抵抗とマスキングテープを使用して生やします。
プログラムの書き込み方法
- 書き込み環境の準備:
- STM32CubeProgrammerの画面右上の[接続]ボタンを押して、STM32CubeProgrammerからSTLINK経由でマイコンに接続します。(先ほどの動作確認でここまでは完了しているはずです。)
- ビルドファイルのダウンロード:
- flash_memory.elfをダウンロードし、適当なフォルダに格納してください。
- ビルドファイルの書き込み:
- STM32CubeProgrammerの[消去&プログラミング]タブの[ダウンロード]欄で、先ほどダウンロードしたビルドファイルのパスを指定し、[プログラミング検証]にチェックを入れ、[プログラミングの開始]を押すと、マイコンにプログラムが書き込まれます。正常に完了するとログに「ダウンロードが正常に検証されました」と表示されます。
- STM32CubeProgrammerの[消去&プログラミング]タブの[ダウンロード]欄で、先ほどダウンロードしたビルドファイルのパスを指定し、[プログラミング検証]にチェックを入れ、[プログラミングの開始]を押すと、マイコンにプログラムが書き込まれます。正常に完了するとログに「ダウンロードが正常に検証されました」と表示されます。
- 動作確認:
- STLINKと接続されているジャンパワイヤ―を基板から取り外し、電源を入れ直してください。正常にプレイできるようになっています。
以降は名刺基板を自作したい方向けの情報です。
(参考)開発情報
開発に使用した主なツール
- CADソフト KiCad Version 9.0
- 統合開発環境 (IDE) VSCode:1.100.2
- STM32用プロジェクトビルダー STM32CubeMX(コンパイラのCmakeを含む):6.14.0
- VS Code連携ツールキット STM32CubeCLT:1.18.0
- デバッガ/プログラマ STLINK-V3MINIE
- VSCodeのSTM32開発用拡張機能 STM32 VS code extension:2.1.1
- マイコンの生存確認・実装不良の確認・プログラム書き込みツール STM32CubeProgrammer:2.19.0
- 通電確認ツール/3V電源 ANALOG DISCOVERY2
STM32CubeIDEではなくVSCodeで開発すると、Github Copilotが利用できるのでおすすめです。
特徴
- コンパクトな名刺サイズ(H91mm*W55mm)
- 入手性の高い20ピンSTM32マイコンで実現するためのピン数節約技術
- GPIO多重化
- 7セグメントLEDのダイナミック点灯
- 秋月電子通商で入手可能な部品のみで構成
回路図
[右クリック]⇒[新しいタブで画像を開く]で拡大して閲覧できます。
PCBレイアウト
パーツが名刺サイズに収まってホッとしました(笑)
自動配線だとマイコンのGND配線が引かれなかったりするので、手動での配線も必要になります。
部品名をパーツの枠内に収めてシルク印刷するとはんだ作業が楽になりますし、見た目も良いです。
3Dプレビュー
部品が綺麗に並んでいると、芸術感が出ますよね。