#ifndef CONFIG_H #define CONFIG_H #include // -------------------- پیکربندی -------------------- #define FLASH_CS PA4 #define FLASH_MOSI PA7 #define FLASH_MISO PA6 #define FLASH_SCK PA5 #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 #define MQ7_PIN PA2 #define SDA_PIN PB9 #define SCL_PIN PB8 #define PWRKEY_PIN PB5 #define SENSOR_READ_INTERVAL 10000 #define POWER_PIN PA1 #define VOLTAGE_DIVIDER_PIN PA0 // پین خواندن ولتاژ #define VOLTAGE_DIVIDER_RATIO 2.0 // نسبت تقسیم (R1=R2=10k => نسبت = 2) #define ADC_REF_VOLTAGE 3.3 // ولتاژ مرجع ADC در STM32 (معمولاً 3.3V) #define ADC_RESOLUTION 4096 // رزولوشن ADC 12-bit = 4096 // -------------------- آدرس‌های حافظه -------------------- #define CONFIG_ADDRESS 0x000000 #define DATA_ADDRESS 0x010000 // -------------------- آدرس حافظه داخلی STM32 -------------------- #define INTERNAL_CONFIG_ADDR 0x8007800 // آخرین صفحه فلش در STM32F103C8 // -------------------- انوم‌ها -------------------- enum SIMType { SIM_UNKNOWN = 0, SIM_HAMRAHE_AVAL = 1, SIM_IRANCELL = 2, SIM_RIGHTEL = 3 }; // -------------------- ساختارها -------------------- struct DeviceConfig { char signature[4]; char deviceId[16]; char serverPhoneNumber[16]; char serverUrl[64]; unsigned long uploadInterval; unsigned long smsInterval; unsigned long saveInterval; SIMType simType; bool smsEnabled; bool verified; bool valid; }; struct SensorData { float temperature; float humidity; float coPPM; float lightLux; unsigned long timestamp; uint8_t sent; float volage; int power; }; // -------------------- توابع کمکی -------------------- inline String simTypeToString(SIMType type) { switch(type) { case SIM_HAMRAHE_AVAL: return "Hamrah Aval"; case SIM_IRANCELL: return "Irancell"; case SIM_RIGHTEL: return "Rightel"; default: return "Unknown"; } } inline String simTypeToAPN(SIMType type) { switch(type) { case SIM_HAMRAHE_AVAL: return "mcinet"; case SIM_IRANCELL: return "mtnirancell"; case SIM_RIGHTEL: return "rightel"; default: return "mcinet"; } } inline String generateVerificationCode(String tokenCode) { long token = tokenCode.toInt(); long verification = (token * 7 + 12345) % 100000; char buffer[6]; sprintf(buffer, "%05ld", verification); return String(buffer); } #endif // CONFIG_H // #ifndef CONFIG_H // #define CONFIG_H // #include // // -------------------- پیکربندی -------------------- // #define FLASH_CS PA4 // #define FLASH_MOSI PA7 // #define FLASH_MISO PA6 // #define FLASH_SCK PA5 // #define SCREEN_WIDTH 128 // #define SCREEN_HEIGHT 64 // #define OLED_RESET -1 // #define MQ7_PIN PA2 // #define SDA_PIN PB9 // #define SCL_PIN PB8 // #define PWRKEY_PIN PB5 // #define SENSOR_READ_INTERVAL 60000 // // -------------------- آدرس‌های حافظه -------------------- // #define CONFIG_ADDRESS 0x000000 // #define DATA_ADDRESS 0x010000 // // -------------------- انوم‌ها -------------------- // enum SIMType { SIM_UNKNOWN = 0, SIM_HAMRAHE_AVAL = 1, SIM_IRANCELL = 2, SIM_RIGHTEL = 3 }; // // -------------------- ساختارها -------------------- // struct DeviceConfig { // char signature[4]; // char deviceId[16]; // char serverPhoneNumber[16]; // char serverUrl[64]; // unsigned long uploadInterval; // unsigned long smsInterval; // unsigned long saveInterval; // SIMType simType; // bool smsEnabled; // bool verified; // bool valid; // }; // struct SensorData { // float temperature; // float humidity; // float coPPM; // float lightLux; // unsigned long timestamp; // uint8_t sent; // }; // // -------------------- توابع کمکی -------------------- // inline String simTypeToString(SIMType type) { // switch(type) { // case SIM_HAMRAHE_AVAL: return "Hamrah Aval"; // case SIM_IRANCELL: return "Irancell"; // case SIM_RIGHTEL: return "Rightel"; // default: return "Unknown"; // } // } // inline String simTypeToAPN(SIMType type) { // switch(type) { // case SIM_HAMRAHE_AVAL: return "mcinet"; // case SIM_IRANCELL: return "mtnirancell"; // case SIM_RIGHTEL: return "rightel"; // default: return "mcinet"; // } // } // inline String generateVerificationCode(String tokenCode) { // long token = tokenCode.toInt(); // long verification = (token * 7 + 12345) % 100000; // char buffer[6]; // sprintf(buffer, "%05ld", verification); // return String(buffer); // } // #endif // CONFIG_H