Author:wuli丶汐
专业:电信
使用微信程序控制WIFI小车之ESP8266例程:
一、控制原理原理
**简述**
利用发布订阅模式,即:利用ESP8266 订阅了一个主题,再利用app inventor 编写的app往这个
主题发布消息,由于ESP8266 订阅了这个消息,所以就可以收到app发布得消息,从而执行相应
得动作,比如前进\后退\左转\右转。
二、智能车组装准备
1、esp8266开发板+CP2102 扩展板(淘宝网上一大堆,自行购买这里不做推荐啦!)
2、电机驱动模块:两块2路直流电机驱动模块正反转PWM调速 双H桥步进电机迷你驱动小板。(别问为什么选
它,便宜就完事了。)
3、自备充电宝方便供电。
4、3d打印智能车底盘
三、开发板连接
有孔的一侧为车头
左前车轮由D1,D2控制
左后车轮由D3,D4控制
右前车轮由D5,D6控制
右后车轮由D7,D8控制
具体连接方式请看图片,怕白纸树脂打印的底盘太软支撑不了才用筷子固定了一下QAQ。
四、代码例程
这里需要用到巴法云: 巴法云.
注册账号,打开控制台。具体请看图片:
下面是代码,-----------表示需要修改的部分
#include <ESP8266WiFi.h>
#define TCP_SERVER_ADDR "bemfa.com" //巴法云服务器地址默认即可
#define TCP_SERVER_PORT "8344" //服务器端口,tcp创客云端口8344
//********************需要修改的部分*******************//
#define DEFAULT_STASSID "--------" //WIFI名称,区分大小写,不要写错
#define DEFAULT_STAPSW "------------" //WIFI密码
String UID = "------------------------------"; //用户私钥,可在控制台获取,修改为自己的UID
String TOPIC = "------"; //主题名字,可在控制台新建
//**************************************************//
//最大字节数
#define MAX_PACKETSIZE 512
//设置心跳值30s
#define KEEPALIVEATIME 30*1000
//tcp客户端相关初始化,默认即可
WiFiClient TCPclient;
String TcpClient_Buff = "";//初始化字符串,用于接收服务器发来的数据
unsigned int TcpClient_BuffIndex = 0;
unsigned long TcpClient_preTick = 0;
unsigned long preHeartTick = 0;//心跳
unsigned long preTCPStartTick = 0;//连接
bool preTCPConnected = false;
//相关函数初始化
//连接WIFI
void doWiFiTick();
void startSTA();
//TCP初始化连接
void doTCPClientTick();
void startTCPClient();
void sendtoTCPServer(String p);
//led控制函数,具体函数内容见下方
void turnOnLed();
void turnOffLed();
/*
*发送数据到TCP服务器
*/
void sendtoTCPServer(String p){
if (!TCPclient.connected())
{
Serial.println("Client is not readly");
return;
}
TCPclient.print(p);
}
/*
*初始化和服务器建立连接
*/
void startTCPClient(){
if(TCPclient.connect(TCP_SERVER_ADDR, atoi(TCP_SERVER_PORT))){
Serial.print("\nConnected to server:");
Serial.printf("%s:%d\r\n",TCP_SERVER_ADDR,atoi(TCP_SERVER_PORT));
String tcpTemp=""; //初始化字符串
tcpTemp = "cmd=1&uid="+UID+"&topic="+TOPIC+"\r\n"; //构建订阅指令