nodeMCU(Firmware)がESP8266Devkitに載せられたら、次はLUAの開発環境を用意します。
■PCとESP8266Devkitとの接続
ESP8266Devkitとの接続は前述のnodeMCUをインストールした時の構成、PCのUSBでESP8266Devkitと接続します。
■パソコンとESP8266Devkitのモニタプログラムとをつなぐ
私は、ESPlorerというIDEを使ってlua言語で開発を行いました。ESPlorerはJavaで作ってあって、Windows、Linux、MacなどのJavaVMの上で動くようです。それぞれの環境用のJavaVMのインストールが必要です。PCとはシリアル(USBでPCとESP8266Devkitとを接続して使用)で接続して、PC上で開発、ESP8266Devkit側にダウンロードして動作を確認する、所望の動作が確認できたらESP8266Devkitに転送して書き込む、という開発スタイルとなります。
このあたりを参考にしてください。
https://www.esp8266.com/viewtopic.php?f=22&t=882
大まかに言うと、ESPlorerの画面右半分がPCとESP8266Devkitとのシリアル通信、nodeMCUのモニタプログラムとの通信のモニタができます。左半分がLUAのプログラムを作成する部分です。まずは、PCとESP8266Devkitとのシリアル通信開始。
右上のPCの[Serial Port]を設定して、
[Open]を押下するとPCとESP8266DevkitがSerialで通信を始めます。通信が疎通するとDTR/RTS、Openが緑に変わります。(上記の図ではSerial通信が確立した状態です)
通信速度は、多分[115200bps]で通信ができると思いますが、だめなら9600bpsなどに変えてみてください。通信が確立すると、右中央の大きなコンソールに、通信ログが表示され、nodeMCUの情報が表示されます。
同時にESP8266Devkitのボードの上のLEDが点滅します。
うまくつながると以下のようなメッセージが右ペインの中央のウィンドウに表示されます。
<調歩同期の速度が変わるので、文字化けが数行続きます> NodeMCU custom build by frightanic.com branch: master commit: c16adb5dfb8c02b692034bbd553502765b9733cc SSL: false modules: adc,bme280,file,gpio,http,i2c,mqtt,net,node,pwm,rtctime,tmr,uart,wifi build created on 2019-07-20 23:15 powered by Lua 5.1.4 on SDK 2.2.1(6ab97e9) lua: cannot open init.lua
"NodeMCU custom build...."の以下は、前の項目でcloudで作成したnodeMCU Firmwareの情報が表示されます。
また、nodeMCUが正常に起動すると、"init.lua"という名前のlua fileに実行が移ります。上記の場合は、"init.lua"がまだないので、”lua: cannot open init.lua"とエラーが出ています。電源On、software-resetなどで自分が作ったソフトを起動したい場合は、"init.lua"とファイルをESP8266Devkitに登録しておけば良いことになります。
■nodeMCU monitorのrestart
右最下段の、右側に「←Send」があるところに"node.restart()"と記入してまたは「←Send」を押すとソフトウェアでESP8266Devkitをsoftware-resetすることができます。ここではその他、nodeMCUとの通信によってnodeMCUの上での操作(例えばESP8266Devkit上のプログラムファイルの読み書き、File Format、プログラムファイルの実行など)が可能です。
例:
node.restart() ←reset
=file.rename('xxx','yyy') ←fileのrename
=file.remove('xxx') ←fileの削除
dofile('xxx') ←fileの実行
■Luaで上位アプリを作成する。
手始めに、ESP8266Devkitの基板の上についているLEDをブリンク(いわゆるLチカ)させてみます。以下のLuaプログラムを左ペイン中央のwindowで[Script]タブになっていることを確認して、Copy&Pasteします。
pin = 4
status = gpio.LOW
gpio.mode(pin, gpio.OUTPUT)
tmr.create():alarm(1000, tmr.ALARM_AUTO, function()
if status==gpio.LOW then
status=gpio.HIGH
else
status = gpio.LOW
end
gpio.write(pin, status)
end)
左ペインの最下段、左から2番目の「Send to ESP」ボタンを押下します。これにより、ESP8266Devkitに転送され自動的に実行されます。基板上の青いLEDが一秒間隔で点滅していると思います。
その上でもう一度「Send to ESP」ボタンを押下してみてください。点滅間隔が変わりませんか。押下するタイミングで色々と変化すると思いますが、上記のプログラムは、「今のStatusを見てそれをひっくり返す」動作をします。二回ボタンを押下したことで、2つのプログラムが同時に走行している状態となり、それぞれが今の状態をひっくり返しているのです。「同時に複数のプログラムを走らせられる」のですね。面白い。
先程の"node.restart()"で上記は止められます。
■ESP8266Devkitにプログラムを書き込む
ESP8266Devkitにプログラムを書き込むのは簡単、一旦PCにプログラムをファイル名をつけて書き込んだ後に、左側ペインの最下段の左端「Save to ESP」を押下することで、書き込まれます。
■書き込まれたかを確認する(snippetに登録する)
ESP8266Devkitにファイルとして書き込まれたかを確認するには、以下を使うと簡単にできます。上記と同様に一旦PCに"list-file"とかの名前をつけて保存して、都度右下で"dofile('list-file')"で使うことができますが、よく使う機能を登録する方法があります。snippetと呼ばれる機能です。右側ペインの通信ログのすぐ下に"snippet0.....snipet1"というボタンがあります。そこに登録するのですが、登録するには、左側ペインのプログラムを記入するエリアの上に、先程の[script]の並びに[snippets]というタブがあり、それを選択して、[Edit SnippetX]に登録したい機能を記載することで、いつでも使えるようになります。
l = file.list();
for k,v in pairs(l) do
print("name:"..k..", size:"..v)
end
以上で、ESPlorer IDEの使い方を大まかに説明しました。これであとは自分で作りたいアプリを作成して、ESP8266Devkitに"init.lua"名前で登録すれば、電源Onまたはrestart等で自動起動できるようになります。
次は、私が作ったESP8266Devkitで動くソフトについて記載します。
ESPloereインストールの参考WEB page:
https://www.electronicwings.com/nodemcu/getting-started-with-nodemcu-using-esplorer