Arduino рдиреИрдиреЛ рдЖрдзрд╛рд░рд┐рдд рд╡реЙрдЪрдбреЙрдЧ

рд╡реЙрдЪрдбреЙрдЧ рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИ рдЬрд┐рд╕реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЙрдирдХрд╛ рдирд┐рд╡рд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЖрд╡рдзрд┐рдХ рдкреБрдирд░рд╛рд░рдВрдн рдЬреЛ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд░рд┐рдмреВрдЯ рдкрд░ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред



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

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

  1. рдЯрд╛рдЗрдорд░, рдПрдХ рдирд┐рдпрдорд┐рдд рдУрдПрд╕ рдЙрдкрдХрд░рдг (рдУрдкрдирдЖрд░рд╕реА) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдорди рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдФрд░ рд░реЛрдХрдирд╛ред
  2. рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░рд╣рд░реА, рдПрдЯреЗрдореЗрдЧрд╛ рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  3. рд░реАрдмреВрдЯ рдФрд░ рдЯрд╛рдЗрдорд░ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдИрд╡реЗрдВрдЯ рд▓реЙрдЧред
  4. рд▓реЙрдЧ рдореЗрдВ рд╕рд╣реА рд╕рдордп рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рдордп рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВред
  5. рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЗрд╕рдХреА рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ред
  6. рд▓реЙрдЧ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЗрд╕рдХреА рдореВрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, "рдорд╛рдЗрдХреНрд░реЛрд╕реНрдХреЛрдк" рдкрд╛рдпрд╛ рдЧрдпрд╛, "рдирд╛рдЦреВрди" рдЪрд┐рд╣реНрдирд┐рдд рд╣реИ ... рдЖрдк рд╣рдереМрдбрд╝рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рд░реНрдбрд╡реЗрдпрд░


рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЖрдзрд╛рд░ рдЪреАрдиреА рдХреНрд▓реЛрди Arduino рдиреИрдиреЛ рдерд╛, рдЬрд┐рд╕реЗ CH340 рдЪрд┐рдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рддрд╛рдЬрд╛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ (3.16 рдХреЗ рдмрд╛рдж рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛) рдореЗрдВ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдбреНрд░рд╛рдЗрд╡рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдпреВрдПрд╕рдмреА рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Arduino рдиреЗ рд░рд┐рдмреВрдЯ рдХреЛ рдЕрдирд╡рд╛рдВрдЯ рдХрд┐рдпрд╛


рд╣рд░ рдмрд╛рд░ рдЬрдм рдЯрд░реНрдорд┐рдирд▓ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ Arduino рд░рд┐рдмреВрдЯ рд╣реЛрддрд╛ рд╣реИред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЯрд░реНрдорд┐рдирд▓ рдПрдХ DTR (рдбреЗрдЯрд╛ рдЯрд░реНрдорд┐рдирд▓ рд░реЗрдбреА) рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬрддрд╛ рд╣реИ, рдЬреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, Arduino IDE рд╕реНрдХреЗрдЪ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдПрдХ рдореЛрдб рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ - рдЖрд░рдПрд╕рдЯреА рдФрд░ рдЬреАрдПрдирдбреА рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЗ рдмреАрдЪ 10┬╡F рдЗрд▓реЗрдХреНрдЯреНрд░реЛрд▓рд╛рдЗрдЯ (рдиреАрдЪреЗ рдЖрд░реЗрдЦ рдореЗрдВ C1) рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд╕реНрдХреЗрдЪ рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рднреА рд░реЛрдХрддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк - рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:


KiCad рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреИрдпрд╛рд░ рдХреА рдЧрдИ

рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
  • R1 тАФ , PC817: (5V тАФ 1.2V / 0.02A) = 190╬й, 180╬й.
  • U2 тАФ Arduino PC. , ( USB ), .
  • JP1 тАФ , . .
  • 1 тАФ , DTR.
  • MB_RST, MB_GND тАФ RESET , RST (GND). , .
  • BTN_RST, BTN_GND тАФ , , , , .


рдбрдмреНрд▓реНрдпреВрдбреАрдЯреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдмреВрдЯ-рд▓реВрдк (рдЪрдХреНрд░реАрдп рд░рд┐рдмреВрдЯ)


ATmega рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд WDT (рд╡реЙрдЪрдбреЙрдЧ рдЯрд╛рдЗрдорд░) рд░реАрд╕реЗрдЯ рддрдВрддреНрд░ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рднреА рдкреНрд░рдпрд╛рд╕реЛрдВ рдиреЗ рдмреВрдЯ-рд▓реВрдк рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдмрд┐рдЬрд▓реА рдмрдВрдж рдХрд░рдХреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред

рд▓рдВрдмреА рдЦреЛрдЬреЛрдВ рд╕реЗ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ Arduino рдХреНрд▓реЛрди рдХреЗ рдмреВрдЯрд▓реЛрдбрд░ WDT рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдСрдкреНрдЯрд┐рдмреВрдЯ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмреВрдЯрд▓реЛрдбрд░ рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред

рдмреВрдЯрд▓реЛрдбрд░ рдХреЛ рдлреНрд▓реИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ SPI рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХреЗ, рдпрд╣ рднреА рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдХрд┐ Arduino IDE рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ "рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ" рдЬрд╛рдирддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдФрд░ Arduino рдЖрджрд░реНрд╢ рд╣реИред

рдпрджрд┐ рд╣рдо Arduino UNO рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ Arduino IDE v1.6.5 рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рддреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:

  1. boards-1.6.txt optiboot hardware/arduino/avr/boards.txt Arduino IDE.
  2. Arduino Uno, File тЖТ Examples тЖТ ArduinoISP.
  3. Arduino Nano :
    Arduino Uno ()Arduino Nano (ICSP )
    5V тЖТ Vcc
    GND тЖТ GND
    D11 тЖТ MOSI
    D12 тЖТ MISO
    D13 тЖТ SCK
    D10 тЖТ Reset

    Pin1 (MISO) тЖР D12Pin2 (Vcc) тЖР 5V
    Pin3 (SCK) тЖР D13Pin4 (MOSI) тЖР D11
    Pin5 (Reset) тЖР D10Pin6 (GND) тЖР GND



  4. Arduino IDE рдореЗрдВ, рдЯреВрд▓ рдореЗрдиреВ рдореЗрдВ, рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреА рддрд░рд╣ рд╕реЗрдЯрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░реЗрдВ:
  5. рдореЗрдиреВ рдЖрдЗрдЯрдо рдЯреВрд▓реНрд╕ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ тЖТ рдмреВрдЯрд▓реЛрдбрд░ рдХреЛ рдЬрд▓рд╛рдПрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд┐рдирд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИред


рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдХ рд╣реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЪреБрдирдХрд░ Arduino Nano рдореЗрдВ рд╕реНрдХреЗрдЪ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдмреЛрд░реНрдб : 32 рдкрд┐рди cpus рдкрд░ рдСрдкреНрдЯрд┐рдмреВрдЯ, рдкреНрд░реЛрд╕реЗрд╕рд░ : ATmega328p, CPU рд╕реНрдкреАрдб : 16MHzред

рдЯрд╛рдВрдХрдиреЗ рдХреА рдХреНрд░рд┐рдпрд╛


рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рд╣рд░ рдЪреАрдЬ рдХреЛ рдорд┐рд▓рд╛рдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЬреИрд╕рд╛ рджрд┐рдЦреЗред



рдпрд╣рд╛рдВ рдореБрдЭреЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдПрдХ рдпреВрдПрд╕рдмреА рдкреНрд▓рдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ USB2.0 рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдорд┐рдиреА-рдЖрдИрдЯреАрдПрдХреНрд╕ рдорджрд░рдмреЛрд░реНрдб рд╣реИ, рдЬреЛ рдлреНрд░рдВрдЯ рдкреИрдирд▓ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдФрд░ рдпреВрдПрд╕рдмреА 3.0 рдкреИрдб рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдерд╛ред рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдРрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕реАрдзреЗ рдорджрд░рдмреЛрд░реНрдб рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рддрд╛рд░реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдЫрдбрд╝реА рди рдХрд░реЗрдВред

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

рдХреИрд╕реЗ рдПрдХ рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдкрд░ рдорд┐рд▓рд╛рдк рдкрдЯрд░рд┐рдпреЛрдВ
( , ). .

:



рдкрд░рд┐рдгрд╛рдо:





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



 

рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ


рдирд┐рд╖реНрдкрдХреНрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдХреЛрдб рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рдХрд╛ рдирд╣реАрдВ рд╣реИред рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдЪрд░рдо рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИрдВ, рдФрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдПрдХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ: рдПрдХ рдХрдорд╛рдВрдб рднреЗрдЬреЗрдВ - рдПрдХ рдЬрд╡рд╛рдм рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдпрд╣рд╛рдВ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред

рд╕рднреА рдХреЛрдб GitHub рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдмреИрд╢ рдФрд░ C / C ++ (Arduino рд╕реНрдХреЗрдЪ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ) рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкрдврд╝рдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рддреИрдпрд╛рд░ рдкрд░рд┐рдгрд╛рдо рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рд╡реЙрдЪрдбреЙрдЧ рдХрдиреЗрдХреНрд╢рди


рдЬрдм рдЖрдк рд╡реЙрдЪрдбреЙрдЧ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрдиреНрдп ttyUSB рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИрдВ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдореЙрдбреЗрдо), рддреЛ рдирдВрдмрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИред рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд┐рдорд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, udv рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╕рдВрднрд╡рддрдГ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдХрдиреЗрдХреНрдЯреЗрдб рд╡реЙрдЪрдбреЙрдЧ рдХреЛ рдиреЗрддреНрд░рд╣реАрди рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрдХрд░ред рдлрд┐рд░, рд╡рд╛рдВрдЫрд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде / dev / ttyUSB0 рдХреА рдЬрдЧрд╣, рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд▓рд┐рдЦреЗрдВ:

udevadm info -a -p "$(udevadm info -q path -n /dev/ttyUSB0)"

рдЖрдЙрдЯрдкреБрдЯ рдЙрджрд╛рд╣рд░рдг
  looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4:1.0/ttyUSB0/tty/ttyUSB0':
    KERNEL=="ttyUSB0"
    SUBSYSTEM=="tty"
    ...
    
  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4:1.0/ttyUSB0':
    KERNELS=="ttyUSB0"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="ch341-uart"
    ...
    
  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4:1.0':
    ...
    
  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4':
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{idVendor}=="1a86"
    ATTRS{idProduct}=="7523"
    ATTRS{product}=="USB2.0-Serial"
    ...


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рдпрдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
ACTION=="add", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyrst-watchdog"


рдЖрдкрдХреЛ рдЗрд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ /etc/udev/rules.d рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 51-ttyrst-watchdog.rules рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП udev рдХреЛ рдмрддрд╛рдПрдВ:
udevadm control --reload-rules


рдЗрд╕ рдХреНрд╖рдг рд╕реЗ, рд╡реЙрдЪрдбреЙрдЧ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп, рд╡рд╛рдВрдЫрд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдХ рд▓рд┐рдВрдХ / dev / ttyrst- рд╡реЙрдЪрдбреЙрдЧ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (ttyrst-watchdog.sh)


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

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

рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рд▓реВрдк рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ:
while fuser ${DEVICE} >/dev/null 2>&1; do true; done
рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╕рдордп рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХрдмреНрдЬрд╛:
cat <${DEVICE}


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдРрд╕реА рдпреЛрдЬрдирд╛ рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдзреАрди рд╣реИред рдЖрдк рдЗрд╕рд╕реЗ рд╡рдпрд╕реНрдХ рддрд░реАрдХреЗ рд╕реЗ рдирд┐рдкрдЯ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП), рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдордп рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред

OpenRC рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рди (рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ) рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ /usr/local/bin/ttyrst-watchdog.sh , рдФрд░ OpenRC рд▓рд┐рдкрд┐ рдореЗрдВ рд╣реИ /etc/init.d/ttyrst-watchdog ред

