goo blog サービス終了のお知らせ 

Charry-charry工房(チャーリー・チャーリーコウボウ)

50歳の手習い
(県立秋田工業高校 機械科卒業後、40年目に自分用の旋盤・フライス盤を所有することに)

2025MAR13 ChatGPT調べ DRAM

2025-03-13 08:43:36 | arudino


ディスクトップパソコンから外したDRAM

これもいつかは使ってみたいと思って保存し
ておりました。
ChatGPTに聴いてみました。

私:arudino(MEGA)でDRAMを扱っ
てみたいけど?

以下ChatGPTの回答
ーーーーーーーーーーーーーーーーーーー

ChatGPT:Arduino MEGA 2560 でも 直接 
DRAM を使うのは難しい です。

理由は以下のとおりです:

・外部メモリバスがない → DRAM(SD
RAM や DDR)は専用のメモリバスが
必要ですが、MEGA にはそれがない。
・処理速度が遅い → DRAM の制御に
は高速なメモリアクセスが必要だが
MEGA のクロック(16MHz)では遅す
ぎる。
・メモリ管理が複雑 → DRAM は定期
的にリフレッシュ(データを保持す
るための再書き込み)が必要だが、
ATmega2560 にはその機能がない。

可能な方法:
① 外付け SRAM/FRAM(SPI/I2C 接続)
SRAM: 23LC1024 (128KB, SPI)
FRAM: MB85RC256V (32KB, I2C)
MEGA の RAM(8KB)よりは増えるが
DRAM ほどの容量は確保できない。
② 外部メモリコントローラ(AVR
XMEM 機能)
ATmega1284P など、外部メモリイン
ターフェース(XMEM) を持つチップ
なら、SRAM(最大64KB程度)を接続
できる。
MEGA 2560 には XMEM 機能がないた
め、この方法は使えない。
③ 高性能マイコン/ボードを使う
ESP32: PSRAM(4MB など)をサポート
Raspberry Pi Pico(RP2040): 外部
QSPI メモリに対応
STM32: SDRAM を接続可能なモデルあ
り(F4シリーズなど)

まとめ
MEGA 2560 では DRAM を直接使うのは
難しい。
SRAM/FRAM の外付けなら可能だが、
ESP32 や STM32 などを使うほうが現実的。

との回答でした。

うーん また、分からない事が分かった。





2025MAR12 センサーとarudino

2025-03-12 05:28:23 | arudino

ディスプレイをSSD1331にすると
上手く行かないのでSSD1306に取
り替えてスケッチを書いて貰った所動き
ました。
SPI通信とI2Cを混在するとダメな
のか?
SSD1331を使うとだめなのか?
最終的には不具合の原因分かりませんで
した。

I2C通信にまとめました。

I2C通信に使用する(SDAとSCL)
の線はツイストペアにしました。
(黄色と緑線)

スイッチを押したら10秒間だけ表示し
て、その後はディスプレイ表示はしない
設定を追加したところ、パソコンの電源
が落ちました。

そこで、コパイロット(AI)に外部電
源をパソコンのUSB電源と一緒にして
供給しても良いかと尋ねたところ、OK
との返事
外部電源9Vを追加してコンパイルをか
けたものの、パソコンの電源が落ちる現
象は変わりませんでした。

なんだろうな???
私のプルダウン配線ミス

「ショートしたのかな?」

と言うことで、昨日コパイロットと一緒
に作ったスケッチを公開します。

来週、新しいパソコンが来たらもう一度
コンパイルしてみたいと思います。

それまでは様子見することにします。

スケッチーーーーーーーーーーーーーー

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <RTClib.h>

// OLED display pins
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

// Create an SSD1306 display object connected to I2C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// Create RTC instance
RTC_DS3231 rtc;
// Create BME280 instance
Adafruit_BME280 bme;

// Define switch pin
#define switchPin 4

void setup() {
Serial.begin(9600);

// Initialize switch pin
pinMode(switchPin, INPUT_PULLUP);

// Initialize OLED display with I2C address 0x3C
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}

