「電子工作」カテゴリーアーカイブ

MyDns.jp更新装置

MyDnsでDDNSを登録して取得しているが、IPの更新が手間なので
M5StickCPlusを使った更新装置の記事を見た・・・どこだっけ?

今使っているソース(自前用に改修したやつ)
XXXXXXなどWifiやMyDns.jpの情報を変更して使用できます。

#include <M5StickCPlus.h>
#include <HTTPClient.h>
#include <NTPClient.h>
#include <Time.h>
#include <TimeLib.h>
#include <FS.h>
#include <WiFi.h>
#include <WiFiClient.h>

#define SERIAL_SPEED 115200

// wifiの設定(my)
const char* ssid     = "XXXXXXXXXXX"; // WiFiのSSID
const char* password = "XXXXXXXXXXX"; // WiFiのパスワード

// mydns info.(xxxxx.mydns.jp)
const char* id="mydnsXXXXXX"; //マスターID
const char* pw="XXXXXXXXXXX"; //パスワード

//  NTP用
WiFiUDP ntpUDP;
const char *NTP_SERVER = "ntp.nict.jp";
const int TIME_OFFSET = 32400;  // UTC+9h (JST)
NTPClient timeClient(ntpUDP, NTP_SERVER, TIME_OFFSET);
const unsigned long NTP_INTERVAL_TIME = 86000000;  // 24h毎に更新1000 24h=86400000
unsigned long ntp_interval = 0;
unsigned long pasttime = 0;

String getmsg = "";

void setup() {
  pinMode(M5_BUTTON_HOME, INPUT);
  Serial.begin(SERIAL_SPEED);
  Serial.println("");
  M5.begin();
  M5.Lcd.setRotation(3);
  M5.Axp.ScreenBreath(100);
  M5.Lcd.fillScreen(BLACK);

  // connect to WiFi
  M5.Lcd.setCursor(0, 0, 1);
  M5.Lcd.setTextColor(WHITE);
  M5.Lcd.setTextSize(2);
  M5.Lcd.print("WiFi connecting");

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) { // 1秒おきに接続状態を確認
    delay(1000);
    M5.Lcd.print(".");
  }
  M5.Lcd.println("\nconnected");

  M5.Lcd.print("");
  //M5.Lcd.print("WiFi Connected.");
  M5.Lcd.print("SSID:");
  M5.Lcd.print(WiFi.SSID());
  M5.Lcd.print("\n");
  M5.Lcd.print("IP:");
  M5.Lcd.print(WiFi.localIP());
  M5.Lcd.print("\n");

  // NTP
  timeClient.begin();
  timeClient.update();
  setTime(timeClient.getEpochTime());
  M5.Lcd.print("NTP st.");
  ntp_interval = millis();
  M5.Lcd.print(timeClient.getFormattedTime());
  M5.Lcd.print("\n");


  delay(3000);
  M5.Lcd.print("First Req");
  M5.Lcd.print("\n");
  notice();
}

