Home » , » Menghubungkan ESP 8266 dengan Arduino

Menghubungkan ESP 8266 dengan Arduino

Dalam posting ini, ini tentang bagaimana ESP 8266 * dapat menghubungkan modul nirkabel untuk 4 €, dengan Arduino. Dengan demikian, ESP mengambil alih peran sebagai server web, dan melewati perintah kontrol ke Arduino Uno di.


Kami ingin memesan komunikasi sampel mewakili ESP Buat antarmuka web, di mana Anda dapat mengontrol Arduino (pin 13) LED.

ESP 8266 sebagai server Web


Antarmuka web terdiri dari 2 tombol radio, dan sebuah tombol submit. Tombol radio tombol mana hanya satu tombol dapat dipilih di berada. Ini Anda harus memilih apakah LED harus on atau off. Tentang tombol Submit untuk mengirim dari bentuk HTML. 

Di sini, bentuk dengan fungsi GET ditransmisikan. Toko-toko ini / mentransmisikan nilai-nilai melalui URL:


Untuk mengambil URL yang memanggil pengguna, Anda dapat client.readStringUntil fungsi ('\ r') digunakan. Sekarang Anda hanya perlu mencari tahu apakah string? LED1 = 1 atau? LED1 = 0 terkandung, sehingga LED harus on atau off. Fungsi indexOf () sangat membantu. Ini mengembalikan -1 jika string tidak disertakan, atau posisi karakter pertama dari string dalam string sebagai nomor (misalnya 5). Dengan cara ini Anda dapat mengetahui bagaimana LED harus diaktifkan.

Untuk meneruskan informasi kepada terhubung Arduino, Anda dapat menggunakan koneksi serial. Di sini Anda dapat menggunakan semua perintah yang biasa di kedua sisi. Cara membuat serial koneksi, Anda belajar di sini. Dengan hanya satu LED, Anda dapat dengan mudah 1 untuk bergabung, atau 0 untuk off, ditransfer.

Seluruh sketsa untuk ESP 8266 terlihat seperti ini:


#include <ESP8266WiFi.h>
const char* ssid = "WLAN HORNISSENWEG 4";
const char* password = "unserpasswort";
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
// Start the server
server.begin();
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
while(!client.available()){
delay(1);
}
// Read the first line of the request
String req = client.readStringUntil('\r');
client.flush();
String html = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html> <h3> LED 1 </h3><form action=\"192.168.178.30/index.html\" method=\"GET\"> <input type=\"radio\" name=\"led1\" value=\"1\" />AN <br /> <input type=\"radio\" name=\"led1\" value=\"0\" />AUS <br /> <input type=\"submit\" name=\"absenden\" value=\"schalten!\" /><br /></form></html>\n";
// Match the request
int val = -1;
if (req.indexOf("?led1=0") != -1)
val = 0;
else if (req.indexOf("?led1=1") != -1)
val = 1;
else if(req.indexOf("/index.html") != -1)
client.print(html);
else {
//Serial.println("invalid request");
client.stop();
return;
}
if(val != -1)
{
Serial.println(val);
client.flush();
// Send the response to the client
client.print(html);
delay(1);
}
}



Arduino Sketch

Arduino hanya memiliki koneksi serial dengan dimulainya data rate yang sama (dalam hal ini 115200) dan menunggu sampai menerima sedikit di atas link serial. Sekali lagi, Anda harus menentukan 48 untuk 0 dan 49 untuk 1 lagi, karena nomor tersebut dialihkan sebagai teks, dan dengan demikian nilai-nilai ASCII mereka ditransmisikan. Sketsa terlihat seperti ini:


void setup() {
Serial.begin(115200);
pinMode(13, OUTPUT);
}
void loop() {
if(Serial.available() >0)
{
delay(10);
int status_led = Serial.read();
if(status_led == 48)
{
digitalWrite(13, LOW);
}
if(status_led == 49)
{
digitalWrite(13, HIGH);
}
}
}

Kesimpulan


Komunikasi antara ESP 8266 * dan Arduino Uno sangat sederhana, dan oleh koneksi dua perangkat dapat keuntungan cerdik dikombinasikan (ESP sebagai server web yang kuat, dan Arduino sebagai unit kontrol dengan banyak pin).

