#!/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" # ==================== 服务器配置 ==================== # SERVER_IP = "stcp.shelingxingqiu.com" SERVER_IP = "www.shelingxingqiu.com" SERVER_PORT = 50005 HEARTBEAT_INTERVAL = 15 # 心跳间隔(秒) # ===== TCP over SSL(TLS) 配置 ===== USE_TCP_SSL = False # True=按手册走 MSSLCFG/MIPCFG 绑定 SSL TCP_LINK_ID = 2 # 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" # ==================== 文件路径配置 ==================== CONFIG_FILE = "/root/laser_config.json" LOG_FILE = "/maixapp/apps/t11/app.log" BACKUP_BASE = "/maixapp/apps/t11/backups" # ==================== 硬件配置 ==================== # WiFi模块开关(True=有WiFi模块,False=无WiFi模块) HAS_WIFI_MODULE = True # 根据实际硬件情况设置 # UART配置 UART4G_DEVICE = "/dev/ttyS2" UART4G_BAUDRATE = 115200 DISTANCE_SERIAL_DEVICE = "/dev/ttyS1" DISTANCE_SERIAL_BAUDRATE = 9600 # 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 INA226_ADDR = 0x40 REG_CONFIGURATION = 0x00 REG_BUS_VOLTAGE = 0x02 REG_CURRENT = 0x04 # 电流寄存器 REG_CALIBRATION = 0x05 CALIBRATION_VALUE = 0x1400 # ==================== 空气传感器配置 ==================== ADC_TRIGGER_THRESHOLD = 2500 # TODO:只是用于测试,最终需要改为正常值 AIR_PRESSURE_lOG = False # TODO: 在正式环境中关闭 # ADC配置 ADC_CHANNEL = 0 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 # 激光测距响应数据长度(字节) 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=不绘制) # ==================== 视觉检测配置 ==================== FOCAL_LENGTH_PIX = 2250.0 # 焦距(像素) REAL_RADIUS_CM = 20 # 靶心实际半径(厘米) # 图像清晰度检测配置 IMAGE_SHARPNESS_THRESHOLD = 100.0 # 清晰度阈值,低于此值认为图像模糊 # 清晰图像通常 > 200,模糊图像通常 < 100 # 激光与摄像头物理位置配置 LASER_CAMERA_OFFSET_CM = 1.4 # 激光在摄像头下方的物理距离(厘米),正值表示激光在摄像头下方 IMAGE_CENTER_X = 320 # 图像中心 X 坐标 IMAGE_CENTER_Y = 240 # 图像中心 Y 坐标 # ==================== 显示配置 ==================== LASER_COLOR = (0, 255, 0) # RGB颜色 LASER_THICKNESS = 1 LASER_LENGTH = 2 # ==================== 图像保存配置 ==================== SAVE_IMAGE_ENABLED = True # 是否保存图像(True=保存,False=不保存) PHOTO_DIR = "/root/phot" # 照片存储目录 MAX_IMAGES = 1000 SHOW_CAMERA_PHOTO_WHILE_SHOOTING = False # 是否在拍摄时显示摄像头图像(True=显示,False=不显示),建议在连着USB测试过程中打开 # ==================== OTA配置 ==================== MAX_BACKUPS = 5 LOG_MAX_BYTES = 10 * 1024 * 1024 # 10MB LOG_BACKUP_COUNT = 5 # ==================== 引脚映射配置 ==================== # 无WiFi模块的引脚映射(I2C1) PIN_MAPPINGS_NO_WIFI = { "A18": "UART1_RX", "A19": "UART1_TX", "A29": "UART2_RX", "A28": "UART2_TX", "P18": "I2C1_SCL", "P21": "I2C1_SDA", } # 有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