おもちゃ、家電、もろもろの修理の足跡と備忘録

色々と忘れるので、趣味のメモ

ESP8266DEVkit, nodeMCU, LUAで温度と気圧をInternetで送る(software編2-アプリ作成環境)

2019-12-23 22:00:15 | ESP8266DEVkitで遊ぶ
<title>Lua開発環境の設定</title>

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://github.com/NightRobot/nodemcu/blob/master/Getting%20Started%20with%20the%20ESPlorer%20IDE%20-%20Rui%20Santos.pdf

https://www.esp8266.com/viewtopic.php?f=22&t=882

 

大まかに言うと、ESPlorerの画面右半分がPCとESP8266Devkitとのシリアル通信、nodeMCUのモニタプログラムとの通信のモニタができます。左半分がLUAのプログラムを作成する部分です。まずは、PCとESP8266Devkitとのシリアル通信開始。

  1. 右上のPCの[Serial Port]を設定して、

  2. [Open]を押下するとPCとESP8266DevkitがSerialで通信を始めます。通信が疎通するとDTR/RTS、Openが緑に変わります。(上記の図ではSerial通信が確立した状態です)

  3. 通信速度は、多分[115200bps]で通信ができると思いますが、だめなら9600bpsなどに変えてみてください。通信が確立すると、右中央の大きなコンソールに、通信ログが表示され、nodeMCUの情報が表示されます。

  4. 同時にESP8266Devkitのボードの上のLEDが点滅します。

  5. うまくつながると以下のようなメッセージが右ペインの中央のウィンドウに表示されます。

    <調歩同期の速度が変わるので、文字化けが数行続きます>
    
    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

https://www.esp8266.com/viewtopic.php?f=22&t=882