🌏

ワークショップ その1 デジペ工作基礎(Lチカ+タッチスイッチ+音声再生モジュール)

2023/08/22に公開

こんにちは、Ideagearの鈴木陽介です。

昨日は、深セン羅湖区の国貿にある日本酒ショップの奥のスペースで、電子工作のワークショップを開催しました。

はじめに

実は、3ヶ月前の2023年5月21日にも深セン福田区の華強北で電子工作のワークショップが開催されましたが、その際には、電子工作の基礎中の基礎であるLチカを学んだあと、丸型圧力センサーを使ってマイクロサーボモーターのスピードをコントロールする方法を勉強しました。以下は当時のテキストです。
https://zenn.dev/suzuky/articles/042c9996f3f90a


当時の様子

ですので、今回は基礎を飛ばすつもりでしたが、今回は新しい参加者が少なくなかったのと、それ以上に前回の内容を忘れたという声も多かったためw、もう一度ブレッドボードとArduino Unoの使い方からLチカまでを復習してから、本編へ進むべきと判断しました。


今回のワークショップの様子

で、今回もいつもの通り私の過去の記事をテキストとして使用しながら進めたのですが、ブレッドボードに関する細かな説明が無かったり、昔の記事にはFritzingによるブレッドボード図が不足していました。また、タッチスイッチと音声再生モジュール単独の記事でさえ、今回のワークショップ用にソースコードのアレンジや補足が必要だったりと、情報が散乱していて使いずらかったのです。

そこで、ワークショップ後に過去の記事を更新するよりは、過去記事を活用しつつも今後のワークショップでも使えるようにまとめた記事を作った方が良いと考え、本記事をしたためました。

ワークショップの流れ

当ワークショップでは以下の流れで実施しました。

  1. ブレッドボードの説明
  2. Arduino Unoの使い方の説明
  3. Lチカの方法を学ぶ(LED単独で試した後にブザーを追加)
  4. タッチスイッチの使い方を学ぶ(さらにLチカをタッチスイッチでON/OFF)
  5. 音声再生モジュールの使い方を学ぶ(さらに音声再生モジュールをタッチスイッチでON/OFF)

本記事もおおむね上記順番にて解説していきます。

なお、これはどのワークショップでも同じですが、参加者には当日使うソフトは前もってダウンロードしてもらっているため、今回もそこは省きます。

Arduino IDEのインストールについては下記参考記事の最初の記事をご覧ください。

参考記事

Arduino IDEのインストールとLチカ(+ブザー)
https://zenn.dev/suzuky/articles/2d140912417bc8
https://zenn.dev/suzuky/articles/3d386719984beb

タッチスイッチ
https://zenn.dev/suzuky/articles/961604fb02b331

音声再生モジュール
https://zenn.dev/suzuky/articles/deca20bb6e8499

ブレッドボード

ワークショップをやるといつも感じますが、初めてだとブレッドボード内部の配線ルールの理解に手こずる人が多いです。

よって、ブレッドボードを使用する前に、毎回ブレッドボードを片手に説明していますが、口頭だけでなくちゃんと図に残すことで、今後はこれを見ながら配線してもらいましょう。

ブレッドボードとは


こちらは、電子工作でよく使われるハーフサイズのブレッドボードです。

ブレッドボードの英語はBreadboard(ちなみに、中国語は面包板)です。
日本語に直訳すとパンの板で、ウィキペディアの言葉を借りると「パン切り用まな板」ですが、要は、ジャンパー線をパンの表面のようにプスプスと抜き差しできることからこの名前が付けられたようです。

で、このブレッドボードが便利なところは、内部でつながっているため、いちいち部品同士をワニ口などでくっつけたり、ユニバーサルボード等を使ってはんだづけしたりせずとも部品と部品を接続できますし、取り外しややり直しもカンタンです。

特に、電子工作初心者にとっては、はんだごての使用はハードルが高いため、また初心者でなくとも基板にはんだづけしてから動かないとなるとやり直しが大変です。

