6

我的创客项目+生活记录:今天尝试制作了基于ESP12F单片机及Blinker物联网平台的三轮小...

 2 years ago
source link: https://www.taholab.com/24044
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

硬件列表:

小车:

开发板

ESP8266 开发板 V3 (ESP-12N F NodeMcu Lua)( 需要CP2102驱动)

wifi物联网 ESP8266开发板 V3 ESP-12N F NodeMcu Lua CP2102-淘宝网 (taobao.com)

引脚图(资料):

电机驱动板

L293D ESP12E Lua电机驱动板):该驱动板默认占用控制板 D1、 D2、 D3、 D4 四个端口,分别作为 PWMA(电机 A 转速)、 PWMB(电机 B 转速)、 DA(电机 A 方向)、 DB(电机 B 方向) 功能。
模块同时引出 VIN、 3.3V、 DIO、 AIO、 SDIO、 UART、 SPI、 RST、 EN 等多个引脚,可以方便地接入各种传感器(温湿度、蜂鸣器、 照明、继电器等)。

ESP8266 WiFi 电机驱动扩展板 L293D ESP12E Lua 物联网 智能小车-淘宝网 (taobao.com)

2021-10-04_184146.png
2021-10-04_184133.png
2021-10-04_184124.png
2021-10-04_184117.png

如果接步进电机只能接一个,本文不需要,下图只是参考。

2021-10-04_184157.png
20211004230010.jpg
20211004230028.jpg
20211004230033.jpg

软件与代码:

Arduino中的代码

注意替换到auth[] ssid[] pswd[]的内容

#define BLINKER_WIFI
#define BLINKER_HTTP
#include <Blinker.h>
//#include <ESP8266WiFi.h>
#define L_PWM_PIN       D1
#define R_PWM_PIN       D2
#define L_DIR_PIN       D3
#define R_DIR_PIN       D4
char auth[] = "XXXXXXXXXXXX";
char ssid[] = "XXXXXXXXXXXX";
char pswd[] = "XXXXXXXXXXXX";
/* 新建组件对象*/
BlinkerButton Button_front("btn-front");
BlinkerButton Button_left("btn-turn-left");
BlinkerButton Button_back("btn-back");
BlinkerButton Button_right("btn-turn-right");
BlinkerButton Button_stop("btn-stop");
BlinkerButton Button_left_front("btn-left-front");
BlinkerButton Button_right_front("btn-right-front");
BlinkerButton Button_left_back("btn-left-back");
BlinkerButton Button_right_back("btn-right-back");
BlinkerNumber Number1("num-abc");
int counter = 0;
/* 前进*/
void Button_front_callback(const String & state)  /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
    BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
    analogWrite(L_PWM_PIN, 200);
    digitalWrite(L_DIR_PIN, HIGH);
    analogWrite(R_PWM_PIN, 200);
    digitalWrite(R_DIR_PIN, HIGH);
/* 后退*/
void Button_back_callback(const String & state)  /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
    BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
    analogWrite(L_PWM_PIN, 200);
    digitalWrite(L_DIR_PIN, LOW);
    analogWrite(R_PWM_PIN, 200);
    digitalWrite(R_DIR_PIN, LOW);
/* 左转*/
void Button_left_callback(const String & state)  /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
    BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
    analogWrite(L_PWM_PIN, 0);
    digitalWrite(L_DIR_PIN, HIGH);
    analogWrite(R_PWM_PIN, 200);
    digitalWrite(R_DIR_PIN, HIGH);
/* 右转*/
void Button_right_callback(const String & state)  /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
    BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
    analogWrite(L_PWM_PIN, 200);
    digitalWrite(L_DIR_PIN, HIGH);
    analogWrite(R_PWM_PIN, 0);
    digitalWrite(R_DIR_PIN, HIGH);
/* 停止*/
void Button_stop_callback(const String & state)  /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
    BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
    digitalWrite(L_PWM_PIN, 0);
    //digitalWrite(L_DIR_PIN, HIGH);
    digitalWrite(R_PWM_PIN, 0);
    //digitalWrite(R_DIR_PIN, HIGH);
/* 左前进*/
void Button_left_front_callback(const String & state)  /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
    BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
    analogWrite(L_PWM_PIN, 100);
    digitalWrite(L_DIR_PIN, HIGH);
    analogWrite(R_PWM_PIN, 200);
    digitalWrite(R_DIR_PIN, HIGH);
/* 右前进*/
void Button_right_front_callback(const String & state)  /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
    BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
    analogWrite(L_PWM_PIN, 200);
    digitalWrite(L_DIR_PIN, HIGH);
    analogWrite(R_PWM_PIN, 100);
    digitalWrite(R_DIR_PIN, HIGH);
/* 左后退*/
void Button_left_back_callback(const String & state)  /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
    BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
    analogWrite(L_PWM_PIN, 100);
    digitalWrite(L_DIR_PIN, LOW);
    analogWrite(R_PWM_PIN, 200);
    digitalWrite(R_DIR_PIN, LOW);
/* 右后退*/
void Button_right_back_callback(const String & state)  /*理解成这是一个中断调用函数 state 是调用中断后手机app发来的值*/
    BLINKER_LOG("get button state: ", state); /*在blinker和Monitor(监视器的意思)上显示这一项*/
    analogWrite(L_PWM_PIN, 200);
    digitalWrite(L_DIR_PIN, LOW);
    analogWrite(R_PWM_PIN, 100);
    digitalWrite(R_DIR_PIN, LOW);
/* 如果未绑定的组件被触发,则会执行其中内容*/
void dataRead(const String & data)
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter);
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  BLINKER_DEBUG.stream(Serial);
  BLINKER_DEBUG.debugAll();
  pinMode(L_PWM_PIN, OUTPUT);
  pinMode(L_DIR_PIN, OUTPUT);
  pinMode(R_PWM_PIN, OUTPUT);
  pinMode(R_DIR_PIN, OUTPUT);
  analogWrite(L_PWM_PIN, 0);
  digitalWrite(L_DIR_PIN, HIGH);
  analogWrite(R_PWM_PIN, 0);
  digitalWrite(R_DIR_PIN, HIGH);
  Blinker.begin(auth, ssid, pswd);
  Blinker.attachData(dataRead);
  Button_front.attach(Button_front_callback);
  Button_left.attach(Button_left_callback);
  Button_back.attach(Button_back_callback);
  Button_right.attach(Button_right_callback);
  Button_stop.attach(Button_stop_callback);
  Button_left_front.attach(Button_left_front_callback);
  Button_right_front.attach(Button_right_front_callback);
  Button_left_back.attach(Button_left_back_callback);
  Button_right_back.attach(Button_right_back_callback);
void loop() {
  // put your main code here, to run repeatedly:
  Blinker.run();

App的界面与按钮:

20211004230225.png
20211004230233.png

一个案例: NodeMCU Motor Shield L293D for ESP12E + Blynk – YouTube (基于Blynk)

官方案例资料(找了很久,但没帮上什么忙):1代智能小车 – 四博智联产品售后 – Powered by Discuz! (doit.am)

ESP12E Motor Shield (L293D ESP12E Lua电机驱动板)产品说明书 – ESP8266(NodeMCU)扩展板 – 四博智联产品售后 – Powered by Discuz! (doit.am)

ESP12E Motor Shield (L293D ESP12E Lua电机驱动板)产品说明书(让我一顿好找啊,找了几个小时,资料太少了):


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK