рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдФрд░ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо (рднрд╛рдЧ 2)ред Arduino рдФрд░ AMS

рдпрд╣ рд╣реЛрдо рдСрдЯреЛрдореЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд░реНрдиреЗрд▓рд╢рд┐рдк рдХреЗ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдкрд░ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рджреВрд╕рд░рд╛ рд▓реЗрдЦ рд╣реИ , рдФрд░ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдЗрди рдореЙрдбреНрдпреВрд▓ рдХреЛ Arduino рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ , рд╣рдордиреЗ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛрдо рдСрдЯреЛрдореЗрд╢рди рд╕рд┐рд╕реНрдЯрдо MajorDoMo рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА, рдФрд░ рддреАрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕реЗ тАЛтАЛрд╕рд╣реА, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд╕реНрдХреЗрдЪ рд╕реЗ рдЗрди рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВред

рдЫрд╡рд┐

Arduino рд╣рдорд╛рд░рд╛ рд╕рдм рдХреБрдЫ рд╣реИ


Arduino рдХреЗ рдмрд┐рдирд╛ рдХрд╣рд╛рдБ? рдореИрдВ рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдлрд╛рдпрджреЛрдВ рдХрд╛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддреА рд╣реИ, рддреЛ рдЖрдЗрдП рддреБрд░рдВрдд Arduino рдФрд░ Laurent рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░реЗрдВред рдФрд░ рд╕рд╛рде рд╣реА, рд╣рдо Arduino рдореЗрдЧрд╛ рд╕рд░реНрд╡рд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдирд╣реАрдВ рднреВрд▓реЗрдВрдЧреЗ , Arduino рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗ рд░реВрдк рдореЗрдВред

рд▓реЛрд╣рд╛


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

рдЫрд╡рд┐
W5100 рдЪрд┐рдк рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЗрдерд░рдиреЗрдЯ рд╢реАрд▓реНрдб

, рдпрд╛рдиреА рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдмрд╕ рд╕реНрдХреЗрдЪ рд▓реЗрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдКрдиреЛ рдпрд╛ рдореЗрдЧрд╛ рдмреЛрд░реНрдб рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╕реНрдХреЗрдЪ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдВ


рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЛ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ, рдореИрдВ рдпрд╣рд╛рдВ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛ред

рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕реВрдЪрдирд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреЛрд░реНрдЯ 2424 рдкрд░ рдПрдХ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдмрд╛рд░ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЯреЗрдХреНрд╕реНрдЯ рдХрдорд╛рдВрдб (рддрдерд╛рдХрдерд┐рдд KE рдХрдорд╛рдВрдб) рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред KernelChip рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкреНрд░рд▓реЗрдЦрди рд╡рд┐рд╕реНрддреГрдд рд╣реИ, KE рдЖрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╕реБрд▓рдн рд╡рд┐рд╡рд░рдг рд╕рд╣рд┐рддред

рдЕрдм рдЖрдЗрдП рдЗрд╕ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ "рд╕рдВрджрд░реНрдн рдХреА рд╢рд░реНрддреЛрдВ" рдХреЛ рдЕрд░реНрдбреБрдЗрдиреЛ рд╕реНрдХреЗрдЪ рдХреА рд╕рд░рд▓ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рд╕реНрдХреЗрдЪ


рдореИрдВ рдпрд╣рд╛рдВ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ Arduino рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ рдФрд░ рд╕рд░рд▓ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдмрд╕ рдФрд░ рдИрдерд░рдиреЗрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ SPI.h рдФрд░ Ethernet.h рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

#include <SPI.h>
#include <Ethernet.h>

рдлрд┐рд░ рдЖрдкрдХреЛ рдИрдерд░рдиреЗрдЯ рдореЙрдбреНрдпреВрд▓ рдФрд░ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВрдЧреЗред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдХ рдкрддреЗ рдФрд░ рдЖрдИрдкреА рдкрддреЗ рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдФрд░ LAURENT_PORT 2424 рдкрд░ рд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рдирд╣реАрдВред

byte SELF_MAC[] = {0x00, 0x2A, 0xF5, 0x12, 0x67, 0xEE};
byte SELF_IP[] = {192, 168, 2, 20};

byte LAURENT_IP[] = {192, 168, 2, 19};
int LAURENT_PORT = 2424;