ブレッドボードはまたの名をプロトタイピングボードやプロトボードとも呼ばれているようですが、まずブレッドボードでテストし、それで成功してからそれをもとに基板設計→はんだづけというのは非常に理にかなっています。

ブレッドボード内の線路

前述の通り、ブレッドボードは内部でつながっていますが、全部がつながっているわけではありません。そして、主に電源エリアと部品エリアに分かれています。


まず、上側と下側にそれぞれ青と赤の横線がありますが、このエリアは青線が走っている脇の横一列と赤線が走っている脇の横一列がそれぞれつながっています。ただ、青線と赤線の間、つまり、縦はつながっていません。

この青と赤の部分が電源エリアです。

次に、ブレッドボードの両脇にABCDEFGHIJと書かれた中央のエリアがありますが、ここは逆に縦がつながっていて横はつながっていません。また、真ん中にシャンチー(中国将棋)の川みたな隔たりがありますが、川の上下もつながっていません。

つまり、ABCDEの5つの穴はそれぞれつながっていて、FGHIJの5つの穴もそれぞれつながっていますが、ABCDEとFGHIJの間はつながっていません。

また、横は1~30までの列がありますが、列同士はまったくつながっていません。

そして、ABCDEFGHIJ×1~30列の部分が部品エリアです。

電源エリアと部品エリアでつながり方が違うのと、真ん中の隔たりで上下がつながっていないことにより、初めて使う方は混乱するようです。ただ、これに限っては何度も使って慣れてもらうしかないですね。まぁ普段から使っていればすぐ慣れますw

では、次はいよいよLチカです。

LEDを光らせてみる

と、その前に、まずはマイコンを使わずにLEDと電源だけで配線してみましょう。
https://zenn.dev/suzuky/articles/3d386719984beb#部品を配置する

上記記事にもLEDと電源だけのブレッドボード図が載っていますが、それだと不親切ですのでここにも同じものを共有します。

ただ、LEDと電源との間には必ず抵抗を挟んでください。

LEDを電源に直差しすると、一瞬明るくなって二度と光らなくなります。つまり、壊れてしまいます。電子工作初心者がよくやってしまうミスですねw

Lチカ

いよいよLチカの本番です。

Lチカとは、マイコンを使ってLED(発光ダイオード)を点滅させることす。
つまり、LEDをチカチカさせるので、それを略してLチカと言われています。

ソースコード

ソースコードは下記を使用してください。
https://zenn.dev/suzuky/articles/2d140912417bc8#arduino-ideを使ってarduinoにプログラムを書き込む

配線図

Arduino Uno、LED、抵抗の配線は下記をご覧ください。
https://zenn.dev/suzuky/articles/3d386719984beb#lチカの配線図

ただ、これも上記を参照してくださいだと不親切ですので、ここにも同じものを共有します。

+ブザー

Lチカはサクッとできた人でも、ブザーが一個加わるだけで急に難しくなるようです。

また、配線後にブザーの音が小さかったり、LEDの挙動がおかしくなる人もいますが、配線後の動作がおかしい場合は、後述するトラブルシューティングも併せてご覧ください。

なお、ブザーは抵抗を介すと音が小さくなってしまうため、今回は使わないでください。

下記は配線の一例です。

先程のLチカのソースコードのままで、上記配線によりLEDの点滅とブザーの音が同期していれば成功です!

電子回路図

補足として、このLチカの部分を回路図を交えて再度解説します。
KiCadという基板設計ソフトを活用したので違和感があるかもしれませんがご了承ください。


こちらは、LED(+抵抗)のみの場合です。
電気が、電源の+→LED→抵抗→電源の-
の順番で流れているのが想像できるのではないでしょうか?


こちらは、先ほどの回路にブザーを加えたものです。
ブザーは抵抗を介すと音が小さくなってしまうため、電源に直接つながるように配置します。


こちらはさらにスイッチを加えたものです。
基本的には、回路図のどこかを切ってそこのにスイッチを当てはめます。
スイッチはプッシュスイッチだろうがスライドスイッチだろうが同じです。

