上位に戻る ESP32 目覚まし時計 初版2025/07/23

暗くても見えるように、常時点灯式の目覚まし時計がほしかったので、部品も余っていたので作ってみました
esp32のミニタイプ DAC(アナログ出力)が無かったので、ショボイですが、ビープ音で音階作って目覚まし音
にしました


  1. どんな感じ









  2. 時刻のみを表示
    時刻に温湿度を追加
    時刻と、温湿度を交互に表示
    設定は、ブラウザから設定できるように
    しました
    音階ファイル簡単に修正や差し替えでき
    るようにアップロードできるようにしました



  3. 回路図



  4. プログラムについて
    ブラウザを使って、SPIFFS領域にファイルをアップロードする方法は、別のページに記載しています
    まあ他はたいして参考にならないので、割愛します
    ちなみに、表示用ライブラリSSD1306.hは、C3だと、コンパイルエラーになり、対応していないとなりましたので、U8g2lib.hを使っています
    また、ビープ音ですが、ledcWriteToneコマンドを使っていますが、周波数 24kHzで、分解能11bitだと、C3ではエラー もっと下げろと宣う
    ので、12kHz 8bitで動作させています まあ音質気にするもなにももともとショボイスからねえ

    ビープ音階ですが、以下ESP32WROOM DEV基盤 IO32ピンに出力させた場合の参考例です
    delayを使ってしまうと、その間何もできないので、マルチタスクにするか、独自のdelayコマンドを作って回すか必要です
    const int LEDC_PIN=32;
    # define LEDC_FREQ       24000
    # define LEDC_TIMERBIT   11

    void setup() {
      ledcAttach(LEDC_PIN, LEDC_FREQ, LEDC_TIMERBIT) ;

    }

    void loop() {  
      ledcWriteTone(LEDC_PIN, 261);
      delay(500);
      ledcWrite(LEDC_PIN, 0);
      delay(50);
      ledcWriteTone(LEDC_PIN, 294);
      delay(500);
      ledcWrite(LEDC_PIN, 0);
      delay(50);  
      ledcWriteTone(LEDC_PIN, 330);
      delay(500);
      ledcWrite(LEDC_PIN, 0);
      delay(50);  
      ledcWriteTone(LEDC_PIN, 349);
      delay(500);
      ledcWrite(LEDC_PIN, 0);
      delay(50);  
      ledcWriteTone(LEDC_PIN, 391);
      delay(500);
      ledcWrite(LEDC_PIN, 0);
      delay(50);  
      ledcWriteTone(LEDC_PIN, 440);
      delay(500);
      ledcWrite(LEDC_PIN, 0);
      delay(50);  
       ledcWriteTone(LEDC_PIN, 493);
      delay(500);
      ledcWriteTone(LEDC_PIN, 523);
      delay(500);
      ledcWriteTone(LEDC_PIN, 587);
      delay(500);
    }

    音階ファイルは、[音の周波数,鳴らす長さ,停止する長さ]のCSV形式で構成しています
    音階の周波数は、以下のサイトを参考にしています
    https://tomari.org/main/java/oto.html


    以上間違い等ありましたら、以下ご意見箱にお願いします

   

    ご意見箱