久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6083|回復: 0
打印 上一主題 下一主題
收起左側

WeMos D1搭建WiFi服務器

[復制鏈接]
跳轉到指定樓層
樓主
ID:253527 發表于 2017-11-25 17:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <dht11.h>
#include <ESP8266WiFi.h>
#include <SoftwareSerial.h>

const char ssid[]     = "ESP8266-777";
const char password[] = "1234567890";
const int tcpPort     = 1010;
WiFiServer server(tcpPort);
IPAddress softLocal(192,168,0,104);//change
IPAddress softGateway(192,168,0,1);
IPAddress softSubnet(255,255,255,0);

dht11 DHT11_A;
dht11 DHT11_B;
#define DHT11PIN_A D2
#define DHT11PIN_B D8

WiFiClient serverClients[2];

SoftwareSerial mySerial(D7, D6);

uint8_t   g_temp = 16;
uint8_t   g_hume = 16;
uint16_t  g_pm25   = 10;
uint16_t  g_pm10 = 10;
const uint8_t  g_cfgtemp[4] = { 10, 15, 20, 25 };   //1: 0-10   2: 10-15   3: 15-20    4: 20-25    5: 25--
const uint8_t  g_cfghume[4] = { 10, 15, 20, 25 };   //1: 0-10   2: 10-15   3: 15-20    4: 20-25    5: 25--
const uint16_t g_cfgpm25[4] = { 25, 45, 60, 75 };   //1: 0-25   2: 25-45   3: 45-65    4: 65-85    5: 85--
const uint8_t  g_deltemp = 1;   //1: 0-10   2: 10-15   3: 15-20    4: 20-25    5: 25--
const uint8_t  g_delhume = 1;   //1: 0-10   2: 10-15   3: 15-20    4: 20-25    5: 25--
const uint16_t  g_delpm = 5;   //1: 0-10   2: 10-15   3: 15-20    4: 20-25    5: 25--

uint8_t   g_sendbuffer[5]   = { 0xAA,0x03,0x03,0x03,0xBB};
uint8_t   debug=0;
void setup()
{
  sysinit();
  setupWiFi();
  server.begin();
  server.setNoDelay(true);
  g_sendbuffer[0] = 0xAA;g_sendbuffer[1] = 0x03;g_sendbuffer[2] = 0x03;g_sendbuffer[3] = 0x03;g_sendbuffer[4] =0xBB;//debug
}

void loop()
{
    Serial.println("");  delay(50);
    Dht11ReadOutPut();
    Serial.println("");  delay(50);
    pmReadOutput();
    Serial.println("");  delay(50);
    //getSerialData();
    getdata();
    senddata();
}

void getSerialData(void)
{
    uint8_t i = 0;
    uint8_t val[5]={0x00,0x00,0x00,0x00,0x00};
    while(Serial.available()>0)
    {
        for( i = 0; i < 5; i++ )
        {
            if(Serial.available())
            {
                val[i]=(uint8_t)Serial.read();
            }
        }
        if((val[0]==0xAA) && (val[4]==0xBB))
        {
            g_temp = val[1];
            g_hume = val[2];
            g_pm25 = (0x00FF&val[3]);
            Serial.print("Getdata:");
            Serial.print(g_temp);Serial.print(g_hume);Serial.println(g_pm25);
        }
    }
}