display.display();
delay(2000); // Pause for 2 seconds
display.clearDisplay();

// Initialize RTC
if (!rtc.begin()) {
Serial.println("RTC initialization failed");
while (1);
}

// Check if the RTC lost power and if so, set the time
if (rtc.lostPower()) {
Serial.println("RTC lost power, setting the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}

// Initialize BME280 sensor
if (!bme.begin(0x76)) {
Serial.println("BME280 initialization failed");
while (1);
}
}

void loop() {
if (digitalRead(switchPin) == LOW) {
// Read current time
DateTime now = rtc.now();

// Read sensor data from BME280
float temperature = bme.readTemperature();
float humidity = bme.readHumidity();
float pressure = bme.readPressure() / 100.0F;

// Display time and sensor data on OLED
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print(now.year(), DEC);
display.print('/');
display.print(now.month(), DEC);
display.print('/');
display.print(now.day(), DEC);
display.print(" ");
display.print(now.hour(), DEC);
display.print(':');
display.print(now.minute(), DEC);
display.setCursor(0, 20);
display.print("Temp: ");
display.print(temperature);
display.print(" C");
display.setCursor(0, 30);
display.print("Humidity: ");
display.print(humidity);
display.print(" %");
display.setCursor(0, 40);
display.print("Pressure: ");
display.print(pressure);
display.print(" hPa");
display.display();

delay(10000); // Display for 10 seconds
} else {
display.clearDisplay();
display.display();
}

delay(100); // Check switch status every 100 ms
}

ーーーーーーーーーーーーーーー

〇無線 3.5MHz
D68ZとVU4AXを呼ぶ局が沢山

しかし、私の所には聞えません。
残念だな!







2025MAR11 ChatGPT と Arudino

2025-03-11 07:44:14 | arudino


SPI通信方式でSD1331(ディスプレイ)
I2C方式でDS3231(RTC)
これに 
I2C方式でBME280(温度湿度センサー)
を追加して
スケッチを積み重ねていくと

ここで改善しないトラブルが発生する。

以前、同じ設定で上手く行っているにも関わらず
同じ所でグルグル 訳の分からない動作

 ChatGPTに:前に失敗した事例を勉強しろ

と書くとその通りとは返答するが、その返答
スケッチは反省した内容とはならず。


うーん。

前に成功したスケッチを探してみようと思う。
失敗する理由は
ライブラリーをインクルードするとそのライ
ブラリーに決め事があるようです。(私には
分からない)

人間のようにあーでもない・こうでもない
と右往左往しているようです。

今日はコパイロット(AI)とお話ししてみよ
うと思います。

ChatGPTの凄いところは各センサーのアド
レス一覧表を作成してと言うとアッと言う
間に作成してくれます。

プログラムを勉強する若い人にとっては頼
りになると思われます。

I2Cデバイスのアドレス一覧表

✅ RTC(リアルタイムクロック)
  • DS3231: 0x68(固定)
  • DS1307: 0x68(固定)
  • PCF8523: 0x68 または 0x69(ピンで選択可能)
✅ 温度・湿度センサー
  • SHT30/SHT31/SHT35: 0x44 または 0x45(アドレス変更可)
  • HTU21D: 0x40(固定)
  • BME280: 0x76 または 0x77(ピンで選択可能)
  • BMP180 / BMP280: 0x76 または 0x77(ピンで選択可能)
  • AM2320: 0x5C(固定)
✅ 環境センサー
  • CCS811(空気質センサー): 0x5A または 0x5B(ピンで選択可能)
  • SGP30(ガスセンサー): 0x58(固定)
  • MH-Z19(CO2センサー): 0x61(固定、UARTも使用可)
✅ 光・色センサー
  • BH1750(照度センサー): 0x23 または 0x5C(ピンで選択可能)
  • TCS34725(色センサー): 0x29(固定)
  • VEML7700(光センサー): 0x10(固定)
✅ ジャイロ・加速度センサー
  • MPU6050: 0x68 または 0x69(AD0ピンで選択可)
  • MPU9250: 0x68 または 0x69(AD0ピンで選択可)
  • LSM303DLHC: 0x19(加速度) / 0x1E(磁気)  2つのアドレス使用
✅ 気圧センサー
  • BMP180 / BMP280: 0x76 または 0x77(ピンで選択可能)
  • BME280: 0x76 または 0x77(ピンで選択可能)
✅ ディスプレイ
  • SSD1306(OLED): 0x3C または 0x3D(ピンで選択可能)
  • SH1106(OLED): 0x3C(固定)
  • PCF8574(LCD用I2C拡張): 0x20 ~ 0x27(変更可能)
✅ GPIOエキスパンダ
  • PCF8574: 0x20 ~ 0x27(ピンで選択可能)
  • MCP23017: 0x20 ~ 0x27(ピンで選択可能)
✅ 電流・電圧計測
  • INA219(電流・電圧センサー): 0x40 ~ 0x45(ピンで選択可能)
  • INA3221(電流モニター): 0x40(固定)
✅ ADC(アナログ→デジタル変換)
  • ADS1115: 0x48 ~ 0x4B(ピンで選択可能)
✅ DAC(デジタル→アナログ変換)
  • MCP4725: 0x60 または 0x61(ピンで選択可能)
✅ タッチセンサー
  • MPR121: 0x5A ~ 0x5D(ピンで選択可能)
✅ モータードライバ
  • PCA9685(PWM制御)**: 0x40(固定)
✅ EEPROM
  • AT24C32 / AT24C64: 0x50 ~ 0x57(ピンで選択可能)
こんな感じ。

気長に付き合いたいと思います。








2025MAR06 arudino と D68Z

2025-03-06 08:08:46 | arudino

DXワールド スクショ

〇D68Z コモロス
アフリカの島

18Mhzのロングパスではお会いできました
たが、その他のバンドではさっぱり聞こえま
せん。

取りこぼしが一杯あるエンティティなので、
毎日 ワッチしておりますが、

今も14Mhzを聞いてます。朝方5回程SPで
入感しましたが、その後は全く
降って来ません。

SP・LPとアンテナを振り向けているので
すが、だめです。 
諦めないでワッチします。

〇Chatgpt
OLEDのディスプレイとRTCの組み合わせ
までは上手く行きました。

時計が21秒ほどずれているのでDL8213
を使って補正しようと取り組みましたが、全く
うまく行かない。 
挫折
と言うことで今日はBME280を接続して
SDカードにデータを残すことのプロジェクト
を進めたいと思います。

Chatgptもライブラリーの制限事項を
忘れるようで、同じ間違いを何度もします。
その度に指摘するようにしてます。

コンパイルする前に気が付けばいいのですが
そこまでのスキルがないので、
時間だけが経過して行きます。

今もスケッチをコンパイルしてarudinoに転送
したところ、4分も早い状況です。
さて、手始めにこの4分を修正しなくては。

頑張ります。
NTPでも正確に設定できなかったので、何
か策はあるのかな?


時間で勝負!






2025MAR03 ESP32 と arudino

2025-03-03 11:23:02 | arudino

ESP32のコンピュータが届きました。
早速、arudino IDEにESP関連のファ
イルをダウンロードして使おうとしてま
すが、
うーん
まだ、使えません。

ESP32がUSB上で認識されません。

少し悩んでみます。


〇arudino
SDカード+BME280+DL8213
+SSD1331の4種類の組み合わせの
物を作成中です。
温度・湿度・気圧・時間・記録の物です。

配線は終わりましたので、これからスケッ
チをコンピュータに転送したいと思います。
スケッチの作成者はもちろん、ChatGPTで
す。

このAIは賢い
つくづく思います。

DL8213にはP、TP、TN、G、V
Fの端子がありますが、これをSPI通信
で使う場合のSCKは何番?
MOSIは何番? MISOは何番? と聞
くと答えてくれます。

凄く助かる。
今までなら、インターネットで調べなくて
はならないものなんですけど、AIは教え
てくれます。 感謝!

※DL8213 JJYの60KHZの信
号を受信します。まだ、試してないのでど
んな物かは不明です。