96SEO 2026-02-19 09:05 0
自己的小项目,最初的灵感是稚晖君的CyberCard卡片,然后自己想加上一些传感器之类的东西。

于是做出了这么个小东西。
也算是第一次开发一个功能比较完整的项目。
其中使用到了STM32L051作为主控,外设有SPI屏幕,tp4056锂电池充电芯片,ch340串口芯片,BME680多合一传感器,NFC芯片ST25DV。
能够在屏幕上显示温度、湿度、气压、空气质量指数。
还可以把一些数据写入NFC芯片,供有NFC的手机读取。
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311636-1100772886.png"
由于是用锂电池供电的,还有一定的携带和续航要求,所以要稍微考虑一下低功耗。
板子的主控用的是STM32L051,属于ST的低功耗产品线,主频最大32MHz,有串口,I2C,SPI等外设,管脚数量48pin,LQFP封装,有内置振荡器和时钟源,是一款很不错的入门级产品。
价格大概再8元左右。
在小项目中用一下很合适,烧了也不心疼。
除此之外,入门产品线还有G0系列的,如G070,也很适合这种小项目。
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311551-924006405.png"
用的是中景园的TFT屏幕,SPI协议,驱动芯片ST7735,2.4寸,分辨率240X240。
屏幕素质还是不错的。
有排线版本和排针版本,理论上排线版本更美观,但是我图方便和好替换,用的是排针版本,直接插到板子上的排母上就好了。
价格大概25元左右,我就不放链接了,淘宝上一搜就有。
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311617-1525332924.png"
id="bme680多合一传感器">BME680多合一传感器
博世公司出的一款能够能够监测温度、湿度、气压、空气质量的多合一传感器芯片。
可以通过SPI或者I2C与单片机进行通信,QFN封装,非常小巧。
缺点是价格略贵,淘宝50元出头。
若是为了追求降低成本,可以换成分立器件AHT10+SGP30之类的。
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311643-239007799.png"
id="nfc芯片st25dv">NFC芯片ST25DV
ST公司的一款射频NFC芯片,能够模拟M1卡片,用手机就能完成对芯片的写入,还能用单片机的I2C与之进行通信,完成卡片内容的读写。
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311613-1447285217.png"
这里要注意的一点是芯片的板载天线设计,PCB布局的时候要留足足够的空间用来走矩形天线来满足谐振频率的阻抗要求,并且天线的区域不能铺铜,后面会详细提到
id="tp4056锂电池充电模块">tp4056锂电池充电模块
tp4056是一款常用的单节锂电池充电芯片,充电电流可通过一个电阻来设定,最高可达1000ma。
外围电路无需MOSFET、检测电阻器或隔离二极管。
采用SOP8封装。
充电电流与编程电阻之间的关系
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311591-178232850.png"
适合需要充电状态指示,不需要电池温度监测功能的应用电路
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311590-349952630.png"
id="串口芯片ch340n">串口芯片CH340N
CH340是一款国产USB总线的转接芯片,实现USB差分信号转TTL串口。
可以加到USB的差分信号口上,这样既一根USB线既能供电又能实现串口通信。
应用电路
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311559-2013940642.png"
简介:typeC接口大势所趋,typeC支持的协议多,接口引脚多达24pin(最高支持USB3.0),有些厂家为了降低成本,减少了引脚的个数,所以有16pin(支持USB2.0协议),6pin(仅供电)的**版。
还有各手机厂家的魔改版本。
一般电子产品目前用的最多的还是16pin的。
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311594-196211728.png"
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311660-1848577268.png"
其中CC引脚是用于typeC双**电流大小的控制,若是双**供电,需要接一个5.1K下拉电阻倒地。
否则收电端会没有电。
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311586-807749399.png"
这块PCB的主要设计难点就在于PCB板载天线的问题,查阅数据手册可以知道,这个NFC芯片天线所需要的电感量是4.6uH,不能超过太多,也不能太少,否则就会导致谐振频率偏移13.56Mhz,导致手机读不出数据。
这个PCB我绘制了两板,第一版由于禁止铺铜区域只放置了顶层没有放置底层(画PCB的时候猪脑过载忘记了),所以导致铺铜的时候板载天线处铺上了底层铜,由于铜层会吸收电磁波的能量,而且第一版的天线电感量经过再次计算也只有2uH左右的水平,达不到设计标准。
到手测试后果然无法检测到芯片(╯▔皿▔)╯,第一版的NFC功能无法使用。
但是经过测试其他功能还是正常的,于是我打算保留第一版,NFC芯片再打板单独测试一下,如果可以的话再考虑出个完整版。
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311622-242333271.png"
于是我为了验证NFC芯片和天线的可行性,又画了一版,这一次我查阅了ST官方NFC天线的设计手册
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311618-630846480.png"
设计出了第二块验证板,这一次我就没加上其他的电路,只是为了验证NFC芯片和板载天线是否可行,左侧的是ESP32的封装和屏幕的封装,是我为了验证其他项目里一些东西设计的,画在了一块板子上。
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311570-538103716.png"
发给厂家打样,这里推荐一下嘉立创,每个月右2次免费的打样机会,交期也蛮快。
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311664-987290498.png"
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311638-1432101653.png"
老规矩,printf重定向到串口,循环打印提示消息"System
然后用电脑打开串口,可以看到一直有数据过来。
说明串口芯片工作正常。
将有NFC写入功能的手机靠近线圈,有嗡的一声提示音,手机默认的NFC软件被唤起,说明芯片被成功读取到。
移植一下淘宝店家的例程,主要是管脚定义的修改和初始化,以及一些delay函数的处理.
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
由于店家的驱动是用IO管脚模拟的SPI,速率可能不会太快,所以我把驱动改成了使用硬件SPI的方式,但是一测试,发现竟然比模拟的SPI还要更慢一点。
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311600-778687121.png"
经过查阅资料,发现是因为HAL库在发送之前要经过很多检查动作,拖慢了速度,这些检查在屏幕驱动等行为上可以被认为是多余的,所以我们可以自己稍微精简一下SPI,能大大提高速度。
SPI_FAST_Transmit(SPI_HandleTypeDef
*hspi,
HAL_SPI_STATE_BUSY_TX;hspi->ErrorCode
HAL_SPI_ERROR_NONE;hspi->pTxBuffPtr
(uint8_t
1;SPI_1LINE_TX(hspi);__HAL_SPI_ENABLE(hspi);*((__IO
uint8_t
*)&hspi->Instance->DR)
(*hspi->pTxBuffPtr);hspi->pTxBuffPtr
sizeof(uint8_t);hspi->TxXferCount--;hspi->State
HAL_SPI_STATE_READY;
}/******************************************************************************函数说明:LCD串行数据写入函数入口数据:dat
******************************************************************************/void
LCD_Writ_Bus(u8
i;LCD_CS_Clr();for(i=0;i<8;i++)
软件模拟SPI{
LCD_SCLK_Clr();if(dat&0x80){LCD_MOSI_Set();}else{LCD_MOSI_Clr();}LCD_SCLK_Set();dat<<=1;}
LCD_CS_Set();
硬件SPI发送SPI_FAST_Transmit(&hspi1,
&dat);
按照官方教程移植就好,但是在重定向官方给的I2C驱动接口时,要注意把地址左移一位(这是由于STM32的硬件I2C地址是8位的,而一般的器件的地址线都是7位)。
这让我不禁想起了移植RDA5820驱动的时候,软件模拟I2C的多字节读取,要在非最后一个字节的时候发ACK信号,在最后一个字节的时候发NACK信号。
当年差点被这个坑了,总的来说,I2C协议还是有其麻烦之处的,虽然它支持多主多从,带来的代价就是需要上拉电阻和比较麻烦的设备地址和寄存器地址的设计。
以及一些恶劣信号环境下时序波形的劣化导致的无法正常通信。
比较麻烦的一点是,要自己写一个安卓APP,来完成对ST25DV芯片的写入,因为市面上一般的NFC软件是不支持ST芯片的,只支持普通的M1卡。
而我的安卓开发知识基本忘完了,需要一段时间重新捡起来。
不过也有例外,我找到了一款软件,能完成对ST25DV芯片的简单写入,于是我用安卓手机将网页信息写入了芯片,用另一部手机靠近,弹出了网页信息。
![]()
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311556-476701825.png"
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311595-2109864256.png"
加上锂电池
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311547-1005849935.png"
侧视图
data-src="https://img2024.cnblogs.com/blog/3763221/202602/3763221-20260219012311610-2141888083.png"
class="post-meta-container">
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback