各位工程师朋友,大家好!我是电子风清扬,本期“来实战”项目《宠物自动喂食器》的执行官。先做一个简单的自我介绍,我是一名怀揣着梦想的新一代嵌入式软件工程师,目前从事物联网设备的开发。一路自学过来,走过很多的弯路,也曾经无数次迷茫过,找不到学习的方向。我很了解一个电子初学者在刚刚开始时的艰辛,不知道学什么,怎么去学,不知道实际工作中需要具备什么能力。希望可以通过本次的项目来帮助更多的新人了解什么是真正的实战项目,需要具备哪些能力,帮助更多的电子初学者找到学习的方向,更顺利的进入这个行业,为电子行业做出一份自己的贡献。
我会在这次的项目中,逐步为大家分享一些工程项目的经验、调试技巧、如何打造一套属于自己的嵌入式软件开发平台。也希望大家可以通过本次的项目找到以下这些问题在自己心目中的答案。
1、为什么很多电子初学者不会做项目?
初始阶段掌握的技术还太少,没有形成完整的知识体系,也并没有见过真正的项目(涉及到保密问题,很多项目并不会开源)。仅有的技术完全限制了自己的想象力,一旦遇到自己不会的技术就会想尽办法回避,不愿意去学习。久而久之造成了恶性循环,思路越来越窄,越来越迷茫,最后走上了从入门到放弃的道路。
2、为什么说单片机只是一个工具?
在一个项目中,它只是代替人来处理各种电信号,处理数据,完成对电路控制。它只是项目中的一部分,想完成一个完整的项目仅有单片机是远远不够的。
3、真正的工程代码应该是什么样的?
模块化、层次分明、面向对象、良好的数据结构、清晰的业务逻辑、可维护性。
4、项目的开发流程,以及人员分工?
· 实现哪些功能:确定需求
· 需要哪些器件:元器件选型
· 如何控制器件:电路设计
· 如何实现需求:编程(数据结构、业务逻辑)
· 方案可行吗?:软硬件结合
· 产品可以投产么?:现场测试,老化
· 如何转产?:整理整个项目的相关文件
· 卖出去了坏了怎么办?:整理维修相关的技术,形成标准文件
书归正传,开始介绍本次的项目。本次的项目希望打造一款宠物自动喂食器,解放铲屎官。项目计划按以下功能点来进行:
1、具备定时定量喂食功能(每周喂食曲线,每天喂食的时段,每个时段的百分比可调节),实现不同阶段的喂食需求。
2、自动完成对喂食情况的统计,方便铲屎官查看一段时间喂食的情况,结合宠物的体态信息进行健康判断,以及调整喂食量减少浪费。
3、自动保持饮水盆中的饮水量,对每次的饮水量以及时间进行记录。
4、对料仓中的喂料量进行监测,在料仓中饲料量不足时提醒铲屎官及时补充。
5、对水仓中的水量进行监测,在水仓中饲喂量不足时提示铲屎官及时补充。
6、警戒线的阈值可调。
7、良好的人机交互界面设计。
8、可以连接WIFI,将数据上传到服务器。(视时间而定,如果时间紧张,延后开发)
9、手机APP端完成信息查看,控制喂食。(视时间而定,如果时间紧张,延后开发)
视频内容截图:
项目设计
步骤1:确定项目电路原理图
视频内容截图:
相信LM2596是广大电子爱好者熟悉的一款降压型电源管理芯片了。LM2596系列是德州仪器(TI)生产的3A电流输出降压开关型集成稳压芯片,它内含固定频率振荡器(150KHZ)和基准稳压器(1.23v),并具有完善的保护电路、电流限制、热关断电路等。利用该器件只需极少的外围器件便可构成高效稳压电路。提供的有:3.3V、5V、12V及可调(-ADJ)等多个电压档次产品。相关芯片数据手册,请点击文末“相关芯片与数据手册”进行下载阅读。
此外,我们项目需要用到的电源有3.3V、5V、12V,所以我们采用19V(15V-24V)笔记本充电电源供电以及电池组成的UPS系统进行供电。将设计两个LM2596模块,一个5V,一个12V。查询数据手册,我们得到Demo电路图如下:
……
(由于篇幅限制只呈现部分内容,点击“阅读原文”浏览完整项目方案)
步骤2:软件平台搭建
视频内容截图:
第二个步骤给大家带来本次项目的嵌入式软件平台的建设思路,本次的嵌入式软件平台分为四层。
1、MyLib:底层驱动代码—>硬件抽象层
本层在C语言的平台下,尽可能的实现面向对象的思想。本次的平台借鉴了高焕堂先生提出的OOPC的思想,并在此基础上进行了改进,特此声明。本次描述可能大家一开始看的不太清楚,后续我会出一个专题课程来讲解本次的平台设计思想,敬请期待。
本次平台MyLib层,从两个角度出发,一个是个人角度,一个是公司角度。
个人:
· 个人技术以及研发经验的积累;
· 减少重复性劳动,已经开发好的模块进行重复调用;
· 加快个人的研发进度;
· 提升自我的编程能力以及研发境界;
公司:
· 平台化代码,集中全公司研发力量;
· 实现公司业务代码的积累,研发技术的积累;
……
(由于篇幅限制只呈现部分内容,点击“阅读原文”浏览完整项目方案)
步骤3:焊接和硬件测试
全网第一份手动移植TouchGFX视频教程,不使用CubeMX!!!
在本次的项目中GUI采用了最新的TouchGFX,放弃了已经使用多年的emwin。一个原因是因为TouchGFX以后的使用是免费的了,而且界面华丽酷炫;另一个原因也是对自己的一个挑战,在资料非常稀少的情况下能否挑战成功。本期视频我将介绍移植过程中的重点以及注意事项,带领大家感受一下TouchGFX的威力。
很庆幸又一次坚持了下来,期间无数次想过放弃,最终还是靠着意志力坚持了下来。当成功的那一刻,我发觉自己又成长了。其实能力的提升就是在这一次次的挑战中,查阅资料、仔细分析原因、查找解决方案。在这个过程中锻炼自己的学习能力,不断完善自己的知识体系。而当你完成了一次次的挑战后,那么你将不再惧怕接触新鲜的事物,离成为大佬又近了一步。
1、新建文件夹
2、添加必要的移植接口文件
3、添加touchgfx_lib
4、修改OSWrapper.cpp改为使用RT-Thread
5、修改BoardConfiguration.cpp
注意要开启CRC,否则会进硬件错误!!!
6、初始化SDRAM、LTDC
初始化SDRAM
初始化LTDC
注意这里要编写LTDC中断服务函数
7、初始化touchgfx
修改DMA
8、触摸移植
9、生成touchgfx工程
新建TouchGFX文件夹,用来存放touchgfx工程
……
……
(由于篇幅限制只呈现部分内容,点击“阅读原文”浏览完整项目方案)
步骤4:开发项目需求和系统整体测试
关于上期视频留下的“坑”,我这次也填上了!(关于编译出现不通过的情况,我找到原因并解决了!)
Q:上次编译为什么没通过?
A:因为之前在删除东西的时候,误操作将环境变量也删掉了,导致编译不能通过。
Q:我是如何解决的呢?
A:重新给电脑装了系统,然后顺手将软件都重新安装了一下,现在可以正常编译通过。
本期视频主要展示本次项目中图形界面的最新进展。
我新增并实现了几个交互效果,以此来对touchgfx在项目中的应用进行一个评估,视频里也有详细得讲解我是如何实现这些效果的。
接下来先用图文为大家梳理一下本期重点:(此次采用自问自答的方式)
一、控件的种类是否足够支撑项目的需求和使用。
从我目前的使用程度来看是够用的。
值得一提的是:这次我为了可以实时显示角度,在展示页面新增一个动态旋转展示效果,并且新增了UP和DOWN按钮去调节扇形的一个面积。
还有还有,按下“New Text”按钮后出现的第二页的曲线图可根据首页的滑动按钮来调整它的展现形式。
需要说明的是:这些都是我拿图形页面软件设计好后,软件直接生成并更新代码,编译好了画面会直接同步到设备。
可以说整个过程一点都不麻烦,当然,部分细节我还在调整。
二、自定义控件如何使用
我将在视频给大家演示了如何添加各种小方格和上面说到的动态旋转效果在展示页面,对于代码也有详细的讲解。
总的来说,整个过程是很顺畅的。
我个人认为,想要做好这个还是需要去参考官方的历程。
官方是调动哪些东西才实现的某些效果,只要仔细看看官方教程,你就可以做出来和他一模一样的效果。
三、UI和硬件交互是否便捷,人机交互设计是否方便
一点也不麻烦,还很方便很简单。
在页面设计软件设计完成后,生成代码成功编译就会直接同步到我们的机子上。
我在演示的时候是因为目前机子交互页面还是测试版本,屏幕因为驱动的问题导致轻微抖动,这些后期都可以优化。
但是我算是对这款 UI进行了一个考察,然后也测试了一下它的先进程度,总体来说是可以的。
确实很方便,操作起来也很简单,然后实现的效果的确是很酷炫。
那么接下来我会再将图形界面深入研究一下,争取出好的效果。
下一期就开始利用这个图形界面来先把本期项目的一个界面设计出来,再给大家演示实际展示效果。
不知不觉,本期演示又结束了。
希望各位按照我的教程可以设计出同款设备,我也期待比我做的更出色的伙伴。
我们下期再见,拜拜!
整个实际操作视频如下:
步骤5:机器各结构搭建与组装
(步骤四、步骤五陆续更新中…)
附件下载
版权声明:本文内容为电路城原创内容,未经授权禁止转载,侵权必究!
活动推荐
看方案还不够?
马上扫码报名参加
RT-Thread x STM32创客大赛
免费领取板卡做项目
拿万元奖金和福利!
与非官方微信交流群:嵌入式、物联网、汽车电子、RF、人工智能、EDA/IC设计、传感器…超多技术群邀您来参加!
30W 工程师的技术交流学习圈
等你加入!
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved