keil5开发案例分享 基于STM32设计遥控小车
2023-06-05 来源:elecfans
一、环境介绍
小车主控MCU: STM32F103ZET6
STM32程序开发IDE: keil5
STM32程序风格: 采用寄存器方式开发,注释齐全,执行效率高,方便移植
手机APP: 采用QT设计,程序支持跨平台编译运行(Android、IOS、Windows、Linux都可以编译运行,对应平台上QT的环境搭建,之前博客已经发了文章讲解)
硬件包含: 淘宝购买的完整一套4轮遥控小车(采用STM32F103ZET6作为主控板)、DHT11温湿度传感器、中科微GPS模块、ESP8266
小车完整源码下载地址:https://download.csdn.net/download/xiaolong1126626497/19557040
APP完整源码下载地址: https://download.csdn.net/download/xiaolong1126626497/19557009
二、功能介绍
这是基于STM32设计的4轮遥控小车,支持通过Android手机APP、Windows上位机完成对小车遥控;支持前进、后退、左转、右转、停止等操作。
小车上会实时采集温度、湿度、GPS经纬度、通过ESP8266 WIFI上传至手机APP,手机APP收到数据之后,会将温湿度实时显示出来,经纬度收到后会调用百度地图,显示小车的位置,并且数据也会存放到数据库里,方便查看历史数据;支持范围内温湿度查询、最高温湿度、最低温湿度查询。
小车电机驱动模块采用L298N、WIFI模块采用ESP8266、MCU采用STM32F103C8T6、温湿度模块采用DTH11、GPS模块采用北斗GPS+BDS。
三、相关硬件介绍
四、程序源码
硬件连接说明:
GPS接的串口1: PA3(RX) --5V~3.3V
WIFI接的串口3: PB10(TX)--->接ESP8266的RX PB11(RX)--->接ESP8266的TX --3.3V
DHT11温湿度接: PA7
4.1 STM32小车端: main.c源码
#include 'stm32f10x.h'
#include 'led.h'
#include 'delay.h'
#include 'key.h'
#include 'usart.h'
#include
#include 'timer.h'
#include 'bluetooth.h'
#include 'esp8266.h'
#include 'dht11.h'
#include 'gps.h'
#include 'motor.h'
/*
硬件连接说明:
GPS接的串口1: PA3(RX) --5V~3.3V
WIFI接的串口3: PB10(TX)--->接ESP8266的RX PB11(RX)--->接ESP8266的TX --3.3V
DHT11温湿度接: PA7
*/
u8 ESP8266_SendBuff[50];
char Buffer[1024];
int main()
{
u32 time_cnt=0;
double Longitude=120.086199;
double latitude=30.139219;
u8 temp=20;
u8 humi=70;
//延时2秒保证系统稳定
delay_ms(1000);
delay_ms(1000);
LED_Init();
BEEP_Init();
USART1_Init(115200); //串口调试
USART2_Init(9600); //接GPS模块
TIMER2_Init(72,20000);
USART3_Init(115200); //串口-WIFI ESP8166_01默认波特率9600 ESP8266_12F默认波特率115200
TIMER3_Init(72,20000); //超时时间20ms
printf('正在初始化请稍等.rn');
printf('DHT11_Init:%drn',DHT11_Init());//温湿度传感器初始化
printf('准备检测WIFI硬件,请稍等...rn');
//初始化WIFI硬件
if(ESP8266_Init())printf('WIFI硬件错误.rn');
else
{
printf('WIFI设备正常....rn');
//配置WIFI的模式 192.168.4.1
printf('WIFI配置状态:%drn',ESP8266_AP_TCP_Server_Mode('esp8266_666','12345678',8089));
}
MotorInit(); //电机初始化
//电机脉冲控制
TIMER4_Init(72,1000);
while(1)
{
//接收到GPS的数据
if(USART2_RX_FLAG)
{
USART2_RX_BUFFER[USART2_RX_CNT]='