рд╣рдореЗрдВ рдЕрднреА рднреА рдиреЗрдЯрд╡рд░реНрдХ рдХрдорд╛рдВрдб рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдлрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреБрдЫ рдорд╛рд░реНрдЬрд┐рди рдХреЗ рд╕рд╛рде 200 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЛ рд░реИрдо рдХреА рдХрдореА рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 100 рдмрд╛рдЗрдЯреНрд╕ рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдХрдоред

char buf[200];

рдФрд░ рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдИрдерд░рдиреЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИред рдЕрдм рд╣рдо lclient рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕рднреА рдСрдкрд░реЗрд╢рди рдХрд░реЗрдВрдЧреЗред

EthernetClient lclient;

рдпрд╣реА рд╣реИ, рдЕрдм рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдорд╛рдВрдб рднреЗрдЬрддрд╛ рд╣реИред

void sendLaurentRequest() {
  if (lclient.connect(LAURENT_IP, LAURENT_PORT)) { 
    Serial.print("Command: ");
    Serial.println(buf);
    lclient.println(buf);
    delay(100);
  
    Serial.print("Answer:  ");
    while(lclient.available() != 0) {
      char c = lclient.read();
      Serial.print(c);
    }
    delay(500);
    lclient.stop();
  } else {
      Serial.println("Error sending command");
    }
}

рдпрджрд┐ рдкреЛрд░реНрдЯ 2424 рдкрд░ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдмрдлрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджреГрд╢реНрдп рдирд┐рд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реАрд░рд┐рдпрд▓ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ 100 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдПрдХ рд╡рд┐рд░рд╛рдо рдФрд░ рд╕рдВрдЪрд╛рд░ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдЕрдм рдЖрдЗрдП рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рдИрдерд░рдиреЗрдЯ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдп рд╣реИ

void ethernetInit() {
  Ethernet.begin(SELF_MAC, SELF_IP);
}

рдФрд░ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ laurentInit () рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╣рдо рдЕрдм рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реИ рдХрд┐ рдЖрдк рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

void laurentInit() {
  Serial.println("Start modul Laurent Init...");
  Serial.print("Connect to Laurent... ");
  if (lclient.connect(LAURENT_IP, LAURENT_PORT)) {
    Serial.println("OK");
    lclient.stop();
    
    // Send test command
    Serial.println("Selftest...");
    sprintf(buf, "$KE");
    sendLaurentRequest();

    // Send password (default: "Laurent")
    Serial.println("Set password...");
    sprintf(buf, "$KE,PSW,SET,Laurent");   
    sendLaurentRequest();
  } else {
      Serial.println("failed");
    }
  delay(500);
    
  //   DATA
  sprintf(buf, "$KE,DAT,OFF");
  sendLaurentRequest();
  delay(100);
  
  //  
  sprintf(buf, "$KE,REL,2,0");
  sendLaurentRequest();
  
  Serial.println("Modul Laurent Init done");
}

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдПрдХ рдЖрд░рдВрднрд┐рдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕реНрд╡-рдирд┐рджрд╛рди рдХрдорд╛рдВрдб рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╕реНрде рдореЙрдбреНрдпреВрд▓ рдХреЛ "# рдУрдХреЗ" рдХреЗ рд╕рд╛рде рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдЧрд▓рд╛, рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИ)ред рдФрд░ 500 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред

рдЕрдЧрд▓рд╛, рджреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдорд╛рдВрдб рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ - рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ (рдпрджрд┐ рдпрд╣ рдЬрд╛рддрд╛ рд╣реИ), рдФрд░ рджреВрд╕рд░рд╛ рд░рд┐рд▓реЗ рдирдВрдмрд░ 2 рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЕрдкрдиреЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпреЗ рдХрдорд╛рдВрдб рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдЖрд░рдВрднрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рдкреНрд░рд┐рдВрдЯрдЖрдЙрдЯ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕рднреА рдХрдорд╛рдВрдб рдФрд░ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ:

Start modul Laurent Init...
Connect to Laurent... OK
Selftest...
Command: $KE
Answer:  #OK
Set password...
Command: $KE,PSW,SET,Laurent
Answer:  #PSW,SET,OK
Command: $KE,DAT,OFF
Answer:  #DAT,OK
Command: $KE,REL,2,0
Answer:  #REL,OK
Modul Laurent Init done

рдЕрдм рдорд╛рдирдХ рд╕реЗрдЯрдЕрдк () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЛрдбред рд╕рднреА рдЙрдкрдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЛ рдЖрд░рдореНрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдорд╛рдирдХ 9600 рдмреЙрдб рджрд░ рдкрд░ рдПрдХ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред

void setup() {  
  Serial.begin(9600);  
  ethernetInit();
  laurentInit();
}

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдФрд░ рд╣рдо рдЗрд╕реЗ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ: рдХрдорд╛рдВрдб рднреЗрдЬреЗрдВ, рдЙрддреНрддрд░ рдкрдврд╝реЗрдВ, рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрдВрдЯреНрд░реЛрд▓ рд▓реЙрдЬрд┐рдХ рдмрдирд╛рдПрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - рдирд┐рдпрдорд┐рдд рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдЪрд╛рд▓реВ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рджреВрд╕рд░реЗ рд░рд┐рд▓реЗ рд╕реЗ рдЬреБрдбрд╝реЗ рджреАрдкрдХ рдХрд╛ рдкреНрд░рдХрд╛рд╢ред

void loop() {
  //  
  sprintf(buf, "$KE,REL,2,1");
  sendLaurentRequest();
  delay(3000);
  //  
  sprintf(buf, "$KE,REL,2,0");
  sendLaurentRequest();
  delay(3000);
}

рд▓реВрдк () рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЕрдирдВрдд рд▓реВрдк рд╣реИ рдФрд░ рджреАрдкрдХ, рд╣рдорд╛рд░реА рдЖрдЬреНрдЮрд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░рдХрд╛рд╢ рдХрд░реЗрдЧрд╛ рдФрд░ рд╣рд░ 3 рд╕реЗрдХрдВрдб рдореЗрдВ рдмрд╛рд╣рд░ рдЬрд╛рдПрдЧрд╛ред рдпрд╣, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд╛рдо рдХрд╛ рддрд░реНрдХ рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╣рд╛рдВ, рдЖрдк рд▓реЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рди рдХреЗрд╡рд▓ рдЖрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреЛ рднреА рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЖрджреЗрд╢реЛрдВ рдФрд░ рдЙрдирдХреЗ рд╡рд┐рд╡рд░рдг рдХреА рдкреВрд░реА рд╕реВрдЪреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдк рдЗрд╕ рд╕реНрдХреЗрдЪ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рд╕реНрдХреЗрдЪ рдХреЛ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдврд╝рд╛рдПрдВред рдкреВрд░реНрдгрддрд╛ рдХреА рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ рдкреВрд░рд╛ рд╕реНрдХреЗрдЪ рд╣реИред

рдкреВрд░реНрдг рд╕реНрдХреЗрдЪ рдХреЛрдб
#include <SPI.h>
#include <Ethernet.h>

byte SELF_MAC[] = {0x00, 0x2A, 0xF5, 0x12, 0x67, 0xEE};
byte SELF_IP[] = {192, 168, 2, 20};

byte LAURENT_IP[] = {192, 168, 2, 19};
int LAURENT_PORT = 2424;

char buf[200];

EthernetClient lclient;

void ethernetInit() {
Ethernet.begin(SELF_MAC, SELF_IP);
}

void laurentInit() {
Serial.println(┬лStart modul Laurent Init...┬╗);
Serial.print(┬лConnect to LaurentтАж тАЮ);
if (lclient.connect(LAURENT_IP, LAURENT_PORT)) {
Serial.println(тАЬOK┬╗);
lclient.stop();

// Send test command
Serial.println(┬лSelftest...┬╗);
sprintf(buf, "$KE");
sendLaurentRequest();

// Send password (default: ┬лLaurent┬╗)
Serial.println(┬лSet password...┬╗);
sprintf(buf, "$KE,PSW,SET,Laurent");
sendLaurentRequest();
} else {
Serial.println(┬лfailed┬╗);
}
delay(500);

// DATA
sprintf(buf, "$KE,DAT,OFF");
sendLaurentRequest();
delay(100);

//
sprintf(buf, "$KE,REL,2,0");
sendLaurentRequest();

Serial.println(┬лModul Laurent Init done┬╗);
} // laurentInit

void sendLaurentRequest() {
if (lclient.connect(LAURENT_IP, LAURENT_PORT)) {
Serial.print(┬лCommand: тАЮ);
Serial.println(buf);
lclient.println(buf);
delay(100);

Serial.print(тАЬAnswer: тАЮ);
while(lclient.available() != 0) {
char c = lclient.read();
Serial.print┬й;
}
delay(500);
lclient.stop();
} else {
Serial.println(тАЬError sending command┬╗);
}
} // sendLaurentRequest

