気の向くままに辿るIT/ICT/IoT
webzoit.net
IoT・電子工作

ESP-01/12/ESP32でSHARP AQUOS TVをWiFi操作

ウェブ造ホーム前へ次へ
サイト内検索
カスタム検索
ESP8266って?

ESP-01/12/ESP32でSHARP AQUOS TVをWiFi操作

ESP-01/12/ESP32でSHARP AQUOS TVをWiFi操作

2019/02/05

 Wi-Fi(wifi)モジュールESP8266の内、ESP-01を使ってAC100V含む赤外線リモコン対応家電や自作スマートコンセントで非IRリモコン家電を無線で遠隔操作できるリモコン信号送信装置、いわゆるスマートリモコンを自作するシリーズ。

 今回は、SHARP AQUOS TV用のスマートリモコンを作った。

 と言ってもArduinoやESP8266でリモコン送受信回路を作った時に有線や無線でブラウザからエアコンやテレビが一通り動作すること、スマートスピーカーを自作した時にテレビのON/OFFができることは既に確認済み。

 要するに今回は、テレビの操作においてめぼしいボタン機能を一通り反映させた(上でスマートスピーカーで動作させてみたから書いた)に過ぎない。

 当初、パソコンやタブレット、スマホのブラウザから、これら家電を遠隔操作することを想定していたが、今となっては、自身は、スマートスピーカーで使うのがメインとなっている。

操作メニュー

 今回はとりあえず、地上デジタル、BS、CS、アナログ、地上デジタル1〜12各チャンネル、番組表、番組情報、音量上げ下げ、dボタン、赤・青・黄・緑ボタン、上下左右ボタン、決定ボタン、戻るボタン、終了ボタンあたりを実装した。

 あ、消音忘れた...けどいいか。

 尤もこれはやり過ぎ感があり、実際のところ、スマートスピーカーでのテレビ操作は、ON/OFF、チャンネル切り替えと音量調整ができれば十分だが。

事前準備

 スマートリモコンを作るにあたっては、全ては「操作(ボタン・メニュー)に対して、どんな並びの赤外線信号を送信するか」であり、基本的に、これら以外の違いはなく、家電による差もない為、ハードウェアもソフトウェアも共通。

 よって作り方の詳細は、冒頭の自作スマートリモコンのリンク先に譲る。

 事前準備としては、markszabo/IRremoteESP8266などESP8266用の任意のIR信号送受信ライブラリを使い、ESP8266で送受信回路を作って機能させたい家電のリモコンから受信機に信号を送信、これを解析して(読み取って)おき、操作ボタンと信号のリストを作っておく。

 尚、今回の家電は液晶テレビSHARP AQUOSだが、IRremoteESP8266では(信号方式としては)、Panasonicと認識された。

回路とスケッチ・プログラム

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
#include <Arduino.h>
#include <FS.h>
 
const char* path_root   = "/index.html";
  const char *ssid = "ssid";
  const char *password = "password";
 
...
void handleRoot() {
...
}
...
void on_off() {
  Serial.println("Power");
  irsend.sendPanasonic(0x555A,0x555AF148688B);
  delay(10);
  irsend.sendPanasonic(0x555A,0x555AF148688B);
  delay(2000);
  server.send(200, "text/html", "Power ON/OFF");
}
...
void ch1() {
  Serial.println("1ch");
  irsend.sendPanasonic(0x555A,0xF148724C);
  delay(10);
  irsend.sendPanasonic(0x555A,0xF148724C);
  delay(2000);
  server.send(200, "text/html", "1ch");
}
...
void vol_up() {
  Serial.println("Volume Up");
  irsend.sendPanasonic(0x555A,0xF148288F);
  delay(10);
  irsend.sendPanasonic(0x555A,0xF148288F);
  delay(2000);
  server.send(200, "text/html", "Volume Up");
}
...
void prog_list() {
  Serial.println("Program List");
  irsend.sendPanasonic(0x555A,0xF148064F);
  delay(10);
  irsend.sendPanasonic(0x555A,0xF148064F);
  delay(2000);
  server.send(200, "text/html", "Program List");
}
...
void handleNotFound() {
...
}
 
void setup() {
...
  server.on("/", handleRoot);
  server.on("/Power", on_off);
  server.on("/ch1", ch1);
...
  server.on("/vol_up", vol_up);
...
  server.on("/prog_info", prog_info);
...
  server.onNotFound(handleNotFound);
 
  server.begin();
}
 
void loop() {
  server.handleClient();
}

 自身もそうしたが、この手のESP8266のスケッチ・プログラム概要としては、Webサーバを立てSPIFFSによりESP8266のメモリ上にトップページに各種ボタンを配置した操作画面となるHTMLファイルを置き、他に操作ごとのページ(URLだけあればよくHTMLファイルは不要)を作り、そこにアクセスするとそれぞれの操作信号を送信するという作りにするのが一般的だろう。

関連リンク

ウェブ造ホーム前へ次へ