このことで、常態OFFのスイッチであれば、押すとONし、離すとOFFします。
逆に、常態ONのスイッチであれば、押していない間はつながっていて、押すと回路が切断されます。


このように、他の電子部品と同じように、スイッチの片側に+をつなぎ、もう片側に-をつなぐのは間違いです。というより、普通にショート(短絡)して危険です。

スイッチ配線の補足

物理スイッチは、+か-のいずれかの配線を切ってそこに接続するイメージです。


こちらは先ほどのLEDとブザーの回路にスライドスイッチを入れたものです。

スライドスイッチは足が3本あるのでどれにつなげばいいか迷うと思いますが、ルールがわかってしまえば簡単です。

まず、右にスライドさせた時に右の二つの足の間がつながり、一番左は非接触となります。
同様に、左にスライドさせた時に左の二つの足の間がつながり、一番右は非接触となります。

つまり、真ん中は配線必須ですが、両端は自分がどう使いたいかによるわけです。
ですので、上図ですと、右側の2つの足を使う前提となっています。

なお、スイッチは+側と-側のどちらに入れた方が良いかというと、基本的には-側です。
なぜなら、+側を切ってスイッチにつなげた場合、何かの拍子でその線が外れ、周りの金属や電子部品に接触すると導通してしまいます。その点、-側の場合はその心配(線が外れた先にたまたまプラスの電源がるという可能性は低いという意味で)は少ないです。

タッチスイッチ

これまでのワークショップでLチカを教えた際には、Lチカができたら前述の通り+ブザーをしてもらい、さらに+スライドスイッチを使ってもらっていましたが、今回はスライドスイッチの代わりにデジペでよく使うタッチスイッチを使ってもらいました。


ワークショップでの様子

先程の回路にタッチスイッチを追加し、タッチスイッチでLEDとブザーがON/OFFできるようにしましょう。

配線図

下記の通り、タッチスイッチ用に3つの線を追加してください。

なお、タッチスイッチの動作は物理的に4つの設定が可能ですが、何も手を加えないデフォルトの状態(内の設定ですが、モーメンタリのABいずれも短絡していない状態)で使う場合を想定しています。

より詳しく知りたい方は下記をご覧ください。
https://zenn.dev/suzuky/articles/961604fb02b331#動作パターン

ソースコード

下記を書き込めば、タッチスイッチに触れた時だけLEDとブザーがONし、触れていないときはOFFになります。

const int TOUCH = 3; //I/Oを3番ピンに接続:通常OFFで、触れている時だけON
const int LED_PIN = 13; //LEDとブザーを13番ピンに接続

void setup() {
  pinMode(TOUCH, INPUT); //スイッチの入力を設定
  pinMode(LED_PIN, OUTPUT); //LEDへの出力を設定
}

void loop() {
  if (digitalRead(TOUCH) == HIGH) { //スイッチをタッチしている時の動作パターン
    digitalWrite(LED_PIN, HIGH);       
  }else if(digitalRead(TOUCH) == LOW){//スイッチをタッチしていない時の動作パターン
    digitalWrite(LED_PIN, LOW);    
  }     
  delay(1);
}

動作確認

Arduino+LED+ブザー+タッチスイッチは下記の通り動作すればOKです。
https://twitter.com/Ideaport_Suzuky/status/1693272854333452509
※ワークショップでの一幕ですので、背景で別の参加者のブザーがずっと鳴っていますが無視してください。

音声再生モジュール

デジペはおしゃべりが必須(とは言え、私が勝手にそう決めているだけですがw)です。

したがって、安価な音声再生モジュールであるDFPlayer Miniの使い方を習得することは避けてとおれません。また、ぬいぐるみにタッチスイッチ(TTP223)を埋め込み、そこをタッチすることで事前に録音された音を出しますので、DFPlayer MiniとTTP223の組み合わせがデジペの基礎中の基礎と言えます。

ライブラリー

DFPlayer Miniのライブラリーは下記をご覧ください。
https://zenn.dev/suzuky/articles/deca20bb6e8499#ライブラリー

