成果展示:
1.IO模拟I2C驱动TMF8801模块测距(0mm-2500mm)。
2.PWM控制模块上的LED亮度。
3.根据测得的距离,在0mm-500mm之间控制LED。
4.使用中断捕获红外接收模块的电平信号。
5.复用CTimer0根据电平时间计算出遥控的数据。
6.使用硬件I2C驱动0.96寸OLED显示距离,pwm占空比及红外接收模块收到的数据。
产品开箱:
- 简单而朴素的防静电袋。
- 正面中间是LPC804M主控,主控右侧的是测距模块TMF8801,下方的SW用于选择TMF8801连接到LPC804M主控还是外部GPIO。
- 背面左右两侧标出了串口和SWD下载接口。
应用思路:
思路一:用于制作一款桌面时钟。
1.当用户离得远可以控制数码管亮度调到最大。
2.当用户离得近,可适当调低数码管亮度避免刺眼。
3.当超过测量范围无人时,关闭数码管,LCD,主控进入低功耗。
4.LCD屏可当电子相册显示自己定制的内容。
5.因为主控用的G030因此自己写的显示算法用于时间的校准。
6.集成了光敏电阻自动调光,SHT30温湿度采集等等功能。
当前进度:时钟板的功能已基本实现,但由于第一次申请的时候没有通过,所以打板的时候并没有预留I2C甚至多余的接口,所以只能后面再画一版硬件再进行代码整合了。
思路二:一款智能调光台灯示例demo。
1.既然硬件设计时间上错过了,那便先研究透这块开发板,先出驱动demo顺便学一下LPC804M。
2.主频15M的芯片够便宜,但是能干嘛?驱动LCD屏估计够呛,那就用0.96寸的OLED代替。
3.上手一块新的单片机先从点灯开始,先将LED和TMF8801关联起来是个不错的选择。
4.有测距的输入,LED的输出,OLED屏的数据反馈,似乎还缺个用于交互的输入信号。
- 按键?太简单了没意思。
- LORA?测距模块有效距离才2.5米,不需要能传几公里的模块;
- ESP8266?都可以直接当主控取代LPC了,资源浪费;
- 红外接收?价格便宜,有红外的手机还可以用手机控制,妥!!!
当前进度:所有功能已实现,代码已开源到gitee。
操作方法:
- 开发工具:Keil5。
- 下载工具:正点原子的高速DAP仿真器。
- 开发语言:C。
- 官方源码下载:https://mcuxpresso.nxp.com/en/welcome
- 我配适好的代码:https://gitee.com/Z_Tam/LPC804M101JDH24
- F103C8T6驱动代码:https://gitee.com/Z_Tam/f103c8t6/tree/master/HAL_TMF8801
- 其他:个人博客(开发时的一些笔记,后面可能会尝试拆解一下通信过程并在里面记录)
功能体验:
- 在我的gitee里能看到该README说明,简单介绍了所分享的代码实现的功能。
客观评价:
- 测距作为本次测评的重点,响应速度够快,数据精度够准,使用的红外测距方式没有光污染都是TMF8801的优点。
- 当然网上的资料少,驱动复杂也是事实。
- 官方的资料提供的不够详细,原理图是后来给的,代码更是没有,还好知道能在哪里下载。
- 15M主频的LPC804M刚刚好,兼顾了价格和功能的平衡。
- 原理图画的很用心,点击还能自己跳转。
总结:
- 前面也提到过一开始申请并没有通过,后来社区的老哥找到了我才有了这次的测评和这篇博客,君以国士待我,我当以国士报之!
- 感谢社区,感谢大联大也感谢老哥。可能我的应用并不够高大上,但这已经是我能想到在LPC804M上比较适合的功能了,权当抛砖引玉啦。
- 从收到板到写出这篇博客满打满算只有3周,写TMF8801的驱动就花了一周。虽然是比赛,但是造好的轮子还是会第一时间分享的。
代码展示:
gitee地址:https://gitee.com/Z_Tam/LPC804M101JDH24
- 后续持续更新,如遇代码不可用请提交Issues。
发行版:https://gitee.com/Z_Tam/LPC804M101JDH24/releases
- 直接下载zip文件,不一定是最新的但稳定能用。
演示视频:
- 哔哩哔哩:https://www.bilibili.com/video/BV1Yq4y1n72c/