2024年4月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
無料ブログはココログ

« ESP32で走るTinyBasicの準備 | トップページ | ESP32-WROVER基本スターターキット他購入と動作チェック »

2023年6月29日 (木)

ESP32でTinyBasicが動いた

前回の準備で、ESP32-WROVER-EへのTinyBasicの書き込みとWi-Fi経由TeraTerm接続までの段取りがイメージできました。
あとはやってみるだけだったので、今日実際にESP32へ書き込み、動作確認する事が出来ました。

やってみると結構あっさり、何のつまずきもなく、動作しました。
Photo_20230629183601

以下、今回やってみた流れです。


今回の 豊四季tinyBasic ESP32 WiFiTelnet は以下から入手しました。
GitHub - robo8080/ttbasic_ESP32_WiFiTelnet: ESP32 WiFi Telnet対応版 豊四季タイニーBASIC

Arduino IDEで ttbasic_ESP32_WiFiTelnet.ino と basic.cpp をタブ分けして、それぞれソースファイルからコピペしました。
basic.cpp の、自宅Wi-Fiに繋ぐためのssidとpwだけ書き替ました。
36行 const char* ssid = "自宅Wi-Fiのssidに書き換えた";
37行 const char* password = "自宅Wi-FiのPWに書き換えた";
ソースを覗くと、11行  //#define USE_WIFI_AP_MODE を有効にすると、ESP32をアクセスポイントにも出来るようです。

Arduino IDEでコンパイルが成功した状態の画面です。
1.31MBのフラッシュメモリの内57%もスケッチで使った様です。
Compile_noerror

ESP32-WROVER-Eと接続し、書き込んだ状態の画面です。
Writing

シリアルモニタ画面に表示された、Wi-Fi接続やIPアドレスが表示された画面です。
IPアドレスは192.168.1.3になりました。
Inkedconnect

TeraTermをインストールし、TERATERM.INIの以下2か所(赤字)を書き替え、Telnet ポート10001で立ち上がる様にしました。
TCPPort=10001
[TTSSH] の部分で Enabled=0
TeraTermを立ち上げ、IPアドレスを192.168.1.3にし、OKを押す前の画面です。
Tera

ESP32のRSTボタンを押し、Wi-Fi接続後、TeraTerm画面にTinyBasicの起動メッセージが出ました。
適当にプログラムを打ち込んで実行した画面です。きちんと実行されています。
Ttbasic