void setup() {
Serial.begin(9600);
ethernetInit();
laurentInit();
}

void loop() {
//
sprintf(buf, "$KE,REL,2,1");
sendLaurentRequest();
delay(3000);

//
sprintf(buf, "$KE,REL,2,0");
sendLaurentRequest();
delay(3000);
}


Arduino рдореЗрдЧрд╛ рд╕рд░реНрд╡рд░


рдЫрд╡рд┐

Arduino Mega Server (AMS) Arduino Mega (рдЕрдм Arduino DUE рдХреЗ рд▓рд┐рдП рдФрд░ рдЬрд▓реНрдж рд╣реА, рдЕрдиреНрдп 32-рдмрд┐рдЯ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ M0 (Zero) рдФрд░ Genuino 101) рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреНрд░рдгрд╛рд▓реА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ "рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП" рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдЕрдзрд┐рдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рд░реНрд╡рд░ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред AMS рдмреЙрдХреНрд╕ рдХреЗ рдареАрдХ рдмрд╛рд╣рд░ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд░реНрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

AMS рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓рд░ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдСрди-рдСрдл рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╕ рдПрдХ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЬрд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

#define LAURENT_FEATURE

рдпрд╛

//#define LAURENT_FEATURE

рдпрджрд┐ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд╛рдо рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╕рд╛рдЗрдЯ рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрдХреЗрддрдХ рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдиреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, LRT рдирд┐рдпрдВрддреНрд░рдг рдореЙрдбреНрдпреВрд▓ LRT рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЫрд╡рд┐
рдореЙрдбреНрдпреВрд▓ рдСрдкрд░реЗрд╢рди рд╕рдВрдХреЗрддрдХ

рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛


рдЕрдм рдЪрд▓реЛ рди рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рднреА рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдирдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдпрд╛ Arduino рдореЗрдЧрд╛ рд╡реЗрдм рд╡реЗрдм рдкреГрд╖реНрдареЛрдВ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪрд░ рдФрд░ рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЙрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрддреНрддрд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ 25 рд╡рд░реНрдгреЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЙрддреНрддрд░ рдЗрд╕ рдореВрд▓реНрдп рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдмрд╕ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рд░реИрдо рдПрдХ рдореВрд▓реНрдпрд╡рд╛рди рд╕рдВрд╕рд╛рдзрди рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ AMS рдкреИрдХреЗрдЬ рд╕реЗ рдорд╛рдирдХ laurent.ino рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

byte MAX_LEN_LREQUEST = 25;
String lrequest = String(MAX_LEN_LREQUEST);

