基于STM32与LoRa的城市河道监控系统毕业设计全流程实战

发布时间:2026/10/14 1:32:55
基于STM32与LoRa的城市河道监控系统毕业设计全流程实战 1. 项目缘起与整体设计思路城市河道监控这件事听起来像是市政部门才关心的大工程但落到毕业设计层面它其实是一个特别适合拿来练手的嵌入式综合项目。我当初选这个题核心原因就一个它能把单片机、无线通信、传感器、上位机、低功耗设计这几个嵌入式专业的核心知识点全部串起来而且场景足够具体答辩的时候老师一听就明白你要解决什么问题。这个项目的本质是设计一套部署在城市河道沿岸的分布式监控节点每个节点负责采集水位、水温、浊度等关键指标通过无线方式把数据汇总到网关再由网关上传到本地服务器或云平台最终在监控界面上实时展示。它解决的核心问题是传统河道巡检靠人工效率低、覆盖窄、数据不连续而一套低成本的自动化监控系统可以做到7×24小时不间断采集异常情况还能及时告警。适合谁来参考这篇内容如果你是电子信息、自动化、物联网相关专业的本科生正在找毕业设计题目或者你已经选了类似的题目但不知道从哪下手那这篇东西就是写给你的。我会把方案选型、硬件设计、软件架构、调试踩坑全部讲透你照着做基本能跑通一个可演示的系统。先说整体架构。我把系统分成三层感知层、传输层、应用层。感知层就是分布在河道各监测点的单片机节点每个节点挂载传感器负责数据采集和预处理传输层负责把数据从节点送到中心这里我选的是LoRa无线通信方案原因后面细说应用层就是服务器和前端界面负责数据存储、展示和告警。为什么选LoRa而不是WiFi或者蓝牙这是很多人第一个会问的问题。WiFi传输速率高但功耗大、覆盖距离短河道场景下节点之间可能相隔几百米甚至上公里WiFi根本不现实。蓝牙就更不用说了传输距离只有十几米。LoRa的优势在于远距离、低功耗、抗干扰能力强在空旷的河道环境下单个节点通信距离可以做到1到3公里配合合理的组网策略覆盖整条河道完全没问题。而且LoRa模块成本低一对模块几十块钱就能搞定非常适合毕业设计的预算。这里有个关键点需要提前想清楚LoRa是星型组网还是Mesh组网我的建议是毕业设计层面用星型拓扑就够了也就是所有节点直接和网关通信。Mesh组网虽然理论上覆盖更广、鲁棒性更强但实现复杂度会成倍增加调试周期也长对于本科毕设来说性价比不高。星型拓扑的缺点是网关附近节点通信质量好远端节点可能信号弱但你可以通过调整网关位置和天线增益来缓解这个问题。注意LoRa的工作频段在不同地区有不同规定国内常用的是470MHz到510MHz这个范围。选模块的时候一定要确认频段合规不要随便买国外的433MHz模块直接用虽然技术上能通但合规性是个隐患。再说供电方案。河道沿岸通常没有现成的市电接口所以节点必须考虑电池供电或者太阳能供电。我当时的方案是锂电池加太阳能板白天太阳能板给锂电池充电晚上锂电池供电。这个方案的好处是节点可以完全独立部署不需要布线。但代价是你要做低功耗设计否则电池撑不了几天。低功耗设计的核心思路是单片机平时处于休眠状态定时唤醒采集数据采集完立刻通过LoRa发送发送完继续休眠。这样平均功耗可以做到毫安级别配合一块10Ah的锂电池撑一个月没问题。应用层这边我选的是本地服务器加Web界面的方案。服务器用Python的Flask框架搭建数据库用SQLite前端用ECharts做数据可视化。为什么不用云平台因为毕业设计答辩的时候云平台依赖网络万一答辩现场网络不稳定演示就崩了。本地服务器虽然看起来没那么“高大上”但胜在稳定可控答辩老师也更看重你对整个数据链路的理解而不是你用了哪家云服务。2. 核心硬件选型与电路设计要点硬件选型是整个项目的地基选错了后面全是坑。我见过太多同学一开始随便抓一块单片机就开始画板子结果做到一半发现引脚不够用、通信接口不匹配、功耗降不下来最后只能推倒重来。所以这一章我把选型的逻辑和电路设计的关键点讲清楚。2.1 主控芯片怎么选主控芯片的选择主要看三个维度外设资源、功耗表现、开发难度。我当时对比了几款常见的方案芯片型号核心频率Flash/RAM低功耗模式开发难度适合场景STM32F10372MHz64KB/20KB睡眠/停止/待机中等资源需求较多的节点STM32L05132MHz64KB/8KB超低功耗中等电池供电节点ESP32240MHz4MB/520KB深度睡眠较低需要WiFi的场景MSP43016MHz48KB/10KB极低功耗较高超低功耗传感器节点最终我选的是STM32L051原因是它的低功耗表现非常出色待机模式下电流只有零点几微安而且外设资源对于河道监控这个场景完全够用。你可能觉得STM32F103更熟悉但F103的待机功耗在毫安级别对于电池供电的节点来说太费电了。ESP32虽然开发方便但它的深度睡眠功耗也在微安到毫安之间而且价格比STM32L051贵不少。如果你对低功耗要求没那么高或者节点有稳定的市电供电那STM32F103也完全可以用毕竟资料多、教程全遇到问题好查。选型这件事没有绝对的对错关键看你的场景约束。2.2 传感器选型与接口设计河道监控的核心传感器有三个水位传感器、水温传感器、浊度传感器。我逐个说选型和接口设计的要点。水位传感器我选的是超声波测距模块型号是AJ-SR04M。它的原理是发射超声波遇到水面反射回来根据时间差计算距离。安装的时候把模块固定在河道上方的支架上朝下对准水面测出来的距离减去支架到河底的高度就是水深。这个方案的好处是非接触式测量不会被水里的泥沙杂物影响。缺点是超声波受温度和湿度影响需要做温度补偿。我在代码里加了一个简单的补偿公式声速随温度变化大约是每升高1摄氏度增加0.6米每秒用DS18B20测到的环境温度来修正声速测距精度能提高到厘米级。水温传感器用的是DS18B20数字接口单总线通信精度0.5摄氏度防水封装直接扔水里就行。它的优点是接线简单一根数据线就能读温度而且支持多点组网一条总线上挂多个传感器都没问题。注意DS18B20需要4.7K的上拉电阻这个电阻不能省否则通信不稳定。浊度传感器我用的是TS-300B模拟输出输出的是电压值浊度越高电压越低。这个传感器需要定期清洗因为长时间泡在水里探头表面会附着藻类和泥沙导致读数漂移。我在结构设计上做了一个小改进把浊度传感器安装在一个可拆卸的支架上方便后期维护更换。实操心得传感器选型的时候一定要看 datasheet 里的供电电压和输出信号范围。我一开始买了一个浊度传感器输出是0到5V但STM32L051的ADC参考电压是3.3V直接接上去会烧引脚。后来加了一个电阻分压电路才解决。这种细节在选型阶段就要确认清楚不要等板子打回来了才发现。2.3 LoRa通信模块与天线设计LoRa模块我选的是E22-400T22S基于SX1268芯片支持470MHz频段最大发射功率22dBm。这个模块的好处是自带UART接口单片机通过串口发AT指令就能控制开发门槛低。而且它支持多种工作模式可以配置成透传模式也就是单片机发什么它就发什么不需要关心底层协议。天线这块很多人会忽略但其实很关键。我一开始用的是模块自带的弹簧天线通信距离只有几百米后来换了一根外置胶棒天线增益5dBi通信距离直接翻倍。天线安装的时候要注意尽量远离金属物体垂直放置高度越高越好。如果节点安装在金属支架上天线最好用馈线引出来固定在支架顶部。通信距离的估算可以用这个公式粗略计算自由空间路径损耗dB 32.44 20log10(频率MHz) 20log10(距离km)假设频率470MHz距离1km路径损耗大约是32.44 20log10(470) 20log10(1) ≈ 32.44 53.44 0 85.88dB。E22-400T22S的发射功率22dBm接收灵敏度-148dBm链路预算170dB理论上通信距离可以做到几十公里。但实际环境中还有遮挡、多径效应、天气影响所以实际距离会大打折扣。我的实测结果是空旷河道环境下1.5公里左右通信稳定超过2公里开始丢包。2.4 电源管理与低功耗设计电源部分我用了TP4056充电管理芯片加DW01保护芯片的方案。TP4056负责给锂电池充电支持最大1A充电电流带过充过放保护。DW01负责电池保护防止过放损坏电池。太阳能板选的是6V/2W的多晶硅板配合CN3065太阳能充电管理芯片白天给锂电池充电。低功耗设计的核心是让单片机尽可能长时间处于休眠状态。我的策略是单片机每5分钟唤醒一次采集三个传感器的数据通过LoRa发送然后立刻进入待机模式。待机模式下STM32L051的电流大约是0.4微安LoRa模块在睡眠模式下电流大约是1微安传感器不供电时电流为零。这样算下来平均功耗大约是采集和发送阶段持续约2秒电流约120mA休眠阶段持续约298秒电流约2微安平均电流 (120mA × 2s 0.002mA × 298s) / 300s ≈ 0.8mA一块10Ah的锂电池理论上可以撑 10000mAh / 0.8mA ≈ 12500小时 ≈ 520天。当然实际中还有电池自放电、太阳能充电效率等因素但撑几个月是完全没问题的。注意低功耗设计有一个容易被忽略的点——外设的漏电流。比如传感器即使不工作如果信号线还接在单片机引脚上也可能通过引脚的保护二极管漏电。我的做法是在传感器供电线上加一个MOS管不用的时候彻底断电这样漏电流可以降到纳安级别。3. 软件架构与核心代码实现硬件搭好了接下来就是软件。这个项目的软件部分可以分成三块节点端嵌入式程序、网关端数据转发程序、服务器端数据处理与展示程序。我逐个拆解。3.1 节点端嵌入式程序框架节点端程序我用的是裸机加状态机的架构没有上RTOS。原因很简单这个项目的任务不复杂就是定时采集、发送、休眠用状态机完全够用上RTOS反而增加复杂度和功耗。状态机有四个状态初始化、采集、发送、休眠。初始化状态负责配置时钟、外设、LoRa模块参数。采集状态依次读取水位、水温、浊度三个传感器的数据做简单的滤波处理。发送状态把数据打包成固定格式的字符串通过串口发给LoRa模块。休眠状态配置唤醒定时器然后进入待机模式。数据打包格式我设计得很简单用逗号分隔的ASCII字符串NODE01,20240101120000,1.25,18.5,320,*字段依次是节点编号、时间戳、水位米、水温摄氏度、浊度ADC值、结束符。为什么用ASCII而不是二进制因为调试方便串口助手上直接就能看懂出问题了容易定位。二进制虽然传输效率高但调试成本太高毕业设计阶段没必要追求极致的效率。采集部分的代码核心是ADC读取和超声波测距。超声波测距我用的是输入捕获功能测量回波高电平的持续时间。这里有个细节输入捕获的中断优先级要设置好如果优先级太低可能被其他中断打断导致测量误差。我把输入捕获的中断优先级设为最高确保测量准确。// 超声波测距核心代码基于输入捕获 float measure_distance(void) { uint32_t pulse_width 0; // 发送触发信号 HAL_GPIO_WritePin(TRIG_GPIO_Port, TRIG_Pin, GPIO_PIN_SET); delay_us(10); HAL_GPIO_WritePin(TRIG_GPIO_Port, TRIG_Pin, GPIO_PIN_RESET); // 等待回波超时返回-1 if (wait_for_echo(pulse_width, 30000) ! HAL_OK) { return -1.0f; } // 声速补偿v 331.4 0.6 * T float sound_speed 331.4f 0.6f * current_temperature; float distance (pulse_width * 1e-6f * sound_speed) / 2.0f; return distance; }3.2 LoRa通信协议与数据格式设计LoRa通信这块我用的是透传模式加自定义应用层协议。透传模式下LoRa模块本身不关心数据内容只负责把串口收到的数据原样发出去。应用层协议我自己定义了一套简单的帧格式字段长度说明帧头2字节固定为0xAA 0x55节点ID1字节节点编号范围1-255数据长度1字节后续数据的字节数数据载荷变长传感器数据校验和1字节从帧头到载荷的累加和帧尾1字节固定为0x0D为什么要加帧头和帧尾因为无线通信中很容易受到干扰产生乱码。有了帧头和帧尾接收端可以快速定位有效数据包的边界。校验和用来验证数据完整性如果校验失败就丢弃这一包等待下一包。网关端收到数据后先解析帧格式验证校验和然后把有效数据通过串口转发给服务器。网关我用的是STM32F103加ESP8266的方案STM32负责接收LoRa数据ESP8266负责通过WiFi把数据上传到服务器。为什么网关不用LoRa直接上传因为LoRa的传输速率低不适合直接对接服务器而且服务器通常部署在室内LoRa信号穿墙能力弱用WiFi更靠谱。3.3 服务器端数据处理与Web界面服务器端我用的是Python Flask SQLite ECharts的组合。Flask负责提供HTTP接口SQLite负责存储数据ECharts负责前端可视化。整个服务器跑在一台树莓派上功耗低、体积小放在实验室里就行。数据库设计很简单一张表搞定CREATE TABLE sensor_data ( id INTEGER PRIMARY KEY AUTOINCREMENT, node_id TEXT NOT NULL, timestamp DATETIME NOT NULL, water_level REAL, water_temp REAL, turbidity INTEGER, created_at DATETIME DEFAULT CURRENT_TIMESTAMP );Flask提供两个接口一个是/api/upload网关通过POST请求把数据传上来另一个是/api/query前端通过GET请求查询历史数据。前端页面用ECharts画三个折线图分别展示水位、水温、浊度的变化趋势。页面每30秒自动刷新一次保证数据实时性。# Flask 数据上传接口 app.route(/api/upload, methods[POST]) def upload_data(): data request.get_json() # 参数校验 required_fields [node_id, timestamp, water_level, water_temp, turbidity] for field in required_fields: if field not in data: return jsonify({status: error, msg: fmissing {field}}), 400 # 写入数据库 conn sqlite3.connect(DB_PATH) cursor conn.cursor() cursor.execute( INSERT INTO sensor_data (node_id, timestamp, water_level, water_temp, turbidity) VALUES (?, ?, ?, ?, ?) , (data[node_id], data[timestamp], data[water_level], data[water_temp], data[turbidity])) conn.commit() conn.close() return jsonify({status: ok})告警逻辑我放在服务器端做。设定阈值水位超过2.5米告警水温超过35摄氏度告警浊度ADC值低于200告警。一旦触发告警服务器通过邮件或者微信推送通知。毕业设计阶段我用的是邮件通知用Python的smtplib库就能实现简单可靠。实操心得服务器端的异常处理一定要做好。我一开始没做参数校验结果网关发了一个空数据包上来服务器直接崩溃了。后来加了try-except和参数校验稳定性好了很多。另外数据库写入最好加一个队列缓冲防止高并发时写入失败。4. 系统联调与常见问题排查联调是整个项目最折磨人的阶段硬件、软件、通信、服务器任何一个环节出问题都会导致系统跑不起来。我把当时踩过的坑和排查思路整理出来你遇到类似问题可以直接对照。4.1 LoRa通信距离短、丢包严重这是最常见的问题。我一开始测试的时候两个节点相距500米就开始丢包当时以为是模块坏了换了好几个模块都一样。后来排查发现是天线的问题。模块自带的弹簧天线增益太低而且安装位置靠近金属支架信号被严重遮挡。解决办法有三个第一换用外置高增益天线我换了一根5dBi的胶棒天线通信距离直接提升到1.5公里第二调整天线安装位置尽量远离金属物体垂直放置第三降低通信速率LoRa的扩频因子越大通信距离越远但速率越低。我把扩频因子从7调到12速率从18.75kbps降到0.98kbps通信距离又增加了不少。还有一个容易被忽略的点LoRa模块的供电电压。E22-400T22S在发射瞬间电流可以达到100mA以上如果电源供电不足发射功率会下降通信距离自然就短了。我在电源端加了一个1000uF的电解电容保证发射瞬间的电流供应效果很明显。4.2 传感器读数漂移、不稳定浊度传感器读数漂移是最头疼的问题。我一开始以为是传感器质量问题换了几个都一样。后来发现是电源噪声导致的。浊度传感器输出的是模拟信号对电源噪声非常敏感。单片机、LoRa模块工作时会产生大量的电源噪声耦合到模拟信号上导致ADC读数跳动。解决办法第一给浊度传感器的供电加一个LC滤波电路滤除高频噪声第二ADC采样时做多次平均我采16次取平均值跳动明显减小第三传感器信号线尽量远离电源线和通信线避免耦合。水温传感器DS18B20的读数偶尔会出错读出来是85摄氏度。这是DS18B20的经典问题原因是通信时序不严格。DS18B20对时序要求很高如果中断打断了时序就会读出错误值。解决办法是在读取DS18B20的时候关闭全局中断读完再打开。或者用硬件I2C转单总线的芯片但成本高没必要。4.3 系统功耗过高、电池撑不住低功耗设计看起来简单实际做起来坑很多。我一开始测的待机电流是5mA远远高于预期的微安级别。排查了半天发现是LoRa模块没有进入睡眠模式。E22-400T22S默认是待机模式电流大约2mA必须发送AT指令让它进入睡眠模式电流才能降到微安级别。还有一个坑是单片机的未使用引脚。STM32的未使用引脚如果配置成浮空输入会随着外部电场变化而翻转产生额外的功耗。正确的做法是把未使用引脚配置成模拟输入或者推挽输出低电平。我把所有未使用引脚都配置成模拟输入待机电流从5mA降到了0.8mA。问题现象可能原因排查方法解决方案通信距离短天线增益低、遮挡、扩频因子小换天线测试、调整位置换高增益天线、增大扩频因子丢包严重电源噪声、干扰、速率过高示波器看电源纹波加滤波电容、降低速率传感器读数漂移电源噪声、采样次数少万用表测电源电压加LC滤波、多次平均待机电流高外设未休眠、引脚浮空逐个断开外设测电流配置睡眠模式、引脚设模拟输入数据上传失败网络不稳定、服务器未启动ping服务器、看日志加重试机制、检查服务器状态4.4 服务器端数据丢失、界面不刷新服务器端的问题主要集中在数据丢失和界面刷新上。数据丢失的原因通常是网关和服务器之间的网络不稳定。我的解决办法是在网关端加一个本地缓存如果上传失败先把数据存到SD卡里等网络恢复了再补传。这个机制在毕业设计答辩的时候特别有用万一现场网络不好数据也不会丢。界面不刷新的原因通常是前端定时器没设置好或者接口返回格式不对。我一开始用setInterval每30秒请求一次数据但有时候请求还没返回下一次请求就发出去了导致数据错乱。后来改成用setTimeout递归调用确保上一次请求完成后再发起下一次。// 前端定时刷新递归setTimeout避免请求堆积 function fetchData() { fetch(/api/query?limit100) .then(response response.json()) .then(data { updateChart(data); // 上一次请求完成后再设置下一次 setTimeout(fetchData, 30000); }) .catch(error { console.error(fetch error:, error); setTimeout(fetchData, 5000); // 出错时5秒后重试 }); }注意答辩演示前一定要做全链路压力测试。我当时的做法是让系统连续跑48小时观察有没有内存泄漏、数据丢失、界面卡死等问题。结果还真发现了一个bugSQLite数据库文件越来越大查询越来越慢。后来加了一个定期清理旧数据的定时任务只保留最近30天的数据问题解决。5. 结构设计与部署实操细节硬件和软件都调通了接下来就是把它装到河道现场。这一步看起来简单实际上有很多细节决定系统能不能长期稳定运行。5.1 节点外壳与防水设计河道环境潮湿、多尘、温差大节点外壳必须做好防水防尘。我用的是IP65级别的防水接线盒尺寸200mm×120mm×75mm内部空间足够放下单片机板、LoRa模块、电池和充电管理板。接线盒的电缆出口用防水接头密封确保水汽进不去。外壳内部我放了一包干燥剂吸收残留的水汽。虽然接线盒是防水的但打开调试的时候难免会有湿气进去干燥剂可以保持内部干燥。另外电路板表面我喷了一层三防漆防潮、防盐雾、防霉菌进一步提高了可靠性。太阳能板我用支架固定在接线盒顶部朝南倾斜30度角这个角度在大部分地区都能获得较好的日照效率。太阳能板的电缆通过防水接头接入接线盒接在CN3065充电管理芯片的输入端。5.2 传感器安装与校准水位传感器的安装高度很关键。我把它固定在河道上方的横杆上距离水面大约3米。安装的时候要确保超声波探头垂直朝下不能有倾斜否则测距会有误差。安装完成后需要做一次零点校准用卷尺测量探头到水面的实际距离和传感器读数对比如果偏差超过2厘米就需要调整安装高度或者修改代码里的偏移量。水温传感器直接扔进水里就行但要注意不要放在浅水区因为浅水区受气温影响大测出来的水温不能代表河道整体水温。我把它固定在离岸5米、水深1米左右的位置用尼龙绳绑在固定桩上。浊度传感器需要定期清洗我设计了一个可拆卸的支架用卡扣固定不需要工具就能拆下来清洗。清洗的时候用软布擦拭探头表面不要用硬物刮以免划伤光学窗口。5.3 网关部署与网络配置网关我放在河道附近的一个配电箱里有市电供电不需要考虑低功耗。网关的LoRa天线架设在配电箱顶部高度大约4米覆盖半径1.5公里左右。ESP8266通过WiFi连接到附近的路由器路由器再通过有线网络连接到服务器。网络配置这块有一个坑WiFi的IP地址是动态分配的如果路由器重启网关的IP可能会变导致服务器找不到网关。我的解决办法是在路由器里给网关绑定一个静态IP或者在网关端用DDNS动态域名解析。毕业设计阶段用静态IP绑定就够了简单可靠。网关的STM32程序里加了一个看门狗防止程序跑飞。如果程序卡死超过10秒看门狗会自动复位网关保证系统长期稳定运行。这个细节在答辩的时候老师特别问到了说明他们很看重系统的可靠性设计。5.4 系统联调与验收标准联调阶段我按照从局部到整体的顺序进行先单独测试每个传感器确保读数准确再测试LoRa通信确保数据能发出去然后测试网关转发确保数据能到服务器最后测试前端展示确保数据能正确显示。每一步都确认无误后再进行下一步避免问题叠加难以定位。验收标准我定了三条第一系统连续运行72小时无故障第二传感器数据与标准仪器对比误差在允许范围内水位±2cm水温±0.5℃浊度±10%第三告警功能正常触发邮件通知及时送达。这三条都满足后系统才算真正可用。实操心得部署的时候一定要带备用件。我带了两块单片机板、两个LoRa模块、一个备用传感器结果还真用上了——有一个LoRa模块在安装的时候不小心摔坏了幸好有备用件不然就得重新采购耽误好几天。另外调试工具要带齐万用表、示波器、串口调试助手、笔记本电脑缺一不可。6. 项目扩展方向与个人体会这个项目做完之后我发现它还有很多可以扩展的方向。如果你想让毕业设计更有亮点或者想把它做成一个真正能用的产品可以考虑以下几个方向。第一个方向是增加更多传感器。比如加一个pH传感器监测水质酸碱度加一个溶解氧传感器监测水体富营养化程度加一个摄像头做图像识别监测河道漂浮物。传感器越多系统的价值越大但功耗和成本也会相应增加需要权衡。第二个方向是优化通信组网。星型拓扑虽然简单但覆盖范围有限。如果河道很长可以考虑用LoRa Mesh组网或者用多个网关做蜂窝式覆盖。Mesh组网的实现复杂度高但覆盖范围和鲁棒性都会大幅提升。第三个方向是引入边缘计算。现在的节点只是采集和转发数据如果把一些简单的数据处理放在节点端做比如异常检测、数据压缩可以减少通信量降低服务器压力。STM32L051的计算能力有限但跑一些简单的算法还是没问题的。第四个方向是对接云平台。本地服务器虽然稳定但数据共享不方便。如果对接云平台可以实现远程访问、多用户管理、大数据分析。不过云平台的选择要考虑数据安全和隐私合规不要随便把数据传到不可控的平台上。我个人在实际操作中的体会是毕业设计最重要的不是用了多高级的技术而是把每一个环节都做扎实。我见过很多同学追求“高大上”用了各种新技术但系统跑不起来答辩的时候一问三不知。反而是一些看起来“朴素”的方案因为每个细节都经过验证答辩效果更好。这个项目里LoRa、STM32、Flask都是很成熟的技术没有什么黑科技但把它们组合起来解决一个具体问题本身就是一种能力。最后再分享一个小技巧答辩PPT里一定要放实物照片和演示视频。老师看到实物和实际运行效果比看一百页原理图都有说服力。我当时录了一段5分钟的系统运行视频从传感器采集到界面展示完整走了一遍答辩的时候老师直接说“这个做得扎实”。所以别偷懒把实物调通把视频录好这比什么都重要。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询