ところどころ詰まりながらも、実現できました。
BLEデバイスで利用したい時だけLCDを起動する方法は、需要がある気がするので方法を共有します。
使ったもの
LCDキット
I2C接続小型LCDモジュール(8x2行)ピッチ変換キット
3.3V、I2C接続で動作するLCDです。
ハンダを盛って信号線をpull upしています。
BLEnano キット
RedBearLab BLE Nanoキット
モジュールとライターがセットになったBLEのキットです。
MOSFET
MOSFET 2N7000
LCDの電源制御に利用します。
ブレッドボード、ジャンパワイヤ、抵抗
ブレッドボード
ジャンパワイヤ
1K抵抗
回路作りに利用します。
ボタン電池、ホルダー
CR2032 x 5
ボタン電池ホルダー CR2032
電源です。
Arduino IDEをインストールしたPC
https://www.arduino.cc/en/Main/Software
この記事ではArduino IDE 1.8.1 を使いました。
nRF51822-Arduino
https://github.com/RedBearLab/nRF51822-Arduino
BLE NanoのプログラムをArduino IDEで行うためのボード情報です。
Arduino IDEに追加してください。
ボード情報の設定方法がイメージできない方は、「Arduino boardmanager 情報設定」などで検索していただくか、以前自分が書いたこちらの記事が参考になると思います。
Arduino IDEからnrf51822モジュールにプログラムを書き込んで、スマホからbluetooth経由で制御する方法
arduino_ST7032
https://github.com/tomozh/arduino_ST7032
ST7032というマイコンで動作しているLCDをArduinoで操作するためのライブラリです。
Arduino IDEに追加してください。
ライブラリの設定方法がイメージできない方は「Arduino ライブラリ 設定方法」などで検索してみてください。
BLE Controllerをインストールしたスマホ
Android版はこちら
iOS版はこちら
BLE Nanoを作ったRedBearLabがリリースしているBLEで信号をやりとりできるアプリです。
回路
下記の図のように接続して、D0の信号でLCDの電源をMOSFETで制御できるようにしています。MOSFETを使わず、LCDを常時起動させても良い場合は、LCDのGNDを電源のGNDに接続してください。
実際に組み立てると、このようになりました。
スイッチは無いので、電源を切りたい場合は電池を外してください。
プログラム
BLEのサンプルプログラムのSimpleControlsをベースに、LCDを制御するプログラムを作りました。注意点
- D2、D3はI2Cに利用するため、DigitalWriteで割り当てるピンをD0、D1に変更しました
- Serialを使うとI2Cの通信ができなくなるので、Serialに関する記述を削除しました
- LCDはsetContrastを実行しないと文字が見えないので、LCD起動後は毎回setContrastを実行するようにしました
- LCDが起動していない時にLCDの制御をしようとするとプログラムが止まってしまうので、lcd_enabledというフラグがtrueの時だけLCDを操作するようにしました
注意点以外の動作内容
- DigitalOutの操作で信号をHIGHにした直後に、LCDが起動したとみなして、起動に必要なコマンドを送信するようにしました
- LCD起動中にAnalogReadモードになれば、読み取った値を表示し、そうでなければ「No value」と表示するようにしました
- BLEデバイスとして検索される時の名称を「BLELCD」に変更しました
コードの全体像
https://github.com/asukiaaa/BLENanoLCD/blob/master/BLENanoLCD.ino約200行のプログラムなのでここには表示しません。
上記のリンクをご覧ください。
プログラムの書き込み
nRF51822-Arduinoとarudino_ST7032を設定したArduino IDEで、BLE Nanoにプログラムを書き込んでください。BLE Nanoに初めてArduino IDEからプログラムを書き込む場合、ドラッグドロップで専用のファームを設定しておく必要があります。
先程も紹介したリンクですが、詳しい流れはこちらを参考にしてみてください。
Arduino IDEからnrf51822モジュールにプログラムを書き込んで、スマホからbluetooth経由で制御する方法
動作確認
プログラムを書き換えたBLE Nanoと電池を接続し、動作させます。起動したとしても、BLEで信号を送るまで見た目に変化はありません。
スマホでBLE Controllerを起動し、Simple Controlsのモードにします。
デバイスをスキャンします。
BLE Nanoが期待通り動いていれば、「BLELCD」というデバイスが見つかります。
見つかったら、そのデバイスを選択してください。
操作画面が表示されます。
LCDを起動するために、「Digital Out」の「NO」をタッチします。
これにより、MOSFETに信号が送られてLCDが起動すると共に、BLE NanoからLCD起動のための信号が送られます。
操作によってMOSFETへの信号がHIGHになり、LCDに初期設定の信号が送信され、「BLE Nano No value」と表示されます。
LCDの表示内容を変更するために、「Analog In」の「NO」をタッチします。
LCDにA5の測定値(0-1023)が表示されます。
「Digital Out」の「YES」をタッチすると、LCDがOFFになります。
LCDの表示が消えました。
BLEの操作でLCDの出力をON OFFする仕組みができました。
共有する情報は以上です。
0 件のコメント :
コメントを投稿