Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
5 views

Arduino Projects, Step by Step

Uploaded by

Tita Fifi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Arduino Projects, Step by Step

Uploaded by

Tita Fifi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

‫‪ARDUINO PROJECTS‬‬

‫‪STEP BY STEP‬‬ ‫‪Ali Bayati, Dec. 2019‬‬

‫‪Soft Access Point (AP) Mode‬‬


‫ﻫﻨﮕﺎﻣﯽ ﮐﻪ ‪ ESP8266‬در ﻧﻘﺶ ﯾﮏ ‪ WiFi Router‬ﻇﺎﻫﺮ ﺷﻮد و دﯾﮕﺮ ﮐﻼﯾﻨﺖ ﻫﺎ ﺑﻪ آن ‪ Join‬ﮐﻨﻨﺪ‪،‬‬
‫در ﺣﺎﻟﺖ ‪ Access Point‬راه اﻧﺪازي ﺷﺪه اﺳﺖ‪ .‬اﻣﺎ ﺑﺮ ﺧﻼف ‪ WiFi Router‬ﻗﺎدر ﺑﻪ ﺳﺮوﯾﺲ دﻫﯽ ﺑﺎ‬
‫ﮐﺎﺑﻞ ‪ Ethernet‬ﻧﯿﺴﺖ‪) .‬ﻓﻘﻂ ‪ (WiFi‬و ﻧﻬﺎﯾﺘﺎً ‪ 5‬ﮐﻼﯾﻨﺖ را ﻣﯿﺘﻮاﻧﺪ ﭘﺬﯾﺮا ﺑﺎﺷﺪ‪.‬‬

‫در ﻣﻮد ‪ AP‬ﻗﺎدر ﺑﻪ ﺗﻨﻈﯿﻢ ‪ (Service Set Identifier) SSID‬و ‪ Password‬ﺑﻮده و ﻣﯿﺘﻮاﻧﺪ ﺑﻪ ﺗﻤﺎﻣﯽ‬
‫ﮐﻼﯾﻨﺖ ﻫﺎﯾﺶ‪ ،‬ﺻﻔﺤﺎت وب ارﺳﺎل ﮐﻨﺪ‪.‬‬

‫روﺷﻦ ﮐﺮدن ‪ LED‬ﺑﺎ اﺳﺘﻔﺎده از ‪ ESP8266‬از ﻃﺮﯾﻖ ‪WiFi‬‬

‫ﺣﺎﻻ ﻧﻮﺑﺖ ﺑﻪ آن رﺳﯿﺪه ﮐﻪ ﺑﺎ ﯾﮏ ﻣﺜﺎل ﺳﺎده‪ ،‬ﯾﮏ وب ﺳﺮور ﺗﻮﺳﻂ ‪ ESP8266‬اﯾﺠﺎد ﮐﻨﯿﻢ و از ﻃﺮﯾﻖ‬
‫‪ WiFi‬اﻗﺪام ﺑﻪ ﺧﺎﻣﻮش و روﺷﻦ ﮐﺮدن ﭼﻨﺪ ‪ LED‬ﮐﻨﯿﻢ‪ .‬ﺑﺮاي اﯾﻨﮑﺎر‪ ،‬ﻣﺎژول را روي ﯾﮏ ﺑﺮدﺑﻮرد ﺑﻪ ﻧﺤﻮي‬
‫ﻣﯿﮕﺬارﯾﻢ ﮐﻪ ﻫﺮ ردﯾﻒ از ﭘﯿﻦ ﻫﺎي ﻣﺎژول‪ ،‬در ﯾﮏ ﻧﯿﻤﮥ ﺑﺮدﺑﻮرد ﺑﺎﺷﺪ )ﭘﺎﯾﻪ ﻫﺎي روﺑﺮوي ﻫﻢ‪ ،‬اﺗﺼﺎل ﭘﯿﺪا‬
‫ﻧﮑﻨﻨﺪ(‪ .‬ﺑﺮاي ﭘﺎﯾﮥ آﻧﻮد ﻫﺮ ‪ LED‬ﯾﮏ ﻣﻘﺎوﻣﺖ ‪ 220Ω‬ﻗﺮار ﻣﯿﺪﻫﯿﻢ‪.‬‬
‫‪137‬‬
‫‪Page‬‬
ARDUINO PROJECTS
STEP BY STEP Ali Bayati, Dec. 2019

IDE ‫ ﺳﭙﺲ ﮐﺪ ﻧﺴﺒﺘﺎً ﻃﻮﻻﻧﯽ زﯾﺮ را در‬.‫ ﺑﺎز ﻣﯿﮑﻨﯿﻢ‬Tools ‫ را از ﻣﻨﻮي‬Serial Monitor ‫اﺑﺘﺪا ﭘﻨﺠﺮة‬
.‫ آﭘﻠﻮد ﻣﯿﮑﻨﯿﻢ‬،‫ﮐﺎﻣﭙﺎﯾﻞ و ﺑﻪ ﺑﻮرد‬
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

/* Put your SSID & Password */


const char* ssid = "NodeMCU"; // Enter SSID here
const char* password = "12345678"; //Enter Password here

/* Put IP Address details */


IPAddress local_ip(192, 168, 1, 1);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);