10 komentar:

  1. [ask]
    apakah menggunakan esp8266 ini fungsinya harus pake internet??
    gak bisakah langsung menjadi media komunikasi langsung menggunakan wifi dalam pengiriman data? (misal antara esp8266 dengan smartphone)

    ReplyDelete
  2. Permisi master, saya sdh dapat SSID dan Password untuk menghubungkan esp8266 ke jaringan wifi yg ada, cuma ketika saya upload programnya ke arduino tidak berhasil, ini programnya


    #include
    #define DEBUG true
    SoftwareSerial wifi(2,3); // RX, TX

    void setup() {
    Serial.begin(9600);
    wifi.begin(9600);

    pinMode(10,OUTPUT);
    digitalWrite(10,HIGH);
    pinMode(11,OUTPUT);
    digitalWrite(11,HIGH);
    pinMode(12,OUTPUT);
    digitalWrite(12,HIGH);
    pinMode(13,OUTPUT);
    digitalWrite(13,HIGH);

    // Reset modul
    sendCommand("AT+RST\r\n",2000,DEBUG);
    // Konfigurasikan sebagai Akses poin
    sendCommand("AT+CWMODE=3\r\n",1000,DEBUG);
    // Sesuaikan dengan SSID dan Password
    sendCommand("AT+CWJAP=\"Andy182 Network\",\"waipigratis\"\r\n",10000,DEBUG);
    // Mendapatkan IP adress
    sendCommand("AT+CIFSR\r\n",1000,DEBUG);
    // Konfigurasikan untuk multiple connection
    sendCommand("AT+CIPMUX=1\r\n",1000,DEBUG);
    // Aktifkan server pada port 80
    sendCommand("AT+CIPSERVER=1,80\r\n",1000,DEBUG);
    Serial.println("Server sudah siap!");
    }

    void loop() {
    // Cek jika ESP mengirimkan pesan
    if(wifi.available()) {

    if(wifi.find("+IPD,")) {
    delay(1000);
    int connectionId = wifi.read()-48;
    wifi.find("pin=");
    int pinNumber = (wifi.read()-48)*10;
    pinNumber += (wifi.read()-48);

    int secondNumber = (wifi.read()-48);
    if(secondNumber>=0 && secondNumber<=9)
    {
    pinNumber*=10;
    pinNumber +=secondNumber;
    }
    pinMode(pinNumber,OUTPUT);
    digitalWrite(pinNumber, !digitalRead(pinNumber));

    String closeCommand = "AT+CIPCLOSE=";
    closeCommand+=connectionId;
    closeCommand+="\r\n";
    sendCommand(closeCommand,1000,DEBUG);
    }
    }
    }


    String sendCommand(String command, const int timeout, boolean debug)
    {
    String response = "";
    wifi.print(command);
    long int time = millis();

    while( (time+timeout) > millis())
    {
    while(wifi.available())
    {
    char c = wifi.read();
    response+=c;
    }
    }

    if(debug) {
    Serial.print(response);
    }
    return response;
    }

    ReplyDelete
  3. Permisi master, saya sdh dapat SSID dan Password untuk menghubungkan esp8266 ke jaringan wifi yg ada, cuma ketika saya upload programnya ke arduino tidak berhasil, ini programnya


    #include
    #define DEBUG true
    SoftwareSerial wifi(2,3); // RX, TX

    void setup() {
    Serial.begin(9600);
    wifi.begin(9600);

    pinMode(10,OUTPUT);
    digitalWrite(10,HIGH);
    pinMode(11,OUTPUT);
    digitalWrite(11,HIGH);
    pinMode(12,OUTPUT);
    digitalWrite(12,HIGH);
    pinMode(13,OUTPUT);
    digitalWrite(13,HIGH);

    // Reset modul
    sendCommand("AT+RST\r\n",2000,DEBUG);
    // Konfigurasikan sebagai Akses poin
    sendCommand("AT+CWMODE=3\r\n",1000,DEBUG);
    // Sesuaikan dengan SSID dan Password
    sendCommand("AT+CWJAP=\"Andy182 Network\",\"waipigratis\"\r\n",10000,DEBUG);
    // Mendapatkan IP adress
    sendCommand("AT+CIFSR\r\n",1000,DEBUG);
    // Konfigurasikan untuk multiple connection
    sendCommand("AT+CIPMUX=1\r\n",1000,DEBUG);
    // Aktifkan server pada port 80
    sendCommand("AT+CIPSERVER=1,80\r\n",1000,DEBUG);
    Serial.println("Server sudah siap!");
    }

    void loop() {
    // Cek jika ESP mengirimkan pesan
    if(wifi.available()) {

    if(wifi.find("+IPD,")) {
    delay(1000);
    int connectionId = wifi.read()-48;
    wifi.find("pin=");
    int pinNumber = (wifi.read()-48)*10;
    pinNumber += (wifi.read()-48);

    int secondNumber = (wifi.read()-48);
    if(secondNumber>=0 && secondNumber<=9)
    {
    pinNumber*=10;
    pinNumber +=secondNumber;
    }
    pinMode(pinNumber,OUTPUT);
    digitalWrite(pinNumber, !digitalRead(pinNumber));

    String closeCommand = "AT+CIPCLOSE=";
    closeCommand+=connectionId;
    closeCommand+="\r\n";
    sendCommand(closeCommand,1000,DEBUG);
    }
    }
    }


    String sendCommand(String command, const int timeout, boolean debug)
    {
    String response = "";
    wifi.print(command);
    long int time = millis();

    while( (time+timeout) > millis())
    {
    while(wifi.available())
    {
    char c = wifi.read();
    response+=c;
    }
    }

    if(debug) {
    Serial.print(response);
    }
    return response;
    }

    ReplyDelete
  4. Assalamualaikum, bagaimana nak digabungkan sketch arduino dan esp diatas tu tuan...

    ReplyDelete
  5. apa ada library sendiri ini mas??soale di arduino IDE q pakek #include itu error saat dikompail. .kalo ada boleh minta library nya???

    ReplyDelete
  6. 'WiFiServer' does not name a type

    ERROR DI BARIS KE 4

    ReplyDelete

close