feat: sketch scaffold with I2C bus bring-up and scanner

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 19:30:34 +07:00
co-authored by Claude Opus 4.8
parent ffb2ac3756
commit 074bc99875
2 changed files with 61 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
#include <Arduino.h>
#include <Wire.h>
#include "config.h"
static void i2cScan() {
Serial.println(F("I2C scan:"));
byte found = 0;
for (byte addr = 1; addr < 127; addr++) {
Wire.beginTransmission(addr);
if (Wire.endTransmission() == 0) {
Serial.printf(" device at 0x%02X\n", addr);
found++;
}
}
Serial.printf(" %d device(s) found\n", found);
}
void setup() {
Serial.begin(115200);
delay(200);
Serial.println(F("\n=== Weather Predictor booting ==="));
Wire.begin(I2C_SDA, I2C_SCL); // MUST come before any I2C driver begin()
i2cScan();
}
void loop() {
}
+34
View File
@@ -0,0 +1,34 @@
#pragma once
#include <Arduino.h>
// ---- TFT (hardware SPI: SCK=D5, MOSI=D7) ----
#define TFT_CS D8
#define TFT_DC D3
#define TFT_RST D4
#define TFT_BLK D2
// ---- I2C (BMP180 + DS3231 share this bus) ----
#define I2C_SDA D6
#define I2C_SCL D1
#define BMP180_ADDR 0x77
#define DS3231_ADDR 0x68
// ---- Scheduler intervals (ms) ----
// NOTE: for quick bench testing you may temporarily shrink these.
static const unsigned long SAMPLE_INTERVAL_MS = 60UL * 1000UL; // read sensor / redraw
static const unsigned long HISTORY_INTERVAL_MS = 5UL * 60UL * 1000UL; // store a history sample
static const unsigned long FLUSH_INTERVAL_MS = 15UL * 60UL * 1000UL; // flush history to flash
// ---- History buffer ----
static const int HISTORY_SIZE = 288; // 24 h @ 5 min
static const float TREND_THRESHOLD_HPA = 1.6f; // >|1.6| hPa / 3 h = rising/falling
// ---- Defaults (editable via web) ----
static const float DEFAULT_ALTITUDE_M = 150.0f;
static const int DEFAULT_TZ_OFFSET_MIN = 7 * 60; // UTC+7
static const float DEFAULT_LAT = 54.9870f;
static const float DEFAULT_LON = 82.8730f;
// ---- Network ----
#define NTP_SERVER "pool.ntp.org"
#define AP_NAME "WeatherPredictor-Setup"