рдЬрдм рдбреЗрдореЙрди рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реЙрдЪрдбреЙрдЧ рдХрд╛ рд╕рд╣реА рдирд┐рд╖реНрдХреНрд░рд┐рдпрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рдЧреНрдирд▓ рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ рдЬрд┐рд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
trap deactivate SIGINT SIGTERM
рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ - OpenRC рдбреЗрдореЙрди рдХреЛ рд░реЛрдХ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдмрд▓реНрдХрд┐, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдирд╣реАрдВред

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

рд╕рдорд╛рдзрд╛рди рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдиреАрдВрдж рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рд╣реИ:
sleep ${SLEEP_TIME} & wait $!  #  $!  ID   


рдореВрд▓ рд╕реНрдерд┐рд░рд╛рдВрдХ:

WATCHDOG_ACTIVE - YES рдпрд╛ NO рдХреНрд░рдорд╢рдГ рдЯрд╛рдЗрдорд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рдпрд╛ рди рд╣реЛрдиреЗ рдкрд░ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрдд рднреЗрдЬреЗрдВред
WATCHDOG_TIMER - рд╕рдордп рд╕реЗрдХрдВрдб рдореЗрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рд╣реИред
SLEEP_TIME - рд╕реЗрдХрдВрдб рдореЗрдВ рд╕рдордп рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЯрд╛рдЗрдорд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ WATCHDOG_TIMER рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рддрд╛рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЕрддреНрдпрдзрд┐рдХ рднрд╛рд░ рди рдкреИрджрд╛ рд╣реЛред рд╡рд░реНрддрдорд╛рди рд╕рдордп рдореЗрдВ, рдПрдХ рдЙрдЪрд┐рдд рдиреНрдпреВрдирддрдо рд▓рдЧрднрдЧ 5 рд╕реЗрдХрдВрдб рд╣реИред
DEFAULT_LOG_LINES - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЙрдЧ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд▓реЙрдЧ рдХрд┐рдП рдЧрдП рдбрд┐рд╡рд╛рдЗрд╕ рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдорд╛рдВрдб:

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

Arduino рд╕реНрдХреЗрдЪ (ttyrst-watchdog.ino)


рд╕реНрдХреЗрдЪ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддреГрддреАрдп-рдкрдХреНрд╖ рдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рдЬреЛ рд╕рдордп рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдПрдХ рд╕реНрдХреЗрдЪ рдореЗрдВ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ Arduino IDE рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рд╕рдВрд░рдЪрдирд╛рдУрдВ (рд╕рдВрд░рдЪрдирд╛) рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдмрд╛рд╣рд░реА рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╛рде рд╣реА, рд╕рдВрд░рдЪрдирд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдХреАрд╡рд░реНрдб рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рднреА рд╣реИ ... рдорд╛рдирдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЙрдкрдпреБрдХреНрдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдмрд╛рдХреА рдХрдореЛрдмреЗрд╢ рдорд╛рдирдХ C ++ рд╣реИред

Wdt_enable рдФрд░ wdt_reset рдлрд╝рдВрдХреНрд╢рди рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдПрдХреАрдХреГрдд рд╡реЙрдЪрдбреЙрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред WDT рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╛рдж рд░рдЦрдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдореБрдЦреНрдп рд▓реВрдк рдореЗрдВ рдФрд░ рд╕рднреА рд▓рдореНрдмреЗ рдСрдкрд░реЗрд╢рдиреНрд╕ рдХреЗ рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред

рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ EEPROM рдореЗрдореЛрд░реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрд▓рдмреНрдз рдЖрдХрд╛рд░ logrecord.h рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ 1024 рд╣реИред рд▓реЙрдЧ рдХреЛ рд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рднрд╛рдЬрдХ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢реВрдиреНрдп рдорд╛рди рд╣реЛрддрд╛ рд╣реИред 1 KiB EEPROM рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ 203 рд╣реИред

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



рдпрд╣ рд╕рдм, рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ GitHub рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ

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


All Articles