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

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

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


ESP8266DEVkit, nodeMCU, LUAで温度と気圧をInternetで送る(software編1-nodeMCUのbuildとinstall)

2019-12-16 22:29:53 | ESP8266DEVkitで遊ぶ
今回は、ESP8266DEVkitを使ったアプリ開発の話です。開発環境は、ArduinoやmicroPython、など色々あるようですが、私の開発環境のベースは、LUA/nodeMCU on Windows10です。Windows10の上で、USBでESP8266DEVkitを接続して開発をしました。当初、色々と調べ、Arduino IDEを使っての開発をされている方がほとんどのようで、私も”Lチカ”くらいまではやってみましたが、どうせやったことがない(PICは開発経験はありますが、Arduinoは無い、、)のなら同じと思い、あえてわからない方、LUA/nodeMCU、にチャレンジしてみました。

 とはいえ、そう決めてやり始めたのは良いですが、日本国内(日本語の)情報は非常に少なく、また、nodeMCUのバージョンによる違いで動かなかったり、結構苦労しました。Quick Hackに近いのですが、それでも、LUAの考え方などがある程度把握できて面白かったです。


ソフトウェア・システム概要:


 ESP8266DEVkitのソフトウェア部は、nodeMCU(Firmwareに相当するのだと思います)、とその上で動くアプリ(LUA言語)の組み合わせで動きます。まずはnodeMCUのbuildとbuildしたもののESP8266DEVkitへのインストールについて記載します。


■nodeMCUをbuildする


ESP8266DEVkitのメモリ容量は限られているので、必要なモジュールを選択してbuildします。どのようなものを作るのか、で異なりますが、大きな上位アプリをつくのでなければそんなに気にしなくても大丈夫なようです。使いそうなものを選択してbuildします。nodeMCUは、自分で環境を作ってbuildすることもできますが、必要なモジュールを選択したnodeMCUをbuidしてくれるサイトがあるので、そこで作りました。

https://nodemcu-build.com/

メールアドレスなどを入れて、必要なモジュールを選択してsubmitするとbuildされた結果のURLがmailで送られてきます。サイトの込み具合?で時間はまちまちのようですが、10分程度から混んでいると1時間程でmail返送されてきます。download-URLがmailに入っているのでそこから自分のPCにdownloadします。


モジュールの選択例


上記URLをたどって必要なモジュールを選択します。Submitすると以下の画面で、選択したモジュールなどの情報が表示されます。この情報は、DEVkitに乗せた後、resetすると表示されるので、忘れても問題無いです。ちなみに以下は、mqttモジュールを追加したかったので再buildしたものです。@2019/7/21

img

すいていると、10分位で設定したメールアドレスにURL付きで帰ってきますが混んでいると時間単位かかります。それをdownloadします。

上記URLを見てゆくと、どんなモジュールが多くbuildされているとか、どの国からのbuildアクセスがあるか、とかのStatusが出ています。日本からのアクセスは、、、残念ながら少ないようです。

★HINTS:

ESP8266DEVkitの購入当初には何が入っているかわかりません。仮にnodeMCUが入っていても新規にbuildしたものを使いましょう。古いversionと新しいversionで、I/Fが変わっているものがある(思ったように動かなくてハマった、、特にタイマー系は途中で一部I/Fが変更されていて、前人のsourceをコピペしても動かない、ということが多々ありました)ので、nodeMCUのversionは気にしておくべきです。私が購入したDEVkitはATコマンドで動くものが入っていました。これは消してしまって問題なく、上記でbuildしたnodeMCUを上書きします。 後述しますが、上位アプリ(LUA)でプログラムを作るときは、https://nodemcu.readthedocs.io/en/master/  のあたりのI/Fを見ながら作ると良いと思います。I/Fの詳細、例なども載っているのでお薦めです(英語ですが、、)。


■nodeMCUをESP8266DEVkitにインストールする


CUIやGUIでインストールするものなどたくさんありますが、私は、「ESP8266Flasher.exe」というアプリを使ってnodeMCUをインストールしました。USBでPC本体とDEVkitを接続します。上記でbuildしたものをアプリで選択して、ダウンロードすればインストールされます。

ESP8266Flasher.exeを使う

  1. 「Config」で、上記でbuildしたxxxx.bin、を選択して、Offset、0x0000を設定 一番先頭に「×」をチェックする
  2. 「Operation」で、COM Portを設定する
  3. 「Flash」でDownloadする
  4. 「Log」でチェックする

COM Portはそれぞれの環境で異なりますので、ご自分のPCで確認してください。特に、USBのシリアルのドライバは、ESP8266DEVkitで使われているSerial-Chipのドライバになります。USBケーブルをつなぐことでPlugAndPlayで自動的にインストールされれば良いですが、されないようでしたら探してインストールが必要になります。私の場合のドライバは、次の通りです。

  • Silicon Labs CP210x USB to UART Bridge v10.1.8.2466

次は上位アプリの開発です。

ーーーー
この文章は、”Typora”でmarkdownで書いたものを、htmlでexportして書いてみました。goo blogもmarkdownでかけると良いのですが。