0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ESP32をJavascriptでLチカする:最終系

Last updated at Posted at 2022-02-06

これまで何回かの投稿で、ESP32をJavascriptで動かしていましたが、そろそろ最終系にしようと思います。
前回からの違いは、JavascriptをESP32にあるEEPROMに保存するところです。
Javascriptの更新は、HTTP Postのファイル添付で行います。アップロードするWebページも用意します。

ソースコードもろもろは、以下のGitHubに上げておきました。

poruruba/QuickJS_ESP32

#準備

以下のGitHubからZIPでダウロードして、Visual Studio CodeのPlatformIOから書き込むだけです。
ただし、以下の追加の作業が必要です。

①M5StickCかM5Core2か選択します。

Visual Studio Codeの一番下のところをクリックして、選択します。

image.png

②platformio.iniのCOMポート番号をESP32デバイスに合わせて変更します。

M5StickC用とM5Core2用の2か所がありますので、使う方を変更します。

upload_port = COM4
monitor_port = COM4

③EEPROMをErase+書き込みします。

dataフォルダに、ブラウザから表示するWebページがあります。それをEEPROMに書き込みます。以下の順番に実行します。

・Erase Flash
・Build Filesystem Image
・Upload Filesystem Image

image.png

④プログラムを書き込みます。

いつもの通り、下の方にある「→」をクリックします。

image.png

#ESP32起動直後

事前に、TeraTermなどのターミナルをCOMポートにつないでおくととよいです。
ESP32をリセットして起動します。

ESP32の初回起動直後は、WiFiアクセスポイントのSSIDやパスワードが設定されていません。
WiFi接続に失敗した後、COMポートにつないだコンソール(TeraTermなど)からSSIDとパスワードを聞かれるので入力します。
接続が完了すると、ESP32のIPアドレスが表示されます。次回からは入力不要です。

#Javascriptプログラムの書き込み

ブラウザから、ESP32のIPアドレスを開きます。

http://[ESP32のIPアドレス]

image.png

テキストエリアに以下を入力して、アップロードボタンを押します。

import * as gpio from "gpio";

var led = gpio.LOW;
var counter = 0;

async function setup(){
	var ipaddress = esp32.getIpAddress();
	console.log("ipaddress=" + ((ipaddress >> 24) & 0xff) + "." + ((ipaddress >> 16) & 0xff) + "." + ((ipaddress >> 8) & 0xff) + "." + (ipaddress & 0xff));

    gpio.pinMode(10, gpio.OUTPUT);
    gpio.digitalWrite(10, led);
}

async function loop(){
	console.warn('hello ' + counter++);
        led = (led == gpio.LOW) ? gpio.HIGH : gpio.LOW;
        gpio.digitalWrite(10, led);
	delay(1000);
}

そうすると、プログラムが書き込まれ、LEDがちかちかするはずです。
EEPROMに保存しているので、電源Off/Onした後も継続します。

M5StickCを想定し、LEDがGPIO 10にある前提です。

もし、CLIで更新したい場合は、ファイルにJavascriptを書き込み、Curlで送ってあげるとよいです。

> curl -X POST -F upfile=@main.js http://[ESP32のIPアドレス]/upload_js

どんなJavascriptのAPIがあるかは以下を参照してください。

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?