173 lines
4.5 KiB
C
173 lines
4.5 KiB
C
#ifndef CONFIG_H
|
|
#define CONFIG_H
|
|
|
|
#include <Arduino.h>
|
|
|
|
// -------------------- پیکربندی --------------------
|
|
#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 <Arduino.h>
|
|
|
|
// // -------------------- پیکربندی --------------------
|
|
// #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
|
|
|