最简单DIY基于STM32单片机的WIFI智能小车设计方案

科技 科技 1254 人阅读 | 0 人回复

<
STM32库函数开发系列文章目录

第一篇:STM32F103ZET6单片机双串口互发程序设计与实现
第二篇:最简朴DIY基于STM32单片机的蓝牙智能小车设计方案
第三篇:最简朴DIY基于STM32F407探索者开发板的MPU6050陀螺仪姿态控制舵机程序
第四篇:最简朴DIY基于STM32F407探索者开发板和PCA9685舵机控制模块的红外遥控机械臂控制程序
第五篇:注释最详细、代码最简朴的STM32+摄像头+显示屏的颜色跟踪电路软硬件方案
第六篇:最简朴DIY基于STM32单片机的WIFI智能小车设计方案

前言

    daodanjishui物联网核心原创技术之最简朴DIY基于STM32单片机的WIFI智能小车设计方案。
    市面上有各种开源STM32+ESP8266-01S的无线WIFI控制小车,但是有复杂的有简朴的,如果想快速入门STM32+ESP8266AT固件开发,这个方案会给你一个快捷高效的方案。

二、闭门造车日记

1.准备硬件和接线

采用双层透明亚克力板布局,使用带有数码管显示的电源,带有独立开关的L298N模块,一片STM32F103C8T6作为主控,两个18650高能锂电池供电,一个ESP8266-01S串口WIFI模块,三根铜柱把第二层的亚克力板撑起来了,整个小车布局都由我手工设计和搭建,看起来就像是一个艺术品。这次的小车功能拓展提高了很多,首先支持三个串口同时使用,我定义串口一作为串口调试使用,串口二作为与ESP8266进行通信使用,串口三留给买家自行扩展,需要注意的是:stm32触发串口中断需要加入 \r\n,串口2是与ESP8266模块链接的,stm32的串口2中断必须吸收到\r\n 才能触发串口中断,十六进制就是 0d 0a,串口2收到的数据会通过串口1输出到电脑串口调试助手,这样用串口1可以调试程序,看看串口2的WIFI模块是否吸收到数据另外给串口1发送数据的话,串口1会返回相同的数据,同时串口1也往串口2发送数据,这样也可以测试WIFI模块是否能回复给电脑网络调试助手服务器。
最简单DIY基于STM32单片机的WIFI智能小车设计方案 105300s0oi33wot6kpz22r.jpg

最简单DIY基于STM32单片机的WIFI智能小车设计方案 105301ppqvpppbpqjpy833.jpg