void getdata()
{
    //temp
    switch(g_sendbuffer[1])
    {
        case 1:  if( g_temp >= ( g_cfgtemp[0] + g_deltemp ) ){  g_sendbuffer[1] = 2;} break;
        case 2:  if( g_temp >= ( g_cfgtemp[1] + g_deltemp ) ){  g_sendbuffer[1] = 3; } else if( g_temp <= g_cfgtemp[0] - g_deltemp ) {g_sendbuffer[1] = 1;} break;
        case 3:  if( g_temp >= ( g_cfgtemp[2] + g_deltemp ) ){  g_sendbuffer[1] = 4; } else if( g_temp <= g_cfgtemp[1] - g_deltemp ) {g_sendbuffer[1] = 2;} break;
        case 4:  if( g_temp >= ( g_cfgtemp[3] + g_deltemp ) ){  g_sendbuffer[1] = 5; } else if( g_temp <= g_cfgtemp[2] - g_deltemp ) {g_sendbuffer[1] = 3;} break;
        case 5:  if( g_temp <= g_cfgtemp[3] - g_deltemp ) { g_sendbuffer[1] = 4; } break;
        default: g_sendbuffer[1] = 3;
    }
    //hume
    switch(g_sendbuffer[2])
    {
        case 1:  if( g_hume >= ( g_cfghume[0] + g_delhume ) ){ g_sendbuffer[2] = 2;} break;
        case 2:  if( g_hume >= ( g_cfghume[1] + g_delhume ) ){ g_sendbuffer[2] = 3;} else if( g_hume <= g_cfghume[0] - g_delhume) {g_sendbuffer[2] = 1; }break;
        case 3:  if( g_hume >= ( g_cfghume[2] + g_delhume ) ){ g_sendbuffer[2] = 4;} else if( g_hume <= g_cfghume[1] - g_delhume) {g_sendbuffer[2] = 2; }break;
        case 4:  if( g_hume >= ( g_cfghume[3] + g_delhume ) ){ g_sendbuffer[2] = 5;} else if( g_hume <= g_cfghume[2] - g_delhume) {g_sendbuffer[2] = 3;} break;
        case 5:  if( g_hume <= g_cfghume[3] - g_delhume) g_sendbuffer[2] = 4; break;
        default: g_sendbuffer[2] = 3;
    }
    //pm25
    switch(g_sendbuffer[3])
    {
  //case 1:  if( g_pm25 => ( g_cfgpm25[0] + g_delpm ) ){ g_sendbuffer[3] = 3;} break;
        //case 2:  if( g_pm25 => ( g_cfgpm25[1] + g_delpm ) ){ g_sendbuffer[3] = 3;} else if( g_pm25 <= g_cfgpm25[0] - g_delpm) g_sendbuffer[3] = 3; break;
        case 3:  if( g_pm25 >= ( g_cfgpm25[2] + g_delpm ) ){ g_sendbuffer[3] = 4;} break;
        case 4:  if( g_pm25 >= ( g_cfgpm25[3] + g_delpm ) ){ g_sendbuffer[3] = 5;} else if( g_pm25 <= g_cfgpm25[2] - g_delpm){ g_sendbuffer[3] = 3;}break;
        case 5:  if( g_pm25 <= g_cfgpm25[3] - g_delpm) g_sendbuffer[3] = 4; break;
        default: g_sendbuffer[3] = 3;
    }
}

void senddata()
{   
    uint8_t i;
    if (server.hasClient())
    {
        for (i = 0; i < 2; i++)
        {
            if (!serverClients[i] || !serverClients[i].connected())
            {
                if (serverClients[i]) serverClients[i].stop();//未聯接,就釋放
                serverClients[i] = server.available();//分配新的
                continue;
            }
        }
        WiFiClient serverClient = server.available();
        serverClient.stop();
    }
    for (i = 0; i < 2; i++)
    {
        if (serverClients[i] && serverClients[i].connected())
        {
            serverClients[i].write(&g_sendbuffer[0],5);  //向所有客戶端發送數據
            if (serverClients[i].available())
            {
                //Serial.print( "Clients IP & Port:  " );
                //Serial.print( serverClients[i].remoteIP());
                //Serial.println( serverClients[i].remotePort());
               //while (serverClients[i].available())
              //Serial.print ( "Get data from Clients: " );Serial.write(serverClients[i].read());  Serial.println ( "End" );
            }
        }
    }
}

void sysinit()
{
    const uint8_t pmOndata[9]  = {0xAA,0x01,0x00,0x00,0x00,0x00,0x01,0x66,0xBB};
    const uint8_t pmOffdata[9] = {0xAA,0x03,0x00,0x00,0x00,0x00,0x01,0x68,0xBB};
    Serial.begin(115200);
    mySerial.begin(9600);
    delay(10);
    mySerial.write(pmOndata,9);
    delay(1000);
   // mySerial.write(pmOffdata,9);
   // delay(10);
}

void setupWiFi()
{
    WiFi.mode(WIFI_AP);//debug
    WiFi.softAPConfig(softLocal, softGateway, softSubnet);
    WiFi.softAP(ssid,password);
    Serial.println();
    Serial.print ( "IP address: " );
    Serial.println ( WiFi.softAPIP() );
}

