0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何打造一套属于自己的嵌入式软件开发平台

5CTi_cirmall 来源:电路设计技能 作者:电路设计技能 2020-11-23 14:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

各位工程师朋友,大家好!我是电子风清扬,本期“来实战”项目《宠物自动喂食器》的执行官。先做一个简单的自我介绍,我是一名怀揣着梦想的新一代嵌入式软件工程师,目前从事物联网设备的开发。一路自学过来,走过很多的弯路,也曾经无数次迷茫过,找不到学习的方向。我很了解一个电子初学者在刚刚开始时的艰辛,不知道学什么,怎么去学,不知道实际工作中需要具备什么能力。希望可以通过本次的项目来帮助更多的新人了解什么是真正的实战项目,需要具备哪些能力,帮助更多的电子初学者找到学习的方向,更顺利的进入这个行业,为电子行业做出一份自己的贡献。

我会在这次的项目中,逐步为大家分享一些工程项目的经验、调试技巧、如何打造一套属于自己的嵌入式软件开发平台。也希望大家可以通过本次的项目找到以下这些问题在自己心目中的答案。

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在项目中的应用进行一个评估,视频里也有详细得讲解我是如何实现这些效果的。

接下来先用图文为大家梳理一下本期重点:(此次采用自问自答的方式)

一、控件的种类是否足够支撑项目的需求和使用

二、自定义控件如何使用

三、UI和硬件交互是否便捷,人机交互设计是否方便

……

(由于篇幅限制只呈现部分内容,点击“阅读原文”浏览完整项目方案)

整个实际操作视频如下:

步骤5:机器各结构搭建与组装

这期视频为大家进一步讲解在设计人机交互界面之前的准备工作。

为了完成字符以及数字的输入,这里就需要用到键盘。

不过遗憾的是目前键盘控件还不能直接在TouchGFX_Designer中直接加入,需要我们通过代码进行手动加入。

在官方提供的demo中只是把字符显示在了键盘上的text控件上,并没有提供对外的输出接口,同时获取输入的时候也需要我们来实现。

那么让我们开始这一期的知识点梳理吧!

1、添加文件到工程下

2、导入键盘素材

导入后可以在touchgfx_designer中看到

3、引用头文件并创建键盘

4、UI界面设计

注册回调函数,来显示键盘

因为键盘不支持拖动和隐藏,所以先创建键盘到看不见的地方

实现弹出效果和文本更新与保存

实现好了键盘之后,还需要我们实现一个拖动切换的菜单。

再一次需要表示遗憾的是:我们的TouchGFX_Designer中并不能完全完成设计工作,还是需要我们手动来完成图标的更新。

从这些天的使用来看,这款GUI的设计器还有很长一段路要走,这一点相比于GUIX就要差了一些。

不过从长远的角度来看,这款GUI有自己的特色,逐渐发展完善,相信它一定会成为人机交互开发的一把利器。

然后为我们所用!我们要做的就是此时此刻去“征服”它!

那么接下来还是手动去完成图标的更新:

1、创建一个自定义控件

2、创建scrollList

3、设置参数

4、编写代码(由于篇幅有限,这里仅展示部分代码)

整个流程如何操作的视频如下:

下面开始我们本次项目的UI界面规划

步骤6:硬件电路整体展示

本次给大家带来我们“宠物投食器”的硬件电路整体的展示。

我解释一下啊,由于采购部分器件的时候,发生缺料,我目前用3D展示给大家,直观又好看~

本次电路的整体3D效果:

电源板的3D效果:

PCB板图片

控制板拓展了网口、WIFI模块接口、USB接口、串口可以满足很多项目的开发,可以将这个板作为开发板使用。

电源板

平时可以给主板供电,同时为电池进行充电,当外部电源被切断时自动切换到电池供电,保证系统在意外断电时可以正常工作。

关于更多细节部分的讲解,请大家移步我最近更新的视频里:

步骤7:人机交互界面规划实现

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人机交互
    +关注

    关注

    12

    文章

    1310

    浏览量

    58244
  • 单片机
    +关注

    关注

    6078

    文章

    45644

    浏览量

    676222
  • 嵌入式软件
    +关注

    关注

    4

    文章

    252

    浏览量

    28260

原文标题:《来实战》之宠物喂食器:交互界面控件设计与硬件电路整体演示(3D展示)