void loop() {
  //M5ボタンでモード切替
  if(digitalRead(M5_BUTTON_HOME) == LOW){
    M5.Lcd.fillScreen(BLACK);
    M5.Lcd.setCursor(0, 0, 1);
    M5.Lcd.setTextFont(4);
    M5.Lcd.setTextSize(1);
    M5.Lcd.print("\n");
    M5.Lcd.print(" Update Now!\n");
    M5.Lcd.print("\n");
    M5.Lcd.print("\n");
    notice(); 
    delay(5000);
  }

  // MDNS.update();
  // 定期的に時刻を合わせて、IPを通知。
  pasttime = millis() - ntp_interval;
  if (pasttime > NTP_INTERVAL_TIME) {
    //M5.Lcd.fillScreen(BLACK);
    M5.Lcd.fillRect(0,0,300,70,BLACK); // 塗りつぶし left, top, witdh, height
    M5.Lcd.setCursor(0, 0, 1);
    M5.Lcd.setTextFont(4);
    M5.Lcd.setTextSize(1);
    M5.Lcd.print("\n");
    M5.Lcd.print(" Update Now!\n");
    M5.Lcd.print("\n");
    M5.Lcd.print("\n");
    delay(5000);
    timeClient.update();
    M5.Lcd.fillScreen(BLACK);
    M5.Lcd.setCursor(0, 0, 1);
    M5.Lcd.setTextColor(GREEN);
    M5.Lcd.setTextFont(7);
    M5.Lcd.setTextSize(1);
    M5.Lcd.print(timeClient.getFormattedTime());
    M5.Lcd.print("\n");
    M5.Lcd.print("\n");
    notice();
    ntp_interval = millis();
  }else{
    if(getmsg="200"){
      M5.Lcd.fillRect(0,0,300,70,BLACK); // 塗りつぶし left, top, witdh, height
    }else{
      M5.Lcd.fillScreen(RED);
    }
    M5.Lcd.setCursor(0, 0, 1);
    M5.Lcd.setTextColor(GREEN);
    M5.Lcd.setTextFont(7);
    M5.Lcd.setTextSize(1);
    M5.Lcd.print(timeClient.getFormattedTime());
    M5.Lcd.print("\n");
    M5.Lcd.setTextFont(4);
    M5.Lcd.setTextSize(1);
    M5.Lcd.print(NTP_INTERVAL_TIME / 1000);
    M5.Lcd.print(" > ");
    M5.Lcd.print(pasttime / 1000);
    M5.Lcd.print("\n");
    M5.Lcd.print("http GET= ");
    M5.Lcd.print(getmsg);
    M5.Lcd.print("\n");
    M5.Lcd.print("Push M5:update");
    M5.Lcd.print("\n");
    delay(1000);    
  }
}

void notice() {
  timeClient.update();
  // 通知
  WiFiClient client;
  HTTPClient http;
  http.begin(client, "http://ipv4.mydns.jp/login.html");
  http.setAuthorization(id, pw);
  M5.Lcd.setTextFont(4);
  M5.Lcd.setTextSize(1);
  M5.Lcd.print("http GET= ");
  getmsg = http.GET();
  M5.Lcd.print(getmsg);
  M5.Lcd.print("\n");
  timeClient.update();
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setCursor(0, 0, 1);
  M5.Lcd.setTextColor(GREEN);
  M5.Lcd.setTextFont(7);
  M5.Lcd.setTextSize(1);
  M5.Lcd.print(timeClient.getFormattedTime());
  M5.Lcd.print("\n");
  M5.Lcd.print("\n");
  ntp_interval = millis();
}

Arduino IDE 2.3.6

Arduino IDE 2.3.4

今まで使っていたArduino開発用PCが、もたつく・・・

漢字変換すら遅くなってしまい、息継ぎ状態・・・

Thinkpad X-280のi3モデルなので
メモリも4GBがそもそものボトルネックか・・・

Windows11にしてから、よけいに動きがにすい

そこで、別のPCに引っ越しすることにした。

Thinkpad X380 Yogaが空いていたので
そこに最新のArduino IDE2.3.4をインストール

今までのソースたちの移動も今後のことを考えて
Googleドライブで共有することにした。

GdrivePC版をインストールして、Gドライブが割り当てられるので
そこにArduinoフォルダーをおいて、そこに見に行くように設定を変える。

G:\マイドライブ\Arduino\arduino

しばらく、様子見てみる・・・

Arduino IDE

Arduinoの開発環境を別のPCに移行しようと四苦八苦・・・

今までの環境が性能不足で、もたついているので
別のPCへ引っ越しすることを決定

IDEをダウンロードして、インストール

20250104時点:Ver2.3.4

Prefarenceを開いて
言語を日本語にする。
スケッチブックの場所(c:\Arduino)

追加にボードマネージャのURLに以下を追加

