版本协议

Public Domain

标签
专业版
#第十届立创电赛#车牌识别模型调用与道闸控制系统集成

创建时间:2周前

41 0

视频

描述

<div> <p style="line-height:1.8;">注:* 为必填项</p> <p style="line-height:1.8;"><strong><span style="color:#0093e6;">请在报名阶段填写 ↓</span></strong></p> <p style="line-height:1.8;"> </p> <h3 style="line-height:1.8;">* 1、项目功能介绍</h3> <hr> <p style="line-height:1.8;">道闸控制技术是智能交通和出入口管理的重要组成部分,广泛应用于停车场、高速公路收费站、小区出入口等场景。其发展经历了机械式、电动式、自动化控制,到如今的智能化、联网化阶段,不断提高通行效率与安全性。</p> <p style="line-height:1.8;">可以通过完成此项目主要可以学习到UDP的发送和接收</p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"> </p> <h3 style="line-height:1.8;">*2、项目属性</h3> <hr> <p style="line-height:1.8;">首次公开。是原创。未曾在其他比赛中获奖。未在学校参加过答辩。</p> <p style="line-height:1.8;"> </p> <h3 style="line-height:1.8;">* 3、开源协议</h3> <hr> <p style="line-height:1.8;">Public Domain</p> <p> </p> <p style="line-height:1.8;"><strong><span style="color:#0093e6;">请在竞赛阶段填写 ↓</span></strong></p> <p style="line-height:1.8;"> </p> <h3 style="line-height:1.8;">*4、硬件部分</h3> <hr> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/OrV1ULuIk7xvapBEQPgIPY2sAzhlRiSF2GmWFXdO.png" width="298" height="220" alt="OrV1ULuIk7xvapBEQPgIPY2sAzhlRiSF2GmWFXdO.png"></p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"> </p> <h3 style="line-height:1.8;">*5、软件部分</h3> <hr> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;">WiFi:</p> <p style="line-height:1.8;">WiFi连接逻辑 1.配置热点参数:SSID=“ssid”,密码 =“password”,加密方式 = PSK; 2.调用 ConnectToHotspot() 接口连接 WiFi; 3.连接成功后获取设备 IP(g_device_ip),失败则 OLED 显示 “Connect to AP failed”。 关键代码关联 // 热点配置宏定义 #define PARAM_HOTSPOT_SSID “ssid" #define PARAM_HOTSPOT_PSK "password" // 连接核心函数 int netId = ConnectToHotspot(&config); 作用: 为了打通传输层,便于后续UDP信息的传输</p> <p style="line-height:1.8;">UDP指令接收 + 数据解析:</p> <p style="line-height:1.8;">通信参数 本地接收端口:9999(UDP_RECV_PORT); 支持指令格式: 基础指令:on(舵机开)、off(舵机关)、down(定时 10 秒); 数据指令:go 汉字索引 车牌号 状态(如go 6 dhdk444 0,对应 “蒙 + dhdk444 + 通行”)。 数据解析流程 接收 UDP 数据后,用 strtok() 按空格拆分字段(最大 5 个字段); 校验字段合法性(如汉字索引 0-33,状态 0-2); 按字段类型执行逻辑(指令→舵机,数据→OLED 显示)。 关键代码片段: // 字段拆分核心 fields[field_count] = strtok(recv_buf, " "); while (fields[field_count] != NULL && field_count</p> <p style="line-height:1.8;">整体概述</p> <p style="line-height:1.8;">开发板上电会自动连接网络,连接成功测试UDP通讯,成功则在OLED上显示send:connecting 如右图所示: 首行显示 UDP客户端测试 第二行 显示UDP是否建立连接 第三行 显示舵机状态 第四行 显示车牌号和是否通行 如若数据格式不对,则会舍弃此次数据, 保持原有设置,防止因错误数据影响 造成误判</p> <div> <div>// 主线程函数</div> <div>static void NetDemoTask(void *arg)</div> <div>{</div> <div>    (void)arg;</div> <div>   </div> <div>    int control_temp = 0;</div> <div>    // 定义热点配置</div> <div>    WifiDeviceConfig config = {0};</div> <br> <div>    // 设置热点配置中的SSID</div> <div>    strcpy(config.ssid, PARAM_HOTSPOT_SSID);</div> <br> <div>    // 设置热点配置中的密码</div> <div>    strcpy(config.preSharedKey, PARAM_HOTSPOT_PSK);</div> <br> <div>    // 设置热点配置中的加密方式(Wi-Fi security types)</div> <div>    config.securityType = PARAM_HOTSPOT_TYPE;</div> <br> <div>    // 等待100ms</div> <div>    osDelay(10);</div> <br> <div>    // 连接到热点</div> <div>    int netId = ConnectToHotspot(&config);</div> <br> <div>    // 检查是否成功连接到热点</div> <div>    if (netId <div>    {</div> <div>        // 连接到热点失败</div> <div>        printf("ConnectToAP failed\n");</div> <div>        OledFillScreen(0x00);                                    // 输出错误信息</div> <div>        OledShowString(0, 0, "Connect to AP failed", FONT8x16);</div> <div>        return;</div> <div>    }</div> <div>   </div> <div>    // 连接到热点成功,显示连接成功信息</div> <div>    printf("AP:connected\n");</div> <div>    OledFillScreen(0x00);</div> <div>    OledShowString(0, 0, "AP:connected", FONT8x16);</div> <div>   </div> <div>    // 运行UDP客户端测试</div> <div>    UdpClientTest(PARAM_SERVER_ADDR, PARAM_SERVER_PORT);</div> <br> <div>    // 断开热点连接</div> <div>    printf("disconnect to AP ...\r\n");</div> <div>    DisconnectWithHotspot(netId);</div> <div>    printf("disconnect to AP done!\r\n");</div> <div>}</div> <br> <div>// 入口函数</div> <div>static void NetDemoEntry(void)</div> <div>{</div> <div>    switch_init();</div> <div>    interrupt_monitor();</div> <div>    // 初始化OLED</div> <div>    OledInit();</div> <br> <div>    // 全屏填充黑色</div> <div>    OledFillScreen(0x00);</div> <br> <div>    // OLED显示APP标题</div> <div>    OledShowString(0, 0, "UdpClient Test", FONT8x16);</div> <br><br> <div>    // 定义线程属性</div> <div>    osThreadAttr_t attr;</div> <div>    attr.name = "NetDemoTask";</div> <div>    attr.attr_bits = 0U;</div> <div>    attr.cb_mem = NULL;</div> <div>    attr.cb_size = 0U;</div> <div>    attr.stack_mem = NULL;</div> <div>    attr.stack_size = 10240;</div> <div>    attr.priority = osPriorityNormal;</div> <div>    // 创建线程</div> <div>    if (osThreadNew(NetDemoTask, NULL, &attr) == NULL)</div> <div>    {</div> <div>        printf("[NetDemoEntry] Falied to create NetDemoTask!\n");</div> <div>    }</div> <div>}</div> </div> <div> <div>extern int control_flag ;</div> <h3>*6、BOM清单</h3> <p><img src="//image.lceda.cn/pullimage/JNPPgXgyUG8Ew34W3aQkKtVPVAWAwPYieufr85Ga.png" alt="JNPPgXgyUG8Ew34W3aQkKtVPVAWAwPYieufr85Ga.png"></p> <br> <h3>*7、大赛LOGO验证</h3> <p><img src="//image.lceda.cn/pullimage/ZR4wQAEFizploG55j0rC5vD1f44OosuTZHAfltCU.jpeg" width="153" height="204" alt="ZR4wQAEFizploG55j0rC5vD1f44OosuTZHAfltCU.jpeg"></p> <br> <div>   </div> </div> </div> </div>

文档

BOM

暂无

附件

附件名 下载
barrier_gate_client.zip

评论(0)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow