- 必要な材料:
- 回路図:
- 処理を使用したAndroidアプリケーションの作成:
- 処理コードを理解する:
- Arduinoのプログラミング:
- EasyEDAを使用した回路およびPCB設計:
- オンラインでのサンプルの計算と注文:
- Bluetoothサインボードディスプレイの動作:
長く伸びた高速道路であれ、医師の正面玄関であれ、情報を提供するために看板がいたるところに配置されています。しかし、これらの看板はしばしば退屈であり、時々私たちの興味に従って構成することはできません。したがって、このプロジェクトでは、8 * 8マトリックスディスプレイを使用してBluetooth制御のサインボードを構築します。このプロジェクトのユニークな機能は、ユーザーが携帯電話から64個のLEDすべてを個別に制御できるAndroidアプリケーションです。これにより、ユーザーはカスタムデザインを簡単に作成し、LEDディスプレイに表示することができます。それでは始めましょう…
必要な材料:
- Arduino Pro mini
- MAX7219
- HC-05Bluetoothモジュール
- 8 * 8LEDマトリックスディスプレイ
- 20k抵抗
- DCバレルジャック
回路図:
EasyEDAアプリケーションを使用して構築されたこのBluetooth制御LEDボードの回路図。同じ回路図を使用してPCBを開発し、EasyEDAを使用して製造します。
回路はかなり単純です。プロジェクト全体は、ArduinoボードのRawピンに直接与えられる12Vアダプターから電力を供給されます。次に、この生電圧は+ 5Vに調整され、BluetoothモジュールとMAX7219ICに供給されます。BluetoothモジュールのTxピンとRxピンをArduinoのD11とD10に接続して、シリアル接続を有効にします。
デジタルピンD5〜D7はMAX7219 ICに接続され、SPI通信を介してデータを送受信します。MAX7219のISETピンは、20k抵抗を介してHighにプルアップされます。
このプロジェクトでは、PCBを作成しました。PCBの設計ファイルを取得して使用するか、ブレッドボード上に回路を構築できます。ただし、その複雑さのため、8x8ディスプレイモジュールを購入するか、PCBを使用することをお勧めします
8x8マトリックスは非常に便利なディスプレイモジュールであり、多くのクールなプロジェクトで使用できます。
- RaspberryPiで8x8LEDマトリックスを制御する
- Arduinoを使用した8x8LEDマトリックスのスクロールテキスト表示
- Arduinoを使用した8x8LEDマトリックス
- AVRマイクロコントローラーとインターフェースする8x8LEDマトリックス
処理を使用したAndroidアプリケーションの作成:
Arduinoのプログラミングを開始する前に、携帯電話から受信して応答するデータの種類を知っておく必要があります。それでは、Androidアプリケーションがどのように作成され、スマートフォンでそれを使用して8x8LEDマトリックスを制御する方法を見てみましょう。
このプロジェクトのAndroidアプリケーションは、Processingソフトウェアを使用して作成されました。これはオープンソース開発アプリケーションであり、Androidアプリケーションやシステムアプリケーションを開発できるため、簡単にダウンロードして、Arduinoやその他のマイクロコントローラーを使用して興味深いプロジェクトを開発するために使用できます。すでにProcessingを使用していくつかのプロジェクトを実行しており、以下のリンクをクリックしてそれらをチェックできます。
- 処理を使用したDIYFMラジオ
- Arduinoを使用したバーチャルリアリティ/ジェスチャーコントロール
- Arduinoを使用したプライベートチャットルーム。
- 処理APPと超音波センサーを使用したArduinoレーダーシステム
- Arduinoを使用したリアルタイムの顔検出と追跡
- ArduinoとProcessingを使用したDIYスピードメーター
- Arduino加速度計を使用したピンポンゲーム
- Arduinoを使用した二足歩行ロボット
- DIYArduino赤外線カメラ
トピックに戻ると、Androidアプリケーションの完全なコードを説明することは不可能なので、自分で処理を学び、コードを見てそれがどのように機能するかを理解する必要があります。したがって、処理を学習するプロセスをスキップすることをいとわない人々のために、以下のリンクからアンドロイドアプリケーションをダウンロードすることができます
- Androidアプリケーションをダウンロードする
以下は、Androidアプリケーションのインターフェースです。
APKファイルは、Androidアプリケーションに直接インストールして、他のアプリケーションと同じように起動できます。ただし、HC-05Bluetoothデバイスの名前が「HC-05」であることを確認してください。そうしないと機能しません。
処理コードを理解する:
画面の背後で何が起こっているのかを知りたい人はさらに読むことができ、他の人は次の見出しにスキップすることができます。基本的に、Androidアプリケーションは起動時に「HC-05」と呼ばれるBluetoothデバイスに接続し、64個のLEDのセットを円の形で表示します。次に、ユーザーが円を押すと、円が赤に変わり、円の番号がBluetooth経由でArduinoに送信されます。円の番号を受信すると、ArduinoはLEDをオンにします。をよりよく理解するために、Processingプログラムの重要な行を調べてみましょう。Androidアプリケーションの完全なコードは、以下のリンクからダウンロードできます。
- Androidアプリケーションのコードを処理しています
クラスとオブジェクトを使用して64個のLEDを表示し、それぞれに簡単に対処できるようにします。以下のコードでわかるように、 for ループを使用して、配列を使用して1から64まで反復します。これは、各LEDがX位置、Y位置、色の独自の値を持ち、簡単に変更できるというものでした。
// (int i = 1; i <= 64; i ++)のすべてのLEDをディップレイしますled_array.display(); //すべてのLEDが表示されるクラスLed { float X_Pos;フロートY_Pos;色色; //コンストラクターLED(float tempx、float tempy、color tempc){ X_Pos = tempx; Y_Pos = tempy;色= tempc; } void display(){ fill(colour); ellipse(X_Pos、Y_Pos、led_dia、led_dia); } }
LEDは、ディスプレイと同じ順序で画面に読み込まれます。各LEDは、LEDの直径に等しい距離で分離されているため、ユーザーが現在選択しているLEDを簡単に区別できます。以下のプログラムに示すように、各要素がLEDのX、Y位置および色の情報を保持する配列を作成します。
void load_leds(){ led_array = new Led; int a = 1; for(int j = 0; j <= 7; j ++){ float y = height / 6 + j *(led_dia * 1.5); for(int i = 0; i <= 7; i ++) { float x =(width / 6)+ i *(led_dia * 1.5); // fill(255); // ellipse(x、y、led_dia、led_dia); led_array = new Led(x、y、color(255,255,255)); a ++; } } }
プログラムの主な手順は、ユーザーがLEDを押したかどうかを確認することです。押した場合は、LEDの色を変更し、Bluetoothを介してLED番号を送信する必要があります。これで、各LEDの位置と色に簡単に対応できるようになったため、ユーザーが押した場所のX、Y値をLEDのX、Y値と比較するだけで、これを行うことができます。値が互いにマージする場合は、LEDの状態を変更し、以下に示すようにBluetoothを介して番号を送信します。
//マウスオーバー LEDかどうかを確認します//はいの場合、LED番号を 送信します(int i = 1; i <= 64; i ++){ if((mouseX <(led_array.X_Pos + led_dia / 2))&&(mouseX>( led_array.X_Pos --led_dia / 2))&&(mouseY <(led_array.Y_Pos + led_dia / 2))&&(mouseY>(led_array.Y_Pos --led_dia / 2))) {led_array = new Led(led_array.X_Pos、led_array。 Y_Pos、led_color); バイトデータ= {byte(i)}; bt.broadcast(data); } }
これとは別に、プログラムはすべてをオフにすることで完全なLEDをリセットすることもできます。また、LEDを赤(ON)または白(OFF)に変えることができるので、そのためのトグルボタンもあります。トグルボタンが表示され、入力を待ちます。押すと、それぞれのアクションが実行されます。同じことを行うコードを、描画ループ内で呼び出される関数として以下に示します。
void load_buttons() { rectMode(CENTER); textAlign(CENTER、CENTER); noStroke(); fill(#1BF2D4); rect(width / 2-width / 4、height / 1.3、width / 4、height / 12); fill(0); text( "Reset"、width / 2-width / 4、height / 1.3); //ボタン 1if (red == true) {fill(#080F89); rect(width / 2 + width / 4、height / 1.3、width / 4、height / 12); fill(255,0,0); text( "RED"、width / 2 + width / 4、height / 1.3);} //ボタン 2if (red == false) {fill(#080F89); rect(width / 2 + width / 4、height / 1.3、width / 4、height / 12); fill(255); text( "WHITE"、width / 2 + width / 4、height / 1.3);} //ボタン2 } void read_buttons() { if(mousePressed && click_flag == true) { color_val = get(mouseX、mouseY); click_flag = false; if(color_val ==-14945580) { バイトデータ= {0}; bt.broadcast(data); println( "RESET"); load_leds(); //すべての LEDの位置と色をロード} if(color_val ==-16248951){ byte data = {100}; bt.broadcast(data); if(red == true)red = false; else if(red == false)red = true; println( "TOGGLE"); } color_val = 0; } }
Arduinoのプログラミング:
このBluetooth制御ワイヤレスボードプロジェクトの完全なArduinoプログラムは、この画面の下部に表示されます。直接使用してボードにアップロードできます。プログラムの重要な行を以下に説明します。
Bluetoothモジュールは、ピン10と11に接続され、したがって、我々は、これらのピン上のシリアル通信を可能にし、我々は、これらのピンからのデータをリッスンすることができるソフトウェアのシリアルを使用する必要があり、。Bluetoothモジュールから受信したデータを取得し、 incoming という変数に保存します。着信の値が「0」の場合、以下のコードを使用してすべてのLEDをオフにします
if(BT.available()) { 着信= BT.read(); Serial.println(着信); if(incoming == 0) m.clear(); //表示をクリアします
着信の値を使用して、ユーザーが携帯電話で押したLEDと天気を判断して、そのLEDをオンまたはオフにする必要があります。したがって、値が100に等しいかどうかを確認します。値が10の場合、ユーザーがLEDの色を切り替えるように要求したことを意味します。そこで、変数redを切り替えて、LEDをオンにするかオフにするかを判断します。
else if(incoming == 100)// LEDをオンまたはオフにするかどうかを確認する { if(red == true) red = false; else if(red == false) red = true; Serial.print( "RED:"); Serial.println(赤); }
最後に、値が65より大きい場合は、ユーザーがLEDを押したことを意味します。 1から64までの数字に基づいて、ユーザーがどのLEDを押したかを判別する必要があります。そのLEDを切り替えるには、そのLEDの行と列の値が必要になります。これらの値は、それぞれ変数XとYに計算および保存され、以下のコードに示されています。最後に、変数redの値に基づいて、ユーザーの要求に応じてLEDをオンまたはオフにします。
他の場合(受信<= 64) {// ONにする計算RO OFF LEDの トグル= TRUE。 Y =着信/ 8; X =着信-(Y * 8); if(incoming%8 == 0) {X = 8; Y- = 1;} Serial.println(X-1); Serial.println(Y); if(red == true) m.setDot((X-1)、(Y)、true); // LED ON else if(red == false) m.setDot((X --1)、(Y)、false); // LEDオフ }
EasyEDAを使用した回路およびPCB設計:
このBluetoothControlled Matrixディスプレイを設計するために 、EasyEDAと呼ばれるオンラインEDAツールを選択しました。私は以前にEasyEDAを何度も使用しましたが、フットプリントのコレクションが豊富でオープンソースであるため、非常に便利であることがわかりました。PCBを設計した後、低コストのPCB製造サービスでPCBサンプルを注文できます。また、電子部品の在庫が豊富で、ユーザーがPCBの注文と一緒に必要な部品を注文できる、部品調達サービスも提供しています。
回路とPCBを設計する際に、回路とPCBの設計を公開して、他のユーザーがそれらをコピーまたは編集して作業を活用できるようにすることもできます。また、この回路の回路とPCBのレイアウト全体を公開しました。確認してください。以下のリンク:
easyeda.com/circuitdigest/8x8-led-matrix-display-control-with-bluetooth
「レイヤー」ウィンドウからレイヤーを選択することにより、PCBの任意のレイヤー(トップ、ボトム、トップシルク、ボトムシルクなど)を表示でき ます。
EasyEDAの[写真の表示]ボタンを使用して、PCB、製造後の外観を表示することもでき ます。
オンラインでのサンプルの計算と注文:
このBluetooth制御マトリックスPCBの設計が完了したら、JLCPCB.comからPCBを注文できます。JLCPCBからPCBを注文するには、ガーバーファイルが必要です。PCBのガーバーファイルをダウンロードするには、EasyEDAエディターページの[製造出力]ボタンをクリックしてから、EasyEDAPCB注文ページからダウンロードします。
JLCPCB.comにアクセスし、[今すぐ見積もる]またはボタンをクリックすると、注文するPCBの数、必要な銅層の数、PCBの厚さ、銅の重量、さらにはスナップショットなどのPCBの色を選択できます。下に示された:
すべてのオプションを選択したら、[カートに保存]をクリックすると、EasyEDAからダウンロードしたガーバーファイルをアップロードできるページが表示されます。ガーバーファイルをアップロードし、「カートに保存」をクリックします。そして最後に[安全にチェックアウト]をクリックして注文を完了します。数日後にPCBを入手できます。彼らは2ドルという非常に低いレートでPCBを製造しています。ビルド時間も非常に短く、DHLで3〜5日で48時間です。基本的に、注文から1週間以内にPCBを入手できます。
PCBを注文して数日後、下の写真に示すように、PCBサンプルを素敵なパッケージに入れました。
そして、これらの部品を入手した後、必要なすべてのコンポーネントをPCBにはんだ付けしました。
私のPCBでは、8 * 8ディスプレイモジュールに間違ったフットプリントを選択することで鈍い間違いを犯したため、写真に示すように、パフォーマンスボードを使用してディスプレイを取り付ける必要がありました。しかし、フットプリントはPCBの更新であり、修正されたPCBを注文して、ディスプレイモジュールを簡単に取り付けることができます。
Bluetoothサインボードディスプレイの動作:
PCBを入手するか、ブレッドボードで接続することでハードウェアの準備ができたら、ページの最後にあるArduinoプログラムを使用して、Arduinoボードにアップロードします。アンドロイドアプリAPKファイルは、上記に提供され、それを使用し、お好みのAndroidデバイス上のアプリケーションをインストールします。
ハードウェアの電源を入れ、電話機でHC-05デバイス名を検索してペアリングします。パスキーはデフォルトで1234になります。その後、インストールしたばかりのアプリケーションを開きます。アプリケーションは画面の上部に「 HC-05に接続されてい ます」 と 表示するはずです。画面のLEDに触れると、ボードでも同じLEDがオンになっていることがわかります。
リセットボタンを押してすべてのLEDをオフにし、トグルボタンを押して特定のLEDをオンまたはオフにすることもできます。デフォルトでは、どのLEDを押すかがオンになります。プロジェクトの完全な動作は、以下のビデオで見つけることができます。動作させるのに問題がある場合は、下のコメントボックスを使用するか、フォーラムに書き込んで技術的なヘルプを入手してください。チュートリアルを理解し、作成を楽しんだことを願っています。