рд╣рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЛрдб рдХреЛ рднреА рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ (рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рддреАрд░ рджреНрд╡рд╛рд░рд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред

void sendLaurentRequest() {
  if (lclient.connect(LAURENT_IP, LAURENT_PORT)) { 
    Serialprint("Command: ");
    Serial.println(buf);
    lclient.println(buf);
    delay(100);
  
    Serialprint("Answer:  ");
    // -------------------->
    lrequest = "";
    // -------------------->
    while(lclient.available() != 0) {
      char c = lclient.read();
      Serial.print(c);
      // -------------------->
      if (lrequest.length() < MAX_LEN_LREQUEST) {
        lrequest += (c);
      }
      // -------------------->
    }
    delay(500);
    lclient.stop();
  } else {
      Serialprint("Error sending command\n");
    }
}

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

рдПрдХ рдЫреЛрдЯрд╛ рдиреЛрдЯред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдорд╛рдирдХ Serial.print рдХреЗ рдмрдЬрд╛рдп Serialprint рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ RAM рдмрдЪрд╛рддрд╛ рд╣реИред рдФрд░ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдорд╛рдирдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╕ рджреЛ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЕрдВрдд рдХрд░рдХреЗред

рд╕рд╛рдЗрдЯ рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдЙрдЯрдкреБрдЯ


рдФрд░ рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдгред рдЪрд▓реЛ Arduino рдореЗрдЧрд╛ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдЯ рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрддреНрддрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ AMS рд╕реНрдХреЗрдЪ рдХреЗ рдореБрдЦреНрдп рд▓реВрдк () рд▓реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред Arduino_mega_server.ino рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ cyclosInSecWork () рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рдореНрди рдХреЛрдб рджрд░реНрдЬ рдХрд░реЗрдВ:

    #ifdef LAURENT_FEATURE
      if (cycle30s) {
        sprintf(buf, "$KE");   
        sendLaurentRequest();
      }
    #endif

рдпрд╣ рдХреЛрдб рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреЛ рд╣рд░ рддреАрд╕ рд╕реЗрдХрдВрдб рдореЗрдВ рдХреНрд╡реЗрд░реА рдХрд░реЗрдЧрд╛ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЗрд╕ рдЬрдЧрд╣ рдкрд░ рдХреЛрдИ рднреА рдЕрдиреБрд░реЛрдз рдФрд░ рдХреЛрдИ рднреА рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд░рд┐рд╡рд░реНрддрдиреАрдп lrequest рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЙрддреНрддрд░ рд╣реИ рдФрд░ рдЕрдм рдЗрд╕реЗ рд╕рд╛рдЗрдЯ рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, server_ajax.ino рдореЙрдбреНрдпреВрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ, responseDash рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб (EthernetClient cl) рдореЗрдВ, рд▓рд╛рдЗрди cl.println ("") рд╕реЗ рдкрд╣рд▓реЗ; рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

    #ifdef LAURENT_FEATURE
      sendTagString("laurent", "", lrequest, cl);
    #endif

рдпрд╣ рдХреЛрдб, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╡реЗрдм рдкреЗрдЬ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИред рдпрд╣ рджреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдкрд╣рд▓рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЛ "рдХреИрдЪ" рдХрд░реЗрдЧрд╛ рдФрд░ рджреВрд╕рд░рд╛ рд╕реНрд╡рдпрдВ AMS рдкреЗрдЬ рдкрд░ HTML рдХреЛрдб рд╣реИ, рдЬрд╣рд╛рдВ рдореЙрдбреНрдпреВрд▓ рдЙрддреНрддрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рддреЛ, рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдЦреЛрд▓реЗрдВред Js рдлрд╝рд╛рдЗрд▓ рдФрд░ getDashData () рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдмреНрд░реИрдХреЗрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди} // if (this.responseXML! = Null) рдЙрд╕ рдХреЛрдб рдХреЛ рджрд░реНрдЬ рдХрд░реЗрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд░рд┐рд╕рд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред

          // Laurent
          try {
            var laurent = this.responseXML.getElementsByTagName('laurent')[0].childNodes[0].nodeValue;
          } catch (err) {
              laurent = "-";
            }
          document.getElementById("laurent").innerHTML = laurent; 

рдпрд╣ рдорд╛рдирдХ AMS рдбрд┐рд▓реАрд╡рд░реА рд╕реЗ рдбреИрд╢.htm рдлрд╝рд╛рдЗрд▓ рдХреЛ рдереЛрдбрд╝рд╛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реА рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдб рдЬреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рд╡рд░реНрдЧ = "рдСрдирд▓рд╛рдЗрди-рдбрд┐рд╡рд╛рдЗрд╕" рд╡рд╛рд▓реА рд▓рд╛рдЗрди рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╣рдо рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдирдИ рд▓рд╛рдЗрди рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ:

<p>Laurent: <span class="value" id="laurent">...</span></p>

рдмрд╕ рдЗрддрдирд╛ рд╣реАред рд╣рдордиреЗ Arduino Mega Server рд╕рд╛рдЗрдЯ рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдПрдПрдордПрд╕ рдкреИрдирд▓ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣рд░ 30 рд╕реЗрдХрдВрдб рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреБрдЫ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдзрд┐рдХрддрдо 30 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗред

рдЫрд╡рд┐

рдирд┐рд╖реНрдХрд░реНрд╖


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, Arduino рдФрд░ Arduino Mega Server рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрд░реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реЗ рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ, рддреЛ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рд╕рд░рд▓рддрд╛ рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдФрд░ рдЪрдХреНрд░ рд╕реЗ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рд╕реНрдХреНрд░реАрди рд╕реЗ рд╕реАрдзреЗ рд▓реЛрд░реЗрдВрд╕ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдФрд░ рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред

рдЬреЛрдбрд╝ ред рдПрдХ Youtube рдЪреИрдирд▓ рдЦреБрд▓рд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдБ Arduino Mega Server рдХрд╛ рдкреНрд░реЛрдореЛ рд╡реАрдбрд┐рдпреЛ рд╣реИ , рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред

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


All Articles