stm32+AMG8833+VS2015 C#上位机图像显示
Posted 一个电力猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32+AMG8833+VS2015 C#上位机图像显示相关的知识,希望对你有一定的参考价值。
stm32+AMG8833+VS2015 C#上位机图像显示
设计思路
本人在电场工作,于是想做一款热成像智能控制小车,通过网上查找资料,发现AMG8833这款芯片可以说是物美价廉,基本能够实现想要的功能。因为我有一定的单片机开发基础,所以智能小车控制这一块的程序对我来说基本没有问题。
本次设计主要的有两个难点:
一个难点是将AMG8833读取的8*8矩阵数据在上位机上以热成像的图形显示出来。本篇文章主要写这一处难点
另一个难点,就是外加摄像头,既能显示256色的实际图像,还能测温,利用wifi通讯,还能控制小车。
通过这段时间网上资料的查阅,单独的实现其中一项的功能都是可以实现的,但是全部融合在一起的没有,并且AMG8833这款芯片的使用者也不是很多,因此对我来说有一定难度,在这里写这份博客,有一定程度是希望给想要用这款芯片的朋友提供便捷,从而推动它的使用,也能够帮我解决以上难点问题
设计步骤
本篇文章对基础部分不作讲解,因为能够查阅的资料很多,主要部分我也是通过查阅其他作者的文章,修改后成功使用的。
- stm32的编程环境搭建 ,首先得下载Keil5编译器,然后激活,同时要下载mcuisp(用于STM32串口下载程序);
- 搭建好编程环境后,需要配置程序驱动 ,添加自己需要的驱动到程序中去;
- 了解 IIC 通讯,AMG8833与stm32是通过IIC通讯的。(网上大部分的IIC源代码都是使用的正点原子的,里面会有一个他们自己写的库函数,所以直接拿来使用会报错,需要下载那个sys.h库函数文件才能用,为了防止产生纠纷,我这里不提供文件,需要的可以联系我,我将下载方式告知)
- 接下来主要就是AMG8833的驱动程序,这里有一个作者已经都写好了,我基本是用的他的,但是其中由于每个人使用的开发板不同,所以是会出现错误的,我将这些问题着重写出来,也是为后来学习者提供便捷;
- 既然是要和上位机通讯,我这里先使用了 串口通讯 ,没有直接去使用wifi,原因先由简到难;
- 程序已经可以和串口助手 进行通讯,能够成功的将64个数据读取并显示出来(这里用的sscom5.13.1串口助手);
- 在成功读取到数据后,接下来就是和上位机进行联调了,这里用的是VS2015 中的C#windows窗体,其实网上有很多利用VS实现串口通讯的案列,我就做了两个,最后发现还是C#windows窗体的较为好用(这里的术语使用的不是很专业,因为我熟悉VB,但是C#做上位机还是第一次,甚至VS也是第一次使用);
- 上位机界面已经成功做了出来, 主要就是串口的配置,以及显示界面等;
- 当前的难点就在于 热成像图像显示 功能,我在网上看到了唯一的一个大神实现的案例,我上位机基本也是仿照他的,就在某站上的,他说他是通过2D绘图制作出的热成像图形,但是我搜了很多例子,属实没有做出来,询问了大神也没有回复,目前想的是从云图入手,也希望其他大神能够为我指点迷津。
stm32主要程序代码
链接: AMG8833的使用与stm32驱动代码.
这里非常感谢该作者对我的设计提供了很大的帮助,在这里我将我遇到的一些问题及解决办法写出来。
第一个
#define AMG_SDA_IN() GPIOB->CRL&=0x0FFFFFFF;GPIOB->CRL|=8<<28;
#define AMG_SDA_OUT() GPIOB->CRL&=0x0FFFFFFF;GPIOB->CRL|=3<<28;
这里如果报错,需要做以下修改:
#define SDA_IN() GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;
#define SDA_OUT() GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;
函数名根据自己的就可以。
第二个
明确自己开发板属于哪一系列,因为不同系列对串口配置的函数是不一样的,主要分为F1和F4系列,网上大多数是F4系列的,如果在编程报错中主要体现在GPIO口这一块,那么很可能就是这一问题了。
第三个
我用的是正点原子的IIC程序,然后与该作者的AMG8833程序结合起来的,如果直接使用他的没有成功,问题在哪里,我还没有发现。
VS2015 C#上位机窗体制作
链接: STM32 AMG8833 上位机显示 (嵌入式设计).
我目前就是在仿照该作者的去做,没有提供任何源码。
以下界面是我做的,目前已经能够实现串口通讯,能够将64位数据都读取并显示出来。
总结
我的设计目前就做到了这里,因为VS和C#都是第一次使用,还有很多不了解的地方,目前最要的就是解决第一个难点,如何将64个数据做成热成像图形显示出来。
一直不知道什么时候可以写这篇博客,起码有个开头,因为一个人的出现,让我想要变得更加优秀,所以我想继续做下去,当前就写到这里,接下里我会尝试把图形制作出来,如果做出来肯定会有后续
希望能够帮助也在使用AMG8833的你,文章没有任何源程序,需要的朋友可以问我要,我每天都会在线
以上是关于stm32+AMG8833+VS2015 C#上位机图像显示的主要内容,如果未能解决你的问题,请参考以下文章
LINUX驱动开发AMG8833红外成像模块在HI3516上的应用