In this tutorial, we will learn how to interface DC Motor with NodeMcu by using Relay Module controlling with Alexa echo. with voice API.
A DC motor is any of a class of rotary electrical machines that converts direct current electrical energy into mechanical energy. The most common types rely on the forces produced by magnetic fields. SmallDC motors are used in tools, toys, and appliances.
There are 4 main types of DC motors:
Permanent Magnet DC Motors. The permanent magnet motor uses a permanent magnet to create field flux.
Series DC Motors. In a series DC motor, the field is wound with a few turns of a large wire carrying the full armature current.
So now we are familiar with the motor let us interface it.
Components Required:
Follow the Image below for circuit connection reference:-
N.B-(In this circuit connection we have to supply 5volts as the input voltage.)
After making the circuit dump the code given below:-
#include <ESP8266WiFi.h>
#include "fauxmoESP.h"
/* Network credentials */
#define WIFI_SSID "Enter your Wifi Name"
#define WIFI_PASS "Enter Password"
/* Belkin WeMo emulation */
fauxmoESP fauxmo;
/* Set Relay Pins */
#define RELAY_1 D0
void setup()
{
Serial.begin(115200);
//setup and wifi connection
wifiSetup();
//Set relay pins to outputs
pinMode(RELAY_1, OUTPUT);
//Set each relay pin to HIGH ====== NOTE THAT THE RELAYS USE INVERSE LOGIC =====
digitalWrite(RELAY_1, LOW);
delay(500);
// Device Names for Simulated Wemo switches
fauxmo.addDevice("Karkhana Motor");
fauxmo.onMessage(callback);
}
void loop()
{
fauxmo.handle();
}
/* ---------------------------------------------------------------------------
Device Callback
----------------------------------------------------------------------------*/
void callback(uint8_t device_id, const char * device_name, bool state)
{
Serial.print("Device "); Serial.print(device_name);
Serial.print(" state: ");
if (state)
{
Serial.println("ON");
}
else
{
Serial.println("OFF");
}
//Switching action on detection of device name
if ( (strcmp(device_name, "Karkhana Motor") == 0) )
{
if (!state)
{
digitalWrite(RELAY_1, LOW);
}
else
{
digitalWrite(RELAY_1, HIGH);
}
}
}
/* -----------------------------------------------------------------------------
Wifi Setup
-----------------------------------------------------------------------------*/
void wifiSetup()
{
// Set WIFI module to STA mode
WiFi.mode(WIFI_STA);
// Connect
Serial.println ();
Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
Serial.println();
WiFi.begin(WIFI_SSID, WIFI_PASS);
// Wait
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(100);
}
Serial.print(" ==> CONNECTED!" );
Serial.println();
// Connected!
Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
Serial.println();
}
After dumping the code the output is shown on the video below:-
After dumping the code the output is shown on the image below:-
A DC motor is any of a class of rotary electrical machines that converts direct current electrical energy into mechanical energy. The most common types rely on the forces produced by magnetic fields. SmallDC motors are used in tools, toys, and appliances.
DC Motor (Overview) |
Permanent Magnet DC Motors. The permanent magnet motor uses a permanent magnet to create field flux.
Series DC Motors. In a series DC motor, the field is wound with a few turns of a large wire carrying the full armature current.
- Shunt DC Motors.
- Compound DC Motors.
So now we are familiar with the motor let us interface it.
Components Required:
- DC motor
- NodeMcu(ESP8266)
- Alexa echo.
- Connecting wires(male to male)
- Breadboard
- Relay Module
Follow the Image below for circuit connection reference:-
(Interfacing all components) |
After making the circuit dump the code given below:-
#include <ESP8266WiFi.h>
#include "fauxmoESP.h"
/* Network credentials */
#define WIFI_SSID "Enter your Wifi Name"
#define WIFI_PASS "Enter Password"
/* Belkin WeMo emulation */
fauxmoESP fauxmo;
/* Set Relay Pins */
#define RELAY_1 D0
void setup()
{
Serial.begin(115200);
//setup and wifi connection
wifiSetup();
//Set relay pins to outputs
pinMode(RELAY_1, OUTPUT);
//Set each relay pin to HIGH ====== NOTE THAT THE RELAYS USE INVERSE LOGIC =====
digitalWrite(RELAY_1, LOW);
delay(500);
// Device Names for Simulated Wemo switches
fauxmo.addDevice("Karkhana Motor");
fauxmo.onMessage(callback);
}
void loop()
{
fauxmo.handle();
}
/* ---------------------------------------------------------------------------
Device Callback
----------------------------------------------------------------------------*/
void callback(uint8_t device_id, const char * device_name, bool state)
{
Serial.print("Device "); Serial.print(device_name);
Serial.print(" state: ");
if (state)
{
Serial.println("ON");
}
else
{
Serial.println("OFF");
}
//Switching action on detection of device name
if ( (strcmp(device_name, "Karkhana Motor") == 0) )
{
if (!state)
{
digitalWrite(RELAY_1, LOW);
}
else
{
digitalWrite(RELAY_1, HIGH);
}
}
}
/* -----------------------------------------------------------------------------
Wifi Setup
-----------------------------------------------------------------------------*/
void wifiSetup()
{
// Set WIFI module to STA mode
WiFi.mode(WIFI_STA);
// Connect
Serial.println ();
Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
Serial.println();
WiFi.begin(WIFI_SSID, WIFI_PASS);
// Wait
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(100);
}
Serial.print(" ==> CONNECTED!" );
Serial.println();
// Connected!
Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
Serial.println();
}
After dumping the code the output is shown on the video below:-
(During circuit is running)
Thinking?
Join our hands-on training courses.
To know more visit us at Karkhana Training Portal
|
Comments