Mira&Luna's nursery lab

旅乙女と発明娘の子供部屋

小さなゲーム機 Arduboyの自作🍇 その4.はんだごてを手に、パーツを基板に実装します🍊

Mira

自作 Arduboy の作り方(∂_<🎀/
その.【実装編


◆ いよいよ実装です。
f:id:miraluna:20201109212142j:plain
<目次>
その1.【パーツ準備編
その2.【PC内環境 準備編
その3.【配線&動作確認編
その4.【実装編】(この記事)


電子工作を楽しもう🐤
小さな小さなゲーム機を作っています。「Arduboy」というゲーム機で、一般にも売られています。私が作っているのはその互換機。
これが「Arduboy」です。→ 

どれくらい小さいかというと......
f:id:miraluna:20201121183017j:plain
ココアシガレットと同じくらい。ちっちゃいね。
でも中に入れることができるゲームは結構本格的なものもあるの。Arduboy のプロジェクトはオープンソースだから、自由にゲームの互換機を作ったり公開されているゲームをダウンロードしたりしてもいい。いろんなゲームを自由に楽しめるのよ。
このゲーム機の本体には「ATmega32U4」というマイクロコントローラ(私は"マイクロコンピュータ"と呼びたいの)が使われています。以前に「ATtiny85」(あだなは"ちびやっこ")というもっと小さなマイコンを使って同じ大きさのゲーム機を作りました。興味のある方は見てみてくださいね。
 ↓ この記事が3記事あるうちの1つ目です。
miraluna.hatenablog.com

さあ、手作り Arduboy も今回が4回目。1・2・3回目でハードウェアの準備、ソフトウェアの準備、ブレッドボードで動作確認までできたので、いよいよはんだごてを手に実装に取りかかります👒


🍎ます目地図
私はいつも実装するときに配線がごちゃごちゃにならないように「ます目地図」というものを描くの。これはノートのます目を基板の穴に見たてて、実際のパーツ配置と配線が分かるようにするもの。こうやって整理しておかないと、途中でこんがらがっちゃう。

◆ Arduboy 配線用 ます目地図
f:id:miraluna:20201129163115j:plain
手描きで見えにくくてごめんなさい。私、配線図の描き方とか学んだことないから自己流の描き方をしています。〇が描かれたます目が、はんだで結線する箇所。緑色の線で囲んだ長方形が Arduino Pro Micro。6つあるオレンジ色の長方形がタクトスイッチ。基板の穴は15x25で、組込み充電器モジュールとバッテリは基板のます目の外に描いてあります。

🍇Arduboy は Arduino Leonardo をコントローラにすれば作りやすいんだけど、今回使った Arduino Pro Micro だと指定されたピンがなかったりするの。だから本来のピン配置を他のピンに割り当てている個所があります。その2【PC内環境 準備編】に詳しく書いたので参考にしてくださいね。

🍐電解コンデンサが2つ付いていますが、これはあとからディスプレイの動作を安定させるために付け足したものなので、もし付けるなら220μFくらいを1つの方がいいと思う。

🌰SPI通信のディスプレイは普通7本ピンがあります。でも私の買ったものは6ピンしかなかったの。リセットピンがなかった。そのせいか実装前にはバグがいっぱい出て、そのときにCS(チップセレクト)のピンを2番ピンにつないだりGNDにつないだりすることで安定させてた。だから実装後も2番ピンとGNDを切り替えられるように(右上に描いた)スイッチを付けたんだけど、電解コンデンサを追加してからはバグがないのでこのスイッチは使っていません(CSはGNDにつないでいます)。

🐟「スピーカ」は圧電ブザーを使っています。


🍊<配線完了
f:id:miraluna:20201109212024j:plain

◆ うら
f:id:miraluna:20201109211547j:plain
黄色と青色の導線が電源につながる線。そのほかはポリエステル銅線を使いました。こんなにごちゃっとした配線のしかたでも(はんだへたっぴ)短絡したりしてないの。このポリエステル銅線はとっても便利。おすすめです。
miraluna.hatenablog.com
Mira as Annaf:id:miraluna:20201009182910j:plain:w300Luna as Elsa


◆ 手作りモバイルバッテリ      ◆ 組み込み充電器を使います
f:id:miraluna:20201109211726j:plain:w290 f:id:miraluna:20201109211846j:plain:w290
バッテリーにはリチウムイオンバッテリに組込み充電器を取り付けたものを使おうと思います。リチウムイオンバッテリを手に入れたとき、ちょっと(ううん、とっても)怖い思いをしたの。みなさんくれぐれもリチウムイオンバッテリの取り扱いには気を付けてくださいね。
miraluna.hatenablog.com

◆ やったー! うまくいった。
f:id:miraluna:20201109211431j:plain
配線をはんだ付けして、実装。今まで一度だって1回で成功したことはなかった。どこか間違えていたり、つなぎ忘れていたり。でも今回は......。
なんと1回で成功! やったー! 
電子工作を始めてから、初めてです。うれしい。少しは上達したのかな🐈

次に基板をもう1枚使って、ねじとスペーサーで筐体を作ります。
f:id:miraluna:20201109212319j:plain:w290 f:id:miraluna:20201109212449j:plain:w290
f:id:miraluna:20201109212618j:plain:w290 f:id:miraluna:20201109212142j:plain:w290

◆ 工夫したところ
f:id:miraluna:20201110173911j:plain:w290
ピンヘッダを基板にはんだ付けして、筐体の壁面のようにしました。これで中のバッテリーが外に出てきません。

f:id:miraluna:20201110173851j:plain:w290 f:id:miraluna:20201109213347j:plain:w290
組込み充電器は2枚の基板で挟み込みました。ねじを締めればしっかりと固定されます。

◆ ディスプレイの保護シールをはがしました。これ、一大イベントです。
f:id:miraluna:20201109212736j:plain

            スイッチ......ON!
f:id:miraluna:20201109212852j:plain:w290 f:id:miraluna:20201109213019j:plain:w290

ついに手作り Arduboy が完成。
やったね(∂, <🎀y


<お買い物コーナー>
☆基板10枚☆  ☆はんだごてセット☆       ☆wwwww☆
  ←白光さん🍎 ←子どもも


◆ Arduventure
f:id:miraluna:20201109213213j:plain
それでは完成した Arduboy で「Arduventure」のゲームを楽しみたいと思います🎮
 またね。
       Bye Bye(∂_∂🎀ノシ

<目次>
その1.【パーツ準備編
その2.【PC内環境 準備編
その3.【配線&動作確認編
その4.【実装編】(この記事)


いっしょにはんだごてを手に、楽しい電子工作しませんか?
作製・紹介はミラでした。
f:id:miraluna:20180806220931j:plain:w250


↓ "ATtiny13"を使ったゲームや"ATmega328"のたまごっちなんかも作りました。
miraluna.hatenablog.com

Arduboy の自作🔧電子工作。その3.ブレッドボード上で配線。ゲームの動作確認をします🍊

Mira

小型ゲーム機の自作🎮
     手作りArduboyを作ろう(∂, <🎀/
その配線&動作確認編


      ←本家 Arduboy。これ(の互換機)を作ります。

<目次>
その1.【パーツ準備編
その2.【PC内環境 準備編
その3.【配線&動作確認編】 (この記事)
その4.【実装編


◆ 完成したときの大きさ。ココアシガレットと同じくらい。
f:id:miraluna:20201121183017j:plain

楽しい電子工作🍎 小型ゲーム Arduboy を自作しています。Arduboy はオープンソースソフトウェアのゲームで、Arduino IDE (Arduino 開発環境)を使えば自由にゲームを作ることができる。そしてそれを世界中の人と共有したり、世界中の人が作った自作ゲームをダウンロードしたりできるの。
おもしろいプロジェクトよね。

ゲーム機を自作するためのパーツとソフトウェアを、以前の記事「その1」「その2」で準備したので、今回はそれらを実際に配線してみて動作確認をしていきます。
楽しみ~👒


.配線をする。
◆ ブレッドボード
f:id:miraluna:20201122182405j:plain
私、ブレッドボードって好きなの。なんでだろう? 実験するときにはいつも登場するし、どんな配線も簡単にできちゃうからかな? 電子工作を始めたばかりのときのわくわくした記憶がよみがえるからかな? 見た目も好きだし。それに「ブレッドボード」っていう名前も好き。昔は名前の通り、パン切り用の生板を実験道具として使っていたんだって。どこが好きかって訊かれてもわからない。ただ、とっても好きなの。ブレッドボードが。

こんな ↓ かわいいブレッドボードもあります。
  "いぶし銀"の安心感→ 


ボタンやディスプレイなどを Arduino Pro Micro にどう配線するかは Arduboy のライブラリに書かれているので、ArduboyライブラリのHファイルを開いて調べました。
でも Arduboy 公式ページに「DIYの配線」についての質問のやりとりがあって、そこに一覧のように配線が書かれていました。それを見れば簡単に分かったのね(「CSを忘れてるよ」という意見も書かれてたけど)。自作方法を公式ページで教えてくれるなんて、さすがオープンソースのゲームね。
リンクを貼っておきます。→ DIYのための配線一覧についての対話

<配線>
ここでは私が使った「Arduino Pro Micro」用に改変した配線方法を紹介します。Arduino Leonardo を使えば配線を変更する必要はないんだけど、安くて小さい Pro Micro を使ったのでピンが足りないの。そこで行った対処方法が、ライブラリの修正。修正方法については前回の「PC内環境 準備編」を見てくださいね。

Arduino Pro Micro> → <接続パーツ>

            「タクトスイッチ」
・A0           上ボタン
・A1           右ボタン
・A2           左ボタン
・A3           下ボタン
・7            Aボタン
・8            Bボタン

            「スピーカー」
・5           スピーカー1
・(13)          スピーカー2(私は使わなかった)
 本来は1つのスピーカーに5と13をつなぐらしいんだけど、5とGNDでもO.K.

            「OLED(SPIディスプレイ)」
・2(12を2に修正)    CS(わけあって、のちに2からGNDに変更しました)
・4            DC
・(6)           RCT(私が買ったOLEDにはRCT(リセット)がなかった)
・16       MOSI(SDA、D1などの表記もあるかも。データ。)
・15       CLK(SCLK、SCK、SCL、D0などの表記あるかも。クロック。)

            「LED」
・10          赤色LED
・3(11を3に修正)   緑色LED
・9           青色LED
 LEDは青と赤を実装したんだけど、眩しかったのでカットしちゃった。動作には直接関係のないパーツなので、初めから取り付けなくてもいいかも。好みの問題ね。

       f:id:miraluna:20180815165315j:plain:w300


.ゲームを Pro Micro に書き込む。
◆ 早くやりたいな
f:id:miraluna:20201109211300j:plain

Arduboy は個人でもゲームを作ることができるから、Arduboy 用のゲームは世界中にいっぱいある。インターネットの海から探し出して、それをハント(ダウンロード)してきましょう。
有名どころでいえば「Team arg」さん。Arduboy のゲームをたくさん作って公開しているの。今回はその Team arg さんから「Arduventure」というRPGゲームをダウンロードしました。
 リンク→「Team arg さんのページ」へ
  Thank you, Team arg. I recommend your marvelous Games.
ダウンロードは Team arg さんのページからではなくて、Arduboy 公式ページからするのが分かりやすいと思う。
 このページ→「Arduventure ダウンロードページ
上 ↑ のリンクからサイトへ移動すると、Arduventure のダウンロードボタンがあるのでそこをクリックします。


f:id:miraluna:20201123181048p:plain


するとGitHubというプラットフォームのページに移動します。(GitHubって、まるでプログラマ―たちのギルドみたい。)そこに「Arduventure.zip」と書かれたギフトボックスみたいなのがあるので、クリックしましょう。Arduventure のプログラム一式が入った zipファイルがダウンロードされます。(ギフトボックスみたいなのというのは、下の画像の赤い丸で囲んだところです。)ダウンロードしたら、zipファイルを展開しましょう。


f:id:miraluna:20201123181043p:plain


展開すると「ID-46-Arduventure-master」という名前のフォルダになると思います(みんなも同じ名前なのかな?)。そのフォルダ内に「ARDU_AB」というフォルダがあって、さらにその中に「ARDU_AB」というArduinoのマークがアイコンになっている INOファイルがあります。それを開くと Arduino IDE でスケッチが開かれます。


<ボードの設定>
◆ Arduino IDE (この画像はまるで違うプログラムのものです)
f:id:miraluna:20201112180325p:plain:w300
 ↑ Arduino IDE はパソコン上でこんな姿をしています。画像のスケッチ(プログラム)はサーボモータを動かすためのスケッチね。

これからゲームのプログラムを Pro Micro に書き込むわけだけど、Arduino Pro Micro を Arduino Leonardo として扱います。「ツール」を開いて「ボード」にマウスを合わせると、旧バージョンの Arduino IDE ではずらっとボードが出てきました。もし新しい Arduino IDE 1.8.13にアップデートしていれば、ボードの名前ではなくて大まかなボードのくくりがいくつか出てくると思います(1.8.13になったから、だと思う。たぶん。)。そこから Arduino AVR Boards を選ぶと Arduino Leonardo がいるので選びましょう。そしてシリアルポートを接続しているポートに合わせます(前もって Pro Micro をUSBで接続しておきましょう。)。これで準備O.K.。もしArduboy ライブラリを準備していなければ、前の記事【PC内環境 準備編】に方法を書いたので準備してくださいね。
miraluna.hatenablog.com
miraluna.hatenablog.com

準備ができたら、さっそく「マイコンボードに書き込む」ボタンを押して、 Pro Micro に「Arduventure」を書き込みましょう🐟

◆ ゲームできた!
f:id:miraluna:20201109211121j:plain


<トラブルシュート>
さあ、目論み通りいけば、これでゲーム画面が現れて音楽が流れるはず。
なんだけど......。初回から大成功することってあんまりない。たいてい配線のつなぎ間違いとか、接触不良とか、パーツの取り付け忘れとか、なんやかにゃトラブルがあって正常動作しないもの(私の場合はね)。
そんなときに不具合がどこにあるのか分かればいいんだけど、それを見つけるのが大変よね。ゲームのプログラムは複雑だから、エラーを見つけ出すためにはまず、動作の異なるパーツごとに検証するのがいいと思うの。
そこで(∂. ∂🎀† Arduboyライブラリに用意されているスケッチ例を使いたいと思います。
「ファイル」の「スケッチ例」の中には前回ダウンロードした「Arduboy」と「Arduboy2」のライブラリスケッチ例があります。「Arduboy2」を見てみましょう。「BeepDemo」というスケッチ例は、ブザーからメロディを流すというもの。ディスプレイが映らなくても、このスケッチを書き込んだ時に音が出れば、書き込みとスピーカーの配線は上手くいっていることが分かるわね。「HelloWorld」というスケッチ例なら、ディスプレイに「HelloWorld」を表示するシンプルなもの。これでディスプレイが映らなければ、ディスプレイ回りにエラーがありそうだと予想できる。
うまく動作しないときには、こんなふうに部分的に検証していくとエラーを見つけやすいと思います。

<私のトラブル>
私の場合はディスプレイがなかなか正常に動作しなかったの。初めはまったく映らなかったんだけど、47μFの電解コンデンサをVccとGNDの間に入れてしばらくしたら映るようになった。でも画面は激しく動いて正常じゃない。何度も電源を入れ直したり配線を変えたりしているうちに、CSを本来の2番ピンではなくてGNDにつなぐと安定しやすいことが分かったの。理由は分からないけど。それでしばらく動いたんだけどまたバグみたいになったとき、もう一度2ピンに戻してからGNDにつなぎ直すとうまくいった。実装してしまうと配線を変えられないから、CSにスイッチを付けて、2ピンとGNDを切り替えられるようにしたの。でもそのあと100μFの電解コンデンサを追加して147μFにしたら、CSをずっとGNDにつないでおいても安定して動作するようになったので、今はスイッチは使っていません。

◆ リチウムバッテリーから電源をとる
f:id:miraluna:20201109210953j:plain
ブレッドボード上でついに正常動作するようになったので、パソコンと接続しているUSBケーブルを外しました。電源にはこの前使えるようにしたリチウムイオンバッテリ―を使うことにしました。↓ そのときの様子。
miraluna.hatenablog.com

◆ これがそのリチウムイオンバッテリー「手作りモバイルバッテリ」
f:id:miraluna:20201109211726j:plain:w300
リチウムイオンバッテリーの取り扱いにはくれぐれも注意しましょう。


<お買い物コーナー>
☆ちゃんとリセット付き☆  ☆信頼のサンハヤトさん☆ ☆ジャンパワイヤ☆
   ←7ピン版     



次回はいよいよ、はんだごてを手にゲーム機を実装していきます🐈


<目次>
その1.【パーツ準備編
その2.【PC内環境 準備編
その3.【配線&動作確認編】 (この記事)
その4.【実装編


作製・紹介はミラでした。
f:id:miraluna:20200223191041j:plain:w300

 「VarSpeedServo.h」ライブラリを使って、サーボモータのスピードをコントロールします(∂, ∂🎀/

Mira

Arduinoで「VarSpeedServo.h」というライブラリを使った、サーボモータ速度調整の方法の紹介🍇

◆ サーボモータ
f:id:miraluna:20190609183242j:plain

サーボモータマイコンなどを使って、プログラムした角度まで自在に回転させることができるモーターです。
Nursery lab でも何回か記事にして紹介してきたパーツです。

miraluna.hatenablog.com
miraluna.hatenablog.com
miraluna.hatenablog.com
ちなみにあだ名は「ペンギン」よ。

Arduinoを使ってこのサーボモータの速度を制御するための、ライブラリを使った方法を紹介します。 リンク→「ライブラリとは?


.ライブラリをダウンロードする。
今回使うライブラリはフィリップ・ファン・アレン(pvanallen)さんが作成して、GitHubというサイトで公開してくださっているものです。Thank you so much, Mr.pvanallen.
こちらのリンクから移動できます。→ 🍅ここだよ🍅
移動すると英語ばっかりのサイトですね。そこに「Code」か「Clone」か「Download」と書かれた緑色のボックスがあると思います(Sign up じゃないほう)。そこからダウンロード方法を選んでダウンロードします。私は Download Zip という Zipファイルをダウンロードして展開(解凍)する方法でやっています(だから他の方法はよく分かりません)。

.ダウンロードしたファイルを移動させる。
ダウンロードして展開したファイルをダウンロードファイルなどにそのまま置いておいたのでは、Arduinoが見つけることができないんです。Arduinoには「本(ライブラリ)」を置いておく本棚のようなフォルダ「libraries」が用意されています。
場所は(Windowsなら)「ドキュメント」→「Arduino」に「libraries」があると思います。展開したライブラリファイルは、この「libraries」の中に入れておきましょう。

.プログラムにインクルードする。
ライブラリを本棚である「libraries」に入れたら、動かしたいプログラムを書きます。そのときにArduinoに本を持たせて、「この本(ライブラリ)のルールに従うのよ」と言いつけるのが、インクルードです。
どうするかというと、プログラムの初めにライブラリ名を以下のように書くだけです。

#include <VarSpeedServo.h>

↑「『VarSpeedServo.h』という本に従うのよ」という言いつけの1行。
これでArduinoは<VarSpeedServo.h>のライブラリを使うことができます。


ダウンロードしたファイルの中にはサンプルスケッチ(スケッチとはArduinoのプログラムのこと)が入っているので、実際に使ってみましょう。

🍐 配線をする。
f:id:miraluna:20201121183117j:plain
Arduinoサーボモータをつなぎます。配線は3本。+電源(5vでも3.3vでも)と、GND線と、通信線。通信線はサンプルスケッチが「9番ピン」を指定していたので、Digitalピンの「9」につなぎます。線の色は、オレンジが+で、茶色がGNDで、黄色が信号線。詳しく見たい方は🍎こちらの記事へ🍎

配線が完了したら、Arduino IDE を開きましょう。
Arduino IDE がない方は→「Arduino IDE のダウンロード方法


◆ サンプルスケッチ
f:id:miraluna:20201121183132p:plain
このスケッチは、サーボモータを0°から180°の位置まで繰り返し回転させ続けるプログラムです。「0°から180°の位置」について知りたい方は、この記事の上の方にあるリンク「Arduinoを使ってサーボモーターを制御してみよう。」を読んでみてね。
プログラムの中に赤い丸と青い丸が付いていますね。これが速度です。
赤い丸の数字は180°の位置まで移動するときの速度。
青い丸の数字は 0°の位置まで移動するときの速度。
数字が大きいほど速くて、たぶん255が最大じゃないかな。今は両方とも30で、同じ速さね。


◆ サンプルスケッチを修正
f:id:miraluna:20201121183137p:plain
それではこの数値を変えてみましょう。
180°まで移動するとき(往路)は「10」の速度に、
0°まで移動するとき(復路)は「200」の速度にしてみます。

すると往路はゆっくりだけど、復路は速く回転します。


🍕動作実験の動画🍆

サーボモーターの速度調整のしかた(∂. ∂🎀/


これでサーボモータのスピードをコントロールすることができるようになりました。(∂. <🎀y やったね。

みなさんもArduinoサーボモータを制御して、楽しい電子工作してみませんか?
紹介はTinyミラchenでした。
f:id:miraluna:20201009182910j:plain:w200