zoukankan      html  css  js  c++  java
  • Arduino使用ESP8266模块联网

    上一篇文章已经介绍了 利用 ArduinoIDE开发ESP8266模块,这篇文章介绍一下arduino怎么通过ESP8266模块联网

    ESP8266模块准备

    1. 透传程序烧写

    以下程序的主要功能是:
    1. 通电自动连接指定wifi
    2. 通过tcp协议连接指定服务器的指定端口
    3. tcp连接断线重连
    4. 10s自动发送心跳包
    
    #include <ESP8266WiFi.h>
    
    const char *ssid = "你的wifi";
    const char *password = "wifi密码";
    
    WiFiClient client; 
    const char *host = "服务器";
    const int port = 0;
    
    void setupWifi() {
      delay(10);
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);
    
      WiFi.begin(ssid, password);
    
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
    
      Serial.println("");
      Serial.println("WiFi connected");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
    } 
    
    void setup ( void ) { 
      Serial.begin(9600);
      setupWifi();
    } 
    int loopCount=0; 
    void loop ( void ) {
      //断线重连
      while (!client.connected()){
        Serial.println("not connected");
        if (!client.connect(host, port)){
          Serial.println("connect server ....");
          delay(500);
        }
      } 
      //透传
      while (client.available()){
        Serial.write(client.read());
      } 
      while (Serial.available() > 0) {
        client.write(Serial.read());
      }  
      //10s发送一次心跳包
      delay(500);
      loopCount++;
      if(loopCount == 20){
        client.println("ping");
        loopCount=0;
      }
    }
    

    2. Arduino与ESP8266接线

    arduino采用软串口方式与ESP8266模块通信,
        1. ESP 3.3v接arduino的3.3v电源
        2. ESP EN(CH_PD)接 arduino的3.3v电源
        3. ESP 的 TXD 接 arduino的10号引脚
        4. ESP 的 RXD 接 arduino的11号引脚
        5. ESP 的GND 接 arduino的GND
    

    Arduino模块程序

    
    #include <SoftwareSerial.h>
    
    SoftwareSerial mySerial(10, 11); // RX, TX
    
    void setup() { 
      Serial.begin(9600);    
      mySerial.begin(9600); 
    }
    
    void loop() { 
      while(mySerial.available()){
        Serial.write(mySerial.read());
      }
      while(Serial.available()) {
        mySerial.write(Serial.read());
      } 
    }  

    测试

    1. 下载个网络调试助手(USR-TCP232-Test-V1.3)
    2. 打开 tcp server设置号端口开始监听
      这里写图片描述
    3. 现在 打开 arduino所在的串口,向串口发送数据 会被TCPServer收到,TCPServer发数据arduino的串口也会收到

    这里写图片描述

    总结

    至此你的arduino已经可以进行网络通信了,接下来就可以利用这些加上一个云服务器就可以做些有趣的东西了。
    eg. 1. arduino接个继电器可以实现远程控制的灯,风扇,电饭锅。。。。
        2. arduino接个l298n直流电机驱动,就可以控制电机正反转,电动窗帘,遥控车。。。
    

    做这些东西的过程中 又 发现了一款 ESP-12E的模块,已经集成了wifi模块并且有10个io引脚可以控制,同样可以用ArduinoIDE开发,价格只要15块左右,打算买个玩玩。

    还有一个MQTT协议算是一个比较成熟的做物联网的比较好的协议

  • 相关阅读:
    【Network】OVS、VXLAN/GRE、OVN等 实现 Docker/Kubernetes 网络的多租户隔离
    【openStack】Libcloud 如何支持 keystone V3?
    【Network】修改docker启动默认网桥docker0为自定义网桥
    【Network】TCPDUMP 详解
    【Network】OVS基础知识
    【Docker】Docker主机为什么ip nets 查不到网络空间
    sql-in/not in和exists/not exists的区别
    sql-exists和not exists
    oracle-分页查询方案
    mysql-函数FOUND_ROWS()
  • 原文地址:https://www.cnblogs.com/A-yes/p/9894147.html
Copyright © 2011-2022 走看看