Motor Control Using NodeMCU
Control DC motors using a web browser.
Components and supplies
1
Dual H-Bridge motor drivers L293D
1
Jumper wires (generic)
1
Breadboard (generic)
1
DC Motor, Miniature
1
NodeMCU ESP8266 Breakout Board
Apps and platforms
1
Arduino IDE
Project description
Code
Source Code
arduino
1#include <ESP8266WiFi.h> 2#include <WiFiClient.h> 3#include <ESP8266WebServer.h> 4 5// Replace with your network credentials 6const char* ssid = "Enter the name of the Wifi router"; 7const char* password = "Enter Password of the router"; 8 9ESP8266WebServer server(80); //instantiate server at port 80 (http port) 10 11String page = ""; //For the Web Server 12String page2=""; //For updating Status of motor 1 13String page3=""; //For updating status of motor 2 14void setup(void) 15{ 16 //the HTML of the web page 17 page = "<center><h1>Motor Control Web Server</h1><body><p><a href=\\"Forward\\"><button>Forward</button></a><p><a href=\\"Backward\\"><button>Backward</button></a></p><p><a href =\\"Left\\"><button>Left</button></a> <a href=\\"Stop\\"><button>Stop</button></a><a href=\\"Right\\"><button>Right</button></a></p></body></center>"; 18 pinMode(D5, OUTPUT); // inputs for motor 1 19 pinMode(D6,OUTPUT); 20 pinMode(D7,OUTPUT); // inputs for motor 2 21 pinMode(D8,OUTPUT); 22 pinMode(LED_BUILTIN,OUTPUT); // For status of WiFi connection 23 delay(1000); 24 Serial.begin(115200); 25 WiFi.begin(ssid, password); //begin WiFi connection 26 Serial.println(""); 27 28 // Wait for connection 29 while (WiFi.status() != WL_CONNECTED) { 30 delay(500); 31 Serial.print("."); 32 } 33 digitalWrite(LED_BUILTIN,HIGH); // when connected turns high 34 Serial.println(""); 35 Serial.print("Connected to "); 36 Serial.println(ssid); 37 Serial.print("IP address: "); 38 Serial.println(WiFi.localIP()); //provides IP address 39 server.on("/", [](){ 40 server.send(200, "text/html", page+page2); 41 }); 42 server.on("/Forward",Forward); 43 server.on("/Backward",Backward); 44 server.on("/Left",Left); 45 server.on("/Right",Right); 46 47 server.on("/Stop",[](){ // turns all the motor input pins low 48 page2="<center><p> motor 1 Status : Off</p></center>"; 49 page3="<center><p> motor 2 Status : off</p></center>"; 50 server.send(200,"text/html",page+page2+page3); 51 digitalWrite(D5,LOW); 52 digitalWrite(D6,LOW); 53 digitalWrite(D7,LOW); 54 digitalWrite(D8,LOW); 55 delay(200); 56 }); 57 server.begin(); 58 Serial.println("Web server started!"); 59} 60void loop(void) 61{ 62 server.handleClient(); 63} 64 65 void Forward() 66 { 67 digitalWrite(D5,HIGH); 68 digitalWrite(D6,LOW); 69 page2="<center><p> motor 1 Status : Forward </p></center>"; 70 server.send(200,"text/html", page+page2+page3); 71 delay(200); 72 } 73 void Left() 74 { 75 page3="<center><p> motor 2 Status : Left</p></center>"; 76 server.send(200,"text/html",page+page2+page3); 77 digitalWrite(D7,HIGH); 78 digitalWrite(D8,LOW); 79 delay(200); 80 } 81 void Right() 82 { 83 page3="<center><p> motor 2 Status : Right</p></center>"; 84 server.send(200,"text/html",page+page2+page3); 85 digitalWrite(D8,HIGH); 86 digitalWrite(D7,LOW); 87 delay(200); 88 } 89 void Backward() 90 { 91 page2="<center><p> motor 1 Status : Backward</p></center>"; 92 server.send(200, "text/html", page+page2+page3); 93 digitalWrite(D6, HIGH); 94 digitalWrite(D5,LOW); 95 delay(200); 96 }
Source Code
arduino
1#include <ESP8266WiFi.h> 2#include <WiFiClient.h> 3#include <ESP8266WebServer.h> 4 5// 6 Replace with your network credentials 7const char* ssid = "Enter the name of 8 the Wifi router"; 9const char* password = "Enter Password of the router"; 10 11ESP8266WebServer 12 server(80); //instantiate server at port 80 (http port) 13 14String page = ""; 15 //For the Web Server 16String page2=""; //For updating Status of motor 1 17String 18 page3=""; //For updating status of motor 2 19void setup(void) 20{ 21 //the 22 HTML of the web page 23 page = "<center><h1>Motor Control Web Server</h1><body><p><a 24 href=\\"Forward\\"><button>Forward</button></a><p><a href=\\"Backward\\"><button>Backward</button></a></p><p><a 25 href =\\"Left\\"><button>Left</button></a> <a href=\\"Stop\\"><button>Stop</button></a><a 26 href=\\"Right\\"><button>Right</button></a></p></body></center>"; 27 pinMode(D5, 28 OUTPUT); // inputs for motor 1 29 pinMode(D6,OUTPUT); 30 pinMode(D7,OUTPUT); 31 // inputs for motor 2 32 pinMode(D8,OUTPUT); 33 pinMode(LED_BUILTIN,OUTPUT); 34 // For status of WiFi connection 35 delay(1000); 36 Serial.begin(115200); 37 38 WiFi.begin(ssid, password); //begin WiFi connection 39 Serial.println(""); 40 41 42 // Wait for connection 43 while (WiFi.status() != WL_CONNECTED) { 44 delay(500); 45 46 Serial.print("."); 47 } 48 digitalWrite(LED_BUILTIN,HIGH); // when 49 connected turns high 50 Serial.println(""); 51 Serial.print("Connected to 52 "); 53 Serial.println(ssid); 54 Serial.print("IP address: "); 55 Serial.println(WiFi.localIP()); 56 //provides IP address 57 server.on("/", [](){ 58 server.send(200, "text/html", 59 page+page2); 60 }); 61 server.on("/Forward",Forward); 62 server.on("/Backward",Backward); 63 64 server.on("/Left",Left); 65 server.on("/Right",Right); 66 67 server.on("/Stop",[](){ 68 // turns all the motor input pins low 69 page2="<center><p> 70 motor 1 Status : Off</p></center>"; 71 page3="<center><p> motor 2 Status : 72 off</p></center>"; 73 server.send(200,"text/html",page+page2+page3); 74 digitalWrite(D5,LOW); 75 76 digitalWrite(D6,LOW); 77 digitalWrite(D7,LOW); 78 digitalWrite(D8,LOW); 79 80 delay(200); 81 }); 82 server.begin(); 83 Serial.println("Web server started!"); 84} 85void 86 loop(void) 87{ 88 server.handleClient(); 89} 90 91 void Forward() 92 93 { 94 digitalWrite(D5,HIGH); 95 digitalWrite(D6,LOW); 96 page2="<center><p> 97 motor 1 Status : Forward </p></center>"; 98 server.send(200,"text/html", 99 page+page2+page3); 100 delay(200); 101 } 102 void Left() 103 { 104 page3="<center><p> 105 motor 2 Status : Left</p></center>"; 106 server.send(200,"text/html",page+page2+page3); 107 108 digitalWrite(D7,HIGH); 109 digitalWrite(D8,LOW); 110 delay(200); 111 } 112 113 void Right() 114 { 115 page3="<center><p> motor 2 Status : Right</p></center>"; 116 117 server.send(200,"text/html",page+page2+page3); 118 digitalWrite(D8,HIGH); 119 120 digitalWrite(D7,LOW); 121 delay(200); 122 } 123 void Backward() 124 { 125 126 page2="<center><p> motor 1 Status : Backward</p></center>"; 127 server.send(200, 128 "text/html", page+page2+page3); 129 digitalWrite(D6, HIGH); 130 digitalWrite(D5,LOW); 131 132 delay(200); 133 }
Downloadable files
Schematic
Schematic

Comments
Only logged in users can leave comments