いっぺーちゃんの いろいろやってみよ~

ESP32でEspruinoを試す

ESP32でJavascriptのtiny版 Espruino を試す

ESP32で色々プログラムを書いてみるのに、arduino IDEを使うと逐一Flashの書き換えを行うことになってなにかと不便なので、スクリプト言語を使ってみることにします。

で、やっぱりスクリプト言語ならpythonだよね~。。。とならないのが天邪鬼(^^ゞ

Javascriptのtiny版 Espruino を使ってみます。

ちなみに、EspruinoのEspとESP32のESPは何の関係もありません(たぶん)。

Espruinoの基本的な使い方は以下にあります。

Espruino on ESP32

 

私は開発環境として、Windows10上の VirtualboxUbuntu 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

 

f:id:ippei8jp:20170719082013p:plain

 

あとはシリアルターミナルからプログラムを入力すれば実行できます。

>console.log("Hello Espruino!")
Hello Espruino!
=undefined

 

お約束の断り書きです。

このブログに記載されている内容は私の作業メモであり、動作を保証するものではありません。

これらの情報を利用することによって生ずるいかなる損害に対して一切の責任を負いません。