hiro yamamoto works

マイコンハード、ソフトを作ったりしています。
お家や現場のお困りごと解決に!
内容利用は自己責任でお願いします。

赤外線リモコンWi-Fi中継の応用 Webページからテレビを操作(プロジェクトの構想)

2024-01-24 10:28:32 | マイコンソフト&ハードウェア

この記事は書きかけです。画像差し替えました。

赤外線リモコンWi-Fi中継をどんなことに応用できるのか
需要があるのかわかりませんけど、プロジェクトはスタートしております。

プロジェクトの進捗
"IRremote"ライブラリの"SendRawDemo"に
"WiFiManager"ライブラリの"Advanced"を合体し、
"WebServer"ライブラリ、"EEPROM"ライブラリを組み合わせて
IPアドレスを保存、webページのリンクのクリックで操作します。
ここまでできました。
今後の予定は・・・リモコンデータをSPIFFS又はSDに保存して

ライブラリやサンプルスケッチ公開してくださっている方々に感謝します。


車載用アマチュア無線機の表示が点かない(電球切れ〜LEDへ交換)

2024-01-15 11:19:54 | ナレッジ_knowledge

今回は修理の事例です。
小径の電球を取り外しLEDへ変更します。電流制限抵抗も交換します。
車載用アマチュア無線機 TMー732 KENWOOD

部品(秋月電子通商)
I-01126 LED光拡散キャップ 3mm 白 (20個入)
I-17012 3mmウォームホワイトLED OSM5YK3Z72A (10個入)
1/6W510Ω2本
工具
サンハヤトのリードベンダー(MODEL RB-5)

操作表示部が分離できるタイプの無線機です。4芯のケーブルで本体と接続されています。
周波数などを表示する「ディスプレイが光らなくなった」というご依頼です。
(下の写真はLEDへ交換済みなので表示が見えます)

分解して調べてみると
照明電球は2個ずつ直列接続されて2回路あります。
回路ごとに1個ずつ切れていたので、全部点かなくなったようです。
インターネット検索では、トランジスタ(2SB1149)の故障事例も出てきましたが、
このユニットでは大丈夫でした。


表示液晶の周囲を覆っている金属製のカバーを外して、シールを剥がさないと
1個だけランプが抜けてきませんでした。

取り外した電球(電球ですものそりゃ切れますよ)

秋月電子通商で購入したLED(直径3ミリ)と光拡散キャップです。
リード加工は樹脂部にストレスをかけないように注意深く行う必要があります。
サンハヤトのリードベンダー(MODEL RB-5)で加工しました。
この距離がストレスかけない限界点かと思います。

サンハヤトのリードベンダーでTO-92の所が使えました。(MODEL RB-5)

ちょっと難しい、注意するところ

ランプよりLEDの直径が大きいため、どのランプ位置でも導光部やカバーに干渉します。
カバーを少し曲げる等の工夫が必要です。特にボリュームが取り付けられている側は、
奥まで入らないので、リードの曲げ方を工夫して基板に届くように(Uの字のようにとか)
する必要があります。注意 LED樹脂部にストレスをかけないようにするため、
曲げ位置をLED側へ寄せすぎない方が良いと思います。
Uの字リード曲げ加工・・・Lの字曲げ→Uの字を目標に曲げて、しの字ぐらいでカット
また、金属カバーとボリューム端子のショートを防止するため、外側面にポリイミドテープを
貼っておくと良いと思います。
前述のシールが貼ってあったランプ位置以外は、金属カバーを取り付けてから
作業したほうが良いかもしれません。

LEDを4個取り付けて抵抗を交換しました。
チップ抵抗の代わりにリード付き抵抗を取り付けました。
R8リードが接近するので、R5上にポリイミドテープを貼り付けました。
写真の左側LEDは、他の3個より挿入深さ浅めでリード追加工(Uの字)

参考 半透明な光を導き拡散させる部分(導光部と表現)

表示の明るさは調整の必要があるかもしれません。
510ΩでIF=10mA程度と思います。
暗ければ300Ωぐらい(20mA)までは抵抗を交換して調整可能と思います。

おわり


赤外線リモコンをWi-Fiで中継する(赤外線LEDを分離&増設する)

2024-01-06 20:22:05 | マイコンソフト&ハードウェア

この投稿は書きかけです。資料画像差し替えました。
IRremoteライブラリとESP-NOWに感謝します。
それぞれのサンプルスケッチのおかげでこのプロジェクトは進められました。
タイトルに"Wi-Fiで・・・"と書きましたが正しくは"ESP-NOW"です。
たぶん"ESP-NOW"ってなに?となるでしょ

複数のSONY製ブルーレイディスクレコーダを使っている知人が、
操作したいレコーダ以外が反応して困っているらしいとのこと
なんと9台稼働していることが判明しました。リモコンモード変更は6台までですから困るでしょうね。

リモコンモード変更の設定可能台数
2013年秋以降発売モデル 6台(BD1〜6)
それ以外のモデル 3台(BD1〜3)
(SONYのWebサイトのQ&A検索で”文書番号 : S1110278026483”より引用)