一点だけ注意点を追記しますと、GitHunからダウンロードしたZIPファイルをそのままArduino IDEにインクルードしても使えません。

ライブラリーの使用方法

https://github.com/DFRobot/DFPlayer-Mini-mp3
まずは、上記GitHubのページからZIPファイルをダウンロードします。


ダウンロードしたら解凍します。


DFPlayer-Mini-mp3-masterというフォルダの次のディレクトリへ入ります。


DFPlayer-Mini-Mp3というフォルダが出てきますので、これをコピーします。


DFPlayer-Mini-Mp3の中に入るとこのようになっていますが、この一つ上のディレクトリのフォルダを使います。


Arduinoのライブラリーが置かれている場所、つまり、ドキュメント -> Arduino -> librariesの中に、先ほどコピーしたDFPlayer-Mini-Mp3というフォルダを貼り付けてください。

これでライブラリーの準備は完了です!

ソースコード

DFPlayer Miniのみ

DFPlayer Mini単独のソースコードは下記をご覧ください。
https://zenn.dev/suzuky/articles/deca20bb6e8499#ソースコード

DFPlayer Mini + TTP223

下記はタッチスイッチを追加したものです。

#include "SoftwareSerial.h"
#include "DFPlayer_Mini_Mp3.h"

SoftwareSerial mySerial(10, 11); // RX, TX
const int TOUCH = 3; //I/Oを3番ピンに接続:通常OFFで、触れている時だけON

void setup () {
delay(2000); //モジュール起動の待機時間
mySerial.begin (9600);
mp3_set_serial (mySerial); //set softwareSerial for DFPlayer-mini mp3 module
mp3_set_volume (60);
pinMode(TOUCH, INPUT); //スイッチの入力を設定
}

void loop () {
  if (digitalRead(TOUCH) == HIGH) { //スイッチをタッチしている時の動作パターン
    mp3_play (1); //(0001.mp3)を再生
    delay (2000);
    mp3_play (2); //(0002.mp3)を再生
    delay (2000);
    mp3_play (3); //(0003.mp3)を再生
    delay (2000); 
  }     
  delay(1);
}

配線図

DFPlayer Miniの配線は、下記記事も併せてご覧ください。
https://zenn.dev/suzuky/articles/deca20bb6e8499#配線

DFPlayer Miniのみ


ワークショップでの様子

DFPlayer Mini単独の配線は下記をご覧ください。

DFPlayer Mini + TTP223


ワークショップでの様子

以下は、さらにタッチスイッチを追加したものです。

動作確認

最終版の動作確認はこちらから
https://twitter.com/Ideaport_Suzuky/status/1693635231687872567

トラブルシューティング

これまでの内容を記事通りにやっても上手くいかないことがあります。
その場合は、以下の5点を疑ってください。

  1. 配線が間違っている。
  2. ジャンパー線が中で切れている。
  3. ブレッドボードの今使っている場所が、ショートしたか何かの原因で壊れている。
  4. Arduinoが壊れているあるいは壊した。
  5. ブザーが壊れている。

特に、今回のワークショップでは、3と4の問題が非常に多かったので要注意です。

Arduinoはニセモノ等で元々怪しい個体だったかもしれませんが、今回のワークショップでは、同じブレッドボードでも使う位置を変えると上手くいったということが非常に多かったため、抜き差ししているうちにショートしてマイコンとブレッドボードが壊れてしまった可能性も否定できません。

いずれにせよ、ハードというのは往々にしてこのようなトラブルが起こるため、理論的に間違っていないと思ったら、壊れたことを疑って思い切って取り換えることも大事です。

まとめ

いかがでしたでしょうか?

今回は電子工作の基礎であるLチカとデジペの基礎である音声再生モジュール(DFPlayer Mini)+タッチスイッチ(TTP223)の使い方について学びました。

他の記事も含めて読み返していただき、みなさんもぜひデジペクリエイターとしての一歩を踏み出しましょうw

では、また次の記事でお会いしましょう!

Discussion