ESP8266 + Arduino = HomeKit

ESP8266 + Arduino でHomeKitを動かす。
Arduino自体、今日始めたばかりなので、そのセットアップから動かすまでの備忘録。

まずはArduino IDEをDLしてくる。自分はMacOS Catalinaを使用しているためBeta版を選択。Catalinaから64bitコード以外が実行不可となったため、Beta版でないとCompileが通らないことがあるらしい(20200506時点)。IDEのインストールができたら、ESP8266のboard managerを追加する。ESP32も持っているため、ついでにそちらも追加。
ここら辺はネットに情報が溢れていると思うので軽く触れておく程度。

Arduino IDEのPreferenceのAdditional Boards Manager URLsに以下を追加。

  • https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  • https://arduino.esp8266.com/stable/package_esp8266com_index.json

Arduinoは全体的にすごく簡単(なように見せている)なので、IDEの設定もとてもシンプル。
というかIntelliJとかに比べてDebugに必要なFunctionが無いような気が・・・。
少なくとも
 Show verbose output during : compilation=true, upload=true
 Display line numbers = true
 Enable Code Folding = true
 Compiler Warnings = more
あたりは変更しておいた方が良いかと。

Tools -> Board -> Boards Managerを開いて、esp32とesp8266をインストール。ESP8266のハードウェア設定も貼っておく。

Sketch -> include Library -> Library Manager を開いて、HomeKit-ESP8266をインストール。

File -> Examples -> HomeKit-ESP8266 -> simple_ledを開く。とりあえず、Compileしてみる。

エラー・・・。 “” was not declared in this scope ってあまり見ないエラーなのでググってみたところ、Arduinoでは結構出てくるエラーらしい。この場合、エラーが出ている関数の定義をこの呼び出しよりも前に記述すれば良いっぽい。ので、void blink_led()関数自体を一番最後の行に追いやってみた。そうするとまた別の関数で同様のエラーが出るので、正しくCompileが通るまで関数の順番を入れ替える・・・。
Compileが通ったら、以下のように、simple_ledコード内のwifi設定部分を自分の環境のものに書き換える。

const char *ssid = “your-ssid”;
const char *password = “your-password”;

Tools -> Serial Monitorを開いてからESP8266に焼き込む。リセット後にHomeKitが起動してくれればOK。LogがSerial Monitorにツラツラ出てくればここまでは成功。
次はESP8266の準備。秋月で購入したDIP化キットがあったのでブレッドボードにさしてIOの設定をしていく。UARTは手持ちの適当なUSB-UART変換ボード。
ESP8266の配線は、以下の通り。書き込みはIO0 SWを押しながらRST SWを離すと書き込みモードに移行。
3V3 : 3.3V
EN : Pull-U
IO0 : Pull-U+SW
IO2 : Pull-U
IO15 : Pull-D
TXD : uart rxd
RXD : uart txd
RST : Pull-U+SW
無事に書き込みが終わり、iPhoneからLEDの照度をコントロールしている様子。

たまにLinkが切れてしまったり不安定な様子だが、コントロールはできている模様。
細かいデバッグは別途行う必要はあるが、一通りの流れを備忘録として残しておく。

コメント

タイトルとURLをコピーしました