ESP8266WebServer server(80);

uint8_t LED1pin = D7;


138

bool LED1status = LOW;

uint8_t LED2pin = D6;


Page

bool LED2status = LOW;


ARDUINO PROJECTS
STEP BY STEP Ali Bayati, Dec. 2019

void setup() {
Serial.begin(115200);
pinMode(LED1pin, OUTPUT);
pinMode(LED2pin, OUTPUT);

WiFi.softAP(ssid, password);
WiFi.softAPConfig(local_ip, gateway, subnet);
delay(100);

server.on("/", handle_OnConnect);
server.on("/led1on", handle_led1on);
server.on("/led1off", handle_led1off);
server.on("/led2on", handle_led2on);
server.on("/led2off", handle_led2off);
server.onNotFound(handle_NotFound);

server.begin();
Serial.println("HTTP server started");
}

void loop() {
server.handleClient();
if (LED1status)
{
digitalWrite(LED1pin, HIGH);
}
else
{
digitalWrite(LED1pin, LOW);
}

if (LED2status)
{
digitalWrite(LED2pin, HIGH);
}
else
{
digitalWrite(LED2pin, LOW);
}
}

void handle_OnConnect() {
LED1status = LOW;
LED2status = LOW;
Serial.println("GPIO7 Status: OFF | GPIO6 Status: OFF");
server.send(200, "text/html", SendHTML(LED1status, LED2status));
}

void handle_led1on() {
139

LED1status = HIGH;
Serial.println("GPIO7 Status: ON");
server.send(200, "text/html", SendHTML(true, LED2status));
Page

}
ARDUINO PROJECTS
STEP BY STEP Ali Bayati, Dec. 2019

void handle_led1off() {
LED1status = LOW;
Serial.println("GPIO7 Status: OFF");
server.send(200, "text/html", SendHTML(false, LED2status));
}

void handle_led2on() {
LED2status = HIGH;
Serial.println("GPIO6 Status: ON");
server.send(200, "text/html", SendHTML(LED1status, true));
}

void handle_led2off() {
LED2status = LOW;
Serial.println("GPIO6 Status: OFF");
server.send(200, "text/html", SendHTML(LED1status, false));
}

void handle_NotFound() {
server.send(404, "text/plain", "Not found");
}

String SendHTML(uint8_t led1stat, uint8_t led2stat) {


String ptr = "<!DOCTYPE html> <html>\n";
ptr += "<head><meta name=\"viewport\" content=\"width=device-width, initial-
scale=1.0, user-scalable=no\">\n";
ptr += "<title>LED Control</title>\n";
ptr += "<style>html { font-family: Helvetica; display: inline-block; margin: 0px
auto; text-align: center;}\n";
ptr += "body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3
{color: #444444;margin-bottom: 50px;}\n";
ptr += ".button {display: block;width: 80px;background-color: #1abc9c;border:
none;color: white;padding: 13px 30px;text-decoration: none;font-size: 25px;margin: 0px
auto 35px;cursor: pointer;border-radius: 4px;}\n";
ptr += ".button-on {background-color: #1abc9c;}\n";
ptr += ".button-on:active {background-color: #16a085;}\n";
ptr += ".button-off {background-color: #34495e;}\n";
ptr += ".button-off:active {background-color: #2c3e50;}\n";
ptr += "p {font-size: 14px;color: #888;margin-bottom: 10px;}\n";
ptr += "</style>\n";
ptr += "</head>\n";
ptr += "<body>\n";
ptr += "<h1>ESP8266 Web Server</h1>\n";
ptr += "<h3>Using Access Point(AP) Mode</h3>\n";

if (led1stat)
{
ptr += "<p>LED1 Status: ON</p><a class=\"button button-off\"
href=\"/led1off\">OFF</a>\n";
140

}
else
{
Page
‫‪ARDUINO PROJECTS‬‬
‫‪Ali Bayati, Dec. 2019‬‬
‫‪STEP BY STEP‬‬

‫"\‪ptr += "<p>LED1 Status: OFF</p><a class=\"button button-on‬‬


‫;"‪href=\"/led1on\">ON</a>\n‬‬
‫}‬