void Dht11ReadOutPut()
{
    uint8_t l=0;
    int chkA = DHT11_A.read(DHT11PIN_A);
    int chkB = DHT11_B.read(DHT11PIN_B);
    for( l = 0;l < 20; l++ )
    {
        if( ( chkA == DHTLIB_OK ) && ( chkB == DHTLIB_OK ) ){ Serial.println("Read DHT OK");changedata(); break;}
        else if(chkA == DHTLIB_OK) { Serial.println("Read DHT OK"); changedataA(); ;break; }
        else if(chkB == DHTLIB_OK) { Serial.println("Read DHT OK"); changedataA(); ;break; }
        else{ chkA = DHT11_A.read(DHT11PIN_A); delay(5); chkB = DHT11_B.read(DHT11PIN_B);}
        //Serial.println(l);
    }
    Serial.println("Read DHT OK");changedata();
    /*
    switch (chkA)
    {
        case DHTLIB_OK:             Serial.println("Read DHT0 OK");           break;
        case DHTLIB_ERROR_CHECKSUM: Serial.println("Read DHT0 chk error");    break;
        case DHTLIB_ERROR_TIMEOUT:  Serial.println("Read DHT0 timeout");      break;
        default:                    Serial.println("Read DHT0 Unknow error"); break;
    }
    switch (chkB)
    {
        case DHTLIB_OK:             Serial.println("Read DHT1 OK");           break;
        case DHTLIB_ERROR_CHECKSUM: Serial.println("Read DHT1 chk error");    break;
        case DHTLIB_ERROR_TIMEOUT:  Serial.println("Read DHT1 timeout");      break;
        default:                    Serial.println("Read DHT1 Unknow error"); break;
    }
    */

}
void changedata()
{
    g_temp = (uint8_t)((DHT11_A.temperature + DHT11_B.temperature ) >> 1);
    Serial.print("Temp(oC): "); delay(100);    Serial.println(g_temp);  delay(100);

    g_hume = (uint8_t)((DHT11_A.humidity + DHT11_B.humidity ) >> 1);
    Serial.print("Hum ( %): "); delay(100);    Serial.println(g_hume);  delay(100);
}
void changedataA()
{
    g_temp = (uint8_t)DHT11_A.temperature;
    Serial.print("Temp(oC): "); delay(100);    Serial.println(g_temp);  delay(100);

    g_hume = (uint8_t)DHT11_A.humidity;
    Serial.print("Hum ( %): "); delay(100);    Serial.println(g_hume);  delay(100);
}
void changedataB()
{
    g_temp = (uint8_t)DHT11_B.temperature;
    Serial.print("Temp(oC): "); delay(100);    Serial.println(g_temp);  delay(100);

    g_hume = (uint8_t)DHT11_B.humidity;
    Serial.print("Hum ( %): "); delay(100);    Serial.println(g_hume);  delay(100);
}

void pmReadOutput()
{
    uint8_t pm25_data[2]={0x00,0x00};
    uint8_t pm10_data[2]={0x00,0x00};
    char string_25[10];
    char string_10[10];  
    uint8_t data[] = {0xAA,0x02,0x00,0x00,0x00,0x00,0x01,0x67,0xBB};
    uint8_t i=0;
    mySerial.write(data,9);  delay(150);
    while(mySerial.available())
    {
        data[i] = mySerial.read();
        i++;
    }
    if( (data[0] == 0xAA) && (data[1] == 0x02) && (data[8] == 0xBB) )
    {
        g_pm25 = data[4]*256 + data[5];
        g_pm10 = data[2]*256 + data[3];
        //Serial.write(data,9);delay(100);//debug
        Serial.println("Read PM OK"); delay(110);
        Serial.print("PM25:");       delay(50);    Serial.print(g_pm25);  delay(50);  Serial.println(" ug/m3"); delay(50);  
        Serial.print("PM10:");       delay(50);    Serial.print(g_pm10);  delay(50);  Serial.println(" ug/m3"); delay(50);  
    }
    else
    {
        Serial.println("Read Pm Error");delay(100);//debug
    }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线视频网站 | 国产乱码久久久 | 成人精品免费视频 | 亚洲三级av| 国产一区二区在线播放 | 午夜性色a√在线视频观看9 | 91久久精品国产91久久 | 亚洲精品久久久蜜桃 | 日韩精品一区二区在线观看 | 欧美bondage紧缚视频 | 一区二区三区免费观看 | 久久久精品网站 | 操人网站 | 成人精品一区二区 | 亚洲九九| 99这里只有精品视频 | 亚洲午夜网 | 久久av一区二区三区 | 久久精品中文字幕 | 黄色操视频 | 日韩高清国产一区在线 | 欧美一区二区三区在线 | 色婷婷国产精品综合在线观看 | 久久久久久久久久久久亚洲 | 久久久久久久久久爱 | 国产精品高清在线 | 国产一区精品在线 | 成人免费视频观看视频 | 91精品国产91久久综合桃花 | 国产精品不卡 | 国产精品九九视频 | 久久久久久艹 | 偷拍自拍网站 | 成人在线视频观看 | 色必久久| 一级片在线播放 | 在线一区视频 | 免费a网站 | 亚洲欧美一区二区三区国产精品 | 久久久婷婷 | 一区在线免费视频 |