找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3304|回复: 1
收起左侧

Arduino+ESP8266+贝壳物联网使用手机进行远程控制

[复制链接]
ID:233792 发表于 2020-8-29 13:59 | 显示全部楼层 |阅读模式
程序通过ESP8266连接贝壳物联,使用微信关注贝壳物联进行控制,也可下载贝壳物联控制APP 进行操作。程序中加入了自动配网

Arduino源程序如下:
  1. //增加联网失败,重新连接,
  2. #include <ESP8266WiFi.h>
  3. WiFiClient client;
  4. #define led 4 //接继电器控制灯
  5. #define relay1 2 //模块led,作网络状态指示,启动后常亮,则正常联网
  6. #define key 5//将dht11的data口接在8266的GPIO2上
  7. const char *ssid = "Nok7";
  8. const char *password = "bfx1234567890";
  9. const char *host = "121.42.180.30";
  10. char flag=0;
  11. int x=0;
  12. int y=0;
  13. int f;
  14. bool autoConfig()
  15. {
  16.   int a=0;
  17.   pinMode(key,INPUT);
  18.   if(digitalRead(key) == LOW)
  19.   flag=1;
  20.   else
  21.   flag=0;
  22.   while(!digitalRead(key));
  23.   
  24.   if(flag==1)
  25.   {
  26.    return false;
  27.   }
  28.   else
  29.   {
  30.       WiFi.begin();
  31.       while (WiFi.status() != WL_CONNECTED)
  32.     {
  33.       Serial.println("AutoConfig Success");
  34.       Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
  35.       Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
  36.       WiFi.printDiag(Serial);
  37.       digitalWrite(relay1,HIGH);
  38.       delay(800);
  39.       delay(100);
  40.       digitalWrite(relay1,LOW);
  41.       delay(100);
  42.       a++;
  43.       if(a==20)
  44.       {
  45.         a=0;
  46.         return false;
  47.         break;
  48.       }
  49.     }
  50.     if(false)
  51.     {
  52.       Serial.println("");
  53.       Serial.println("wifi line faild !");
  54.       while(1)
  55.       {
  56.        digitalWrite(relay1,LOW);
  57.       }
  58.       
  59.     }
  60.     else
  61.     {
  62.       Serial.println("");
  63.       Serial.println("WiFi connected");
  64.       Serial.println("IP address: ");
  65.       Serial.println(WiFi.localIP());
  66.       digitalWrite(relay1,HIGH);
  67.       return true;
  68.     }
  69.   }
  70. }
  71. //*
  72. void smartConfig()
  73. {
  74.   WiFi.mode(WIFI_STA);
  75.   Serial.println("\r\nWait for Smartconfig");
  76.   WiFi.beginSmartConfig();
  77.   while (1)
  78.   {
  79.       Serial.print("Wait soft line..\r\n");
  80.     if (WiFi.smartConfigDone())
  81.     {
  82.       Serial.println("SmartConfig Success");
  83.       Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
  84.       Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
  85.       autoConfig();
  86.       //WiFi.setAutoConnect(true); // 设置自动连接
  87.       break;
  88.     }
  89.     digitalWrite(relay1,LOW);
  90.     delay(100);
  91.     digitalWrite(relay1,HIGH);
  92.     delay(100);         
  93.   }
  94.   Serial.println("");
  95.   digitalWrite(relay1,HIGH);
  96.   Serial.println("WiFi connected");
  97.   Serial.println("IP address: ");
  98.   Serial.println(WiFi.localIP());
  99. }
  100. //*/
  101. //*
  102. void line_tcp()
  103. {
  104.   Serial.println(WiFi.localIP());
  105.   const int httpPort =8282;
  106.   client.connect(host, httpPort);
  107.   f=10;
  108.   while(f--)
  109.   {
  110.     digitalWrite(relay1,LOW);
  111.     delay(500);
  112.     digitalWrite(relay1,HIGH);
  113.     delay(500);  
  114.   }
  115.   if (!client.connect(host, httpPort))
  116.   {
  117.     Serial.println("connection failed");
  118.     return;
  119.   }
  120.   Serial.print("connecting to ");
  121.   Serial.println(host);
  122.   delay(1000);
  123.   //client.write("{\"M\":\"checkin\",\"ID\":\"12664\",\"K\":\6743d7a7c\"}\r\n");//登陆设备,修改成自己的ID和key
  124.   delay(1000);
  125.   client.write("{\"M\":\"checkin\",\"ID\":\"12664\",\"K\":\"6743d7a7c\"}\r\n");//注意:一定要加\r\n 换行才能登陆成功
  126.   delay(1000);
  127.   client.write("{\"M\":\"checkin\",\"ID\":\"12664\",\"K\":\"6743d7a7c\"}\r\n");//注意:一定要加\r\n 换行才能登陆成功
  128.   delay(1000);
  129.   client.write("{\"M\":\"checkin\",\"ID\":\"12664\",\"K\":\"6743d7a7c\"}\r\n");//注意:一定要加\r\n 换行才能登陆成功
  130. }
  131. //*/
  132. void setup()
  133. {
  134.   Serial.begin(115200);
  135.   pinMode(relay1, OUTPUT);
  136.   pinMode(led, OUTPUT);
  137.   if (!autoConfig())
  138.   {
  139.     Serial.println("Start AP mode");
  140.     smartConfig();
  141.   }
  142.   line_tcp();
  143. }

  144. void loop()
  145. {
  146.   char valueread;
  147.   while(client.available())
  148.   {
  149.     String line = client.readStringUntil('\r');
  150.     Serial.print(line);
  151.     int i;
  152.     for(i=0;i<=150;i++)
  153.     {
  154.       if((line[i]=='p') &&( line[i+1]=='l'))
  155.       {
  156.         digitalWrite(led,HIGH);
  157.         client.write("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"LED1 is on\",\"SIGN\":\"\"}\r\n");
  158.       }
  159.       
  160.       if((line[i]=='s') && (line[i+1]=='t'))
  161.       {
  162.         digitalWrite(led,LOW);
  163.         client.write("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"LED1 is off\",\"SIGN\":\"\"}\r\n");
  164.       }
  165.       if((line[i]=='n') && (line[i+1]=='o')&&(line[i+2]=='k'))
  166.       {
  167.         digitalWrite(relay1,LOW);
  168.        // client.write("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"LED1 is off\",\"SIGN\":\"\"}\r\n");
  169.       }
  170.       //*
  171.       if(line[i]=='b')
  172.       {
  173.         //digitalWrite(relay1,LOW);
  174.         //client.write("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"LED1 is connected\",\"SIGN\":\"ok\"}\r\n");
  175.         y=0;
  176.         client.write("{\"M\":\"say\",\"ID\":\"****\",\"C\":\"12664\"}\r\n");//修改自己的ID,向设备发送信息,防止掉线  
  177.       }
  178.        //*/
  179.     }
  180.   }
  181. // delay(1000);
  182. // Serial.print(WiFi.status());
  183.   //*
  184.   x++;
  185.   if(x>=10000)
  186.   {
  187.     x=0;
  188.     y++;
  189.     //Serial.println(y);
  190.   }
  191.   if(WiFi.status()!=3||y>=1200)
  192.   {
  193.         if (!autoConfig())
  194.     {
  195.       Serial.println("Start AP mode");
  196.       smartConfig();
  197.     }
  198.     line_tcp();
  199.   }
  200.   //*/
  201. // delay(1000);
  202. }
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:53978 发表于 2020-8-31 08:34 | 显示全部楼层
这个要学习一下,感谢分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表