そんな訳でこのプロジェクトはスタートしております。
他にも応用できるんじゃないかという期待も含んでいます。

しくみ
リモコン操作で送信された赤外線をリモコン受光ユニットで受けて、
No.1マイコンでデコードして、ESP-NOW Masterで送信する
No.2マイコンはESP-NOW Slaveで受信して、リモコン信号に戻し赤外線LEDから送信する。
リモコン操作した動作がレコーダーで実行される。

レコーダー3台に対応する必要が出てきたので、写真のように変更しました。
赤外線LEDをマイコン基板から分離して3個にしました。
操作したい3台のレコーダの赤外線受光部にセットします。
受光ユニットに向けるリモコンをレコーダーごとに取り替えて操作すればうまくいくはずです。

参考
リモコンモードを変えるとaddressが変わりました。
BD1:address = 1C5A、BD2:address = 1D5A、BD3:address = 1E5A

近日中に評価してもらう予定です。

続く


赤外線リモコンをWi-Fiで中継する(赤外線送信側スケッチ)

2024-01-02 20:53:19 | マイコンソフト&ハードウェア

この投稿は書きかけです。

タイトルの"Wi-Fiで・・・"は、正しくは"ESP-NOW"です。
"ESP-NOW"って何?なることが想定されるので"Wi-Fiで・・・"と表現してます。

複数のSONY製ブルーレイディスクレコーダを使っている知人が、
操作したいレコーダ以外が反応して困っているらしいとのこと

ちなみに
リモコンモード変更の設定可能台数
2013年秋以降発売モデル 6台(BD1〜6)
それ以外のモデル 3台(BD1〜3)
ですが
リモコンモード変更だけでは対応しきれないこともあるらしい

そんな訳でこのプロジェクトはスタートしております。
他にも応用できるんじゃないかという期待も含んでいます。

しくみ
リモコン操作で送信された赤外線をリモコン受光ユニットで受けて、
No.1マイコンでデコードして、ESP-NOW Masterで送信する
No.2マイコンはESP-NOW Slaveで受信して、リモコン信号に戻し赤外線LEDから送信する。
リモコン操作した動作がレコーダーで実行される。
赤外線が目標以外の機器で受信されないように配慮して使う。(遮蔽など)

スケッチ(プログラム)について
"IRremote"ライブラリと、ESP32ボードマネージャで追加されるサンプルスケッチ"ESPNow"使います。
スケッチ例"SendRawDemo"と"ESPNow_Basic_Slave"の合体(?)
それぞれのセクションごとに注意深く合体させてください。
ライブラリ読み込み部分、変数の定義や初期化の部分、setup()部分、loop()部分

次に追加や変更が必要な部分を書いておきます。
赤外線送信(SendRawDemo)&ESP-NOW Slave
//省略
//ESP-NOW Slaveは受け取ったデータを変換して赤外線リモコンコードを送信
//構造体<追加>
typedef struct struct_IRSendData {
  char IR_protocol[10];
  uint16_t IR_address;
  uint16_t IR_command;
  uint8_t IR_repeat;
  uint8_t IR_bit;
} struct_IRSendData;
struct_IRSendData IRSendData;
//setup()のSerial.begin(115200)の次あたりに
delay(4000);//<追加>シリアルモニタ出力が出ない対策

//中略

/*/ callback when data is recv from Master*/
// マスターからデータを受信したときのコールバック関数 <変更>部分的に改変追加しています。
void OnDataRecv(const uint8_t *mac_addr, const uint8_t *data, int data_len) {
  char macStr[18];
  snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x",
           mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
  Serial.print("Last Packet Recv from: "); Serial.println(macStr);
  memcpy(&IRSendData, data, sizeof(IRSendData));
  //Serial.print("Last Packet Recv Data: "); Serial.println(*data);
  Serial.print("Bytes received: ");
  Serial.println(data_len);
  Serial.print("IR_protocol: ");
  Serial.println(IRSendData.IR_protocol);
  String sProtocol = IRSendData.IR_protocol;
  Serial.print("IR_address: ");
  Serial.println(IRSendData.IR_address, HEX);
  Serial.print("IR_command: ");
  Serial.println(IRSendData.IR_command, HEX);
  Serial.print("IR_repeat: ");
  Serial.println(IRSendData.IR_repeat);
  Serial.print("IR_bit: ");
  Serial.println(IRSendData.IR_bit);
  //Serial.println("");
  if (sProtocol=="SONY") {
  Serial.println("sendSony");
  //ex. IrSender.sendSony(0x1, 0x10, 2, 12);
//赤外線送信データに戻し送信する
  IrSender.sendSony(IRSendData.IR_address,IRSendData.IR_command,IRSendData.IR_repeat,IRSendData.IR_bit);
  }

//loop()ではなにもしないのでloop()次あたりにreturn;入れてください
return;//<追加>
以上ですが解りにくいかな?間違えているかもですごめん
投稿したコードで大体の感じを掴んでもらえればと思います。
マスターからデータを受信したときに実行されるコールバック関数の中で
構造体で受け取ったデータを、"IRremote"の赤外線コードを送る関数の引数として与え赤外線送信しています。

これで全部書いたかな?終わりの予定