Files
archery/config.py

146 lines
6.0 KiB
Python
Raw Normal View History

2026-01-12 11:39:27 +08:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
系统配置常量
这些值在程序运行期间基本不变或只在配置时改变
"""
from version import VERSION
# ==================== 应用配置 ====================
APP_VERSION = VERSION
APP_DIR = "/maixapp/apps/t11"
LOCAL_FILENAME = "/maixapp/apps/t11/main_tmp.py"
# ==================== 服务器配置 ====================
2026-01-20 18:40:54 +08:00
SERVER_IP = "stcp.shelingxingqiu.com"
# SERVER_IP = "www.shelingxingqiu.com"
2026-01-12 11:39:27 +08:00
SERVER_PORT = 50005
HEARTBEAT_INTERVAL = 15 # 心跳间隔(秒)
# ==================== HTTP配置 ====================
HTTP_URL = "http://ws.shelingxingqiu.com"
HTTP_API_PATH = "/home/shoot/device_fire/arrow/fire"
2026-01-20 18:40:54 +08:00
# config.py 里新增(建议放到“服务器配置”附近)
# ===== TCP over SSL(TLS) 配置 =====
USE_TCP_SSL = True # True=按手册走 MSSLCFG/MIPCFG 绑定 SSL
TCP_LINK_ID = 1 #
TCP_SSL_PORT = 443 # TLS 端口(不一定必须 443以服务器为准
# SSL profile
SSL_ID = 1 # ssl_id=1
SSL_AUTH_MODE = 1 # 1=单向认证验证服务器2=双向
SSL_VERIFY_MODE = 1 # 1=写入并使用 CA 证书0=不验(仅测试加密,风险大)
SSL_CERT_FILENAME = "test.cer" # 模组里证书名MSSLCERTWR / MSSLCFG="cert" 用)
SSL_CERT_PATH = "/root/test.cer" # 设备文件系统里 CA 证书路径(你自己放进去)
# MIPOPEN 末尾的参数在不同固件里含义可能不同;按你手册例子保留
MIPOPEN_TAIL = ",,0"
2026-01-12 11:39:27 +08:00
# ==================== 文件路径配置 ====================
CONFIG_FILE = "/root/laser_config.json"
LOG_FILE = "/maixapp/apps/t11/app.log"
BACKUP_BASE = "/maixapp/apps/t11/backups"
# ==================== 硬件配置 ====================
2026-01-20 11:25:17 +08:00
# WiFi模块开关True=有WiFi模块False=无WiFi模块
HAS_WIFI_MODULE = True # 根据实际硬件情况设置
2026-01-12 11:39:27 +08:00
# UART配置
UART4G_DEVICE = "/dev/ttyS2"
UART4G_BAUDRATE = 115200
DISTANCE_SERIAL_DEVICE = "/dev/ttyS1"
DISTANCE_SERIAL_BAUDRATE = 9600
2026-01-20 11:25:17 +08:00
# I2C配置根据WiFi模块开关自动选择
# 无WiFi模块I2C_BUS_NUM = 1引脚P18(I2C1_SCL), P21(I2C1_SDA)
# 有WiFi模块I2C_BUS_NUM = 5引脚A15(I2C5_SCL), A27(I2C5_SDA)
I2C_BUS_NUM = 5 if HAS_WIFI_MODULE else 1
2026-01-12 11:39:27 +08:00
INA226_ADDR = 0x40
REG_CONFIGURATION = 0x00
REG_BUS_VOLTAGE = 0x02
REG_CURRENT = 0x04 # 电流寄存器
REG_CALIBRATION = 0x05
CALIBRATION_VALUE = 0x1400
# ADC配置
ADC_CHANNEL = 0
ADC_TRIGGER_THRESHOLD = 3000
ADC_LASER_THRESHOLD = 3000
# ==================== 激光配置 ====================
MODULE_ADDR = 0x00
LASER_ON_CMD = bytes([0xAA, MODULE_ADDR, 0x01, 0xBE, 0x00, 0x01, 0x00, 0x01, 0xC1])
LASER_OFF_CMD = bytes([0xAA, MODULE_ADDR, 0x01, 0xBE, 0x00, 0x01, 0x00, 0x00, 0xC0])
DISTANCE_QUERY_CMD = bytes([0xAA, MODULE_ADDR, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0x21]) # 激光测距查询命令
DISTANCE_RESPONSE_LEN = 13 # 激光测距响应数据长度(字节)
2026-01-20 11:25:17 +08:00
DEFAULT_LASER_POINT = (320, 252) # 默认激光中心点
# 硬编码激光点配置
HARDCODE_LASER_POINT = True # 是否使用硬编码的激光点True=使用硬编码值False=使用校准值)
HARDCODE_LASER_POINT_VALUE = (320, 252) # 硬编码的激光点坐标(315, 263) # # 硬编码的激光点坐标 (x, y)
# 激光点检测配置
LASER_DETECTION_THRESHOLD = 140 # 红色通道阈值默认120可调整范围建议100-150
LASER_RED_RATIO = 1.5 # 红色相对于绿色/蓝色的倍数要求默认1.5可调整范围建议1.3-2.0
LASER_SEARCH_RADIUS = 50 # 搜索半径像素从图像中心开始搜索默认20限制激光点不能偏离中心太远
LASER_MAX_DISTANCE_FROM_CENTER = 50 # 激光点距离中心的最大允许距离像素超过此距离则拒绝默认20
LASER_OVEREXPOSED_THRESHOLD = 200 # 过曝红色判断阈值默认200接近白色时的阈值
LASER_OVEREXPOSED_DIFF = 10 # 过曝红色时r 与 g/b 的最小差值默认10
LASER_REQUIRE_IN_ELLIPSE = False # 是否要求激光点必须在黄心椭圆内True=必须False=不要求)
LASER_USE_ELLIPSE_FITTING = True # 是否使用椭圆拟合方法查找激光点True=椭圆拟合更准确False=最亮点方法)
LASER_MIN_AREA = 5 # 激光点区域的最小面积像素小于此值认为是噪声默认5
LASER_DRAW_ELLIPSE = True # 是否在图像上绘制激光点的拟合椭圆True=绘制False=不绘制)
2026-01-12 11:39:27 +08:00
# ==================== 视觉检测配置 ====================
FOCAL_LENGTH_PIX = 2250.0 # 焦距(像素)
REAL_RADIUS_CM = 20 # 靶心实际半径(厘米)
2026-01-20 11:25:17 +08:00
# 图像清晰度检测配置
IMAGE_SHARPNESS_THRESHOLD = 100.0 # 清晰度阈值,低于此值认为图像模糊
# 清晰图像通常 > 200模糊图像通常 < 100
# 激光与摄像头物理位置配置
LASER_CAMERA_OFFSET_CM = 1.4 # 激光在摄像头下方的物理距离(厘米),正值表示激光在摄像头下方
IMAGE_CENTER_X = 320 # 图像中心 X 坐标
IMAGE_CENTER_Y = 240 # 图像中心 Y 坐标
2026-01-12 11:39:27 +08:00
# ==================== 显示配置 ====================
2026-01-20 11:25:17 +08:00
LASER_COLOR = (0, 255, 0) # RGB颜色
2026-01-12 11:39:27 +08:00
LASER_THICKNESS = 1
LASER_LENGTH = 2
# ==================== 图像保存配置 ====================
SAVE_IMAGE_ENABLED = True # 是否保存图像True=保存False=不保存)
PHOTO_DIR = "/root/phot" # 照片存储目录
# ==================== OTA配置 ====================
MAX_BACKUPS = 5
LOG_MAX_BYTES = 10 * 1024 * 1024 # 10MB
LOG_BACKUP_COUNT = 5
# ==================== 引脚映射配置 ====================
2026-01-20 11:25:17 +08:00
# 无WiFi模块的引脚映射I2C1
PIN_MAPPINGS_NO_WIFI = {
2026-01-12 11:39:27 +08:00
"A18": "UART1_RX",
"A19": "UART1_TX",
"A29": "UART2_RX",
"A28": "UART2_TX",
"P18": "I2C1_SCL",
"P21": "I2C1_SDA",
}
2026-01-20 11:25:17 +08:00
# 有WiFi模块的引脚映射I2C5
PIN_MAPPINGS_WITH_WIFI = {
"A18": "UART1_RX",
"A19": "UART1_TX",
"A29": "UART2_RX",
"A28": "UART2_TX",
"A15": "I2C5_SCL",
"A27": "I2C5_SDA",
}
# 根据WiFi模块开关选择引脚映射
PIN_MAPPINGS = PIN_MAPPINGS_WITH_WIFI if HAS_WIFI_MODULE else PIN_MAPPINGS_NO_WIFI