네트워크화된 온도 센서 구현(Arduino)

3366 단어 단편기
이 예는 Arduino Uno 기반
사용 부품: ESP8266, LM35, LCD1602, IR LED, 적외선 수신기
문제 발생:
    1. ESP8266은 네트워크 연결이 느립니다.
    2.arduino가 115200보트율에서 직렬 통신 부호화 이상이 심각하다(해결됨).
    3.LM35 시뮬레이션 신호는 간섭을 받기 쉽다.
주의해야 할 문제:
    1.LM35에 대한 입력 검사를 실시하면 용착률이 크게 개선된다.
    2.ESP8266 연결 네트워크는 비교적 큰 delay()를 제시하여 충분한 시간 반응을 주어야 한다.
    3.Arduino의 C++ 라이브러리가 완전하지 않으니 스스로 해결하십시오.
    4.본인 코드가 봉인되지 않아서 읽기가 어려울 수 있습니다
#include 

#include "SoftwareSerial.h"
#include "stdlib.h"
#include   

int reading;
String val1;
String cmd;
int ReadTemp;
char OutTemp[10];

int count = 0;
int foundon;
int foundoff;

const String host = "http://wechatmaster.cn";
const String url = "/temp";

SoftwareSerial mySerial(12,13);//Set Soft Serial.  12: RX  13: TX

IRrecv irrecv(8);  
decode_results results;  
IRsend irsend;       
LiquidCrystal lcd(11, 10, 7, 6, 5, 4);

void ReadSerialInfor()
{
  val1 = "";
  while(mySerial.available())
  {
    val1+=char(mySerial.read());
    delay(5);
  }
  Serial.println(val1);
}


int SendTemperature(int temp)
{
  if (temp>=0&&temp<10)
  {  
    mySerial.println("AT+CIPSEND=5");
    delay(100);
    mySerial.print("LM35");
    mySerial.println(itoa(temp,OutTemp,10));
    delay(100);
    Serial.println("sent");
    return 0;
  } 

  else if ((temp>=10&&temp<100)||(temp<0&&temp>-10))
  {  
    mySerial.println("AT+CIPSEND=6");
    delay(100);
    mySerial.print("LM35");
    mySerial.println(itoa(temp,OutTemp,10));
    delay(100);
    Serial.println("sent");
    return 0;
  }

  else if (temp>=100||temp<=-10)
  {  
    mySerial.println("AT+CIPSEND=7");
    delay(100);
    mySerial.print("LM35");
    mySerial.println(itoa(temp,OutTemp,10));
    delay(100);
    Serial.println("sent");
    return 0;
  }

}


void LcdPrint(int Temp)
{
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Temperature:");
  lcd.print(itoa(Temp,OutTemp,10));
  lcd.setCursor(0, 1);
  lcd.print("Condition:");
  if((foundon == 1)&&(foundoff == 0)) lcd.print("ON");
  else if((foundoff == 1)&&(foundon == 0)) lcd.print("OFF");
  else lcd.print("NOCMD");
}


void GetCmd()
{
  cmd = "";
  while(mySerial.available())
  {
    cmd+= char(mySerial.read());
    delay(10);
  }
  Serial.println(cmd);
}

int FindONString(String Str)
{
  int i;
  for(i=0;i

* 서버 측과 사용자 측은 다른 학생이 책임지고 코드를 묻지 마십시오.
* TCP 전송을 http 전송으로 변경할 여력이 있으면 ESP8266은 http 프로토콜을 시뮬레이션할 수 있습니다.
* 개인 정보 보호 문제 때문에 (라우터 비밀번호는 내 이름...)WiFiSetup() 함수가 제공되지 않았습니다.
환영 교류 관련 경험

좋은 웹페이지 즐겨찾기