Arduino рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рд░реВрдо рдореЗрдВ рддрд╛рдкрдорд╛рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛

рдпреЗрдХрд╛рддреЗрд░рд┐рдирдмрд░реНрдЧ рдореЗрдВ рдордИ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдиреЗ рдЧрд░реНрдорд┐рдпреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛, рдФрд░ рд╕реЛрдорд╡рд╛рд░ рдХреЛ рд╣рдореЗрдВ рджреЛ рд╕рд░реНрд╡рд░ рд░реИрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХрдорд░реЗ рдореЗрдВ 39 рдбрд┐рдЧреНрд░реА рдХреА рдЧрд░реНрдореА рдХреЗ рд╕рд╛рде рдмрдзрд╛рдИ рджреА рдЧрдИред рдХрд╛рд░рдг рдЖрдо рд╣реИ - рдПрдпрд░ рдХрдВрдбреАрд╢рдирд░ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдмреБрдврд╝рд╛рдкреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рд░рдХреНрдд рдЦрд░реНрдЪ рд╣реБрдЖ рдФрд░ рд▓рдЧрднрдЧ 250 рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдиреЗ рднреА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХреАред
рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЕрдЧрд░ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВред рдПрдХ рддреИрдпрд╛рд░ рдбрд┐рд╡рд╛рдЗрд╕ рдЦрд░реАрджрдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдзреАрдорд╛ рд╣реЛ рдЧрдпрд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреА рдХреАрдордд рдХреЛ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЬрд╛рджреВ рд╢рдмреНрдж Arduino рдпрд╛рдж рдерд╛, рдЕрдЧрд░ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛ рддреЛ рдореИрдВ рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред

Arduino uno, рдФрд░ рджреЛ рд╢реАрд▓реНрдбреНрд╕ (рдИрдерд░рдиреЗрдЯ рдФрд░ рдХреАрдкреИрдб) рддреАрди-рд▓реЗрдпрд░ рдкрд╛рдИ рдореЗрдВ рдЗрдХрдЯреНрдареЗ рд╣реБрдП:
рдЫрд╡рд┐

ds18b20 рддрд╛рдкрдорд╛рди рд╕реЗрдВрд╕рд░ рдХреЛ рдЯреЙрдкрдкреИрдб рд╕реЗ рдХреАрдкреИрдб рд╢реАрд▓реНрдб рдореЗрдВ рдКрдкрд░ рд╕реЗ рдорд┐рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдКрдкрд░реА рд╢реАрд▓реНрдб рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕реЗ рдЕрдкрдиреЗ рдкреИрд░реЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдмрдврд╝рд╛рдирд╛ рдкрдбрд╝рд╛, рдЬреЛ рдХрд┐ arduino рдХреЗ рд╕рд╛рде рдХрдВрдШреА рдХрдиреЗрдХреНрдЯрд░ рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╣реБрдП рдерд╛ред
рдЫрд╡рд┐

рдФрд░ рдмрд╣реБрдд рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдпрд╣ рд╡реНрдпрд╡рд╕рд╛рдп рдПрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрдЯреЛрд░ рд╕реЗ рд╡рд╛рдпрд░рд┐рдВрдЧ рдмреЙрдХреНрд╕ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддрд╛ рд╣реИред
рдЫрд╡рд┐

GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдФрд░ SQL рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП PHP рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЧрдИ рдереАред

рдПрдХ рдмрд╛рд░ рдПрдХ рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


рдЬреИрд╕рд╛ рдХрд┐ рдХреНрд╖реЗрддреНрд░ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рд╕реЗрдВрд╕рд░ рдХреЛ рдорд╛рдорд▓реЗ рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рддрд╛рдкрдорд╛рди рд▓рдЧрднрдЧ 5 рдбрд┐рдЧреНрд░реА рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рддреНрд░реБрдЯрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИред

рд╕реНрдХреЗрдЪ рджреЗрдЦреЗрдВ
#include <SPI.h>
#include <Ethernet.h>
#include "LiquidCrystal_1602_RUS.h"
#include <EEPROM.h>
#include <avr/interrupt.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <avr/wdt.h>

LiquidCrystal_1602_RUS lcd(8, 9, 4, 5, 6, 7 );//For LCD Keypad Shield
OneWire ds(15); DallasTemperature sensors(&ds); float temp; 
String readString = String(300); 
String message;

int opros=0; int sends=0; int sendperiod=0; int dog=0;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = "test.domain.ru";    
IPAddress ip(10, 0, 0, 177);
EthernetClient client;

void setup() 
{
  lcd.begin(16, 2);

//    Timer2 
  TCCR2A = 0; 
  TCCR2B = 0<<CS22 | 1<<CS21 | 0<<CS20; 
  TIMSK2 = 1<<TOIE2; 
  sei();
  wdt_enable(WDTO_8S);  
}

ISR(TIMER2_OVF_vect) 
{
   opros++;

//          
    if(opros==7500) 
    {
      sensors.requestTemperatures();
      temp = sensors.getTempCByIndex(0);
       lcd.setCursor(0,0); lcd.print(message); 
       lcd.setCursor(0,1); if(60-sendperiod<10){lcd.print(0);} lcd.print(60-sendperiod);
       lcd.setCursor(9,1); lcd.print(temp);  lcd.print(L"┬░C");
      opros=0;

//       10             
     if(sends!=0){dog++;} else {dog=0;}
      if(dog<600){wdt_reset();}  
     
//       
      if (sends==0 && sendperiod==0){sends=1;}  
      sendperiod++; if(sendperiod==60){ sendperiod=0;}  
          
    }
   
}

void loop() 
{

//     
if (sends==1) 
{
  message="Connect         ";
  lcd.setCursor(0,0); lcd.print(L"Connect         ");
  sends=2; 
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) 
  {
    ; // wait for serial port to connect. Needed for native USB port only
  }  
  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // try to congifure using IP address instead of DHCP:
    Ethernet.begin(mac, ip);
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) 
    {
    Serial.println("connected");
    // Make a HTTP request:
    
    client.print("GET /info/temp.php?t=");
    client.print(temp);
    client.println(" HTTP/1.1");
    client.println("Host: test.domain.ru");
    client.println("Connection: close");
    client.println();
    } 
  else 
    {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
    }
  sends=3;
}  
  
//    
if(sends==3)
 { 
  if (client.available()) 
  {
    
    char c = client.read();
    Serial.print(c);
      if (c != '\n'){readString+= c;}
 }

//    
  if (!client.connected()) 
  {
    Serial.println();
    Serial.println("disconnecting.");
    if(readString.indexOf("z666")>0)
     {message="OK ";message+= readString.substring(readString.indexOf("z666")+5,readString.indexOf("z666")+19);}
     else {message="Send error";}
    readString="";
    client.stop();
    sends=0;
  } 
 }
}

Source: https://habr.com/ru/post/hi394909/


All Articles