根据上面两个截图的
连接说明:串口1作为调试打印输出,可以不接
串口2作为ESP8266-01S与STM32F103C8T6通信的接口,必须接入
所以STM32 的PA2作为TX端 连接8266的RX端
所以STM32 的PA3作为RX端 连接8266的TX端
ESP8266必须与STM32共地,ESP8266模块供电3.3V
ESP8266的EN接3.3V
ESP8266的RST、IO0、IO2都不需要接线
STM32的 PA4 接L298N的第一个管脚PIN0
STM32的 PA5 接L298N的第一个管脚PIN1
STM32的 PA6 接L298N的第一个管脚PIN2
STM32的 PA7 接L298N的第一个管脚PIN3
或者是(不同的L298N模块的编号可能不一样)
STM32的 PA4 接L298N的第一个管脚PIN1
STM32的 PA5 接L298N的第一个管脚PIN2
STM32的 PA6 接L298N的第一个管脚PIN3
STM32的 PA7 接L298N的第一个管脚PIN4
2.设计过程

    代码都是daodanjishui原创开源和亲自测试验证,包管了代码精浅易懂,适合快速入门上手二次开发,核心技术知识点足够多。为了这个作品,曾经的我把正点原子开源论坛关于ESP8266的帖子都看遍了!但是后面我上手SDK开发了,这电路是我对以前走的弯路进行一次致敬!
     为了发布小车开源方案,daodanjishui疯狂闭门造车,每一个开源方案就造一部车,就有点像钢铁侠那样疯狂,一个成年人造这种车,要么是想挣钱,要么就是想玩。每次造车我都会用新的模块去搭建,因为实在不想去拆解重装了,还有一个原因就是:总有一天我会像钢铁侠电影那样,用一个眼镜或者是头盔去同时集群控制这些玩意儿。这些小车的构造和程序都比力简朴,尽量不要涉及到过于复杂的编码,但是又要体现出万物互联的精华。一个人不管做什么事情,只要不断重复做成一个体系那么就容易成功。
    说说这次电路的功能和特点:这次用网络调试助手作为服务器控制WIFI智能小车,所以需要组建一个局域网,再也不用以前AP热点的模式了,因为用STA模式,小车具有的功能更加容易扩展,后期我要加上WebSocket技术实现集群控制的,现在是在酝酿一个大招。代码的风格沿用MDK5串口互发的根本框架,这个框架以前我作为免费开源的资料上传电路城。最简朴DIY基于STM32单片机的蓝牙智能小车设计方案 用的是串口1和2互发进行调试,这次也不例外,不过这次代码复杂了很多,虽然也是用串口1和串口2,但是串口2控制ESP8266的程序移植和改进了正点原子的源码,可以完美实现断线重连服务器,摒弃了显示屏的优点,还有心跳程序检测连接的功能。特别是在心跳程序的地方 详细注释了如何使用定时器来检测WIFI传输过程中出现问题的逻辑处理。WIFI开发采用了串口AT指令控制,这也是正点原子刚开始出WIFI教程时候的方式,虽然现在广泛用Arduino 的ESP8266集成开发环境来开发,但是这个源码是非常值得学习的,因为涉及到非常多的知识点。小车控制使用网络调试助手指令去触发小车运动,这样更加直观看到调试信息和减少买家掌握这个电路的难度。使用串口1的打印功能,读者很容易掌握着代码的精华。
3.准备一份经典的STM32串口库函数源码

为了快速掌握读者STM32串口通信,最后附上STM32串口库函数源码免费下载链接。
代码如下(示例):
[code]#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#include "usart.h"#include "usart2.h"//串口实验  //技术支持:daodanjishui  int main(void) {                         u8 t;        u8 len;          u8 len2;                delay_init();                     //延时函数初始化                  NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级        uart_init(9600);         //串口初始化为9600          uart2_init(9600);         //LED_Init();                             //LED端口初始化        //KEY_Init();          //初始化与按键连接的硬件接口         while(1)        {                if(USART_RX_STA&0x8000)                {                                                                   len=USART_RX_STA&0x3fff;//得到此次吸收到的数据长度                                                <span class="token comment">/* //因为我这里要把气象站的数据传回来,所以不能直接返回数据给气象站,否则可能出错                        printf("电脑 send to串口1的数据为:\r\n");                        for(t=0;t 总结

    总结:用ESP8266AT指令来连接服务器有一个好处是可以让STM32做控制算法的处理,如果用ESP8266做通信又做算法处理,那么可能导致性能发挥有限。虽然ESP8266与STM32直接采用串口2相连速度有点慢,但是好处就是稳定,ESP8266跑的是网络协议栈,STM32跑的是裸机程序,相互配合,程序相当稳定。做物联网控制的买家可以很好参考我这个代码来改造成智能WIFI插座、WIFI机器人、智能家居等等,如果你自己想自己去写这种底子性代码,你会发现困难重重一点小问题就能困住你一整天,如果用我搭好的环境去开发将会事半功倍,可能全网还真找不到像我这样WIFI智能小车的程序。
    下个智能小车专题,我会加入手机上位机和网页上位机或者C# 上位机实现一些方便快捷的控制,再也不用网络助手或者是串口调试助手去控制小车了。原创开源值得期待。
最后附上本博文代码下载地址:https://www.cirmall.com/circuit/24707/
直接跳转
STM32串口库函数源码相关代码免费下载:https://www.cirmall.com/circuit/19782/
直接跳转

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则