本帖最后由 wetnt 于 2016-4-13 17:22 编辑
全部软件代码,欢迎指点,谢谢!
G5_HCHO_Wifi_Lewei_6_5110_ok.ino
[pre lang="arduino" line="1" file="G5_HCHO_Wifi_Lewei_6_5110_ok.ino"]
static const String codeName = "G5_HOHC_Wifi_Lewei_1!";
void setup() {
//------------------------------------------------
lgsetup(codeName);
LCD5110_setup();
//------------------------------------------------
Si7021_setup();
//------------------------------------------------
S1_init(F("G5"), 9600, false);
//S2_init(F("WIFI"), 9600, true);
S3_init(F("HCHO"), 9600, false);
//------------------------------------------------
wifi_Init(false, false, false); NetLinkTest_BBKGPS();
//------------------------------------------------
tLoop_Setup();
//------------------------------------------------
HCHO_Ask(); Si7021_read();
LCD_Show_All(); LG_Show_All();//Lewei_Loop();
//------------------------------------------------
}
void loop() {
lgFeed(); S1_feed(); S2_feed(); S3_feed();
Work_Loop();
}
static void smartDelay(unsigned long ms) {
unsigned long start = millis(); do {
//------------------------------------------
lgFeed(); S1_feed(); S2_feed(); S3_feed();
//------------------------------------------
} while (millis() - start < ms);
}
//=====================================================
[/code]
B0_Basic.ino
[pre lang="arduino" line="1" file="B0_Basic.ino"]
//-------------------------------------
double getK(char a, char b, char c,char d) {
String s = "";
s.concat(a); s.concat(b); s.concat(c); s.concat(d);
double x = ((double)s.toInt())/10;
lg(x); lg();
return x;
}
//-------------------------------------
int getV(char a, char b) {
return GetHexCharToInt(a) * 16 + GetHexCharToInt(b);
}
//-------------------------------------
int GetHexCharToInt(char c) {
if (1 == 0) {}
else if (c == '0') return 0;
else if (c == '1') return 1;
else if (c == '2') return 2;
else if (c == '3') return 3;
else if (c == '4') return 4;
else if (c == '5') return 5;
else if (c == '6') return 6;
else if (c == '7') return 7;
else if (c == '8') return 8;
else if (c == '9') return 9;
else if (c == 'A') return 10;
else if (c == 'B') return 11;
else if (c == 'C') return 12;
else if (c == 'D') return 13;
else if (c == 'E') return 14;
else if (c == 'F') return 15;
}
[/code]
B0_Log.ino
[pre lang="arduino" line="1" file="B0_Log.ino"]
//===================================================================
#define lgs Serial
static const long LGSBaud = 115200;
//===================================================================
void lgsetup(String s) {
lgs.begin(LGSBaud); delay(200);
lgln(s); lgln(F("Log.Serial.start!"));
}
//===================================================================
void lg(String str) {
lgs.print(str);
}
void lg(int s) {
lgs.print(s);
}
void lg(unsigned int s) {
lgs.print(s);
}
void lg(double s) {
lgs.print(s);
}
void lg(float s) {
lgs.print(s);
}
void lg(long s) {
lgs.print(s);
}
void lg(unsigned long s) {
lgs.print(s);
}
void lg(char s) {
lgs.print(s);
}
void lgln(String str) {
lg(str);
lgs.println("");
}
void lg() {
lgs.println("");
}
//===================================================================
void lgFeed() {
//----------------------------------------------------------
while (lgs.available()) {
char c = lgs.read();
//rc_cmd_loop(c);
//lg(c);
}
//----------------------------------------------------------
}
[/code]
B0_Millis.ino
[pre lang="arduino" line="1" file="B0_Millis.ino"]
typedef struct tLoop {
unsigned long startTime = millis()/1000;
unsigned long msKey = 1000;
void init(unsigned long k) {
msKey = k; startTime = millis()/1000;
}
boolean tloop() {
if (millis()/1000 - startTime < msKey) return false;
startTime = millis()/1000; return true;
}
} tLoop;
//===============================================
tLoop t1s, t2s, t5s, t10s, t20s, t30s, t60s;
void tLoop_Setup() {
t1s.init(1);
t2s.init(2);
t5s.init(5);
t10s.init(10);
t20s.init(20);
t30s.init(30);
t60s.init(60);
}
boolean ts_loop(int x) {
switch (x) {
case 1: return t1s.tloop(); break;
case 2: return t2s.tloop(); break;
case 5: return t5s.tloop(); break;
case 10: return t10s.tloop(); break;
case 20: return t20s.tloop(); break;
case 30: return t30s.tloop(); break;
case 60: return t60s.tloop(); break;
}
return false;
}
//===============================================
[/code]
B0_PROGMEM.ino
[pre lang="arduino" line="1" file="B0_PROGMEM.ino"]
#include <avr/pgmspace.h>
//---------------------------------------------------------------------------------------------
//const static char Lewei_Link[] PROGMEM = {"AT+CIPSTART=\"TCP\",\"www.lewei50.com\",80"};
String S(const char x[]) {
char myChar; String myBuffer = "";
int len = strlen_P(x);
for (int k = 0; k < len; k++) {
myChar = pgm_read_byte_near(x + k);
myBuffer += myChar;
}
return myBuffer;
}
//char * C(const char x[]) {
// int len = strlen_P(x);
// char myBuffer[len];
// for (int k = 0; k < len; k++) {
// myBuffer[k] = (char)pgm_read_byte_near(x + k);
// }
// return myBuffer;
//}
int L(const char x[]) {
return strlen_P(x);
}
//---------------------------------------------------------------------------------------------
[/code]
B0_String.ino
[pre lang="arduino" line="1" file="B0_String.ino"]
String GetStringAB(String txt, String a, String b) {
int ln = txt.length();
int an = txt.indexOf(a);
int al = a.length();
//lg(txt);lg('=');lg(a);lg('=');lg(b);
if (ln <= an) return "";
txt = txt.substring(an);
//lg('=');lg(txt);
int bn = txt.indexOf(b);
if (bn <= al) return "";
txt = txt.substring(al, bn);
//lg('=');lg(txt);lg();
return txt;
}
boolean DataIndexOf(String d, String s) {
return (d.indexOf(s) != -1);
}[/code]
B1_Serial1.ino
[pre lang="arduino" line="1" file="B1_Serial1.ino"]
//===================================================================
#define S1 Serial1
long S1_Baud = 9600;
boolean S1logKey = false;
//===================================================================
void S1_init(String ss_name, long btl, boolean lgKey) {
S1logKey = lgKey; S1_Baud = btl;
S1.begin(S1_Baud); delay(200);
lg(ss_name); lg(F(".start = ")); lg(S1_Baud); lg();
}
//===================================================================
void S1_feed() {
while (S1.available()) {
byte c = S1.read();
if (S1logKey) lg(c);
G5Feed(c);
}
}
//===================================================================
[/code]
B1_Serial3.ino
[pre lang="arduino" line="1" file="B1_Serial3.ino"]
//===================================================================
#define S3 Serial3
long S3_Baud = 9600;
boolean S3logKey = false;
//===================================================================
void S3_init(String ss_name, long btl, boolean lgKey) {
S3logKey = lgKey; S3_Baud = btl;
S3.begin(S3_Baud); delay(200);
lg(ss_name); lg(F(".start = ")); lg(S3_Baud); lg();
}
//===================================================================
void S3_feed() {
while (S3.available()) {
byte c = S3.read();
if (S3logKey) lg(c);
HCHOCheck(c);
}
}
//===================================================================
[/code]
B2_G5.ino
[pre lang="arduino" line="1" file="B2_G5.ino"]
//===================================================================
#define LENG 32
byte pBuf[LENG];
//攀藤G5的数据格式
typedef struct _G5_type { //0x42;0x4d;
//------------------------------------------------
int len; //[0][1]=2*13+2 帧长度
//------------------------------------------------
//标准颗粒物浓度(CF=1)
int cf10; //[2][3]=PM1.0=ug/m3
int cf25; //[4][5]=PM2.5=ug/m3
int cf1X; //[6][7]=PM10 =ug/m3
//------------------------------------------------
//大气环境下
int pm10; //[8][9] =PM1.0=ug/m3
int pm25; //[10][11]=PM2.5=ug/m3
int pm1X; //[12][13]=PM10 =ug/m3
//------------------------------------------------
//0.1升空气中xxum直径颗粒物个数
unsigned int um03; //[14][15]=0.3um
int um05; //[16][17]=0.5um
int um10; //[18][19]=1.0um
int um25; //[20][21]=2.5um
int um50; //[22][23]=5.0um
int um1X; //[24][25]=10.0um
//------------------------------------------------
int vers; //[26]版本号
int errs; //[27]错误号
int chek; //[28][29]校验和
//------------------------------------------------
} G5_type;
G5_type g;
void G5Feed(byte c) {
//------------------------------------------------
static int state = 0;
static int count = 0;
//------------------------------------------------
if (0x42 == c) state = 1;
if (0x4d == c && state == 1) {
state = 2;
count = -1;
}
//------------------------------------------------
pBuf[count++] = c;//lg(c);
//------------------------------------------------
if (count == 30) G5Exp();
//------------------------------------------------
}
unsigned int G5Val(int a, int b) {
unsigned int v = pBuf[a] << 8;
if (b > 0) v += pBuf;
return v;
}
void G5Exp() {
//------------------------------------------------
g.len = G5Val(0, 1); //[0][1]=2*13+2 帧长度
//------------------------------------------------
//标准颗粒物浓度(CF=1)
g.cf10 = G5Val(2, 3); //[2][3]=PM1.0=ug/m3
g.cf25 = G5Val(4, 5); //[4][5]=PM2.5=ug/m3
g.cf1X = G5Val(6, 7); //[6][7]=PM10 =ug/m3
//------------------------------------------------
//大气环境下
g.pm10 = G5Val(8, 9); //[8][9] =PM1.0=ug/m3
g.pm25 = G5Val(10, 11); //[10][11]=PM2.5=ug/m3
g.pm1X = G5Val(12, 13); //[12][13]=PM10 =ug/m3
//------------------------------------------------
//0.1升空气中xxum直径颗粒物个数
g.um03 = G5Val(14, 15); //[14][15]=0.3um
g.um05 = G5Val(16, 17); //[16][17]=0.5um
g.um10 = G5Val(18, 19); //[18][19]=1.0um
g.um25 = G5Val(20, 21); //[20][21]=2.5um
g.um50 = G5Val(22, 23); //[22][23]=5.0um
g.um1X = G5Val(24, 25); //[24][25]=10.0um
//------------------------------------------------
g.vers = G5Val(26, -1); //[26]版本号
g.errs = G5Val(27, -1); //[27]错误号
g.chek = G5Val(28, 29); //[28][29]校验和
//------------------------------------------------
//G5_Show();
//AskHCHO();
//Si7021_show();
//------------------------------------------------
}
void G5_Show() {
//------------------------------------------------
//lg(); lg(F("----------------------------------------------------------")); lg();
lg(F("American standard\t"));
lg(F("pm1.0 = ")); lg(g.cf10); lg(F(" ug/m3\t"));
lg(F("pm2.5 = ")); lg(g.cf25); lg(F(" ug/m3\t"));
lg(F("pm10. = ")); lg(g.cf1X); lg(F(" ug/m3\t")); lg();
//------------------------------------------------
lg(F("China standard\t\t"));
lg(F("pm1.0 = ")); lg(g.pm10); lg(F(" ug/m3\t"));
lg(F("pm2.5 = ")); lg(g.pm25); lg(F(" ug/m3\t"));
lg(F("pm10. = ")); lg(g.pm1X); lg(F(" ug/m3\t")); lg();
//------------------------------------------------
lg(F("0.3um = ")); lg(g.um03); lg(F("\t"));
lg(F("0.5um = ")); lg(g.um05); lg(F("\t"));
lg(F("1.0um = ")); lg(g.um10); lg(F("\t"));
lg(F("2.5um = ")); lg(g.um25); lg(F("\t"));
lg(F("5.0um = ")); lg(g.um50); lg(F("\t"));
lg(F("10.um = ")); lg(g.um1X); lg(F("\t"));lg();
//------------------------------------------------
}
[/code]
B3_HCHO.ino
[pre lang="arduino" line="1" file="B3_HCHO.ino"]
//------------------------------------------------
int iHCHO = 0;
float fHCHO = 0.0f;
float fHCHOnum = 0.0f;
float fHCHOall = 0.0f;
float fHCHOavr = 0.0f;
//------------------------------------------------
//查询命令
const static unsigned char HCHOAskData[7] = {0x42, 0x4D, 0x01, 0x00, 0x00, 0x00, 0x90};
//气体名称
String numName;
const static char numNameInx[][5] = {//50% //String numNameInx[]= {//56%
"无", "CO", "H2S", "CH4", "CL2", "HCL", "F2", "HF", "NH3", "HCN", "PH3", "NO", "NO2", "O3", "O2", "SO2", "CLO2",
"COCL", "PH3", "SiH4", "HCHO", "CO2", "VOC", "ETO", "C2H4", "C2H2", "SF6", "AsH3", "H2", "TOX1", "TOX2"//,
//"气体流量L/M", "电池电量/%"
};
//数据内容 单位
String numUnit;
const static char numUnitInx[][6] = {"", "ppm", "VOL", "LEL", "Ppb", "mg/m3"};
//数据当量
float numKeys = 1;
const float numKeysInx[] = {1, 1, 10, 100, 1000};
//------------------------------------------------
void HCHO_Ask() {//42 4d 01 00 00 00 90
S3.write(HCHOAskData, 7);//Serial.print(data,HEX)//AskHCHO()
}
//------------------------------------------------
void ShowHCHO() {
//---------------------------------------
lg(numName); lg(F(":")); lg(fHCHO); lg(F(" ")); lg(numUnit);
lg(F(" Avg:")); lg(fHCHOavr); lgln(numUnit);
//---------------------------------------
}
void LcdHCHO() {
//LCD1602_Show(0, 0, String(numName) + String(F(": ")) + String(fHCHO) + String(F(" ")) + String(numUnit) );
//LCD1602_Show(6, 1, String(dhtH) + String(F("C V:")) + String(fHCHOavr) + String(F(" ")) + String(numUnit) );
}
//------------------------------------------------
char HCHObuf[10];
int HCHOinx = 0;
void HCHOCheck(byte c) {
if (HCHOinx == 9) GetHCHO();
if (HCHOinx == 9) ShowHCHO();
if (c == 0x42) HCHOinx = 0;
HCHObuf[HCHOinx] = c;
HCHOinx++;
}
void GetHCHO() {
//---------------------------------------
numName = numNameInx[HCHObuf[3]];
numUnit = numUnitInx[HCHObuf[4]];
numKeys = numKeysInx[HCHObuf[5]];
//---------------------------------------
iHCHO = HCHObuf[6] * 256 + HCHObuf[7];
fHCHO = iHCHO / numKeys;
//---------------------------------------
fHCHOnum++;
fHCHOall += fHCHO;
fHCHOavr = fHCHOall / fHCHOnum;
//---------------------------------------
}
//------------------------------------------------
[/code]
B4_SI7021.ino
[pre lang="arduino" line="1" file="B4_SI7021.ino"]
#include <Wire.h>
#include <Si7021.h>
Si7021 Si;
float Si_Temperature, Si_Humidity;
void Si7021_setup() {
lgln(F("Si7021_setup..."));
Wire.begin();
if (Si.detectSensor())
lgln(F("Device detected"));
else
lgln(F("Device NOT detected"));
}
void Si7021_read() {
Si_Temperature = Si.getTemperature();
Si_Humidity = Si.getHumidity();
}
void Si7021_show() {
lg("Temperature: "); lg(Si_Temperature); lg(" C, Humidity: "); lg(Si_Humidity); lg(" %"); lg();
}
[/code]
B5_WiFi.ino
[pre lang="arduino" line="1" file="B5_WiFi.ino"]
//=========================================================================
//https://www.zybuluo.com/kfihihc/note/31135
//http://wiki.iteadstudio.com/ESP8266_Serial_WIFI_Module
//=========================================================================
const static char AT_Test[] PROGMEM = "AT";
const static char AT_Type[] PROGMEM = "AT+CWMODE=1"; //beWiFi
const static char AT_Rest[] PROGMEM = "AT+RST"; //reBoot
const static char AT_Cmux[] PROGMEM = "AT+CIPMUX=0"; //?
const static char AT_IsJP[] PROGMEM = "AT+CWJAP?"; //SeeAP//is Join AP
const static char AT_lgIP[] PROGMEM = "AT+CIFSR"; //seesIP
const static char AT_JAPa[] PROGMEM = "AT+CWJAP=\""; //Join AP
const static char AT_JAPb[] PROGMEM = "\",\""; //
const static char AT_JAPc[] PROGMEM = "\""; //
const static char AT_Send[] PROGMEM = "AT+CIPSEND="; //
const static char AT_Stat[] PROGMEM = ">"; //
//-------------------------------------------------------------------------
const static char AT_OKss[] PROGMEM = "OK";
const static char AT_Busy[] PROGMEM = "busy";
const static char AT_Errs[] PROGMEM = "ERROR";
const static char AT_RstB[] PROGMEM = "Ai-Thinker";
const static char AT_Fail[] PROGMEM = "FAIL";
const static char AT_Cnet[] PROGMEM = "CONNECT";
const static char AT_Clsd[] PROGMEM = "CLOSED";
const static char AT_Empt[] PROGMEM = "";
//=========================================================================
String wifiAP = "", wifiIP = "";
//=========================================================================
//#include <SoftwareSerial.h>
//SoftwareSerial wfs(10, 11); // RX, TX
#define wfs Serial2
//=========================================================================
static const long wifiBaud = 115200;//9600;
boolean wifiRun = false, wifiLog = false;
String wifiBack = "";
//=========================================================================
void wifi_Init(boolean lgKey, boolean startAP, boolean joinAP) {
//-------------------------------------------------------------------------
wfs.begin(wifiBaud); lg(F("WiFi.Serial.start! = ")); lg(wifiBaud); lg();
//-------------------------------------------------------------------------
wifiLog = lgKey;
//-------------------------------------------------------------------------
if (startAP) netStartAP();
if (joinAP) netJoinAP(F("SSID"), F("PASS"));
lgln(wifiAP); lgln(wifiIP);
//-------------------------------------------------------------------------
}
//=========================================================================
void netStartAP() {
//-------------------------------------------------------
wifiRun = wfs_cmd_back(S(AT_Test), S(AT_OKss), S(AT_Empt), 1000); //test
wifiRun = wfs_cmd_back(S(AT_Cmux), S(AT_OKss), S(AT_Empt), 1000); //be 1 LINK MODE
wifiRun = wfs_cmd_back(S(AT_IsJP), S(AT_OKss), S(AT_Empt), 1000); lgln(wifiBack); wifiAP = GetStringAB(wifiBack, F("\""), F("\"\r\n")); //SeeAP
wifiRun = wfs_cmd_back(S(AT_lgIP), S(AT_OKss), S(AT_Empt), 1000); lgln(wifiBack); wifiIP = GetStringAB(wifiBack, F("\""), F("\"\r\n")); //seesIP
//lgln(wifiAP); lgln(wifiIP);
//-------------------------------------------------------
}
void netJoinAP(String n, String p) {
//-------------------------------------------------------------------------
String AT_Join = S(AT_JAPa) + n + S(AT_JAPb) + p + S(AT_JAPc);
//-------------------------------------------------------------------------
wifiRun = wfs_cmd_back(S(AT_Test), S(AT_OKss), S(AT_Empt), 1000 ); //test
wifiRun = wfs_cmd_back(S(AT_Type), S(AT_OKss), S(AT_Empt), 1000 ); //beWiFi
wifiRun = wfs_cmd_back(S(AT_Rest), S(AT_RstB), S(AT_Empt), 5000 ); //reBoot
wifiRun = wfs_cmd_back(S(AT_Cmux), S(AT_OKss), S(AT_Empt), 1000 ); //lgln(s);//?
wifiRun = wfs_cmd_back( AT_Join , S(AT_OKss), S(AT_Empt), 10000); //lgln(s);//joinAP
wifiRun = wfs_cmd_back(S(AT_IsJP), S(AT_OKss), S(AT_Fail), 1000 ); wifiAP = GetStringAB(wifiBack, F("\""), F("\"\r\n")); //SeeAP
wifiRun = wfs_cmd_back(S(AT_lgIP), S(AT_OKss), S(AT_Empt), 1000 ); wifiIP = GetStringAB(wifiBack, F("\""), F("\"\r\n")); //seesIP
//lgln(wifiAP); lgln(wifiIP); //for (;;);
//-------------------------------------------------------------------------
}
//-------------------------------------------------------------------------
String senx = "";
void HttpGetPost(String link, String text, int seconds) {
senx = S(AT_Send) + String(text.length() + String(text.length()).length() ); //lgln(senx);
wifiRun = wfs_cmd_back(link, S(AT_Cnet), S(AT_Errs), 2000 ); //lg(wifiBack); lg('='); lg(wifiRun); lg();
wifiRun = wfs_cmd_back(senx, S(AT_Stat), S(AT_Errs), 2000 ); //lg(wifiBack); lg('='); lg(wifiRun); lg();//if (!wifiRun) return;
wifiRun = wfs_cmd_back(text, S(AT_Clsd), S(AT_Empt), 20000); //lg(wifiBack); lg('='); lg(wifiRun); lg(); //if (!wifiRun) return;
}
//=========================================================================
const static char Link_Baidu[] PROGMEM = {"AT+CIPSTART=\"TCP\",\"www.baidu.com\",80"};
const static char Urls_Baidu[] PROGMEM = {"GET / HTTP/1.0\r\n\r\n"};
void NetLinkTest_Baidu() {
HttpGetPost(S(Link_Baidu), S(Urls_Baidu) , 5); lgln(wifiBack);
}
const static char Link_BkGps[] PROGMEM = {"AT+CIPSTART=\"TCP\",\"www.bbkgps.com\",80"};
const static char Urls_BkGps[] PROGMEM = {"GET http://www.bbkgps.com/t.php HTTP/1.0\r\n\r\n"};
void NetLinkTest_BBKGPS() {
HttpGetPost(S(Link_BkGps), S(Urls_BkGps) , 10); lgln(wifiBack);
}
//=========================================================================
//=========================================================================
typedef struct charCheckSave {
int len = 0, inx = 0;
String str = "";
void init(String s) {
str = String(s); inx = 0;
len = s.length();
//lg("check=");lg(len); lg();
}
boolean check(char c) {
//lg("="); lg(c); lg("="); lg(inx); lg();
if (len == 0) return false;
if (inx == len - 1) {
inx = 0; return true;
}
if (str[inx] == c) inx++; else inx = 0;
return false;
}
} charCheckSave;
//=========================================================================
charCheckSave ck1, ck2, ck3, ck4, ck5;
//=========================================================================
void wfs_serial_clear() {
while (wfs.available() > 0) {
char c = wfs.read();
if (wifiLog) lg(c);
}
}
boolean wfs_cmd_send(String comStr) {
wfs_serial_clear(); wfs.print(comStr); //lg(comStr);
smartDelay(1);
return true;
}
boolean wfs_cmd_backAB(String comStr, String strOK, String strNO, long timeout) { //
//-------------------------------------------------------
boolean save = false; char c; unsigned long start = millis(); wifiBack = "";
ck1.init(strOK);
ck2.init(strNO);
ck3.init(S(AT_Errs));
ck4.init(S(AT_Busy));
ck5.init(S(AT_Clsd));
//------------------------------------------------------
wfs_serial_clear(); wfs.println(comStr);
//-------------------------------------------------------
while (millis() - start < timeout) {
//-------------------------------------------------------
while (wfs.available() > 0) {
//-----------------------------------
c = wfs.read();
if (c == '\0') continue;
if (wifiLog) lg(c);
//-----------------------------------
if (save) wifiBack += c;
if (ck1.check(c)) save = true;
if (ck2.check(c)) save = false;
//-----------------------------------
//if (ck3.check(c)) return true;
//if (ck4.check(c)) return false;
if (ck5.check(c)) return false;
//-----------------------------------
}
//-------------------------------------------------------
}
//-------------------------------------------------------
return false;
//-------------------------------------------------------
}
boolean wfs_cmd_back(String comStr, String strOK, String strNO, long timeout) { //
//-------------------------------------------------------
char c; unsigned long start = millis(); wifiBack = "";
ck1.init(strOK);
ck2.init(strNO);
ck3.init(S(AT_Errs));
ck4.init(S(AT_Busy));
//------------------------------------------------------
wfs_serial_clear(); wfs.println(comStr);
//-------------------------------------------------------
while (millis() - start < timeout) {
//-------------------------------------------------------
while (wfs.available() > 0) {
//-----------------------------------
c = wfs.read();
if (c == '\0') continue;
if (wifiLog) lg(c);
//-----------------------------------
wifiBack += c;
//-----------------------------------
if (ck1.check(c)) return true;
if (ck2.check(c)) return false;
if (ck3.check(c)) return false;
if (ck4.check(c)) return false;
//-----------------------------------
}
//-------------------------------------------------------
}
//-------------------------------------------------------
return false;
//-------------------------------------------------------
}
//=========================================================================
[/code]
B6_Lewei.ino
[pre lang="arduino" line="1" file="B6_Lewei.ino"]
//-------------------------------------------------------------------------
const static char Lewei_Link[] PROGMEM = {"AT+CIPSTART=\"TCP\",\"www.lewei50.com\",80"};
const static char Lewei_Head[] PROGMEM = {"POST http://www.lewei50.com/api/V1/gateway/UpdateSensors/02 HTTP/1.1\r\n"};
const static char Lewei_Usek[] PROGMEM = {"userkey: yourkey-xxxxxxxxxxxxx\r\n"};
const static char Lewei_Host[] PROGMEM = {"Host: www.lewei50.com\r\n"};
const static char Lewei_LenA[] PROGMEM = {"Content-Length: "};
const static char Lewei_LenB[] PROGMEM = {"\r\n"};
const static char Lewei_Type[] PROGMEM = {"Content-Type: application/x-www-form-urlencoded\r\n"};
const static char Lewei_Clos[] PROGMEM = {"Connection: close\r\n"};
//-------------------------------------------------------------------
const static char Lewei_JsnA[] PROGMEM = {"{\"Name\":\""};
const static char Lewei_JsnB[] PROGMEM = {"\",\"Value\":\""};
const static char Lewei_JsnC[] PROGMEM = {"\"}"};
//-------------------------------------------------------------------
const static char Lewei_Line[] PROGMEM = {"\r\n"};
//static char Lewei_Date[] = "Date:";
//static char Lewei_Gmts[] = "GMT";
//-------------------------------------------------------------------------
static String Lewei_Data = "";
String Lewei_Time = "";
int Lewei_Loop_N = 0;
//-------------------------------------------------------------------------
String Lewei_Build() {
String s = "";
s += Lewei_Json("WD", String(Si_Temperature)) + ',';
s += Lewei_Json("SD", String(Si_Humidity)) + ',';
s += Lewei_Json("JQ", String(fHCHO)) + ',';
s += Lewei_Json("PM", String(g.cf25));
s = "[" + s + "]"; //lgln(s);
return s;
}
String Lewei_Json(String nameStr, String valueStr) {
return S(Lewei_JsnA) + nameStr + S(Lewei_JsnB) + valueStr + S(Lewei_JsnC);
}
void Lewei_Loop() {
//-------------------------------------------------------------------------------
Lewei_Data = Lewei_Build();
int dn = Lewei_Data.length();
int tn = L(Lewei_Head) + L(Lewei_Usek) + L(Lewei_Host)
+ L(Lewei_LenA) + String(dn).length() + L(Lewei_LenB)
+ L(Lewei_Clos) + L(Lewei_Line)
+ Lewei_Data.length() + L(Lewei_Line) + L(Lewei_Line);
tn=tn-2;
senx = S(AT_Send) + String( tn + String(tn).length() );
String sendStr = "";
sendStr += S(Lewei_Head) + S(Lewei_Usek) + S(Lewei_Host);
sendStr += S(Lewei_LenA) + String(dn) + S(Lewei_LenB);
sendStr += S(Lewei_Clos) + S(Lewei_Line);
sendStr += Lewei_Data + S(Lewei_Line) + S(Lewei_Line);
//-------------------------------------------------------------------------------
wifiRun = wfs_cmd_back(S(Lewei_Link), S(AT_Cnet), S(AT_Errs), 2000 );
wifiRun = wfs_cmd_back(senx, S(AT_Stat), S(AT_Errs), 2000 );
wifiRun = wfs_cmd_backAB(sendStr, "Date: ", "GMT", 5000); wfs_serial_clear();
//-------------------------------------------------------------------------------
lgln(wifiBack); Lewei_Time = GetStringAB(wifiBack,"2016","GMT");Lewei_Loop_N++;
//-------------------------------------------------------------------------------
}
//=============================================================================================
[/code]
B7_5110.ino
[pre lang="arduino" line="1" file="B7_5110.ino"]
#include "PCD8544.h"
static PCD8544 lcd;//PCD8544(clock,data-in,data select,reset,enable);
//52,50,48,46,44
//SC,RST,DC,DN,CLK
void LCD5110_setup() {
lgln(F("LCD5110_setup..."));
lcd=PCD8544(44,46,48,50,52);//(clock,data-in,data select,reset,enable);
lcd.begin(84, 48);
lcd.setContrast(48);
lcd.setCursor(0, 0);
LCD_Show_BOBOKing();
}
void LCD_Show_BOBOKing() {
lcd.clear();
lcd.setCursor(0, 0); lcd.print(F(" BOBOKing.COM"));
lcd.setCursor(0, 2); lcd.print(F(" Temperature..."));
lcd.setCursor(0, 3); lcd.print(F(" Humidity..."));
lcd.setCursor(0, 4); lcd.print(F(" PM2.5 info..."));
lcd.setCursor(0, 5); lcd.print(F(" HCHO info..."));
delay(5000);
lcd.clear();
}
void LCD5110_loop() {
static int counter = 0;
lcd.setCursor(0, 0);
lcd.print("Hello, World!");
lcd.setCursor(0, 1);
lcd.print(counter, DEC);
lcd.write(' ');
lcd.write(0);
delay(200);
counter++;
}
[/code]
B9_Work.ino
[pre lang="arduino" line="1" file="B9_Work.ino"]
//=====================================================
void Work_Loop() {
if ( ts_loop(60) ) Lewei_Loop();
if ( ts_loop(1) ) {
LCD_Show_All(); //LG_Show_All();
}
if ( ts_loop(5) ) {
HCHO_Ask(); Si7021_read();
}
}
//=====================================================
void LCD_Show_All() {
//lcd.clear();
lcd.setCursor(0, 0);//lcd.print("T=");
lcd.print(Si_Temperature); lcd.print(F("C ")); lcd.print(Si_Humidity); lcd.print(F("%"));
lcd.setCursor(0, 1); lcd.print(F("pm10 ")); lcd.print(g.cf10); lcd.print(F(" ug/m3\t"));
lcd.setCursor(0, 2); lcd.print(F("pm25 ")); lcd.print(g.cf25); lcd.print(F(" ug/m3\t"));
lcd.setCursor(0, 3); lcd.print(F("pm1X ")); lcd.print(g.cf1X); lcd.print(F(" ug/m3\t"));
lcd.setCursor(0, 4); lcd.print(F("HCHO ")); lcd.print(fHCHO); lcd.print(" "); lcd.print(fHCHOavr);
lcd.setCursor(0, 5); lcd.print(Lewei_Loop_N); lcd.print(Lewei_Time); //lcd.clearLine(); lcd.print(F(" "));
}
void LG_Show_All() {
lg(Si_Temperature); lg(F("C ")); lg(Si_Humidity); lg(F("%"));
lg(F(" ")); lg(F("pm10 ")); lg(g.cf10); lg(F(" ug/m3\t"));
lg(F(" ")); lg(F("pm25 ")); lg(g.cf25); lg(F(" ug/m3\t"));
lg(F(" ")); lg(F("pm1X ")); lg(g.cf1X); lg(F(" ug/m3\t"));
lg(F(" ")); lg(F("HCHO ")); lg(fHCHO); lg(" "); lg(fHCHOavr);
lg(F(" ")); lg(Lewei_Loop_N); lg(Lewei_Time); lg();
}
//=====================================================
[/code] |