今回は、ESP32搭載のLolinD32を使います。
ESP32と言えば、WiFiとBluetoothを使用して無線通信が可能です。
この無線通信を使えば、簡単に無線キーボードが作れます。
以前の記事で、
Arduino Pro Microを使ってキーボード入力しました。
この時は、ATMega32U4というチップが乗っていれば、
Leonardoでも何でもよかったのですが、
いかんせん有線という縛りがありました。
今回のESP32を使ってキーボードを作る方法だと、
ESP32自体をバッテリーで動かしてしまえば、
ホントに無線です。
Bluetooth通信の交信距離は大したことありませんが、
それでも2,3m離れたところから指令を出したり
結構使い道はありそうですよね。
それでは行ってみましょう!
Youtubeチャンネルにさまざまな動画を上げています。
↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓
本ブログはアフィリエイトを用いた広告を掲載しています。
今回の記事を実践するとどんなことができる??【先に完成版を動画で。】
今回紹介している内容をそのまま実行すると、
こんな感じでAndroidタブレットのメモ帳に文字入力ができます。
ブレッドボードがリモコンみたいなイメージですね。
タブレット端末とマイコンは無線でしかつながっていません。
ほんとに市販のBluetooth接続のキーボードと扱いは全く一緒です。
ちゃんとタブレット端末から、このマイコンの名前が表示されて、
選択できます。市販の無線キーボードのセットアップと一緒ですよね。
各タクトスイッチにそれぞれ、「hobby」「happy」「blog」「エンターキー」
と打ち込むようにプログラミングしています。
通常のキーボードは1キー打つと1文字入力ですから、
これはショートカットというか、マクロ機能を搭載させている感じですかね。
必要な道具たち。
今回使用したのは以下のような道具とパーツです。
タブレット端末は、Bluetooth接続できるパソコンでも代用可能です。
抵抗は、内部プルアップをかけるため不要です。
どうせやるならそろえる部品は少ないほうが良いですもんね!
一応どこで買えるかも情報を共有しておきますね。
Androidタブレット
これは、Androidタブレットだと必ずBluetooth通信可能だから選んでいます。
他にも最近だとノートPC、スマホはBluetooth通信可能ですよね。
デスクトップPCだとついてないことが多いイメージですね…
もちろん、みんな大好きAppleのiphoneだって使えます。
ただ、フルキーとして認識されるので、今回の使い方だと
deleteキーなどがソフトウェアキーボードで押せないので、
ほぼ使えないですね…ほかの文字が打てなくなってしまうので。
LolinD32
LolinD32は、ESP32を搭載したマイコンボードです。
何回かこのブログでも登場していますが、
Amazonで気軽に購入できるマイコンボードということで、
わたしはいくつか購入しています。
※記事執筆(2023/3/12)時点でAmazonの在庫が切れてしまっています…
ただし、circuitpythonをやってみたいならこの子はオススメできません。
ESP32搭載のマイコンボードでcircuitpythonをやってみたいなら、
ESP32-S3がオススメです。
その時の記事はこちら↓↓
ちなみに、circuitpythonの余談ですが、
ESP32でなくてcircuitpythonを使いたいなら、
手軽さで行くと、raspberryPiPicoがオススメですね。
こちらも以前記事にしているので参考にしてみてください。
ブレッドボード
次にブレッドボードです。
ブレッドボードは、安物はあまりオススメできません。
以前ご紹介しましたが、安いブレッドボードだと、
板自体が反ってしまって、マイコンボードのピンヘッダが
八の字になってしまいます。
そのままはんだ付けするとわかりますが、
ほんとに八の字です。反っていないブレッドボードに
差し込もうとすると結構大変なんですよね…
タクトスイッチ
タクトスイッチは、
ちょっとスイッチをつけたいときにすぐに必要になる割に、
そんなに数を持ってなかったりするんですよね…
最初の電子工作キットとかだと入っていてもせいぜい2~3個ですもんね。
今回のように4個使うとか、
他の装置でもう使っちゃっているよ…
なんてこと結構ありませんか?
わたしの場合はAmazonで解決しました。
小売してくれる電気パーツ屋さんのほうが安いんでしょうが、
Amazonのほうが配達が早かったり総量がかからなかったりなので、
まあAmazonが無難でしょうね。
これだけ入ってそんなに大した値段ではないので、
いったん買っておいたほうが後で楽だと思います。
ジャンパーワイヤー
ジャンパーワイヤーは、
今回は、LolinD32の各ピンと、タクトスイッチをつなぐ目的で使用します。
またまた余談ですが、
このジャンパーワイヤー好みの長さで自作できるってご存じでしたか??
以前自作したときの記事を貼っておきます。
具体的な配線方法については次の章で解説していきます。
配線・プログラミングについて。
配線方法と、LolinD32に書き込むプログラムについて
見ていきましょう。
そんなに複雑ではありませんが、1点注意点があります。
それが、外部ライブラリを用意する必要があるというところです。
まずは配線を完了させてからプログラムのところでまとめて解説しましょう。
配線方法
配線は、このような感じです。
使うピンは、16,17,18,19と連番にしています。
また、タクトスイッチとピンを直接接続していますが、
これは後ほど指定するPullUPがありますので、
抵抗は不要です。
PullUPしない場合は抵抗を追加する必要がありますし、
配線するところが少々変更になりますので注意が必要です。
書き込むプログラムについて
さて、ハード的なセッティングは完了したので、
次はLolinD32に書き込むプログラムについて解説します。
まず、書き込むプログラムの内容を記載します。
#include <BleKeyboard.h>
BleKeyboard bleKeyboard("hobbyhappy"); // Can be renamed to any device name you like.
void setup() {
bleKeyboard.begin();
pinMode(16,INPUT_PULLUP); // GPIO16(pullup)
pinMode(17,INPUT_PULLUP); // GPIO17(pullup)
pinMode(18,INPUT_PULLUP); // GPIO18(pullup)
pinMode(19,INPUT_PULLUP); // GPIO19(pullup)
}
void loop() {
if(bleKeyboard.isConnected()) { // Check to see if they are connected.
if(digitalRead(16) == LOW){ // If GPIO16 change to LOW
bleKeyboard.print("hobby"); // Send hobby
delay(200);
}
if(digitalRead(17) == LOW){ // If GPIO17 change to LOW
bleKeyboard.print("happy"); // Send happy
delay(200);
}
if(digitalRead(18) == LOW){ // If GPIO18 change to LOW
bleKeyboard.print("blog"); // Send blog
delay(200);
}
if(digitalRead(19) == LOW){ // If GPIO19 change to LOW
bleKeyboard.write(KEY_MEDIA_VOLUME_UP); // Push Enter-Key
delay(200);
}
}
}
わかりにくいところについては少し解説をしていきます。
BleKeyboard.hとは??
この内容で一番難しいというかわかりづらいところが、
BleKeyboard.hという一番上に書いてあるものです。
これは、ライブラリと呼ばれるもので、
細かい内容を自分で書かなくても、代わりにやってくれる便利アイテムと
考えてもらえれば理解しやすいと思います。
具体的には、このライブラリを使うことで、
“hobby”と送信したいときにたった1行で記載可能になります。
bleKeyboard.print(“hobby”);
これがそれにあたります。
ライブラリを使用しないと、とんでもない行数を書く必要があり、
そもそも通信関係の様々な知識が無いと実現できませんから、
ここはありがたくライブラリを使用させてもらいましょう。
BleKeyboard.hはどこで手に入る?
さて、この便利なライブラリですが、
入手する方法は、Githubからダウンロードです。
ダウンロードが完了したら、ArduinoIDEで使えるように
ライブラリの読み込みをおこないます。
図が無いと少々わかりにくいので、実際の画像を使って解説していきましょう。
まず、こちらのリンク先に飛んでください。
※Githubに飛びます。
次に、緑色のCodeというボタンを押します。
すると、Download ZIPと出ますので、クリックしてダウンロードしましょう。
ArduinoIDEでble-keyboardを使えるようにする方法
ここまでいったらもうほとんど終わったようなものです。
先ほどダウンロードしたzipファイルをArduinoIDEに適用させます。
まずはArduinoIDEを開いて、
Sketch⇒Include Library⇒Add.ZIP Libraryを選択します。
あとは先ほどダウンロードしたble-keyboardのzipファイルを
選択したら#includeが通るようになります。
今回のまとめ。
今回は、ESP32を搭載したLolin D32を使って、
キーボードのように文字を打ったり、Enterキーを押す方法についてご紹介しました。
Arduino pro microでは、キーボードやマウスの操作が可能というお話を
以前記事にしていますが、
今回はESP32ということで、無線(bluetooth)が使えるというのがメリット大です。
少し前に出した記事で、LolinD32をバッテリーで動かす方法について紹介していますから、
この方法を使うと、ケーブルが不要の完全無線化が実現可能です。
ただ、ピンの数に限りがあるので、
ホントのフルのキーボードを自作しようと思うとちょっと工夫が必要ですね…
例えば、I2C通信で使えるMCP23017なんかを複数搭載することで、
とりあえずは端子の数はカバーできます。
あとは、それで通信速度が間に合うかですかね。
キーを押して1秒くらいラグなんてあるとちょっと実用性が無いですから…
そのうちMCP23017を使って自作できるかちょっと試してみましょうかね。
原理的にはできることはわかっているのですがね…
コメント