http://drazzy.com/package_drazzy.com_index.json
http://drazzy.com/package_drazzy.com_index.json
https://github.com/Leafony/BoardManagerFiles/raw/master/Leafony_STM32/package_leafony_stm_index.json
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
https://raw.githubusercontent.com/dbuezas/lgt8fx/master/package_lgt8fx_index.json
https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
https://raw.githubusercontent.com/nulllaborg/arduino_nulllab/master/package_nulllab_boards_index.json
https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json

ESP32-WROVER-CAM

FREENOVE.COMのESP32-WROVER-CAMを購入した。

amazon

FREENOVE

Tutorial

バージョンはv3.0でSdカードスロット付きでUSB-Cでした。
2480円でした。
ESP32-WROVER-Eでした。
技適:201-20403
模範品もでているらしい。(もちろん技適なし)

たまねぎブログ」さんが纏めてくださっているサイト
あろしーど」さんが纏めてくださっているサイト

サンプルをいくつか試してみた

・ESP_Mail_Client
起動時にカメラ画像をGmailで送信するサンプル
準備:Googleアカウント作成、アプリパスワード取得、Wifi(SSID、パスワード)
送信先メールアドレス、Tutorialからサンプルソース等(ESP-Mail-Client)※最新版

//追加コード
camCfg.grab_mode = CAMERA_GRAB_LATEST;
//画質設定
sensor_t *sensor = esp_camera_sensor_get();
if (!sensor) {
Serial.println(“Failed to get camera sensor!”);
return;
}
sensor->set_contrast(sensor, 1); // コントラスト
sensor->set_brightness(sensor, 0); // 明るさ
sensor->set_saturation(sensor, -1); // 彩度

ん?画像がミラー?設定を調べないとね・・・

追加コード
// 画像の水平反転を無効にする
sensor->set_hmirror(sensor, 1); // 鏡像(0: 無効, 1: 有効)




・ESP_WebCamera
カメラ画像をWebで参照する

サンプルがあるので、いろいろ遊べそう

目標は防犯カメラというか、野良猫監視カメラ的な・・・

AMラジオ11

レフレックスAMラジオのキットを組み立ててみた。

キットは1石で、5Pラグ版で作成します。

そこをあえて、基板で作ってみたが、見事に失敗・・・

詰め込みすぎて、隣の線とくっついてしまいショートしている

基本通りにラグ版で作るべきでした。

部品を調達してリベンジしたい。

Amazon.co.jp: [電子工作ラジオキット]3石レフレックスラジオキット : 家電&カメラ

手元アンプ

なんぞや

母がテレビの音がよく聞こえないと・・・

いつもテレビの音を大きくして聞いていた。

で、手元にスピーカーを置いてみた。

LM386のアンプ回路を組み込んで、手元で音量を調整できるように
ボリュームをつけてみた。

自分の座っているところで音が出るので、聞きやすくなったと・・・

・ケースは100均のペン立てを利用。
・アンプはどこかで購入したLM386のアンプキット
・SPはダイソーアンプの1つ(もしかしたら、秋月電子で買ったやつかも)
・ボリューム、ジャック、LED等は手持ちの部品を利用
・ACアダプタは、なんかのトランス式を利用(5V)※HARDOFFで見つけた

トラス式のACアダプタなので、ノイズも無く、良い感じに鳴ってくれる。

※ちなみに、100均とかのスイッチング式だと、ノイズ乗りまくりです。
 ブ~ン・・・

コスト的は100均のアダプタを利用できるようにしたい。
ノイズを除去できればね。

このネタは半年くらい前のものです。

 

 

ノイズ対策で、以前テストしたのが、LCフィルターとか、いろいろやってみたが
まったく解決できなかった。


エポキシ基板でケース作成

以前、入手した「7MHzダイレクト受信機」のケースが
基板で作成されていて、先人の技術に感動したのを思い出した。

いつかは、自分も作ってみたくて、材料をコツコツと集めてます。

基板は、随分前に購入済み

150mmX100mmの1mmの生基板(ガラスエポキシ片面)

簡単に作ろうと、まずは、150mmX100mmX30mmの箱で・・・

上下の蓋と底の部分は生基板そのままで、周辺を切り出していく・・・

