arduino与esp8266结合制作氛围灯(二)

做着做着,突然找不到rgb灯了,没有办法,只能换个了。

那就搞一个超声波测距连接网络,上传数据库吧。

如果你手里的装备是一个arduino uno r3和一个esp8266

那么就开始吧

首先,了解esp8266

可以登录官网,查看技术文档,这是最直接的办法,点击下方网址,直接查看技术档案

https://www.espressif.com/zh-hans/products/hardware/esp8266ex/resources

在这里我列出几个常用AT命令

1、AT+RST 功能:重启模块

2、AT+CWMODE=<mode>

     功能:mode=1 :Station模式(接收模式)

                 mode=2:AP模式(发送模式)

                mode=3:AP+Station模式

3、AT+ CWSAP= <ssid>,<pwd>,<chl>, <ecn>

     功能:配置AP参数(指令只有在AP模式开启后有效)

                ssid:接入点名称

               pwd:密码

              chl:通道号

              ecn:加密方式:(0-OPEN, 1-WEP, 2-WPA_PSK, 3-WPA2_PSK, 4-WPA_WPA2_PSK)

    这个ecn基本上都是wpa2-psk加密,手机热点啥的基本上这个可以省略……

4、AT+CWLIF     功能:查看已接入设备的 IP

5、AT+CIPSTART=2,"TCP","192.168.4.101",8080
        功能:建立 TCP 连接

(这个功能很重要,后面会用到)

就写这几个吧,用到啥,就去官网看技术文档。

然后,你需要个串口ch340来进行串口通讯,如果你没有。那也不要慌,arduino可以设置两个软串口,rx和tx来充当串口通讯工具。同时你还需要一个串口监视器,如果你还没有,你可以用arduino的串口监视器。。。。。

上软串口的代码(arduino uno r3)

这个地方是把rx和tx分别设置成A2和A3,不能是0和1端口,不然烧录的时候还要把这两个拔下来。

#include <SoftwareSerial.h>

SoftwareSerial mySerial(A2, A3); // RX, TX

void setup() {
  Serial.begin(9600); 
  Serial.println("Hello,serial!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  mySerial.println("AT");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

烧录一下就可以跑了

然后记得把频率设置成9600,换行改成rn

这一步的目的是把esp8266连接到自己的手机热点上,

连接完这一步之后,就开始测试通讯了

上代码

#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(13, 12); // RX, TX  通过软串口连接esp8266
 
void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
 
  mySerial.begin(115200);
  mySerial.println("AT+RST");   // 初始化重启一次esp8266
  delay(1500);
  echo();
  mySerial.println("AT");
  echo();
  delay(500);
  mySerial.println("AT+CWMODE=3");  // 设置Wi-Fi模式
  echo();
  mySerial.println("AT+CWJAP=\"WiFiSSID\",\"password\"");  // 连接Wi-Fi
  echo();
  delay(10000);
}
 
void loop() {
 
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
  post();
}
 
void echo(){
  delay(50);
  while (mySerial.available()) {
    Serial.write(mySerial.read());
  }
}
 
void post(){
  String temp = "POST data";
  mySerial.println("AT+CIPMODE=1");
  echo();
  mySerial.println("AT+CIPSTART=\"TCP\",\"ip地址\",80");  // 连接服务器的80端口
  delay(1000);
  echo();
  mySerial.println("AT+CIPSEND"); // 进入TCP透传模式,接下来发送的所有消息都会发送给服务器
  echo();
  mySerial.print("POST /IP地址"); // 开始发送post请求
  mySerial.print(" HTTP/1.1\r\nIP地址\r\nUser-Agent: arduino-ethernet\r\nConnection:close\r\nContent-Length:"); // post请求的报文格式
  mySerial.print(temp.length()); // 需要计算post请求的数据长度
  mySerial.print("\r\n\r\n"); 
  mySerial.println(temp); // 结束post请求
  delay(3000);
  echo();
  mySerial.print("+++"); // 退出tcp透传模式,用println会出错
  delay(2000);
}

这个代码慢慢看,不着急

这时候需要一个工具

网络调试助手

网上下载一个就行

就这个东西,然后你的电脑,esp8266连接到同一热点,这一点很重要,然后你把代码的目的地址,改成你电脑的ip地址,然后这个助手的模式这里,选择TCP server,本机IP地址直接cmd里面ipconfig命令查,然后端口选择和程序里要一样。然后打开就行了,你就会看到数据传送过来了。

做到这里,基本上就都完成了。

这是局域网里传输,如果局域网成功了,连接到自己的服务器也就是水到渠成了。很简单。下一节说……

发布了12 篇原创文章 · 获赞 19 · 访问量 5500

猜你喜欢

转载自blog.csdn.net/Hao_ge_666/article/details/103705795