ESP8266从点灯到遥控小车(三)——组装小车,0代码开发APP控制小车
ESP8266从点灯到APP遥控小车(三)——组装小车,0代码开发APP控制小车
文章目录
- ESP8266从点灯到APP遥控小车(三)——组装小车,0代码开发APP控制小车
- 所需组件
- 一、小车所需组件
- 1.ESP8266-NodeMCU 开发板
- 2.L298N电机驱动模块
- 3.12V电池组(电源)
- 4.小车车身及零件
- 二、小车组装及接线(直接上手)
- 1.车身组装
- 2.组件接线(电源正负千万不能接反,红正黑负)
- 3.组装完毕效果图
- 三、控制源码
- 1.思路分析
- 2.源码展示
- 3.代码扩展部分
- 四、0代码开发APP控制小车
- 1.登录MIT App Inventor
- 2.创建项目
- 3.添加Web客户端组件
- 4.添加标签文本框,展示主题和创作人
- 5.添加文本输入框(用来获取ESP8266的web服务器访问地址)
- 6.添加表格,实现两行三列存放按钮
- 7.逻辑设计——按钮触发功能
- 8.打包apk,导出项目
- 9.完整APP界面展示
- 10.APP遥控小车测试
所需组件
- ESP8266开发板
- 已配置好的Arduino IDE环境(配置传送门)
- 数据线
- L298N电机驱动模块
- 12V电池组(电源)
- 充电宝
- 小车车身及零件(传送门)
一、小车所需组件
1.ESP8266-NodeMCU 开发板
ESP8266 是一款适用于物联网和家庭自动化项目的 Wi-Fi 模块。
ESP8266-NodeMCU是一个开源硬件开发板,由于它允许您像使用 Arduino 一样控制输入和输出,且附带ESP8266 Wi-Fi 模块,支持WIFI功能,所以在物联网(IOT)领域,Arduino开发板最大的对手之一就是ESP8266-NodeMCU开发板。
2.L298N电机驱动模块
为什么要使用电机驱动模块?
单片机的IO口只能提供几毫安到十几毫安的电流,而绝大部分设备工作需要电流都较大,远远大于这个值,比如电机工作所需的电流,因此用单片机来控制这些设备就需要将电流放大,所以要用驱动电路甚至驱动设备。
本次使用的L298N电机驱动模块
- 采用L298N双桥直流电机驱动芯片
- 工作电压范围5V-35V,如果需要从模块内取电,则供电范围为7V-35V
- 峰值输出电流2A
- 每个通道有一个使能输入端
- 可以驱动两个直流电机或者一个四线步进电机
这里我们需要用的是12V供电,供电GND,逻辑输入,输出A和输出B(使能暂时不用,这部分是用来进行PWM输出的,可以进行调速)
逻辑输入:IN1和IN2为一组,对应OutA(输出A);IN3和IN4为一组,对应OutB(输出B)。
(IN1,IN2,IN3,IN4接ESP8266单片机的对应引脚,输出A和输出B接两个电机,即可实现单片机控制电机,IN1和IN2控制A,IN3和IN4控制B)
3.12V电池组(电源)
(这边建议顺便把充电线也买了)
4.小车车身及零件
由于是简单入门实践,所以先整了个最便宜的练练手——>车身及零件传送门
二、小车组装及接线(直接上手)
1.车身组装
略,直接观看商家的教程即可
2.组件接线(电源正负千万不能接反,红正黑负)
不用充电宝,也可以考虑用2 节 AA 纽扣电池给 ESP8266 供电。
ESP8266的工作电压为3V~3.6V,建议的电压为3.3V
L298N | ESP8266开发板 |
---|---|
IN1 | D5 |
IN2 | D6 |
IN3 | D7 |
IN4 | D8 |
GND | GND |
对应的IO口:
D5->14 ,D6->12 ,D7->13 ,D8->15
3.组装完毕效果图
我这边比较剑走偏锋了,锂电池组手动焊接组装的,为了安全,大家还是按规矩来
三、控制源码
1.思路分析
①在上一章节《搭建http网络服务器,实现网页点灯》中,我们已经学会使用ESP8266开发板搭建http网络服务器,实现了网页点灯,以及课后作业中实现了多个按钮来回点灯
②以上是通过搭建http网络服务器,当有http的get或post请求去访问相应的服务器路径时,服务器就会监听到并调用相应的函数执行对应的功能,实现点灯或者返回资源
③因此,我们只需要设置不同的服务器路径(如,/up,/down,/left,/right)并监听和调用函数实现相应功能(前进,后退,左转,右转)即可
2.源码展示
/**********************************************************************
项目名称/Project : ESP8266APP遥控小车
程序名称/Program name : ESP8266car
程序目的/Purpose : 使用ESP8266搭建http网络服务器,开发APP进行控制
项目作者/Author : ArsenLupin
***********************************************************************/
#include <ESP8266WiFi.h> // 本程序使用 ESP8266WiFi库
#include <ESP8266WebServer.h> // ESP8266WebServer库// WiFi
const char *ssid = "A"; // 连接的wifi名称
const char *password = "123456789"; // WiFi密码//创建一个变量led来存放需要控制的引脚号
int led = 2; //创建WiFi对象
WiFiClient espClient;
//创建网络服务器对象,该对象用于响应HTTP请求,监听端口(80)
ESP8266WebServer webserver(80); //处理相应请求的回调函数
void handleRoot();
void handleLEDPost();
void handleLEDGet();
void handleNotFound();//控制小车的请求回调函数
void handleLEDGetUp();
void handleLEDGetDown();
void handleLEDGetLeft();
void handleLEDGetRight();
void handleLEDGetStop();void setup(void){Serial.begin(115200); // 设置窗口波特率,启动串口通讯pinMode(led, OUTPUT); //引脚2为输出模式//控制小车的引脚pinMode(14, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); pinMode(15, OUTPUT);WiFi.begin(ssid, password); //连接WiFiSerial.println("Connecting ...");// WiFi.status()表示的是当前WiFi连接状况,while会让WiFi一直连接成功才跳出while (WiFi.status() != WL_CONNECTED) { delay(500);Serial.print("."); } //当WiFi连接成功,打印连上的WiFi名称和esp8266的ip地址Serial.print("\nConnected to ");Serial.println(WiFi.SSID()); Serial.print("ESP8266-ip:");Serial.println(WiFi.localIP()); //创建web服务webserver.on("/",handleRoot); //监听根目录,调用回调函数//监听ip地址下的/hello目录,匿名函数回调请求内容,状态码200表示请求成功,返回text类型下的plain类型内容webserver.on("/hello",[](){webserver.send(200,"text/plain","hello");});//监听/LED,监听post请求webserver.on("/LED",HTTP_POST,handleLEDPost);//监听/led,监听get请求webserver.on("/led",HTTP_GET,handleLEDGet);//监听小车的访问目录,监听get请求,调用相应函数webserver.on("/up",HTTP_GET,handleLEDGetUp);webserver.on("/down",HTTP_GET,handleLEDGetDown);webserver.on("/right",HTTP_GET,handleLEDGetRight);webserver.on("/left",HTTP_GET,handleLEDGetLeft);webserver.on("/stop",HTTP_GET,handleLEDGetStop);//当找不到目录时,匿名函数返回提示webserver.onNotFound(handleNotFound);//启动web服务webserver.begin();//告知用户网络服务功能已经启动Serial.println("HTTP esp8266-Webserver started");
}void loop(void){//检查http访问,处理客户端连接webserver.handleClient();
}//处理根目录访问的回调函数
void handleRoot() { String HTML="<!DOCYPYE html>\<html>\<head><meta charset='utf-8'></head>\<body>你好!ESP8266的web服务器欢迎您!\<form action=\"/led\"><input type=\"submit\" value=\"Get led\"></form>\
<form action=\"/LED\" method=\"POST\"><input type=\"submit\" value=\"Post LED\"></form>\</body>\</html>"; webserver.send(200, "text/html", HTML);
}//处理Get访问/LED目录的回调函数
void handleLEDGet() { digitalWrite(led,!digitalRead(led));// 改变LED的点亮或者熄灭状态webserver.send(200,"text/html","Led is Change.");
}
//处理Get访问/up目录的小车前进函数
void handleLEDGetUp() { digitalWrite(14,LOW);digitalWrite(12,HIGH);digitalWrite(13,LOW);digitalWrite(15,HIGH); webserver.send(200,"text/html","Car is up.");
}
//处理Get访问/down目录的小车后退函数
void handleLEDGetDown() { digitalWrite(14,HIGH);digitalWrite(12,LOW);digitalWrite(13,HIGH);digitalWrite(15,LOW);webserver.send(200,"text/html","Car is Down.");
}
//处理Get访问/left目录的小车左转函数
void handleLEDGetLeft() { digitalWrite(14,HIGH);digitalWrite(12,LOW);digitalWrite(13,LOW);digitalWrite(15,HIGH); webserver.send(200,"text/html","Car is Left.");
}
//处理Get访问/right目录的小车右转函数
void handleLEDGetRight() { digitalWrite(14,LOW);digitalWrite(12,HIGH);digitalWrite(13,HIGH);digitalWrite(15,LOW); webserver.send(200,"text/html","Car is Right.");
}
//处理Get访问/stop目录的小车停止函数
void handleLEDGetStop() { digitalWrite(14,LOW);digitalWrite(12,LOW);digitalWrite(13,LOW);digitalWrite(15,LOW);webserver.send(200,"text/html","Car is stop.");
}//处理Post访问/LED目录的回调函数
void handleLEDPost() { digitalWrite(led,!digitalRead(led)); // 改变LED的点亮或者熄灭状态webserver.sendHeader("Location","/"); // 跳转回页面根目录webserver.send(303); // 发送Http相应代码303 跳转
}// 设置处理404情况的函数'handleNotFound'
void handleNotFound(){webserver.send(404, "text/plain", "404: Not found"); // 发送 HTTP 状态 404 (未找到页面) 并向浏览器发送文字 "404: Not found"
}
3.代码扩展部分
相比于之前的网页点灯,以下是具体增加的代码部分
设置控制小车的引脚
//控制小车的引脚pinMode(14, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); pinMode(15, OUTPUT);
设置小车的访问目录以及触发的相应回调函数(这里全采用了get请求,这样APP控制比较方便)
//监听小车的访问目录,监听get请求,调用相应函数
webserver.on("/up",HTTP_GET,handleLEDGetUp);
webserver.on("/down",HTTP_GET,handleLEDGetDown);
webserver.on("/right",HTTP_GET,handleLEDGetRight);
webserver.on("/left",HTTP_GET,handleLEDGetLeft);
webserver.on("/stop",HTTP_GET,handleLEDGetStop);
完善控制小车的具体函数功能(有时,因为电机的接线不一样,函数功能还是要根据实际情况来编写)
//处理Get访问/up目录的小车前进函数
void handleLEDGetUp() { digitalWrite(14,LOW);digitalWrite(12,HIGH);digitalWrite(13,LOW);digitalWrite(15,HIGH); webserver.send(200,"text/html","Car is up.");
}
//处理Get访问/down目录的小车后退函数
void handleLEDGetDown() { digitalWrite(14,HIGH);digitalWrite(12,LOW);digitalWrite(13,HIGH);digitalWrite(15,LOW);webserver.send(200,"text/html","Car is Down.");
}
//处理Get访问/left目录的小车左转函数
void handleLEDGetLeft() { digitalWrite(14,HIGH);digitalWrite(12,LOW);digitalWrite(13,LOW);digitalWrite(15,HIGH); webserver.send(200,"text/html","Car is Left.");
}
//处理Get访问/right目录的小车右转函数
void handleLEDGetRight() { digitalWrite(14,LOW);digitalWrite(12,HIGH);digitalWrite(13,HIGH);digitalWrite(15,LOW); webserver.send(200,"text/html","Car is Right.");
}
//处理Get访问/stop目录的小车停止函数
void handleLEDGetStop() { digitalWrite(14,LOW);digitalWrite(12,LOW);digitalWrite(13,LOW);digitalWrite(15,LOW);webserver.send(200,"text/html","Car is stop.");
}
四、0代码开发APP控制小车
这部分我们采用长按和松开的方式来控制小车
实现原理:
长按时,发送相应的get请求,调用相应的函数即可;松开时,同理发送停止命令的get请求,调用停止函数
1.登录MIT App Inventor
MIT App Inventor网页版传送门
打开后,来到登录界面,选择QQ登录即可
2.创建项目
点击项目,选择新建项目
当前的新项目
3.添加Web客户端组件
在左侧 “组件面板” 点击 “通讯连接” ,长按选择 “Web客户端” ,拖拽到手机的空白页即可
4.添加标签文本框,展示主题和创作人
此时,在右侧 “组件列表” 中选择我们的标签文本,在 “组件属性” 中,根据自己想法修改相应的参数
我的修改及效果如下:
添加创作人同上
5.添加文本输入框(用来获取ESP8266的web服务器访问地址)
根据自己的想法,调节右侧中文本输入框的相应参数
我的参数及效果图:
6.添加表格,实现两行三列存放按钮
调节属性参数
拖入4个按钮
对第一个按钮进行重命名和参数修改
“重命名”第一个按钮
修改第一个按钮的参数
效果图如下:
其他的按钮参照第一个来修改即可,以此类推
为了协调一点,我的 “左转” 和 “右转” ,宽度比例设置为32
为了让它显得更协调一点,我在方向键上面插入了一个空表格来占位
7.逻辑设计——按钮触发功能
在右侧,选择逻辑设计
进入逻辑设计界面后,以第一个按钮up(前进)为例
先选出当按钮up被按压时的拼图
被按压时,获取Web客户端网址
拖动合并拼图
进行网址拼接,获取完整的访问路径
拼接ESP8266的服务器ip
拼接相应的访问路径/up
拼接好后,进行Get请求
在ESP8266的http网络服务器中已经设置好了,当通过Get请求访问相应的路径时,会调用相应的函数,实现对应的功能
当up按钮松开时
其他按钮的逻辑设计,如上同理可得:
8.打包apk,导出项目
这里有两种下载APP的方式,我选择的是第一种:下载到手机
等待进度条
扫描下载即可
9.完整APP界面展示
可在文本输入框中修改192.168.x.x变成想要访问的Web服务器ip地址,如192.168.201.22
10.APP遥控小车测试
手机开启一个2.4GHz的热点(也可以电脑开一个热点,手机和开发板都连上同一个就行),WiFi的名称和密码根据自己的代码进行设置,
我这里使用手机热点,WiFi名称:A,密码:123456789
// WiFi
const char *ssid = "A"; // 连接的wifi名称
const char *password = "123456789"; // WiFi密码
在电脑上获取ip地址后,在APP的输入框中输入,此时可换插到充电宝,开始测试
测试视频:
总结
这辆小车实属简陋之作,重心偏移了,所以运动时会有一定的偏差,但整体上反应速度还行,局域网内可玩(哭笑)
ESP8266从点灯到遥控小车(三)——组装小车,0代码开发APP控制小车相关推荐
- 最简单DIY基于ESP8266的智能彩灯③(在网页用按钮+滑动条+手机APP控制RGB灯)
ESP8266和ESP32智能彩灯开发系列文章目录 第一篇:最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯) 第二篇:最简单DIY基于ESP8266的智能彩灯②(在网页用按键 ...
- esp8266接入天猫精灵教程,附开源app控制
超简单,两步完事 第一步 下载程序到esp8266 第二步 绑定天猫精灵 第三步 (附)开源app控制 第一步 下载程序到esp8266 下载地址: 点击下载 本demo 是利用arduino IDE ...
- STM32循迹小车/Android蓝牙控制小车(三)
STM32循迹小车/Android蓝牙控制小车(三) 循迹蓝牙小车的第三篇终于来了,这篇开篇先来介绍一下整个开发过程中得构思思路.本来这应该放在第一篇,但是实际思路会因为开发过程中遇到的问题而改变,到 ...
- esp8266接入米家、小爱同学,附开源app控制
超简单,两步完事 第一步 下载程序到esp8266 第二步 绑定到米家 第三步 (附)开源app控制 第一步 下载程序到esp8266 下载地址: 点击下载 本demo 是利用arduino IDE开 ...
- python语言type board_Micropython TPYBoard开发板控制无线加速度小车
现在无线控制已经成为了电子科学领域的主流,这次就来教大家做一个主流中的主流--无线控制的小车,先给大家看一下最终的成品演示视频: ://v.youku.com/v_show/id_XMTY2MzAzN ...
- 无代码开发工具推荐丨三叠云
一.简介 名称:三叠云 类型:网站 / App 官网地址(工具使用地址/下载地址):数字化生产力创新平台 - 三叠云官网无代码开发,数据实时分析,洞察执行的快速落地流程管理,移动平台打通线上线下协同运 ...
- 无线控制模块c语言编程,基于STM32F103ZET6无线语音控制小车设计与实现.doc
基于STM32F103ZET6无线语音控制小车设计与实现 基于STM32F103ZET6无线语音控制小车设计与实现 摘要:本文以STM32F103ZET6单片机作为控制核心,通过LD3320语音识别模 ...
- APP Invertor 制作BLE蓝牙APP 控制esp32蓝牙小车
APP Invertor蓝牙小车制作 1.插件下载 1.1.导入插件 2.APP界面展示 2.1 .可视化编程 3.esp32 蓝牙代码 4.实测效果 4.1 APP控制端 4.2 蓝牙接收端 经 ...
- 树莓派小车教程(四)之——基本实现网页控制小车速度可调(同步执行)
项目场景: 之前的小车教程序列里写到了网页控制小车速度的初步实现.当时只是初步实现小车速度的加减,但运行起来还是出现了些问题,如不能实现小车的移动与变速同时进行.手指离开按键后小车仍有延迟等. 问题分 ...
最新文章
- 汇总|SLAM常用linux命令,包括文件查找、查看文件大小、设置环境变量等
- C++太难学,怎么破?这本书给你指点迷津!
- python面试常见问题-Python面试常见的8个问题及答案总结
- PHP用支付宝沙箱账号测试支付功能
- npm ERR! code ELIFECYCLE解决方案
- xMenuTools(超实用右键菜单工具) v7.6
- java 中free,javac(freejava)
- 在石家庄扣完五险一金到手5000,算什么水平?
- LaTeX tikz初探——基本图形绘制(1)
- 二进制编译安装mysql(centos6、7)和源码编译bind
- 长文解读:迟到的Libra与即将到来的Commodity 2.0
- js实现本地上传图片及预览
- 广州科二化龙考场_广州市机动车驾驶人化龙考场交通路线攻略
- 基于推特数据挖掘交通事件的城市交通流深度学习预测模型
- python全栈开发包括那些_简述Python全栈工程师要学会什么
- 一分钟先生:怎样给员工发奖金
- 揭秘抖音快手刷赞刷评论骗局,揭秘抖音刷赞兼职套路
- Guitar Pro2023吉他谱作曲和练习工具
- 用Python生成动态二维码,只要5行代码,拥有你的个性二维码!
- 访问网站时,长时间打不开或无响应