0.基本模組

ESP8266端

#include <ESP8266WiFi.h>

#define title1 "Arduino A0 : "

#define title2 "Arduino A1 : "

///////////////////////////////////////////////////

#define SSID "tomorrows"

#define PASSWORD "---"

///////////////////////////////////////////////////

WiFiServer server(80);

String response,read1,read2;

unsigned long t1,t2;

void data_to_html(String data1, String data2){

WiFiClient client = server.available();

client.println("HTTP/1.1 200 OK");

client.println("Content-Type: text/html");

client.println("Connection: close");

//client.println("Refresh: 5");

client.println();

client.println("<!DOCTYPE html>");

client.println("<head>\n<meta charset='UTF-8'>");

client.println("<title>ESP8266 Server</title>");

client.println("</head>\n<body>");

client.println("<H2>ESP8266 Server</H2>");

client.println("<H3>CSJH Maker</H3>");

client.println("<pre>");

client.print(title1);

client.println(data1);

client.print(title2);

client.println(data2);

client.println("</pre>");

client.print("</body>\n</html>");

}

void send_ip(){

Serial.print("A");

Serial.flush();

Serial.print(WiFi.localIP());

Serial.flush();

Serial.println("B");

Serial.flush();

}

void get_data(){

response = "";

read1 = "";

read2 = "";

int check_head, check_body , check_foot ;

while(Serial.available()){

char c = Serial.read();

response += c ;

delay(10);}

for(int i=0 ; i<response.length() ; i++){

if(response.charAt(i)=='$'){

check_head=i;}}

for(int i=0 ; i<response.length() ; i++){

if(response.charAt(i)==','){

check_body=i;}}

for(int i=0 ; i<response.length() ; i++){

if(response.charAt(i)=='#'){

check_foot=i;}}

for(int i=check_head+1 ; i<check_body ; i++){

read1+= response.charAt(i);}

for(int i=check_body+1 ; i<check_foot ; i++){

read2+= response.charAt(i);

}}

void setup() {

Serial.begin(9600);

delay(10);

// Connect to WiFi network

WiFi.mode(WIFI_STA);

WiFi.begin(SSID, PASSWORD);

while (WiFi.status() != WL_CONNECTED) {delay(500);}

server.begin();

t1=millis();

}

void loop() {

t2=millis();

if(t2>t1+1000){

send_ip();

t1=t2;

}

if(Serial.available()){

get_data();

}

data_to_html(read1,read2);

}

Arduino端

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2); // 若LCD 無法啟用,請將0X3F 改為0X27

#include <SoftwareSerial.h>

#define RX 3 //ESP8266 的 TX接3

#define TX 2 //ESP8266 RX接2

SoftwareSerial esp8266(RX,TX);

String response,read1,ip;

unsigned long t1,t2;

void lcd_disp0(String data1,String data2){

lcd.setCursor(0,0);

lcd.print(" ");

lcd.setCursor(0,0);

lcd.print(data1);

lcd.setCursor(8,0);

lcd.print(data2);

}

void lcd_disp1(String data3){

lcd.setCursor(0,1);

lcd.print(data3);

}

void send_data(String data1,String data2){

String message = "$";

message += data1;

message += ",";

message += data2;

message += "#";

esp8266.println(message);

}

void get_ip(){

ip = "";

while(esp8266.available()){

char c = esp8266.read();

ip += c ;

delay(10);

}

int check_head, check_foot ;

for(int i=0 ; i<ip.length() ; i++){

if(ip.charAt(i)=='A'){

check_head=i;}}

for(int i=0 ; i<ip.length() ; i++){

if(ip.charAt(i)=='B'){

check_foot=i;}}

read1="";

for(int i=check_head+1 ; i<check_foot ; i++){

read1+= ip.charAt(i);}

lcd_disp1(read1);

}

void setup() {

Serial.begin(9600);

esp8266.begin(9600);

lcd.init();

lcd.backlight();

lcd.clear();

t1=millis();

}

void loop() {

String x="";

String y="";

x = String(analogRead(A0));

y = String(analogRead(A1));

t2=millis();

if(t2>t1+1000){

lcd_disp0(x,y);

send_data(x,y);

t1=t2;

}

if(esp8266.available()){

get_ip();

}

}

APC220 版

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2); // 若LCD 無法啟用,請將0X3F 改為0X27

String response,read1,ip;

unsigned long t1,t2;

void lcd_disp0(String data1,String data2){

lcd.setCursor(0,0);

lcd.print(" ");

lcd.setCursor(0,0);

lcd.print(data1);

lcd.setCursor(8,0);

lcd.print(data2);

}

void lcd_disp1(String data3){

lcd.setCursor(0,1);

lcd.print(data3);

}

void send_data(String data1,String data2){

String message = "$";

message += data1;

message += ",";

message += data2;

message += "#";

Serial.println(message);

}

void get_ip(){

ip = "";

while(Serial.available()){

char c = Serial.read();

ip += c ;

delay(10);

}

int check_head, check_foot ;

for(int i=0 ; i<ip.length() ; i++){

if(ip.charAt(i)=='A'){

check_head=i;}}

for(int i=0 ; i<ip.length() ; i++){

if(ip.charAt(i)=='B'){

check_foot=i;}}

read1="";

for(int i=check_head+1 ; i<check_foot ; i++){

read1+= ip.charAt(i);}

lcd_disp1(read1);

}

void setup() {

Serial.begin(9600);

esp8266.begin(9600);

lcd.init();

lcd.backlight();

lcd.clear();

t1=millis();

}

void loop() {

String x="";

String y="";

x = String(analogRead(A0));

y = String(analogRead(A1));

t2=millis();

if(t2>t1+1000){

lcd_disp0(x,y);

send_data(x,y);

t1=t2;

}

if(Serial.available()){

get_ip();

}

}