繋がってしまえばなんとでも。まあ自分のレンタルサーバーでも仕組みはできるけど、利用するという観点も必要だろうな。何でも自分でやりたいのは分かるけどそうでなく有りものを組み合わせて大きなシステムを構築も魅力だと思わないか。大きなことってところに引かれる。
IFTTT
http://blog.mlkcca.com/iot/twitter-led/
Just real WordPress site
繋がってしまえばなんとでも。まあ自分のレンタルサーバーでも仕組みはできるけど、利用するという観点も必要だろうな。何でも自分でやりたいのは分かるけどそうでなく有りものを組み合わせて大きなシステムを構築も魅力だと思わないか。大きなことってところに引かれる。
http://blog.mlkcca.com/iot/twitter-led/
こちらが本命かな
●参考(感謝)ESP IDF開発環境を整える〜Mac編〜
●参考での不足事項
macはBSD系だからね。相変わらずあれこれとすんなりとは行かないね。
macに .profileはなかった。作成したが読み込まれなかった。
$>source .profile で有効になるが、再度ターミナルを立ち上げると反映されない。
これはmacが bashだからだ。
そこで.bash_profile にと思ったが、vimで覗いてみると自分で追加した
alias cls =’clear’
が記載されていない。
よく見ると、.bash_prifileの中に、「.bashrc」の起動記述があった。
.bashrcを見ると、alias cls が記述されていた。久々なので忘れていることばかりだ。
ということで .bashrc でパスを通す下記記述を行った。ターミナルを一度終了して起動で反映されれいる。
export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin export IDF_PATH=$HOME/esp/esp-idf
$>printenv <– でPATHが表示される。
$>$PATH <— だと見えない・・・。
$>echo $PAT <— 見えた!!
●キットとの接続
キットのシリアルに関するドライバはAuduinoで組み入れられてる。これでターミナルから接続できる。
$>ls /devtty* <–でリストに出てくるか見る。以下表示されれば存在する。
/dev/tty.SLAB_USBtoUART /dev/ttyt0
存在しても screen で接続できないときには、このシリアル通信のリソースが開放されないで残っているようだ。シリアルポートクローズしてないような感じだ。ターミナルを終了して再度接続コマンドを実行してもはじかれる。こういう場合は、一度キットのUSBコネクタ挿し直す。
$>screen /dev/tty.SLAB_USBtoUART 115200
ESP32のリセットボタンで基本機能の表示とコマンドの受付状態となれば成功。
●開発へ
これが昨日はうまく行かなかった。本日はコピーできてカレントディレクトリに「hello_world」のディレクトリが作成されている。
cd ~/esp cp -r $IDF_PATH/examples/get-started/hello_world .
●make
下記のディレクトリに入らないと make menuconfig は有効ではなかった。
cd ~/esp/hello_world make menuconfig
●悩む
さて、方針を決める必要があるなと悩み。 micro Python での開発は楽ちんそうだから・・・・。Auduino のプロトタイプを利用も楽そうだ。
makeとかでネーティブな開発は何だかな。このところラズベリーパイは Python でやってるからね。さてさて・・・。
●esptoolトールを見つけた
esptoolのインストール
esptoolはESP-WROOM-02にコマンドラインからアクセスするツール
$ sudo pip install esptool
※以下実行できないときにはリソースが使用されている可能性がある。ESP32のUSBを抜き挿ししてリソースを初期化する必要がある。
$>esptool.py –port=/dev/tty.SLAB_USBtoUART –baud 115200 chip_id
以下表示されればトールは生きている。
esptool.py v2.5.1
Serial port /dev/tty.SLAB_USBtoUART
Connecting……..__
Detecting chip type… ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse
MAC: 3c:71:bf:0c:50:54
Uploading stub…
Running stub…
Stub running…
Warning: ESP32 has no Chip ID. Reading MAC instead.
MAC: 3c:71:bf:0c:50:54
Hard resetting via RTS pin…
Mac-mini:~ m_kurosaki$
$>esptool.py –port=/dev/tty.SLAB_USBtoUART –baud 115200 flash_id
esptool.py v2.5.1
Serial port /dev/tty.SLAB_USBtoUART
Connecting…….._
Detecting chip type… ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse
MAC: 3c:71:bf:0c:50:54
Uploading stub…
Running stub…
Stub running…
Manufacturer: c8
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin…
●やりたかったのは初期ファームのバックアップとリカバリー
以下エラーが出て読め出せない。
$>esptool.py --port=/dev/tty.SLAB_USBtoUART --baud 921600 read_flash 0 0x400000 original_contents.bin
esptool.py v2.5.1
Serial port /dev/tty.SLAB_USBtoUART
Connecting……..____
Detecting chip type… ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse
MAC: 3c:71:bf:0c:50:54
Uploading stub…
Running stub…
Stub running…
Changing baud rate to 921600
Changed.
A fatal error occurred: Invalid head of packet (0xFF)
baud rateを115200bps でやってみる。超遅い!そして・・・おお!うまく行った!!(こういうときの自分の推測なんて当てにならないな。やるだけなのだとしみじみ思う)しかし開発で書き込みが遅いのは・・・。実際に書き込んでみないと分からないか。
$>esptool.py --port=/dev/tty.SLAB_USBtoUART --baud 115200 read_flash 0 0x400000 original_contents.bin
$>esptool.py –port=/dev/tty.SLAB_USBtoUART –baud 115200 read_flash 0 0x400000 original_contents.bin
esptool.py v2.5.1
Serial port /dev/tty.SLAB_USBtoUART
Connecting…….._
Detecting chip type… ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse
MAC: 3c:71:bf:0c:50:54
Uploading stub…
Running stub…
Stub running…
4194304 (100 %)
4194304 (100 %)
Read 4194304 bytes at 0x0 in 380.1 seconds (88.3 kbit/s)…
Hard resetting via RTS pin…
この後screenでターミナルでつながってプロンプトが表示されてるから問題ない。当たり前だがまだまだ色々不安な旅は続く。
Mac mini もあるので、こちらでもESP32のArduino環境を構築して見る。Window10よりlinux色のあるmacの方が色々便利そうだ。
●ここまでの感想
ESP32はアマチュア向きでは無い。これは組み込み屋の仕事だ。多分Arduinoとかで安心して始めると結構ハードル高いから失速する人が出てくるだろう。始めてまだ少しだが(8時間ぐらいか)少し遠回りが必要なようだ。
シリアルポートからWIFIの制御をこのキットで行なってみて理解など、周辺というか関連する知識が必要だ。
●インストール
これはWindows10に導入したとき一度やってるから簡単だった。ボードマネージャーのリポジトリに入れるとURLのスペルミスでESP32情報がダウンロードされないポッカぐらいだ。。
●シリアルポート
使用しているUSBシリアルのIC用ドライバが必要とネットにあった。ダウンロードしてインストールするタイプのドライバはmacで初めてだった。インストールされたシリアルポートをツールから選択する。選択しないと別のものなので応答しない。115200bpsにてターゲット側のリセットボタンを押すとESP32から情報が表示されてきた。Windows10のTeratermと違い送信は別のテキストボックスから。違いはそのぐらい。
●参考(感謝)
https://leico.github.io/TechnicalNote/Arduino/mac-esp32-dev
USBでつなげば電源が開発基板に供給される。5Vから3.3VへはドロッパかDCDCかまだ調べていないけど考えないでもいいようだ。
安い開発用もあるけれど、まずは純正で慣れてからがいい。金額的にもそれほどの痛みはないからね。それよりバッタものでトラブル方が時間がもったいない。
USBはPCに(Window10)つなぐとドライバが自動で入るとあるが、まずは開発環境を構築だ。毎度思うけど結構簡単にこういうのが行った例(ためし)がない。それでもやらねばだ。どきどき感はあるが体に悪いな。これに耐えられなくなったら引退だ。
1.arduinoを入れる
(1)ダウンロード
スケッチは聞いてはいるがアマチュアの開発環境と舐めていたので触ることはなかった。以下寄付と出てくるが取りあえず無しで進む。
https://www.arduino.cc/en/Main/Donate
結構ファイルが大きいようで時間がかかる。モバイルルータだからね。
さて終わったかなとこれを書きながら見て進めている。
ファイルサイズは≒105Mbytesだった。
(2)インストール
聞いてくるすべて「インストール」で進めて終了だ。Windowsのメニューに追加されている。起動すると以下の画面が表示される。さて次だ!
2.ESP用のツール(ESP-WROOM-32開発ツール)
ライブラリやファイル群を下記gitHubからダウンロードして入れるとある。
https://github.com/espressif/arduino-esp32
そうではなく、開発ツールを起動して以下のように指定する。
これだけでは駄目だ。以下のように追加しないと一覧にESP32が出てこないらしい。定義ファイルのダウンロードがかなりのろのろとしている。ルーターの10G制限に入ったか?待つしかない。全然数字が変わらないな。受信してるか?
結果、ストールしてた。これを停止と思ったがタスクマネージャーでどうするかがWin10では分からない。win7でならいつものことだが。勉強しないと。
仕方ないから再起動して再度ツールを起動した。そして同じようにやったらできた。これがまた同じようにダウンロードが遅い。やっぱWinMaxでなく固定も欲しいな。会社のプロクシを回避するためといPhoneのデータ通信を行うために導入して普段使いは快適だけど、macのOSアップデートなども負荷が大きいから固定は要るな。
閑話休題
ボードマネージャに追加された一覧(結構あるなサードパーティのESP32ボード用まである)から自分の購入したESP32 Dev Moduleを選択して組み入れた。
●USB
電源を入れるためとつなぎということでUSBケーブルを挿し込む。基板のLEDが点灯した・・・。次はなんだ。ボートしてしまう。
思い出した。teratermでつながるとあった。teraを起動してみると、文字化け。これも思い出した。いいぞ!ボーレートを115200すれば。思った通りだ。プロンプト :> が出た。基板左のボタンを押す。確かRESET。一気に以下の表示が出た。続きは明日だな。0時過ぎだ。
●この段階で何か確認する方法は?
スマホでこのモニタにWIFI接続を表示できるとの記事発見。やってみた。
少し感動!!
●最初のプログラム
基本であるスケッチとかのc++とかでプログラムをしてみよう。例題はLEDチカチカと思ったがLEDは会社に持っていってしまった。IDかなんかをターミナルに送るとかあった気がする。検査してみよう。
おお開発環境でVisualStudioを使用するという記事発見。普段はC#で仕事なのでこれはいいね。過去にもc++で便利さ実感してたし。
長くなってきたプログラムについては次回に