
信息转换是Android上层客户端与STM32底层控制通信的关键,Android上层客户端无法直接通过串口和底层STM32进行通信。而且在串口通信中,很容易出现数据的丢失。且是非握手的协议,即发送端不知道接收端是否收到发送的信息。
技术实现要素:
本发明的目的是:解决Android上层客户端无法直接通过串口和底层STM32进行通信的技术问题。
本发明提供了一种Android上层客户端与STM32底层通信方法,来实现上层通过串口和底层进行通信,包括以下步骤:
步骤S100:Android上层客户端向STM32底层传送信息;包括以下子步骤:步骤S110:使用USB转RS232连接线将微型USB接口连接平板USB接口,用于平板供电和数据传输;普通USB接口接5v电源,为FTID模块和平板供电;RS232接口输出或接受RS232串口数据信息;步骤S120:RS232通用串口信息经过RS232电平转TTL电平模块,其中,采用max232芯片实现电平转换,最终被转换成TTL信息;步骤S130:TTL信息被底层STM32接收。
步骤S200:STM32底层向Android上层客户端传送信息;包括以下子步骤:步骤S210:STM32底层通过各种传感器采集信息;步骤S220:采集到的信息经过TTL转RS232模块转换成RS232通用串口信息进行传输;其中,采用max232芯片实现电平转换;步骤S230:传输的信息经过解码显示在安卓上层客户端。
本发明的另一个目的是:解决串口之间数据传输易丢失的问题。
优选的,该方法所传送的信息数据采用符号#,标记数据终止。
优选的,该方法所传送的信息数据采用符号$,标记数据开始。
本发明提供了一种模拟握手协议的数据传输格式,使得数据的传输更加可靠。
有益效果:本发明实现了Android上层客户端与STM32底层控制通信的信息转换,有效地解决了上层与底层不能直接通信的问题,而且较为实用,简单;同时通信中采用的数据传输格式,模拟了握手协议,使得传输更加的可靠。
附图说明
图1为本发明实施例提供的基于Android上层客户端与STM32底层通信方法的系统结构示意图。
图2为本发明实施例提供的Android上层客户端与STM32底层通信方法的数据包发送格式。
具体实施方式
为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
本实施例是将Android上层客户端与STM32底层通信方法用于传感器数据传送。首先连接在STM32F103主控板上的各种传感器采集数据,经过主控板进行数据处理之后,通过无线串口模块发送数据到PC端。
PC端运行一个JAVA程序,程序定义串口接口,当无线数传开始工作后,串口就会打开,java程序就能接收来自串口的数据。接收到来自串口的数据后,程序通过Socket和安卓客户端连接上,打开输出流。再对接收到的数据进行处理和分发。处理时,进行数据解析,每一种数据都与相应的输出流对应,通过该输出流传输到安卓客户端。并且在Eclipse控制台输出接受的数据以检测是否传输出错。
之后打开安卓客户端,客户通过socket套接字和电脑相连,可以互相通信。客户端连上服务器后,接收来自服务器端的数据并作出相应判断和处理。客户端定义了5个线程,用来接受和处理不同种类的数据。同时将数据存储到数据库。
具体过程如下:请参照图1,安卓上层客户端与STM32底层控制通信,是通过STM32底层控制—电脑服务器端—安卓客户端实现的。这一模式实现较为方便,传输数据可靠。
STM32底层通过传感器获得环境的相关参数,其中包括温度、心率、湿度、烟雾浓度、是否摔倒等数据。然后将电脑和STM32底层控制通过无线数传连接,这些数据通过无线数传传到电脑串口上,等待电脑服务器端的接收。这些数据按照自定义的格式来传输。格式为“$No,data#”。No为0,表示湿度。No为1表示心率,No为2表示温度,No为3表示烟雾浓度,No为4表示是否摔倒。
电脑服务器端是用Ecl ipse写的Java程序。程序定义串口接口,当无线数传开始工作后,串口就会打开,java程序就能接收来自串口的数据。接收到来自串口的数据后,程序通过Socket和安卓客户端连接上,打开输出流。再对接收到的数据进行处理和分发。处理时,进行数据解析,每一种数据都与相应的输出流对应,通过该输出流传输到安卓客户端。并且在Eclipse控制台输出接受的数据以检测是否传输出错。
安卓客户端主要是用来提醒用户并向用户提供实时环境信息的。客户通过socket套接字和电脑相连,可以互相通信。客户端连上服务器后,就可接收来自服务器端的数据并作出相应判断和处理。客户端定义了5个线程,用来接受和处理不同种类的数据。客户端每个界面都有相应环境参数的正常范围值和相关介绍。种类0环境湿度、种类2环境温度,如果温湿度在正常范围,则用默认黑体字显示当前环境湿度。若不在正常的范围,则用红色字体提示用户注意。种类1是心率,若在正常范围,则用默认黑体字显示当前心率,弱不在正常范围,则用红字字体显示当前心率,并且提示是过高还是过低。过高则建议休息,过低则建议去检查身体。而且这些数据和发生的准确时间将会存储到数据库。种类3是烟雾浓度,若不正常,则讲烟雾浓度和时间记录到数据库,以便检查是否有过烟雾异常。种类4判断是否摔倒。若摔倒,则手机震动提示用户,而且将摔倒时间存储到数据库。这样一来,不仅能够实时显示当前环境状况,又能查询是否有过异常,如心跳、摔倒等,主要针对年轻人方便检查老年人一段时间内的异常状况。
图2中的数据格式为“$No,data#”。No为0,表示湿度。No为1表示心率,No为2表示温度,No为3表示烟雾浓度,No为4表示是否摔倒,整个通信过程,采用此数据格式来进行数据传输。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。STM32作为主控芯片,ESP8266作为外设,利用串口传递信息,通过机智云平台实现STM32与手机之间的数据传输!之所以选择机智云平台,是因为机智云平台相关配套的软件工具非常齐全,而且和正点合作,按照原子哥的精神推出有详细的基于STM32的教程,非常适合对云服务的认知处于一脸懵的人对其进行初步的探索STM32板子和ESP8266模块必不可少,下载机智云的DEMO APP,链接:机智云DEMO APP
(2)ESP8266的固件,链接:GAgent for ESP8266 04020034
(3)串口调试工具,链接:机智云串口调试助手 for win7\win8\win10 v235
(4)使用MCU代码自动生成工具,自动生成MCU代码,使用方法链接:MCU代码生成工具介绍
(5)这个链接包含乐鑫官方烧录工具,机智云串口调试工具,ESP8266固件,以及原子哥详细的机智云教程的PDF资料;提取码为:txs8:工具
步骤有四:
(1)注册机智云,创建新产品,使用MCU代码生成工具自动生成代码;
(2)刷ESP8266固件,并在机智云的串口助手上进行调试;
(3)将生成的代码移植到自己的工程;
(4)联网,调试;
1、创建产品,生成代码
11 创建产品简介
创建产品的过程中要弄明白几个关键要素之间的关系,Product Key,Product Secret,以及数据点所包含的内容!
首先Product Key和Product Secret可以理解为你所创建产品的登录账号和密码,后面自动生成的代码会把这个写进协议里面,这样的话后期把程序烧录进MCU入网之后,手机会通过这个获取你所创建的产品信息!
接下来以最简单的控制LED为例!
比如:实现的目标既可以在MCU开发板控制三个LED的亮灭,又可以在手机上控制,而且在开发板上控制时手机上可以显示当前LED的亮灭状态!那么你可以创建一个产品,然后产品里面有三个数据点!这三个数据点就是指这三个LED!然后三个LED中每一个又包含“亮”“灭”两种状态!
这里的产品就像是用MDK写STM32点亮发光二极管的时候要建立的工程类似!然后因为三个LED有且只有两种状态所以我们设置的数据包类型为布尔值!然后我们希望手机端和开发板上都可以控制所以数据读写类型设置为可写!
STM32停止模式是一种省电模式,可以将芯片的功耗降至最低,但同时也会导致一些外设无法正常工作。在停止模式下,串口等外设会被关闭,需要通过唤醒来重新启动。
如果在停止模式下唤醒后串口不通,可能是以下原因:
1 时钟配置问题:在停止模式下,芯片的时钟会被关闭,唤醒后需要重新配置时钟。如果时钟配置不正确,可能会导致串口无法正常工作。需要检查时钟配置是否正确。
2 中断配置问题:如果串口中断没有正确配置,可能会导致串口无法正常工作。需要检查中断配置是否正确。
3 电源管理问题:在停止模式下,芯片的电源管理也会被关闭,唤醒后需要重新配置电源管理。如果电源管理配置不正确,可能会导致串口无法正常工作。需要检查电源管理配置是否正确。
4 程序问题:如果程序中存在问题,可能会导致串口无法正常工作。需要检查程序是否正确。
综上所述,如果在停止模式下唤醒后串口不通,需要检查时钟配置、中断配置、电源管理配置和程序是否正确。如果以上都没有问题,可能需要进一步调试和排查。
1 STM32芯片出厂时是不支持串口烧写程序的。
2 许多默认支持串口烧写程序的芯片,都是在芯片中内置了一断启动代码,通过跳线或其它触发方式可以执行这断程序。
3 那么,我们可以按照第2条所述的思路,先通过J-LINK或ST-Link烧写一段程序进去。这段程序的功能就是可以从串口下载程序并在机器启动之后跳转到下载程序中运行。
在STM32串口实验中,要实现发送1亮灯的功能,需要进行以下步骤:
1 首先,需要在STM32的开发环境中创建一个工程,并选择使用串口进行通信。
2 在工程中,需要编写相应的程序代码,包括初始化串口和LED等外设。
3 在程序中,需要定义发送数据和接收数据的缓冲区,并设置串口的波特率、数据位、校验位和停止位等参数。
4 在发送数据的函数中,需要将要发送的数据放入发送缓冲区中,并启动串口发送中断。
5 在接收数据的函数中,需要从接收缓冲区中读取数据,并进行相应的处理。
6 在程序中,需要通过适当的逻辑判断实现发送1亮灯的功能,例如当接收到字符“1”时,控制LED亮起。
7 最后,需要将程序下载到STM32单片机中,并连接相应的硬件设备进行测试。
总之,实现STM32串口实验发送1亮灯需要掌握串口通信的相关知识和编程技巧,同时需要熟悉STM32的硬件架构和相应的开发工具。
以上就是关于手机发送给stm32用哪个客户端全部的内容,包括:手机发送给stm32用哪个客户端、stm32停止模式唤醒串口不通、如何通过串口烧写STM32程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)