Arduino、1Sheeld、Androidを使用したユニバーサルリモコン
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
このプロジェクトについて
このプロジェクトでは、リモコンを使用する代わりに、その方法を説明します。
このプロジェクトは、 Androidモバイルを使用してテレビ、衛星放送受信機、ステレオを制御する方法を示しています。 そこにリモコンを使用する代わりに。
基本的に、この手法はリモコンで動作する他のデバイスに適用できます。 。各デバイスのリモコンを使用する代わりに、携帯電話を使用して自宅のすべてのデバイスを制御したいと思っていました。
これで、モバイル上の1つのアプリケーションだけで、自宅のリモートデバイスを好きなだけ制御できます!
まず 、この手順で行う必要があるのは、GooglePlayストアからAndroidアプリケーションをダウンロードすることだけです。アプリケーション
次に 、リモコンをデコードする必要があります
リモコンの受話器の送信機は、ユーザーが受話器のボタンを押すと、赤外線のパルスのストリームを送信します。送信機は、多くの場合、リモコンの受話器のポインティングエンドに組み込まれている発光ダイオード(LED)です。赤外線パルスは、そのボタンに固有のパターンを形成します。デバイスの受信機はパターンを認識し、それに応じてデバイスを応答させます(Wikipedia)。
したがって、各ボタンの固有のパターンを知る必要があります。
簡単に言うと、 IRライブラリをダウンロードする必要があります Arduino用。
そのライブラリの例では、 IRrecvDump を見つけることができます。 例(3番目の画像に示されているように)。このコードは、リモコンからのデータをエンコードするために使用されました。
IR受信機を配線する必要があります。その図に示されているように:
1-地面
2- 5V
3-ピン11
アップロード後 Arduinoへのこのコードはシリアルモニターを開き、テレビのリモコンの任意のボタンを押すと、5番目の画像画像のようなものが見つかります。
4番目の画像に示すように、リモコンの各ボタンを参照する16進コードを見つけることができます。その機能に対応するこれらの16進数を書き留めます(例:20DFC03F、32は電源ボタンを指します)。
注 、「不明なエンコーディング」が表示された場合は、もう一度ボタンを押してください。
<図> <図> <図> <図> <図>
次に、コマンドをデバイスに送信するために使用されるコードをアップロードする必要があります。コードは見つかりますが、リモコンによって少し変更が加えられます。
ここで行う必要があるのは、 16進値に置き換えることだけです。 as( 0x20DF10EF )電源ボタン、音量アップ/ダウンボタン、その他の必要なボタンから取得した値によって。
1Sheeldモバイルアプリケーションにはリモートコントロールインターフェイスがないため、キーパッドシールドを使用しました リモコンとして、キーボードシールドを選択できます はるかに多くのデバイスにも同様です。
テスト
最後に 、 IR LED を使用します ピン3 図のように、Arduinoでデバイスの前の横に配置します。
次に、1Sheeldモバイルアプリケーションを開き、シールドに接続してから、キーパッドシールドを選択します。これらはすべて、ビデオに示されています。
これで、携帯電話のボタンを押すと、電源を入れるか、音量を上げるか、音量を下げるかなど、対応するタスクが実行されます。
<図> <図>
コード
- リモートコントロールコード
リモートコントロールコード C / C ++
このコードは、キーパッドシールドのいくつかのボタンを使用して、テレビのオン/オフを切り替え、衛星放送チャンネルを変更し、ステレオを制御します。#include#include IRsend irsend; void setup( ){OneSheeld.begin();} void loop(){if(Keypad.isRowPressed(0)&&Keypad.isColumnPressed(0)){irsend.sendNEC(0x20DF10EF、32); } else if(Keypad.isRowPressed(0)&&Keypad.isColumnPressed(1)){irsend.sendNEC(0x20DFC03F、32); } else if(Keypad.isRowPressed(0)&&Keypad.isColumnPressed(2)){irsend.sendNEC(0x20DF40BF、32); } else if(Keypad.isRowPressed(1)&&Keypad.isColumnPressed(1)){irsend.sendNEC(0x41048B7、32); } else if(Keypad.isRowPressed(1)&&Keypad.isColumnPressed(0)){irsend.sendNEC(0x410C837、32); } else if(Keypad.isRowPressed(2)&&Keypad.isColumnPressed(0)){for(int i =0; i <3; i ++){irsend.sendSony(0xa81、12); // Sony TVの電源コードdelay(40); }}}
製造プロセス
- Arduinoとスマートフォンを使用したDIY電圧計
- IoTを使用してロボットアームをリモート制御する
- ラズベリーモーターシールドを使用したAndroid制御玩具
- Arduinoを使用した周波数とデューティサイクルの測定
- FirmataとXboxOneControllerを使用してArduinoRoverを制御する
- BoltとArduinoを使用したLEDの明るさの制御
- Arduinoを使用したシンプルでスマートなロボットアーム
- AlexaとArduinoIoTCloudを使用したテレビのフルコントロール
- ArduinoとRDA8057Mを使用したFMラジオ
- iOSおよびAndroidのArduinoでLEDが点滅する
- スマートフォンを使用してライトシステムを制御する