#include <stdio.h>
#include <Wire.h>
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <SoftwareSerial.h>
#define DEVICE_ADDRESS 0x3E // address of AQM1602XA-GBW-IIC
#define AHT25_ADDRESS 0x38 // address of AHT25
IPAddress myIP;
char line0[] = "AQM1602XA-GBW-II";
char line1[] = " yoshikon.com ";
char test0[] = "1234567890123456";
char test1[] = "6543210987654321";
static const char* ssid = "elecom-79b877";
static const char* password = "wvdmneht8u47";
ESP8266WebServer Server(80);
char tempera[15];
char ip_string[15];
char TTT[8];
char HHH[8];
int cnt = 0;
void handleRoot(void){
int cnt = 0;
char* data1;
char* data2;
cnt++;
Serial.print(cnt);
Serial.print(" ");
readData();
data1 = TTT;
data2 = HHH;
Serial.print(tempera);
Serial.println("handleRoot()");
String message = "\
<html lang=\"ja\">\n\
<head>\n\
<meta charset=\"utf-8\">\n\
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\
<title>ESP-f test Sending</title>\n\
</head>\n\
<body style=\"font-family: sans-serif; background-color: #ffeeaa;\">\n\
<h2>温度・湿度(by ESP-f)</h2>\n\
<h3>温度: "+ String(data1) +"℃</h3>\n\
<h3>湿度: "+ String(data2) +"%</h3>\n\
<h3>アクセス回数 "+ String(cnt) +"</h3>\n\
</body>\n\
</html>\n";
Server.send(200, "text/html", message);
writeCommand(0x02);
for(int i = 0; i < 16; i++){writeData(tempera[i]);}
}
void handleNotFound(void){
Serial.println("handleNotFound()");
Server.send(404, "text/plain", "File not Found in Dongbeino...");
}
void setup(void){
Wire.setClock(115200);
Wire.begin();
init_LCD();
writeLCDclear();
delay(100);
writeComment1();
delay(2000);
writeComment2();
delay(1000);
Serial.begin(9600);
delay(100);
Serial.println("\n*** ESP-f ***");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("\nConnecting....");
while(WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.print(".");
}
Serial.println("Connected");
Serial.println(WiFi.localIP());
myIP = WiFi.localIP();
sprintf(ip_string,"%s.%s.%s.%s",String(myIP[0]),String(myIP[1]),String(myIP[2]),String(myIP[3]));
for(int i= 0; i>16; i++){
writeCommand(0x40 + 0x80 + i);
writeData(ip_string);
}
Server.on("/", handleRoot);
Server.onNotFound(handleNotFound);
Server.begin();
}
void loop(void){
Server.handleClient();
}
void led_off(){
digitalWrite(0, HIGH);
digitalWrite(14, HIGH);
delay(2000);
delay(2000);
}
void writeCommand(char t_command){
Wire.beginTransmission(DEVICE_ADDRESS);
Wire.write(0x00);
Wire.write(t_command);
Wire.endTransmission();
delay(10);
}
void writeData(char t_data){
Wire.beginTransmission(DEVICE_ADDRESS);
Wire.write(0x40);
Wire.write(t_data);
Wire.endTransmission();
delay(10);
}
void writeLCDclear(){
Wire.beginTransmission(DEVICE_ADDRESS);
Wire.write(0x20);
Wire.write(0x01);
Wire.endTransmission();
}
void writeComment1(){
writeCommand(0x02);
for(int i=0; i<16; i++){
writeData(test0[i]);
delay(2);
}
for(int i=0; i<16; i++){
writeCommand(0x40 + 0x80 + i);
writeData(test1[i]);
delay(2);
}
}
void writeComment2(){
writeCommand(0x02);
for(int i=0; i<16; i++){
writeData(line0[i]);
delay(2);
}
for(int i=0; i<16; i++){
writeCommand(0x40 + 0x80 + i);
writeData(line1[i]);
delay(2);
}
}
void readData(void){
byte digraw[8];
char humidi[15];
char data_t[] = "Temp:";
char data_h[] = "Humi:";
uint32_t hum_raw, temp_raw, hhh, ttt;
float T;
float H;
int t;
int tt;
int i;
Wire.beginTransmission(AHT25_ADDRESS);
Wire.write(0xAC);
Wire.write(0x33);
Wire.write(0x00);
Wire.endTransmission();
delay(80);
Wire.requestFrom(AHT25_ADDRESS, 7);
for(i = 0; i < 7; i++){digraw[i] = Wire.read();}
hum_raw = ((uint32_t)digraw[1] << 12) | ((uint32_t)digraw[2] << 4) | (((uint32_t)digraw[3] >> 4) & 0x0F);
temp_raw = (((uint32_t)digraw[3] & 0x0F) << 16 ) | ((uint32_t)digraw[4] << 8) | (uint32_t)digraw[5];
H = (hum_raw / 1048576.0 * 100);
T = (temp_raw / 1048576.0 * 200 ) - 50;
sprintf(tempera, "T:%2.1fdC H:%2.1f%s ", T, H, "%");
sprintf(TTT, "%2.1f", T);
sprintf(HHH, "%2.1f", H);
//writeCommand(0x02);
//for(int i = 0; i < 16; i++){writeData(tempera[i]);}
delay(10);
}
void init_LCD(){
delay(100);
writeCommand(0x38); // Function set
delay(20);
writeCommand(0x39); // IS=1
delay(20);
writeCommand(0x14); // INT OSC FREQUENCY
delay(20);
writeCommand(0x73); // CONTRUST Set 0,1,2,3,
delay(20);
writeCommand(0x56); // CONTRUST Set 4,5
delay(20);
writeCommand(0x6C); // FOLLOWER Control
delay(20);
writeCommand(0x38); //IS=0
delay(20);
writeCommand(0x01); // Clear Display
delay(20);
writeCommand(0x06); // Entry Mode
delay(20);
writeCommand(0x0C); // Display ON
delay(20);
}