‫)‪if (led2stat‬‬
‫{‬
‫"\‪ptr += "<p>LED2 Status: ON</p><a class=\"button button-off‬‬
‫;"‪href=\"/led2off\">OFF</a>\n‬‬
‫}‬
‫‪else‬‬
‫{‬
‫"\‪ptr += "<p>LED2 Status: OFF</p><a class=\"button button-on‬‬
‫;"‪href=\"/led2on\">ON</a>\n‬‬
‫}‬

‫;"‪ptr += "</body>\n‬‬
‫;"‪ptr += "</html>\n‬‬
‫;‪return ptr‬‬
‫}‬

‫ﺑﻌﺪ از آﭘﻠﻮد ﮐﺪ‪ ،‬ﻣﻮﺑﺎﯾﻞ ﯾﺎ ﺗﺒﻠﺖ ﯾﺎ ﮐﺎﻣﭙﯿﻮﺗﺮ را ﺑﻪ ‪WiFi‬‬


‫ﺑﻮﺟﻮد آﻣﺪه ﺑﻪ ﻧﺎم ‪ NodeMCU‬ﻣﺘﺼﻞ ﮐﺮده و ﻋﺪد‬
‫‪ 12345678‬را ﺑﻌﻨﻮان ‪ Password‬وارد ﻣﯿﮑﻨﯿﻢ‪.‬‬
‫ﺳﭙﺲ در ﯾﮏ ‪ Web Browser‬ﻣﺜﻞ ‪Safari,‬‬
‫‪ Firefox, Google‬در ﻗﺴﻤﺖ ﺑﺎﻻ‪ ،‬آدرس ‪ IP‬ﺑﻮرد را‬
‫‪ 192.168.1.1‬وارد ﻣﯿﮑﻨﯿﻢ‪ .‬ﺑﺎ ارﺳﺎل آدرس‪ ،‬ﺻﻔﺤﮥ‬
‫روﺑﺮو در ‪ Browser‬ﺑﻪ ﻧﻤﺎﯾﺶ در ﻣﯿﺎﯾﺪ‪ .‬ﺑﺎ ﮐﻠﯿﮏ روي‬
‫ﻫﺮ ﮐﺪام از دﮐﻤﻪ ﻫﺎي ﻧﻤﺎﯾﺶ داده ﺷﺪه‪ LED ،‬ﻣﺘﻨﺎﻇﺮ ﺑﺎ‬
‫آن دﮐﻤﻪ‪ ،‬روﺷﻦ ﺷﺪه و ﺑﺎ ﮐﻠﯿﮏ ﻣﺠﺪد ﺑﺮ روي آن‪،‬‬
‫ﺧﺎﻣﻮش ﺧﻮاﻫﺪ ﺷﺪ‪ .‬اﮔﺮ دﻗﺖ ﮐﻨﯿﺪ‪ ،‬ﺑﺎ ﻫﺮ ﺑﺎر ﮐﻠﯿﮏ ﮐﺮدن‬
‫روي دﮐﻤﻪ‪ ،‬ﺻﻔﺤﻪ ‪ Refresh‬ﻣﯿﺸﻮد و ﺻﻔﺤﮥ ﺟﺪﯾﺪي‬
‫ﺑﺎر ﮔﺬاري ﻣﯿﺸﻮد‪.‬‬
‫‪141‬‬
‫‪Page‬‬
‫‪ARDUINO PROJECTS‬‬
‫‪STEP BY STEP‬‬ ‫‪Ali Bayati, Dec. 2019‬‬