文章出处:【微信号:cirmall,微信公众号:电路设计技能】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式开发新人,要怎么快速提升自己的实战能力

    很多刚入行做嵌入式、单片机软件开发的朋友,只会看教程,不会做实际项目。 给新人个简单实用的提升路径: 先熟练掌握款通用 MCU 的基础外设:IO、按键、延时、PWM。
    发表于 05-21 10:27

    EsDA 科普 | 文读懂嵌入式开发的“全家桶”方案

    在工业4.0与AI浪潮交汇的今天,嵌入式软件开发正面临前所未有的复杂度挑战。如何降低门槛、提升效率、实现一站式交付?EsDA给出了系统化的答案。本文将带您快速了解这
    的头像 发表于 03-18 11:37 426次阅读
    EsDA 科普 | <b class='flag-5'>一</b>文读懂<b class='flag-5'>嵌入式开发</b>的“全家桶”方案

    文浅谈嵌入式设计

    本文深入探讨嵌入式系统设计的完整流程与关键要点,从芯片选型、硬件架构到软件开发,助您掌握打造稳定高效智能设备的实战方法论。
    的头像 发表于 03-13 10:32 285次阅读

    嵌入式软件开发工具市场新动向:订阅制趋势下的中国开发者选择

    面对软件业从永久授权模式广泛转向订阅制的行业趋势,作为行业两大主流嵌入式软件开发工具,即Keil MDK与IAR Embedded Workbench也推出了不同的市场策略,正在为中国开发
    的头像 发表于 01-30 17:20 1049次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>工具市场新动向:订阅制趋势下的中国<b class='flag-5'>开发</b>者选择

    嵌入式驱动开发,需要掌握哪些技能?

    单元测试、集成测试、系统测试等,并学会使用调试工具进行问题排查。 6、 其他嵌入式驱动开发,实质也是软件开发,还需要掌握开发文档的编辑、软件
    发表于 01-20 16:46

    什么是嵌入式应用开发

    包括ARM7、ARM9、ARM11、PowerPC、MIPS等。这些处理器和编程语言的选择取决于具体的硬件条件和开发需求‌。 综上所述,嵌入式应用开发个综合性的技术领域,涉及硬件
    发表于 01-12 16:13

    嵌入式系统应用热门的原因主要有几个方面

    嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统直接在芯片上运行;但是为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配
    发表于 01-08 06:37

    软件到硬件的转场:场由OceanOS-CM0启发的嵌入式思考

    重定向等系列底层操作。 这种差异背后,是调试思维的根本转变。软件开发者习惯于依赖IDE的调试器、断点、变量观察窗口;而嵌入式开发者必须掌握更底层的调试手段——串口日志、逻辑分析仪、甚至是LED的状态
    发表于 01-04 15:52

    C语言单元测试在嵌入式软件开发中的作用及专业工具的应用

    功能包括: 测试通过/失败统计 代码覆盖率可视化 执行时间分析 缺陷跟踪和报告生成 winAMS的图形化界面可以直观展示测试结果和覆盖率数据。 七、总结与展望 C语言单元测试在嵌入式软件开发中具有不可
    发表于 12-18 11:46

    个面向单片机、事件驱动的嵌入式开发平台介绍

    EventOS,是个面向单片机、事件驱动的嵌入式开发平台。它主要有两大技术特色:是事件驱动,二是超轻量。EventOS以及其母项目EventOS,目标是
    发表于 12-05 06:26

    CW32嵌入式软件开发的必备知识

    嵌入式软件开发作为计算机科学和电子工程的交叉领域,要求开发人员具备系列的专业知识和技能。 而基于CW32的嵌入式
    发表于 11-28 07:48

    嵌入式开发平台 AMD嵌入式软件和工具2025.1版现已推出

    AMD 2025.1 版嵌入式软件和工具是面向新嵌入式系统开发打造的综合
    的头像 发表于 08-20 09:15 4379次阅读

    AMD 2025.1版嵌入式软件和工具的新增功能

    AMD 2025.1 版嵌入式软件和工具是面向新嵌入式系统开发打造的综合
    的头像 发表于 08-15 15:32 1561次阅读

    2025“芯原杯”全国嵌入式软件开发大赛圆满落幕

    此前,2025年7月20日至26日,第四届“芯原杯”全国嵌入式软件开发大赛决赛在海口成功举办。
    的头像 发表于 08-06 09:51 1709次阅读

    嵌入式软件开发常用的软件有哪些?

    对于初学嵌入式的朋友们,会想要了解嵌入式软件开发常用的软件有些,有什么用。那么看以下常用的软件介绍。 1.Visual Studio Cod
    发表于 07-03 17:06