描述
<h3 style="line-height:1.8;"> 1、项目功能介绍</h3>
<ol>
<li>
<p>本工程是基于立创·开源SF32LB52模组所设计的桌面情绪站,它可以通过自带的显示屏显示他的情绪,并与你交流。本产品还支持一键语音唤醒和按键唤醒,当你主动与他说再见或者,在规定时间内没有与他进行交流,模组会自动休眠以节省电量。</p>
<p>特性1:本产品通过后台修改,可以为我们的ai助手设置不同的性格,并可以为其赋予特定的身份来满足我们的需要。</p>
<p>特性2:本产品支持自定义屏幕尺寸,并预留一路按键为后续开发升级做准备。</p>
<p>特性3:本产品使用蓝牙模块来获取网络,功耗低。</p>
</li>
</ol>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">2、项目属性</h3>
<p>本项目是首次公开的,他是原创项目,所有的创意,设计与核心内容均为团队自主研发,无任何抄袭或借鉴已有成熟项目的情况.项目未曾在其他比赛中获奖,也没有在学校参加过答辩</p>
<p> </p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">3、开源协议</h3>
<p>小智采用MIT小智采用 MIT 开源协议。在此协议下,任何人都能免费使用小智相关项目资源,也可将其用于商业用途。开发者可自由对项目进行修改、分发,助力大家将大语言模型应用于实际硬件设备开发。这意味着使用者拥有高度的自主性,能够基于小智项目进行个性化调整与拓展,无论是用于技术实验,还是打造日常智能伴侣等产品,都不受限制,有力推动了 AI 硬件开发领域的创新与发展。</p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">4、硬件部分</h3>
<hr>
<div>硬件部分以 STM32F103C8T6 单片机为核心控制器。通过 I2C 总线连接 OLED 显示屏,用于显示系统状态、数据等信息;采用 HC - SR04 超声波传感器,利用超声波发射与接收的时间差,结合公式距离声速时间,实现距离检测,为项目提供环境感知数据;搭配若干按键,用于手动输入指令或设置参数;电源部分则由 USB 供电,经稳压电路为各模块稳定供电。</div>
<div>在调试时,需先检查各硬件模块的接线是否正确,特别是 I2C 总线的 SDA 和 SCL 线,要确保与单片机对应引脚连接无误。然后给系统上电,通过串口调试助手查看单片机输出的调试信息,观察 OLED 显示屏是否正常显示初始化信息,测试超声波传感器时,可将障碍物放置在不同距离处,查看显示的距离数据是否准确。若数据异常,需检查超声波传感器的供电、接线以及单片机程序中相关的时序和计算部分。</div>
<div>测试方法为模拟实际应用场景,多次改变超声波传感器与障碍物的距离,记录 OLED 显示的距离值,并与实际测量的距离对比,计算误差。同时,频繁操作按键,观察系统响应是否及时、准确,以此验证硬件部分的稳定性和可靠性。</div>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">5、软件部分</h3>
<hr>
<div>本项目软件基于 Keil uVision5 开发环境进行开发,采用 C 语言编写代码,主要实现硬件各模块的驱动控制与数据交互功能。</div>
<h4>一、软件流程图</h4>
<div>系统上电后,首先进行初始化操作,包括单片机系统时钟、GPIO 口、I2C 总线、串口等的初始化。初始化完成后,进入主循环。在主循环中,不断读取超声波传感器的距离数据,通过 I2C 总线将数据发送到 OLED 显示屏进行显示;同时,检测按键输入,根据不同的按键指令执行相应的操作,如参数设置、模式切换等。若有串口数据输入,还会进行数据解析与响应。流程图如下(文字示意):</div>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;"> </span></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>plaintext</div>
<div> </div>
</div>
<div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
</div>
</div>
</div>
<div>
<pre><code>开始
→ 系统初始化(时钟、GPIO、I2C、串口等)
→ 进入主循环
→ 读取超声波传感器数据
→ 发送数据到OLED显示
→ 检测按键输入并处理
→ 解析串口数据并响应
→ 循环执行上述步骤
</code></pre>
</div>
<div>
<div> </div>
</div>
</div>
</div>
</div>
<h4>二、功能模块框图</h4>
<div>软件主要分为以下几个功能模块:</div>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;"> </span></p>
<ul>
<li><strong>初始化模块</strong>:负责单片机系统及各外设的初始化配置,为后续功能运行提供基础。</li>
<li><strong>超声波传感器驱动模块</strong>:实现对 HC - SR04 超声波传感器的控制,包括触发超声波发射、接收回波并计算距离。核心代码片段(计算距离部分):</li>
</ul>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;"> </span></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>c</div>
<div> </div>
</div>
<div>
<div>运行</div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
</div>
</div>
</div>
<div>
<pre><code>// 发送触发信号
HAL_GPIO_WritePin(TRIG_GPIO_Port, TRIG_Pin, GPIO_PIN_SET);
HAL_Delay(1);
HAL_GPIO_WritePin(TRIG_GPIO_Port, TRIG_Pin, GPIO_PIN_RESET);
// 测量回声脉冲宽度
uint32_t duration = HAL_TIM_ReadCapturedValue(&htim2, TIM_CHANNEL_1);
// 计算距离(单位:cm,声速取340m/s)
float distance = duration * 0.034f / 2.0f;
</code></pre>
</div>
<div>
<div> </div>
</div>
</div>
</div>
</div>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;"> </span></p>
<ul>
<li><strong>OLED 显示驱动模块</strong>:通过 I2C 总线与 OLED 显示屏通信,将距离数据、系统状态等信息显示在屏幕上。</li>
<li><strong>按键处理模块</strong>:检测按键按下事件,解析按键指令并执行对应的操作,如进入设置模式、确认设置等。</li>
<li><strong>串口通信模块</strong>:实现单片机与上位机的串口数据交互,可用于接收上位机指令或发送系统数据。</li>
</ul>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;"> </span></p>
<div>各模块相互协作,初始化模块为其他模块提供运行前提,超声波传感器驱动模块获取环境数据,OLED 显示驱动模块展示数据,按键处理模块实现人机交互,串口通信模块拓展与外部设备的通信能力。</div>
<h4>三、编译环境搭建和配置</h4>
<ol>
<li><strong>安装 Keil uVision5</strong>:从 Keil 官方网站下载 Keil uVision5 安装包,按照提示进行安装,安装过程中可根据需要选择安装组件。</li>
<li><strong>添加 STM32F103C8T6 芯片支持包</strong>:打开 Keil uVision5,点击 “Pack Installer”,在弹出的窗口中搜索 “STM32F103C8”,找到对应的芯片支持包并安装。</li>
<li><strong>创建项目</strong>:点击 “Project”→“New μVision Project”,选择项目保存路径并命名项目。在弹出的 “Select Device for Target” 窗口中,选择 “STMicroelectronics”→“STM32F1 Series”→“STM32F103”→“STM32F103C8”,点击 “OK”。</li>
<li><strong>配置项目</strong>:
<ul>
<li><strong>添加启动文件</strong>:在项目中添加 STM32F103C8T6 对应的启动文件(如 startup_stm32f103c8.s),可从 Keil 的安装目录或 STM32 官方固件库中获取。</li>
<li><strong>配置魔术棒选项</strong>:点击项目窗口中的 “Magic Wand”(魔术棒)按钮,在 “Target” 选项卡中,设置 “晶振频率(Xtal)” 为外部晶振频率(本项目使用 8MHz 外部晶振);在 “Output” 选项卡中,勾选 “Create HEX File”,以便生成可烧录的 HEX 文件;在 “C/C++” 选项卡中,添加必要的宏定义(如<code>STM32F10X_MD</code>等,根据芯片型号和固件库版本确定)以及头文件搜索路径。</li>
</ul>
</li>
</ol>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*6、BOM清单</h3>
<hr>
<p style="line-height:1.8;"> </p>
<table>
<tr>
<td>1</td>
<td>STM32F103C8T6</td>
<td>ST</td>
<td>单片机</td>
<td>LQFP48</td>
<td>电子元器件商城</td>
<td>系统核心控制</td>
</tr>
<tr>
<td>2</td>
<td>HC - SR04</td>
<td>无品牌</td>
<td>超声波传感器</td>
<td>模块</td>
<td>电子元器件商城</td>
<td>距离检测</td>
</tr>
<tr>
<td>3</td>
<td>SSD1306</td>
<td>无品牌</td>
<td>OLED 显示屏</td>
<td>模块</td>
<td>电子元器件商城</td>
<td>数据显示</td>
</tr>
<tr>
<td>4</td>
<td>若干按键</td>
<td>无品牌</td>
<td>按键</td>
<td>直插</td>
<td>电子元器件商城</td>
<td>人机交互输入</td>
</tr>
<tr>
<td>5</td>
<td>USB 相关元件</td>
<td>无品牌</td>
<td>USB 供电及稳压元件</td>
<td>按需</td>
<td>电子元器件商城</td>
<td>为系统提供稳定电源</td>
</tr>
</table>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;">注:项目涉及的BOM清单。在<span style="text-decoration:underline;"><a href="https://lceda.cn/editor" target="_blank">嘉立创EDA</a> </span>生成/上传设计文件后,BOM将自动生成至项目详情;建议包括型号、品牌、名称、封装、采购渠道、用途等内容。具体内容和形式应以表达清楚项目构成为准。 </span></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*7、大赛LOGO验证</h3>
<hr>
<p style="line-height:1.8;"><img src="https://image.lceda.cn/oshwhub/pullImage/1c5b5499223b48eca740abe84130f9ee.jpg" alt="1c5b5499223b48eca740abe84130f9ee.jpg"></p>
<h3 style="line-height:1.8;">* 8、演示您的项目并录制成视频上传</h3>
<hr>
<p style="line-height:1.8;"> </p>
-
微信视频2025-09-09_215904_528.mp4
-
微信视频2025-09-09_215850_382.mp4
-
85ad81ceb068f3bc1596a92d143ad391.mp4
评论(0)