2023-8-22追記
豊四季tinyBasic ESP32 WiFiTelnet の入手元のGitHubにはexampleが置いてあり、名前がcolor.txt(下) と気になる名称だったので、実行してみました。
ttbasic_ESP32_WiFiTelnet/examples/color.txt at master · robo8080/ttbasic_ESP32_WiFiTelnet · GitHub
TeraTerm上でエスケープシーケンスを使い、カーソル移動と文字修飾(文字色・背景色)するプログラム例ですね。
mbed版 豊四季タイニーBASICの機能を拡張してみた。(2) - robo8080のブログ (goo.ne.jp)
Photo_20230822174801
調べてみたら、¥033[2Jは画面消去、¥033[Y;XHはカーソルをY行X列へ移動、¥033[3Xmは文字色をXに、¥033[4Xmは背景色をXにするみたい。他のはいまいち分からず。

-----------  ライブラリのUpdate後 ”ERR_OK” の競合宣言エラーが発生しエラーを回避  ---------------
ちなみに、これを実行してみたくて、Arduino IDEでコンパイルと書き込みをする際に、ERR_OKの定義が競合しているとのエラーが出て、コンパイルできませんでした。
ttbasicを最初にコンパイルした6月末以降で、確か2回程ESP32ライブラリの更新をしたので、その影響と思われます。

Arduino IDEでのコンパイルのメッセージでは、basic.cppの209行目のERR_OKの宣言が、ヘッダーerr.hの55行目にあるERR_OKの定義と競合していると出ています。
C:\Users\k___\Documents\Arduino\ttbasic_ESP32_WiFiTelnet対応版\ttbasic_ESP32_WiFiTelnet.ino\basic.cpp:209:3: error: 'ERR_OK' conflicts with a previous declaration
C:\Users\k___\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11/tools/sdk/esp32/include/lwip/lwip/src/include/lwip/err.h:55:3: note: previous declaration 'err_enum_t ERR_OK'

ERR_OK = 0,
^~~~~~
exit status 1
Compilation error: 'ERR_OK' conflicts with a previous declaration

basic.cppでの使われ方を調べると、209行目のエラーコードのenum型の列挙部分にあるだけで、181行目のerrmsg[]の配列変数定義の列挙部分と対応し、列挙の順番だけが重要だと分かったので、以下の様に ERR_OK ⇒ ER_OK と変え、コンパイル・書き込み共に成功しました。
Photo_20230822181701
Photo_20230822181901 

変更後でも、TeraTermの画面では "OK" がきちんと出てきますし、副作用はなさそうです。


参考
Palo Alto Tiny BASIC(東大版)の仕様
・変数は A~Z の26個、@ は配列変数
・コマンドは NEW, LIST, RUN, SIZE で、LOAD, SAVEはない。
・ステートメントは LET, PRINT, INPUT, GOTO, GOSUB, RETURN, IF, FOR, NEXT, END
・演算子は =, #, >, >=, <, <=
関数は RND, ABS
以上。

がベースですが、強制終了は[Esc]に変更されているくらいで、豊四季TinyBasicは本当に最低限の機能しかないですね。

ですが、以下の通り basic.cpp を見ると、@robo8080さんの拡張が入っています。
Img_9548_20230629212001
113~127行のキーワードテーブルを見ると、"SAVE","LOAD","BOOT"が追加されているのが分かります。
Img_9547

でもですが、GPIOの操作など何もないので、digitalWrite的な命令を追加するとか必要そう。
還暦過ぎの頭の体操には良さそうな気配...
Arduino版ttbasic機能拡張版V0.07のgpio.cppttBasicのスケッチなら元が同じttbasicなので、にらめっこして組み込んでみるとかが近道かも...
しかし、オリジナルの豊四季TinyBasicの作者vintagechipsさんや、たま吉さんrobo8080さん らは、凄い人達だー!!


2023-7-4追記 TinyBasic実装例あれこれ
・Arduino用のSAVE,LOAD非拡張のttBasicなら以下。
 └https://github.com/vintagechips/ttbasic_arduino
・Arduino版なら、豊四季タイニーBASIC for Arduino機能拡張版 V0.07が公開されている。
 └https://github.com/Tamakichi/ttbasic_MW25616L
 他にもある。
 └https://halfbyteblog.wordpress.com/2014/11/26/its-here-half-byte-tiny-basic-2-for-arduino-and-compatibles-3/
・Arduino STM32用にはすごい拡張がされているみたい。
 └https://tamakichi.github.io/ttbasic_arduino_stm32/main.html
・ESP8266用なら、HalfByteTinyBasicが公開されている。
 └https://koyama.verse.jp/elecraft/avr/tinybasic8266.html
  └https://onedrive.live.com/?id=3F5447CD214F9B74%2192472&cid=3F5447CD214F9B74&parId=root&parQt=sharedby&o=OneUp
 └tinyBasicプログラミングでものづくり(Arduino NANO版) (koyama.verse.jp)
・以前のESP32のROMに入っていたのは、BleuLlama TinyBasicPlusらしい。
 └https://macsbug.wordpress.com/2017/01/04/easter-egg-of-esp-32/
 BleuLlama TinyBasicPlus自体は、元々のが公開されている。
 └https://github.com/BleuLlama/TinyBasicPlus

ESP32-WROVERやWROOM用のも、そのうち出てきてくれると期待するも、セキュリティの問題が絡んでしまうのでどうなりますか?

話は脱線しますが、有名なPalo Alto Tiny BASICを書いたリーチェン・ワン氏のWikipediaの一番下の外部リンクで、機械語ソースファイルが見れたりするんですね。
 Li-Chen Wang's Tiny Basic Source Code for Intel 8080 Version 1.0

いつの間にかインターネットや情報公開が進んでいて、やりたい事がサクサクできる環境には大助かりです。


2024-2-19追記
豊四季tiny basicの作者である鈴木哲哉氏が書かれた著書「タイニーBASICをCで書く」の立ち読み版と言うのが以下で見れる様です。
https://www.socym.co.jp/samplebook/1020.pdf
Photo_20240219174501

参考になりそうです。
digitalWrite, digitalRead に相当する命令だけでも追加できると、GPIOを操作出来るので面白そうで、頑張ってみようかと思案中...


2024-3-1追記
ここ1週間程、GPIO操作命令だけでも追加できないものかと、ソースコードを眺めてはもんもんと見たりしています。
でも、解読して手を加えるなんてとっても無理そうで、先ずは上記の本を読んでみたい気持ちが高まってきました。
既に絶版で普通には買えませんが、図書館の蔵書にあるので、予約を入れました。


2024-3-3追記 簡易的でも良いので拡張の検討準備を開始しました。


 

続報あればまた。

 

« ESP32で走るTinyBasicの準備 | トップページ | ESP32-WROVER基本スターターキット他購入と動作チェック »

電子工作:ESP32 TinyBasic」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« ESP32で走るTinyBasicの準備 | トップページ | ESP32-WROVER基本スターターキット他購入と動作チェック »