Arduino-ESP8266 HC-SR04 用云平台读取雷达测距数据

#include "ESP8266.h"
#include <SPI.h>
#include "SoftwareSerial.h"

#define SSID "" //WiFi名字   
#define PASSWORD "  "//password of WiFi
#define HOST_NAME "api.heclouds.com"  
#define DEVICE_ID "654340613"       
#define HOST_PORT (80)                
String APIKey = "   "; 

#define INTERVAL_SENSOR 5000

float cm;
const int TrigPin=5;
const int EchoPin=9;
const int BeePin=6;

SoftwareSerial mySerial(3, 2);// 3-Tx 2-Rx
ESP8266 wifi(mySerial);

void setup()
{
  mySerial.begin(115200); 
  Serial.begin(9600);   

  pinMode(TrigPin,OUTPUT);
  pinMode(EchoPin,INPUT);
  pinMode(BeePin,OUTPUT);
  
  Serial.print("setup begin\r\n");

  Serial.print("FW Version: ");
  Serial.println(wifi.getVersion().c_str());

  if (wifi.setOprToStation()) {
    Serial.print("to station ok\r\n");
  } else {
    Serial.print("to station err\r\n");
  }

  if (wifi.joinAP(SSID, PASSWORD)) {
    Serial.print("Join AP success\r\n");
    Serial.print("IP: ");
    Serial.println(wifi.getLocalIP().c_str());
  } else {
    Serial.print("Join AP failure\r\n");
  }

  mySerial.println("AT+UART_CUR=9600,8,1,0,0");
  mySerial.begin(9600);
  Serial.println("setup end\r\n");

  SPI.begin();

}

unsigned long net_time1 = millis(); 

void loop(){



  if (net_time1 > millis())
    net_time1 = millis();

  if (millis() - net_time1 > INTERVAL_SENSOR) 
  {
    // put your main code here, to run repeatedly:
    //产生10微秒的高电平波触发TrigPin
    digitalWrite(TrigPin,LOW);
    delayMicroseconds(2);
    digitalWrite(TrigPin,HIGH);
    delayMicroseconds(10);
    digitalWrite(TrigPin,LOW);
  
    //检测脉冲宽度并算出距离
    cm=pulseIn(EchoPin,HIGH)/58.3;
  
    Serial.print("Distance:");
    Serial.println(cm);
  
    if(cm<20)
    {
      tone(6,392);
      delay(80);
    }else if(cm<50)
    {
      tone(6,440);
      delay(40);
    }else if(cm<100)
    {
      tone(6,494);
      delay(20);
    }else
    {
      noTone(6);
    }
  
    if (wifi.createTCP(HOST_NAME, HOST_PORT)) { 
      Serial.print("create tcp ok\r\n");

      String jsonToSend = "{\"distance\":";
      jsonToSend += "\"" + String(cm) + "\"";
      jsonToSend += "}";


      String postString = "POST /devices/";
      postString += DEVICE_ID;
      postString += "/datapoints?type=3 HTTP/1.1";
      postString += "\r\n";
      postString += "api-key:";
      postString += APIKey;
      postString += "\r\n";
      postString += "Host:api.heclouds.com\r\n";
      postString += "Connection:close\r\n";
      postString += "Content-Length:";
      postString += jsonToSend.length();
      postString += "\r\n";
      postString += "\r\n";
      postString += jsonToSend;
      postString += "\r\n";
      postString += "\r\n";
      postString += "\r\n";

      const char *postArray = postString.c_str(); 

      Serial.println(postArray);
      wifi.send((const uint8_t *)postArray, strlen(postArray)); 
      Serial.println("send success");
      if (wifi.releaseTCP()) { 
        Serial.print("release tcp ok\r\n");
      } else {
        Serial.print("release tcp err\r\n");
      }
      postArray = NULL; 
    } else {
      Serial.print("create tcp err\r\n");
    }

    Serial.println("");

    net_time1 = millis();
    
  }

}

实现效果:
在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值