30mmの高さに・・・(この高さは、切り出しに使用した木材がこのサイズ)
この木材(30mmX30mmXnmm)の角材
(100均か、ホームセターの端材かな)

これで基板にそえて、カッターで切れ目を入れる。
カッターで5回、アクリルカッターで5回ほど切れ目を入れて
裏面からも同様にカッターで切れ目を入れて、割る感じで切断する。

周囲部分は、100mmX30mmを2枚、150mmX30mmを2枚必要。
切り出したら、一応、やすりでバリを落としておく。

周囲部分を銅面を内側にして、角をはんだで固定していく。

今日はここまで・・・

部品待ち・・・真鍮ナットM3

蓋を固定するのにM3のナットを使用したい
はんだで固定したい
で、真鍮のを取り寄せ中・・・ステンレスナットはむずい・・・

あと、ドリル歯も(硬いやつ2.5mm)

つづく・・・

あ、で、なんのケースにするか?

ん~未定・・・

ACアダプタ:AV-DR305E

先日のラジオのACアダプターが欲しいな~と
RAD-S520N

これはオーム社のAudioComm製品で、オプションでラインアップされていたもの

つまり、これを使えば、例のラジオにも適応のはず・・・

早速、ラジオに使用してみる・・・ん?

鳴らん?

おっと、プラグの仕様がセンターマイナスなのね・・・
このアダプタは、4種類のサイズにはめ変えることで
いろんなACアダプタに対応している。(4タイプ交換)

そして、はめ方でセンタープラスかセンターマイナスに切り替えることができる。

センターマイナスにして、ラジオに

ざーーーー

FMで東海ラジオを聞いていたが、電池からACに切り替わったら聞こえない?

ダイヤルを微調整しても聞こえない・・・
???

わかったこと
周波数がずれている。

下げていくと、FM-CBC、FM-東海と受信できた。

FM-NHKまでしか聞こえない

アダプタを抜き差しすると、元に戻ることもある。

電圧のせいか?

規格通りだが

しかも、電池と違って、ノイジー・・・

AC周りからのノイズを拾っているっぽい

AMだと、さほど気にならない

ちなみに、このACアダプターも生産終了品だった
※現行品:AV-DR3005N(6タイプ交換)

追記:ACアダプタに切り替えるときは、電源を切ってからだと
おかしな現象は起きないようだ・・・
ノイズも、周りのノイズ発生源次第だった、位置をかえると
ノイズが消えた

AMラジオ10

2号機の改造をした。

1.低周波増幅をイヤホン(マグネット)が鳴るように工夫した。
2.マイクロインダクタをバーアンテナに変更(330μH=>340μH)

さくっと改造

その前に、バリコンの固定をちゃんとした。
今まで両面テープで止めていたが、落ち着かず、穴を開けてねじ止めした.

1.セラミックイヤホンを鳴らすように設計されていたので
  トランジスタの出力からイヤホンを返してGND接地していた。
  GND接地をやめて、+へ接続した。

 ※ただ、そのままだと、発振したので、セラコンを追加した。
 ※まだ、音が割れるので、調整が必要か・・・ボリュームを付けるか
  トランジスタのバイアス設定かな・・・
 ※セラミックイヤホンは鳴らなくなった。
 ※100均の16~32Ω(直列32Ω:変換アダプタ自作)
  (並列8Ωも聞こえる)
 ※追記:(8+8=4Ω)は発振する。

2.バーアンテナ(SL-55GT)に変更した。
  メチャクチャ感度がアップした。
  結局、外部アンテナは不要になった。
  

まとめ

バーアンテナは必須

次こそ、レフレックスだな・・・

ベッドサイドラジオに良いかも。
ちょっと眠れない時に、イヤホンで聞けるちょど良い音量

追記:
受信放送
・NHK-1
・NHK-2
・CBC
・東海

夜は、海外の放送局が受信しているがどこ???

補足:
モノラル=>ステレオ端子のアダプタを作成
※直列になるように配線した
 売っているアダプタは並列になる