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:
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:
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).
[ask]
ReplyDeleteapakah menggunakan esp8266 ini fungsinya harus pake internet??
gak bisakah langsung menjadi media komunikasi langsung menggunakan wifi dalam pengiriman data? (misal antara esp8266 dengan smartphone)
Tentu bisa sekali
DeletePermisi 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
ReplyDelete#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;
}
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
ReplyDelete#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;
}
Ssid dan passwordnya belum di ubah gan
DeleteSsid dan passwordnya belum di ubah gan
Deleteijin copas om
DeleteAssalamualaikum, bagaimana nak digabungkan sketch arduino dan esp diatas tu tuan...
ReplyDeleteapa ada library sendiri ini mas??soale di arduino IDE q pakek #include itu error saat dikompail. .kalo ada boleh minta library nya???
ReplyDelete'WiFiServer' does not name a type
ReplyDeleteERROR DI BARIS KE 4