‫در ﺑﺮﻧﺎﻣﮥ ﻓﻮق‪ ،‬ﺗﻌﺪادي ﺗﺎﺑﻊ ﺗﻌﺮﯾﻒ ﮐﺮده اﯾﻢ‪ .‬ﻣﻬﻤﺘﺮﯾﻦ آﻧﻬﺎ ﺗﺎﺑﻊ ‪ SendHTML‬اﺳﺖ ﮐﻪ وﻇﯿﻔﮥ‬
‫ﺳﺎﺧﺖ ﯾﮏ رﺷﺘﮥ ﺑﻠﻨﺪ را دارد ﮐﻪ ﺑﻮﺳﯿﻠﮥ آن رﺷﺘﻪ ﯾﺎ ‪ ،String‬ﯾﮏ ﺻﻔﺤﮥ وب ﺧﺎص‪ ،‬ﻣﺘﻨﺎﻇﺮ ﺑﺎ وﺿﻌﯿﺖ ‪LED‬‬
‫ﻫﺎ ﺳﺎﺧﺘﻪ ﺧﻮاﻫﺪ ﺷﺪ‪ .‬ﺑﻪ اﯾﻦ ﺗﺎﺑﻊ‪ ،‬دو ورودي )وﺿﻌﯿﺖ ﺧﺎﻣﻮش‪/‬روﺷﻦ ‪ LED‬ﻫﺎ( را ﺑﺎﯾﺪ ﺑﺪﻫﯿﻢ‪ .‬ﺑﺮ ﺣﺴﺐ اﯾﻨﮑﻪ‬
‫ﮐﺪام ‪ LED‬ﺑﺎﯾﺪ ﺧﺎﻣﻮش ﯾﺎ روﺷﻦ ﺑﺸﻮد‪ ،‬اﯾﻦ ﺗﺎﺑﻊ اﻗﺪام ﺑﻪ اﯾﺠﺎد ﯾﮏ رﺷﺘﮥ ﺑﻠﻨﺪ )ﺑﻪ ﻧﺎم ‪ (ptr‬ﻣﯿﮑﻨﺪ و آن را‬
‫ﺑﻌﻨﻮان ﺧﺮوﺟﯽ ﺗﺎﺑﻊ‪ ،‬ﺑﺎز ﻣﯿﮕﺮداﻧﺪ‪ .‬ﻣﺤﺘﻮﯾﺎت اﯾﻦ رﺷﺘﻪ‪ ،‬ﮐﺪﻫﺎي ‪ HTML‬اﺳﺖ ﮐﻪ ‪ Browser‬ﺷﻤﺎ ﺑﺎ ﺗﻔﺴﯿﺮ‬
‫آن رﺷﺘﻪ‪ ،‬اﻗﺪام ﺑﻪ ﻧﻤﺎﯾﺶ ﯾﮏ ﺻﻔﺤﮥ وب ﺧﻮاﻫﺪ ﮐﺮد‪ .‬در اﯾﻦ رﺷﺘﻪ‪ ،‬ﺗﻤﺎﻣﯽ ﺟﺰﺋﯿﺎت ﺻﻔﺤﮥ وب‪ ،‬از ﻗﺒﯿﻞ ﻋﻨﻮان‪،‬‬
‫ﻣﺘﻮن‪ ،‬دﮐﻤﻪ ﻫﺎ و ‪ ...‬ﺑﺎ ﺗﻤﺎﻣﯽ ﻣﺸﺨﺼﺎت آﻧﻬﺎ‪ ،‬ﺷﺎﻣﻞ ﻧﻮع ﻓﻮﻧﺖ‪ ،‬ﺳﺎﯾﺰ‪ ،‬رﻧﮓ‪ ،‬ﻣﻮﻗﻌﯿﺖ ﻗﺮارﮔﯿﺮي در ﺻﻔﺤﮥ وب‪،‬‬
‫و ﭘﺎراﻣﺘﺮﻫﺎي دﯾﮕﺮ‪ ،‬ﺗﻨﻈﯿﻢ ﻣﯿﺸﻮد‪ .‬ﻻزﻣﮥ ﯾﺎدﮔﯿﺮي ‪ HTML‬ﮔﺬراﻧﺪن دوره‪ ،‬ﻣﺸﺎﻫﺪة آﻣﻮزش وﯾﺪﺋﻮﯾﯽ ﯾﺎ ﻣﻄﺎﻟﻌﮥ‬
‫ﮐﺘﺎب آﻣﻮزﺷﯽ ﺑﻮده و آﻣﻮزش آن‪ ،‬ﺑﻌﻠﺖ ﮔﺴﺘﺮدﮔﯽ و ﺣﺠﻢ ﺑﺎﻻي ﻣﻄﺎﻟﺐ‪ ،‬از ﭼﻬﺎرﭼﻮب اﯾﻦ ﺟﺰوه ﺧﺎرج اﺳﺖ‪.‬‬
‫ﺑﺮاي آﺷﻨﺎﯾﯽ ﺑﺎ ﮐﺪﻫﺎي ‪ HTML‬ﻣﯿﺘﻮاﻧﯿﺪ ﺑﻪ ﻟﯿﻨﮏ زﯾﺮ رﺟﻮع ﮐﻨﯿﺪ‪.‬‬

‫‪https://www.w3schools.com/html/html_intro.asp‬‬

‫در ﻣﺠﻤﻮع‪ 4 ،‬ﺣﺎﻟﺖ ﺑﺮاي دو ‪ LED‬وﺟﻮد دارد ﮐﻪ ﺑﺮاي ﻫﺮ ﯾﮏ از آﻧﻬﺎ‪ ،‬ﯾﮏ ﺻﻔﺤﮥ وب )ﺗﺼﺎوﯾﺮ زﯾﺮ(‬
‫ﻧﺘﯿﺠﻪ ﺧﻮاﻫﺪ ﺷﺪ‪ .‬وﻇﯿﻔﮥ ﺗﻮﻟﯿﺪ اﯾﻦ ﺻﻔﺤﺎت‪ ،‬ﺑﺮ ﻋﻬﺪة ﺗﺎﺑﻊ ‪ SendHTML‬اﺳﺖ‪.‬‬

‫‪142‬‬
‫‪Page‬‬

You might also like