ESP32でEspruinoを試す
ESP32でJavascriptのtiny版 Espruino を試す
ESP32で色々プログラムを書いてみるのに、arduino IDEを使うと逐一Flashの書き換えを行うことになってなにかと不便なので、スクリプト言語を使ってみることにします。
で、やっぱりスクリプト言語ならpythonだよね~。。。とならないのが天邪鬼(^^ゞ
Javascriptのtiny版 Espruino を使ってみます。
ちなみに、EspruinoのEspとESP32のESPは何の関係もありません(たぶん)。
Espruinoの基本的な使い方は以下にあります。
私は開発環境として、Windows10上の Virtualbox + Ubuntu 16.04 を使用しています。
コンパイルだけなら、Windows Subsystem for Linux(WSL)でも出来るかもしれませんが、WSLではCOMポートにアクセスできないみたいなので、Flashの書き込みができません。
以下、作業ディレクトリに/work2を使用しているものとして例を記載します。
(/workや/work1でないのは大人の事情です。。。)
また、動作を確認したEspruinoはversion1.93です。
mkdir -p /work2/esp cd /work2/esp git clone https://github.com/espruino/Espruino.git cd Espruino source scripts/provision.sh ESP32
次回から環境設定を自動にするため、~/.profileに以下を追加しておきます。
export PATH=$PATH:/work2/esp/Espruino/xtensa-esp32-elf/bin export ESP_IDF_PATH=/work2/esp/Espruino/esp-idf export ESP_APP_TEMPLATE_PATH=/work2/esp/Espruino/app
~/.profileを修正したら、変更を有効にするため、いったんログオフして再度ログインします。
makeするには、
BOARD=ESP32 make
とすればよいのですが、毎回BOARD=ESP32と指定するのは面倒なので、Makefileに以下の修正を入れておきます。これでespディレクトリ下で作業していると自動的にESP32が選択されます(変更内容には次回以降のネタも一部含みます)。
diff --git a/Makefile b/Makefile index c0acf8d..1ca3968 100755 --- a/Makefile +++ b/Makefile @@ -135,8 +135,22 @@ ifeq ($(BOARD),) #$(info *************************************************************) #$(info * To build, use BOARD=my_board make *) #$(info *************************************************************) - BOARD=LINUX - DEFINES+=-DSYSFS_GPIO_DIR="\"/sys/class/gpio\"" + #BOARD=LINUX + #DEFINES+=-DSYSFS_GPIO_DIR="\"/sys/class/gpio\"" + GET_PLATFORM_DIR = echo $(CURDIR) | sed -e 's/^.*\/\(.*\)\/.*$$/\1/' + PLATFORM_DIR = $(shell $(GET_PLATFORM_DIR)) + ifeq ($(PLATFORM_DIR), esp) + BOARD=ESP32 + $(info ###############################################################) + $(info ######## default board choose ESP32 ###########################) + $(info ###############################################################) + else + BOARD=LINUX + DEFINES+=-DSYSFS_GPIO_DIR="\"/sys/class/gpio\"" + $(info ###############################################################) + $(info ######## default board choose Linux ###########################) + $(info ###############################################################) + endif endif endif @@ -543,6 +557,10 @@ libs/crypto/mbedtls/library/sha1.c \ libs/crypto/mbedtls/library/sha256.c \ libs/crypto/mbedtls/library/sha512.c +ifdef USE_HMACSHA1 + DEFINES += -DUSE_HMACSHA1 +endif + ifdef USE_TLS USE_AES=1 DEFINES += -DUSE_TLS @@ -776,14 +794,16 @@ endif clean: @echo Cleaning targets - $(Q)find . -name \*.o | grep -v arm-bcm2708 | xargs rm -f + $(Q)find . -name \*.[od] | grep -v arm-bcm2708 | xargs rm -f $(Q)rm -f $(ROOT)/gen/*.c $(ROOT)/gen/*.h $(ROOT)/gen/*.ld $(Q)rm -f $(ROOT)/scripts/*.pyc $(ROOT)/boards/*.pyc + $(Q)rm -f $(PROJ_NAME) $(Q)rm -f $(PROJ_NAME).elf $(Q)rm -f $(PROJ_NAME).hex $(Q)rm -f $(PROJ_NAME).bin $(Q)rm -f $(PROJ_NAME).srec $(Q)rm -f $(PROJ_NAME).lst + $(Q)rm -f $(PROJ_NAME).map # start make like this "make varsonly" to get all variables created and used during make process without compiling # this helps to better understand linking, or to find oddities
ESP32ボードをPCに接続し、virtualbox側に認識させます。
ESP32ボードは/dev/ttyUSB0に接続されているものとします。
一旦Flashをイレースします。
make erase_flash
バイナリを書き込みます。
make flash
書き込みが終わったらシリアルターミナル(Ubuntuならgtkterm、miniterm.pyなど、windowsならteratermなど)を起動し、ESP32のリセットボタンを押します。
設定は以下の通り
ボーレート | 115200bps |
データ長 | 8bit |
パリティ | none |
ストップ | 1bit |
フロー制御 | Xon/Xoff |
あとはシリアルターミナルからプログラムを入力すれば実行できます。
>console.log("Hello Espruino!") Hello Espruino! =undefined
お約束の断り書きです。
このブログに記載されている内容は私の作業メモであり、動作を保証するものではありません。
これらの情報を利用することによって生ずるいかなる損害に対して一切の責任を負いません。