第4回 |
デジタル信号を使ってみよう
|
はじめに |
前回までは、BLEの無線通信と一緒に、「アナログ入力」という機能を利用して電池の残量や電圧を計測し、それをブラウザに表示しました。今回は、「デジタル入力」、「デジタル出力」の機能とWeb Bluetooth APIを使用してデータの送受信を行います。
|
「デジタル入力」と「デジタル出力」 |
「デジタル入力」という機能は、文字どおりデジタルの信号を入力することができます。ここでの「デジタル」信号は、電圧信号が高い状態を”1(High)”とし、電圧信号が低い状態を”0(Low)”とします。同様に、「デジタル出力」という機能も存在し、Highの信号とLowの信号を出力することが可能です。実際の信号の電圧値としては、5Vや3.3Vなどの電圧をHighとし、0VをLowとします。
![]() 図1, 「デジタル」信号 |
このデジタル入力、出力の機能を利用して、HighとLowの信号を複数組み合わせることにより、数字や文字などを表現することが可能です。ハードウェアでは、このHighとLowの信号を組み合わせてデバイス同士で通信を行い、データや状態を知らせる信号として使用されます。デバイス同士の通信では、あらかじめHighとLowの組み合わせのパターンをデバイス同士で決めておくことで、データを送受信することが可能になります。HighとLowを高速に切り替えることによって、たくさんのデータを送付することが可能になります。このデジタル信号を利用した通信は、次回以降で実際に使用していきます。
一般的なマイコンに搭載される「デジタル入出力」の機能は、まとめてGPIO(General Purpose Input Output、汎用入出力)と呼ばれます。
|
「デジタル出力」を使うためのデバイスの準備 |
まず、「デジタル出力」の機能を使用してみましょう。使用する回路は以下の通りです。今回使用する回路では、前回までの回路に加え、抵抗とLED(発光ダイオード)を使用します。
![]() 図2, 回路図 |
![]() 図3, デジタル出力機能を使用するブレドボードの図 |
LED(発光ダイオード)はダイオードという半導体部品の一種で、電流が流れる際に素子が発光する現象を利用した素子になります。ダイオードは、決まった極性で電圧を加えると電流が流れる素子で、逆向きに電圧を加えても電流は流れません。ダイオードは、アノード端子とカソード端子を持っており、電流は、アノードからカソードの方向で流れます。線(リード)があるLEDでは、線の長い方がアノードになります。
![]() 図4, ダイオードの説明 |
実際に、BLE Nanoのデジタル出力機能を利用してLEDに電圧を加える際には、LEDに電流が流れすぎてしまいLEDが壊れたり、BLE Nanoが壊れたりする危険があるため、抵抗を使って流れる電流を制限します。この時、固定抵抗を使うことで、流れる電流を制限すると共に、消費電力の低減にもつながります。
今回、抵抗は1.2kΩの部品を使用します。部品購入は、第一回目で紹介したオンラインショップなどを参考に、LEDは「赤色LED」、抵抗は「1.2kΩ カーボン抵抗」などのキーワードで検索してみてください。実際の店舗などでは、抵抗は1本から購入することも可能です。また、「1/4W」などの定格電力に関しては、今回のケースでは、どの抵抗を選んでいただいても問題ありません。
![]() 図5, マイコンとダイオードの接続 |
|
「デジタル出力」を使うためのソフトウェアの準備 |
次に、BLE nanoに書き込むプログラムにも変更を加えます。今回も、BLE Nanoのプログラムには、ARM®社が提供するmbed™を使用します。Web Bluetooth API側のプログラムにも「デジタル出力」の送信ボタンを実装し、その信号をBLE nanoで受信し、「デジタル出力」を制御します。
以下、今回のサンプルコードになります。今回からは、前回まで使用したプログラムとは別のサンプルコードをベースに改版したコードを使用します。
今回から、デバイスの名前が変更できるようなプログラムが追加されています。プログラムの
#define DEVICE_LOCAL_NAMEの後の”BlueJelly”の部分を書き換えることで、表示デバイス名が変更されます。
![]() 図6, デバイス名を指定するコード |
Web Bluetooth APIのプログラムはこちらです。
プログラムには、送信ボタンが実装され、「デジタル出力」のON/OFF(High/Low)を行い、LEDを光らせるプログラムになっています。今回使用するUUIDは、BLE Nanoのサンプルに使用されているIDを利用しています。
![]() 図7, LEDをコントロールするコード |
![]() 図8, UUIDのコード |
![]() 図9, サンプルコードをブラウザで表示 |
前回と同様に、Readボタンを押しデバイスとブラウザを接続します。その後、Writeを押すと、信号が送信され、BLE Nanoと接続したLEDが点灯します。もう一度Writeを押すと、LEDが消えます。
![]() 図10, Writeボタンを使用した「デジタル出力」を使用したLEDの点灯 |
|
まとめ |
「デジタル入力」、「デジタル出力」機能は、今回のように表示で使用する他に、何かを検知したことを知らせる信号として活用したりすることが可能です。
また、次回以降で使用するセンサーと通信する機能としてこのデジタル信号を使用していきます。