Categories: R10マイコン

ESP32でオシロスコープ時計を試してみる (ALGYAN6th基板)

ALGYAN 6周年IOT基板でESP32が動作するようになったので前から気になっていた
オシロスコープ時計を試してみました。

以前からヤフオクでPICマイコンを使ったオシロスコープ時計が出品されおり、ぜひ試してみたいと思っていたのですが、この出品者さんは自動延長なしで出品されておられるので私の嫌いなスナイプ入札の標的にされてしまい未だに落札できたことはありません・・・(泣

というわけで、ESP32を使って自分で実現してみました

ALGYAN 6周年IoT基板に実装されているI/Oは特に使わずGPIOの25と26のをX,Y出力に使っているだけです^^

GPIO25をY軸、GPIO26をX軸入れオシロをXYモードにします。GNDを含め配線は3本だけ

ESP32用のオシロスコープクロックのソフトはgitHubにアップされている
https://github.com/maurohh/ESP32_OscilloscopeClock
こちらのソフトをそのまま使わせて頂きました
ESP32の特徴であるWIFIを使ってNTPサーバに時刻を問い合わせてから起動する優れものでした

NTPによる時間設定をしたい場合はNTP用のライブラリも必要とのことですので
https://github.com/SensorsIot/NTPtimeESP
のNTP用ライブラリを使わせて頂きました

ArduinoIDEを起動しESP32の環境に切り替えてNTP用のライブラリをZip形式のライブラリをインストールから導入

ESP32_OscilloscopeClock_v1.0.inoの一部を変更

私の変更した部分は

#include <driver/dac.h>
#include <soc/rtc.h>
#include <soc/sens_reg.h>
#include "DataTable.h"
//#define EXCEL
#define NTP //←コメントアウト削除
#if defined NTP
  #include <NTPtimeESP.h>
  #include <WiFi.h>
  NTPtime NTPch("ntp.nict.jp"); // Choose your server pool  //←変更
  char *ssid      = "SSID";        // Set you WiFi SSID  //←変更
  char *password  = "PASSWORD";        // Set you WiFi password //←変更
  int status = WL_IDLE_STATUS;
  strDateTime dateTime;
#endif //

#define NTPのコメントアウト削除
NTPtime NTPchのNTPサーバー名を日本のサーバに変更
*ssid を無線LAN-APのSSIDに変更
*password を無線LAN-APのパスワードに変更

これでNTPが有効になり起動しますがタイムゾーンが合っていないので

setup関数内のNTPch.getNTPtimeの引数を変更しました

    if (Timeout!=0){
      Serial.println("\nWiFi connected");
      Serial.println("NTP request sent to Server.");
      //dateTime = NTPch.getNTPtime(1.0, 1);
      dateTime = NTPch.getNTPtime(9.0, 0);  //←変更 GMT+9 サマータイムなし
      Timeout=20;
      while (!dateTime.valid) {
        //dateTime = NTPch.getNTPtime(1.0, 1);
        dateTime = NTPch.getNTPtime(9.0, 0);  //←変更 GMT+9 サマータイムなし
        Serial.print(".");
        delay(1000);
        Timeout--;
        if (Timeout==0){
          Serial.println("\nNTP Server Timeout");
          break;
        }
      }

NTPch.getNTPtimeの第一引数は時差、第二引数はサマータイム等の時刻調整フラグのようです
時差をGMT+9に変更しました

この状態でコンパイルしESP32に書き込んでみました

手元にはデジタルオシロしかないので、デジタルオシロで試してみると

こんな感じで、サンプリングによる残像のような点が多く出てしまいます

私の使っているデジタルオシロ HP54622Dは入力フィルタは2現象モードでは10000回いけるのすが、XYモードでは1回から変わりませんでした・・・^^;; (使い方が悪い!?)

MAVが1回ですがXYモードで入力フィルタをかけると

こんな感じでノイズは激減しました。さらに輝度を落とせばいい感じに表示できました

入力フィルタありで、輝度低めなのでかなり暗いですが動作に問題はありません・・・

画面表示は輝度を落とせば無駄なノイズは非表示にできますが、ハードコピーは輝度には関係ないようで、出力されてしまいます


フィルタなしはこんな感じ



ちなみに時間軸で見るとこんな感じでした

しっかりD/Aされてる感じですね^^

アナログオシロだときれいに表示が出そうなので、アナログオシロを持ってくる機会があればアナログオシロの表示がどんな感じか見てみたいと思います。

できれば真空管式オシロで表示させてみたいかも^^

特に外付け部品無しでESP32 DevKitCのみで、オシロスコープクロックができてしまうところがすごい・・・
RTCが実装されていないのでヤフオクのオシロ時計の方が優秀ですが起動時にWIFIがあれば問題ないかと^^;;;

そんな、ESP32でオシロスコープクロックが動作した記録^^

kabekin

View Comments

  • お久しぶりです、オシロって面白いですね。時計を表示することができるとは知りませんでした。
    フロッピーディスクが必要なんですかね??

  • お久しぶりです^^
    この時計はオシロスコープのXY軸入力で表示可能な信号をマイコンのD/A変換器で作っているようです。
    XY入力なので昔の真空管式オシロでも表示できるので古いオシロを使っている人にはたまらないアイテムだと思います^^
    フロッピディスクは特に必要なくESP32マイコンのみで完結しています。
    ESP32だとWIFIがあるのでRTCがなくても時間合わせができるのが素敵です^^