2020/07/06 (月曜日) 雨
先日からESP- WROOM-02をサーバー、クライアントにしてその間をWiFi規格の無線LANで
接続してUDP通信を行う実験をしている。
クライアントにはアナログ(電圧)信号をデジタルに変換してサーバーに送信する機能を、
サーバーには受信したデータを液晶ディスプレイ(LCD)に表示する機能を持たせてある。
そしてサーバー、クライアント間はUDP通信によるデータの送受を行うのだ。
今までもESP-WROOM-02をWiFiで接続してデータを送受信する実験をしたことはあるが、
パソコンに接続したルータに取り付けてある無線LANアダプタ(WiFi親機)を経由した接続で
WiFi親機がない環境では実験ができない。
そこでWiFi親機を介さないESP-WROOM-02どうしの接続はどうするのか?と思ってWebに
アップされた記事を検索してみたところ、2,3の参考記事が見つかった。
さっそくそれらを参考に(真似して)工作を始めた。
(以上前置き 相変わらず前置きが長いね(笑い))
参考記事には通信機能だけでアナログ・デジタル変換や液晶表示はない。
それは今までの実験の成果を応用してみることにした。
その基本回路での実験は案外すんなりとうまくいった。
ところが液晶表示器(LCD)に文字を表示する段になってちょっと問題がでてきた。
サーバーのLCDにはクライアントが得た電圧値を数値で表示するのだが、その数値以外に
何だか制御符号のような文字?(記号)も表示されてしまう。
その記号のような文字を調べてみると「1101・・・・」 「1010・・・・」という4bit並びになっている。
ちなみに数値は「0」は「110000」(HEX表示では「30」)、「1」は「110001」(同じく「31」)、「2」は「110010」
(「同じく「32」)、小数点は「1001110」(同じく「2E」)・・・・というお馴染みの文字コードだ。
「1101」とか「1010」は文字コードではないので処理するのはなかなか難しいだろう?。
もし、同じ桁位置に表示されるのならその桁を消去するという方法もあるが、データの数値によって桁位置が
上下するのでそれはできない。
仕方がないから(オイらの考え付くのはこれくらい)一文字(一桁)ごとに「0」~「9」の文字、小数点「.」と比べて
一致すればその数値を保存、一致しない文字は「数値ではない」と判断して無視することにしてみた。
これをプログラムにするにはいろいろな方法があると思うけどオイらは一番単純な「switch-case」制御文を
使ってプログラムを組んだ。
コンパイルも正常にできた。
さぁ、うまく動作するかな? 心を弾ませてRUNさせてみると・・・・・
ガっビーン!!! 変なメッセージが表示された・・・
何度やっても同じメッセージが出てきておかしな動きになる。
‟Exception (28):” って何だろう? 辞書で調べてみると「例外、除外、異議」という意味らしい。
>>>stack>>>なんていう文字もみえる。 stackなんてシステムが使う用語だ。
これは何だかバグなんかとは違う、もっと重要なトラブルかもしれない。
もしかすると書き込んだコードが長ったらしくてメモリーが不足しているのかな?
(フラッシュメモリは4MBだから書き込みエリアは十分だろう。)
RAMは36KBしかない・・・
プログラム走行で得た情報やデータはRAMに書き込まれるはずだからやたらとエリアを使うプログラムは
エラーになるのかもしれない。
試しに、追加した部分を削除すると正常に動作した。
さぁ、処理を簡略化して、余分な定義は削除して身軽なプログラムにしなくっちゃ・・・
(これが大変・・・基礎がないオイらにはとても難しい作業になる。)
マニュアルを見ては基礎的なプログラムで試行錯誤を繰り返し、3歩進んで2歩下がる・・・を繰り返す。
これでどう?・・・・ダメだ!
これではどうだ?・・・・ダメだ!
これではどうですか?・・・・おっ、動いた! やったよー
思わず拍手してしまったよ(オイらは単純だよねぇ)。
今日で3日目、やっと動いてくれた。
その動画をご覧くださいませ。
「それを何に使うの?」 ですかぁ・・・・・・
何に使うか? って聞かれても別に使う予定はありません。
ただ、動かしてみる・・・・ただそれだけ。
「なーんだ、バカみたい・・・」
そうです。 バカみたいです。 でもそれが面白いんです。
なかなか動作してくれないものが苦労してやっと動いてくれたときの嬉しさ・・・
ただそれだけです。
さぁ、次は何をしようかな?