139 lines
4.9 KiB
C
139 lines
4.9 KiB
C
#ifndef __MAIN_H
|
||
#define __MAIN_H
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
#include "stm32f1xx_hal.h"
|
||
|
||
/* USER CODE BEGIN Includes */
|
||
#include "air780e.h"
|
||
#include "log.h"
|
||
/* USER CODE END Includes */
|
||
|
||
void Error_Handler(void);
|
||
|
||
/* USER CODE BEGIN Private defines */
|
||
#define Rx_Max 8192 /* USART3 DMA 接收缓冲:OTA 分块 3KB + 头部/尾部突发约 3.1KB,留足余量 */
|
||
extern uint16_t Rx_Len;
|
||
extern uint8_t Rx_Buf[Rx_Max];
|
||
extern UART_HandleTypeDef huart3;
|
||
|
||
/* EEPROM配置魔数: 自动检测EEPROM是否已初始化 */
|
||
#define EEPROM_MAGIC 0xDEADBEEF// 0xDE123456//0xDEADBEEF
|
||
|
||
/*===== 产品型号配置 =====
|
||
* 同一套板子适配两种产品,编译前在这里二选一:
|
||
* 1 = 智能水产投料机:接 RS485 磅秤,feeding 指令按 onceWt 定量自动投喂,
|
||
* 带重量反增/超时保护,sw1 指令被忽略(投喂只能走 feeding)
|
||
* 0 = 基础四路继电器:不接磅秤,feeding/sw1 指令直接开关投喂继电器 1,
|
||
* 由平台侧自行计时控制
|
||
*/
|
||
/*===== 固件版本号(开机横幅打印用,改版本只动这里) =====*/
|
||
#define FIRMWARE_VERSION_STR "1.5.8"
|
||
|
||
#define PRODUCT_WITH_FEED_SCALE 1 /* 默认带秤(EEPROM 172 可改,蓝牙 SCALE0/1 切换) */
|
||
|
||
/*===== GPS 定位配置 =====
|
||
* 同一套固件适配是否带 GNSS 的模组,编译前在这里二选一:
|
||
* 1 = 启用北斗/GPS 定位周期上报(仅 4G 通道,需 Air780EG 模组)
|
||
* 0 = 不获取不上传(纯 Air780E 无 GNSS 时用,不产生任何 GPS 相关 AT 交互)
|
||
*/
|
||
#define PRODUCT_WITH_GPS 1
|
||
|
||
/*===== MQTT 默认配置 =====*/
|
||
////锦鲤塘增氧投料机-02
|
||
//#define MQTT_CLIENT_ID "3eb3d1e51846f296"
|
||
//#define MQTT_USERNAME "766990788193702677"
|
||
//#define MQTT_PASSWORD "a0207984565267a5"
|
||
|
||
////测试平台的ID - 01
|
||
//#define MQTT_CLIENT_ID "4fbaf68ca378b72b"
|
||
//#define MQTT_USERNAME "698227263545354343"
|
||
//#define MQTT_PASSWORD "b612c2839c135934"
|
||
|
||
////RTOS版-投料机-无蠕变磅秤-01
|
||
//#define MQTT_CLIENT_ID "46c080c385c3652e"
|
||
//#define MQTT_USERNAME "766990788193702677"
|
||
//#define MQTT_PASSWORD "6ae9622b7034326b"
|
||
|
||
//RTOS版-投料机-无蠕变磅秤-03
|
||
#define MQTT_CLIENT_ID "5791a8579d459290"
|
||
#define MQTT_USERNAME "766990788193702677"
|
||
#define MQTT_PASSWORD "5f6cd7748ec9db35"
|
||
|
||
#define MQTT_SERVER_IP "58.17.14.95"
|
||
#define MQTT_SERVER_PORT 1880
|
||
#define MQTT_TOPIC "/iot/data/down/"
|
||
|
||
/*===== 蓝牙名称配置 =====
|
||
* 上电时通过 AT 命令设置 HLK-B40 的蓝牙名称(掉电保存),
|
||
* 多台设备现场用名字区分;手机列表大约只显示前 10 位 */
|
||
#define BLE_NAME "Bt1"
|
||
|
||
/*===== 蓝牙发射功率(AT+RFPOWER) =====
|
||
* 1~18 共 18 级,出厂默认 8。多台设备同场所时调小(如 1~3),
|
||
* 缩短可搜索距离,避免互相认错设备。模块内保存,改宏后下次开机自动重设一次 */
|
||
#define BLE_TX_POWER 1
|
||
|
||
/*===== HLW8032 电量计量系数(UART5 PD2 接收,只上报累计电量) =====
|
||
* 电压通道: ZMPT107-1(2mA:2mA),初级 220V 串 100K,次级并 49.9R
|
||
* -> 电压系数 = (100K/49.9)/1000 = 2.004
|
||
* 电流通道: CT 100A/100mA(1000:1),输出并 2R -> 等效采样电阻 0.002R
|
||
* -> 电流系数 = 1/(0.002*1000) = 0.5
|
||
* 改电阻/互感器只需改这两个宏(公式见 HLW8032 手册电量计算一节) */
|
||
#define HLW_U_COEF 2.004f
|
||
#define HLW_I_COEF 0.5f
|
||
/* 电流零点偏移(A):空载时电流通道的零漂读数,显示时减去并钳位到 0。
|
||
* 换板子/换 CT 后空载看一下读数,按实际调整 */
|
||
#define HLW_I_ZERO_A 0.02f
|
||
/* 功率零漂处理:空载噪声底约 0.4~2W 且会跳动,单纯减偏移压不住尖峰。
|
||
* 读数低于死区直接显示 0,高于死区再减去偏移 */
|
||
#define HLW_P_DEAD_W 2.0f /* 功率死区(W):低于此值显示 0 */
|
||
#define HLW_P_ZERO_W 0.5f /* 功率偏移(W):超过死区后减去 */
|
||
|
||
/*===== 蓝牙 GATT UUID 配置(透传服务)=====
|
||
* BLE_UUID_CUSTOM = 1:上电把三个 UUID 设为下面的值(重启模块生效)。
|
||
* = 0:保持模块出厂 UUID(fff0/fff1/fff2),仅海凌科自家 APP 可用
|
||
* 当前配置:FFE0/FFE1(HM-10/JDY-31 同款,收发共用 FFE1 单特征),
|
||
* 常见 BLE 串口 APP 都能连。Nordic NUS 备选:6e400001/6e400003/6e400002 */
|
||
#define BLE_UUID_CUSTOM 1
|
||
#define BLE_UUID_SERVICE "0000ffe000001000800000805f9b34fb" /* FFE0 服务 */
|
||
#define BLE_UUID_TX "0000ffe100001000800000805f9b34fb" /* FFE1 模块->手机 */
|
||
#define BLE_UUID_RX "0000ffe100001000800000805f9b34fb" /* FFE1 手机->模块(同特征双向) */
|
||
|
||
/* MQTT配置结构体 (存储在AT24C02 EEPROM中) */
|
||
typedef struct {
|
||
char ClientID[20];
|
||
char Username[20];
|
||
char Passward[20];
|
||
char ServerIP[20];
|
||
char Topic[20];
|
||
uint16_t ServerPort;
|
||
uint8_t Relay_State[7]; /* [1..4]继电器状态, [0]保留 */
|
||
uint32_t Magic; /* 魔数, 检测EEPROM是否已初始化 */
|
||
uint16_t Ver; /* OTA固件版本号, 断电保持 */
|
||
} MqttInfo_Str;
|
||
|
||
#define MQTT_STRUCT_LEN sizeof(MqttInfo_Str)
|
||
|
||
/*===== W25Q64 外部 Flash 引脚(软件 SPI) =====*/
|
||
#define W25Q64_CS_PIN GPIO_PIN_4
|
||
#define W25Q64_CS_PORT GPIOB
|
||
#define W25Q64_CLK_PIN GPIO_PIN_3
|
||
#define W25Q64_CLK_PORT GPIOB
|
||
#define W25Q64_DO_PIN GPIO_PIN_5 /* Flash DO -> MCU 输入 */
|
||
#define W25Q64_DO_PORT GPIOB
|
||
#define W25Q64_DI_PIN GPIO_PIN_15 /* MCU DI -> Flash 输入 */
|
||
#define W25Q64_DI_PORT GPIOA
|
||
|
||
extern MqttInfo_Str MqttInfoStr;
|
||
/* USER CODE END Private defines */
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif /* __MAIN_H */
|