
рдбреЗрдврд╝ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдореМрд╕рдо рдХреЗрдВрджреНрд░ рдХреЗ рд▓рд┐рдП, SSD1606 рдбреНрд░рд╛рдЗрд╡рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдИрдмреЗ рдХреЗ рд╕рд╛рде рдИ-рдЗрдВрдХ рд╕реНрдХреНрд░реАрди рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдЦрд░реАрджреАред рдФрд░ 4 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ, рдирдП рд╕рд╛рд▓ рд╕реЗ рдкрд╣рд▓реЗ, рд╡рд╣ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред
рдореИрдВ рддреБрд░рдВрдд рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдШрдбрд╝реА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдШрд░ рдкрд░ рд╣рд░ рдЬрдЧрд╣ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдШрдбрд╝рд┐рдпреЛрдВ рд╣реИрдВ! рд▓реЗрдХрд┐рди рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреИрд╕реЗ рджрд┐рдЦрд╛рдирд╛ рд╣реИ:
- рд╕реЗрд▓реНрд╕рд┐рдпрд╕ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рддрд╛рдкрдорд╛рди;
- рд╡рд░реНрддрдорд╛рди рдЖрд░реНрджреНрд░рддрд╛ рдкреНрд░рддрд┐рд╢рдд рдореЗрдВ;
- рдПрдордПрдордПрдЪрдЬреА рдореЗрдВ рд╡рд░реНрддрдорд╛рди рджрдмрд╛рд╡;
- рдПрдХ рдЧреНрд░рд╛рдл рдореЗрдВ рдкрд┐рдЫрд▓реЗ 15 рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рджрдмрд╛рд╡ рдЗрддрд┐рд╣рд╛рд╕;
- рдмреИрдЯрд░реА рд╡реЛрд▓реНрдЯреЗрдЬред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕рдм рд╣реИред рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдВрддрд┐рдо рд╕рд╛рджрдЧреА!
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдРрд╕рд╛ рдХреЛрдИ рдЬреАрдпреВрдЖрдИ рднреА рдирд╣реАрдВ рд╣реИ рдХрд╛рд░реНрдп рд╕рд┐рджреНрдзрд╛рдВрдд
рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдПрдХ рдмрдЯрди рдХреЗ рд╕реНрдкрд░реНрд╢ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдирд┐рдпрдВрддреНрд░рдХ рд╕реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЧрд╣рд░реА рдиреАрдВрдж рдореЗрдВ рд╣реИред
рдирд┐рдпрдВрддреНрд░рдХ рд╕рдордп-рд╕рдордп рдкрд░ рд╡реЙрдЪрдбреЙрдЧ рдХреЗ рд╕рд╛рде рдЙрдарддрд╛ рд╣реИ рдФрд░ рджрдмрд╛рд╡ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЧреНрд░рд╛рдл рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ 5 рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рджрдмрд╛рд╡ рдорд╛рдк рд▓реЗрддрд╛ рд╣реИред
рдпрд╣ рдЕрдиреБрд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдирд┐рдХрд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рджрдмрд╛рд╡ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдФрд░ рджреГрдврд╝рддрд╛ рд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ (рдЙрддреНрддрд░реА рд╢рд╣рд░ рдореЗрдВ рдореМрд╕рдо рдЖрдорддреМрд░ рдкрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИ), рдлрд┐рд░ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдЧреНрд░рд╛рдл рдмрдВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдШрдВрдЯреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░, рдорд╛рдк рдХреЗ рдордзреНрдп рдмрд┐рдВрджреБ рдХреЛ рдкреБрдирд░реНрдЧрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рджрдмрд╛рд╡ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рджреЛрдиреЛрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдкрд┐рдЫрд▓реЗ рдорд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЕрдВрддрд░ рдЧреНрд░рд╛рдл рдХреЗ рдкрдврд╝рдиреЗ (CPDV рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг) рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред
рд▓реЛрд╣рд╛
рдореБрдЦреНрдп рдорд╕реНрддрд┐рд╖реНрдХ
ATMega328P рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╣реИ,
BME280 рдмреИрд░реЛрдореАрдЯрд░ рдХреЗ рдкреВрд░реЗ рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рд╕реНрдорд╛рд░реНрдЯ-рдкреНрд░реЛрдЯреЗрд╕реНрдЯрд┐рдВрдЧ рд╕реЗ SSD1606 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рджреВрд╕рд░реЗ рд╕рдВрд╢реЛрдзрди рдХрд╛ рдИ-рдЗрдВрдХ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╣реА рд╡рд░реНрдгрд┐рдд рдерд╛ред
рдпрд╣ рд▓рдЧрднрдЧ рд╡рд╣реА рд╕реНрдХреНрд░реАрди рд╣реИ рдЬреЛ рдХрд┐ рд╡реЗрд╡реНрдЬрд╝ рдПрдкреНрдЯрд░ 2.7 "рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ (рдбреЗрдЯрд╢реАрдЯ рдЙрдирдХреЗ рд╕рдорд╛рди рд╣реИрдВ)ред
рдпрд╣ рд╕рдм 120 mAh рдХреЗ
рдЯреЙрдп рд╣реЗрд▓рд┐рдХреЙрдкреНрдЯрд░ рдХреА рдмреИрдЯрд░реА рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓рдЧрднрдЧ 20 mA рдХреЗ рдХрд░рдВрдЯ рдХреЗ рд╕рд╛рде рдЪрд╛рд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 47 k╬й рд░реЗрд╕рд┐рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде TP4056 рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреАрдк рдбрд┐рд╕реНрдЪрд╛рд░реНрдЬ рдФрд░ рдУрд╡рд░рдЪрд╛рд░реНрдЬ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреИрдЯрд░реА рдХреЛ рдЪрд╛рд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмрд┐рдЬрд▓реА рдЕрдиреБрдХреВрд▓рди
рдПрдХ рдзреНрд╡рдирд┐ рдФрд░ рд╕реНрд╡рд╕реНрде рдиреАрдВрдж рд╣рдорд╛рд░реА рд╕рдм рдХреБрдЫ рд╣реИ! рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдзрд┐рдХрддрдо рд╕реЛрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ!
рдЪреВрдВрдХрд┐ рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдирд╣реАрдВ рдерд╛, рдХреЗрд╡рд▓ рдЦрдЧреЛрд▓реАрдп рднрд╛рд╖рд╛ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд╛ рдПрдХ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдбреЗрдЯрд╛рд╢реАрдЯ (рд╕реНрдХреНрд░реАрди рдХреЗрд╡рд▓ рдбреЗрдврд╝ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдИ рджреА рдереА), рдореБрдЭреЗ рдЦреБрдж рдХреЛ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдХреНрд░реАрди рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдерд╛ред
рдбреАрдкрд╕реНрд▓реАрдк рдореЛрдб рдбреЗрдЯрд╛рд╢реАрдЯ рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдореЗрдВ рд╕реНрдХреНрд░реАрди рдХреБрдЫ рднреА рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИ - 1.6mkA!
рдмреИрд░реЛрдореАрдЯрд░ рдХреА рдорд╛рдВрдЧ рдкрд░ рдПрдХ рдкреИрдорд╛рдЗрд╢ рдореЛрдб рд╣реИ (рдЙрд░реНрдл рд╕реНрдЯреИрдВрдбрдмрд╛рдп), рдЗрд╕рдореЗрдВ рд╕реЗрдВрд╕рд░ рдКрд░реНрдЬрд╛ рдХреА рдПрдХ рдиреНрдпреВрдирддрдо рдЦрдкрдд рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдПрдХ рд╕рд░рд▓ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдЯреАрдХрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдбреЗрдЯрд╢реАрдЯ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдореМрд╕рдо рд╕реНрдЯреЗрд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ)ред рдЗрд╕ рдореЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ 6.2 ╬╝A рдХреА рдЦрдкрдд рд╣реБрдИред рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЖрдЧреЗ, рдПрд▓рдбреАрдУ рдирд┐рдпрд╛рдордХ LM6206N3 (рдпрд╛ рд╢рд╛рдпрдж XC6206, рджреЛрдиреЛрдВ рдХреЛ 662k рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдЪреНрдЫрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) MCP1700 рд╕реЗ рдорд┐рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЗрд╕рд╕реЗ 2 ╬╝A рдЕрдзрд┐рдХ рд▓рд╛рдн рд╣реБрдЖред
рдЪреВрдВрдХрд┐ рдпрд╣ рдиреНрдпреВрдирддрдо рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП LowPower рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдореЗрдВ рд╡реЙрдЪрдбреЙрдЧ рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рдо рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдЯрдореЗрдЧрд╛ рдХрд╛ рд╕рдкрдирд╛ рдмрдирддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдпрд╣ рд▓рдЧрднрдЧ 4 ╬╝A рдЦрдкрдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЯреЗрдХреНрд╕рд╛рд╕ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯреНрд╕ TPL5010 рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдмрд╛рд╣рд░реА рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рджреЗрдЦрддрд╛ рд╣реВрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдЯрдо рдХреЛ рдЕрдиреНрдп FUSE рдмрд┐рдЯреНрд╕ рдФрд░ рдПрдХ рдмреВрдЯрд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдлреНрд▓реИрд╢ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЬрд┐рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ USBasp рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдмреЛрд░реНрдбреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рда:## Arduino Pro or Pro Mini (1.8V, 1 MHz Int.) w/ ATmega328p
## internal osc div8, also now watchdog, no LED on boot
## bootloader size: 402 bytes
## http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik
## http://homes-smart.ru/fusecalc/?prog=avrstudio&part=ATmega328P
## http://www.engbedded.com/fusecalc
## -------------------------------------------------
pro.menu.cpu.1MHzIntatmega328=ATmega328 (1.8V, 1 MHz Int., BOD off)
pro.menu.cpu.1MHzIntatmega328.upload.maximum_size=32256
pro.menu.cpu.1MHzIntatmega328.upload.maximum_data_size=2048
pro.menu.cpu.1MHzIntatmega328.upload.speed=9600
pro.menu.cpu.1MHzIntatmega328.bootloader.low_fuses=0x62
pro.menu.cpu.1MHzIntatmega328.bootloader.high_fuses=0xD6
pro.menu.cpu.1MHzIntatmega328.bootloader.extended_fuses=0x07
pro.menu.cpu.1MHzIntatmega328.bootloader.file=atmega/a328p_1MHz_62_d6_5.hex
pro.menu.cpu.1MHzIntatmega328.build.mcu=atmega328p
pro.menu.cpu.1MHzIntatmega328.build.f_cpu=1000000L
рдСрдкреНрдЯрдмреВрдЯ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЧрдП рдмреВрдЯрд▓реЛрдбрд░ рдХреЛ "рдмреВрдЯрд▓реЛрдбрд░реНрд╕ / рдПрдЯрдореЗрдЧрд╛ /" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВ:
a328p_1MHz_62_d6_5.hex:107E0000F894112484B714BE81FFDDD082E0809302
:107E1000C00088E18093C10086E08093C2008CE0BE
:107E20008093C4008EE0B9D0CC24DD2488248394D0
:107E3000B5E0AB2EA1E19A2EF3E0BF2EA2D08134A3
:107E400061F49FD0082FAFD0023811F0013811F43F
:107E500084E001C083E08DD089C0823411F484E1D4
:107E600003C0853419F485E0A6D080C0853579F447
:107E700088D0E82EFF2485D0082F10E0102F00278F
:107E80000E291F29000F111F8ED068016FC0863583
:107E900021F484E090D080E0DECF843609F040C049
:107EA00070D06FD0082F6DD080E0C81680E7D8065C
:107EB00018F4F601B7BEE895C0E0D1E062D089932E
:107EC0000C17E1F7F0E0CF16F0E7DF0618F0F60147
:107ED000B7BEE89568D007B600FCFDCFA601A0E0CC
:107EE000B1E02C9130E011968C91119790E0982F91
:107EF0008827822B932B1296FA010C0187BEE895F6
:107F000011244E5F5F4FF1E0A038BF0751F7F60133
:107F1000A7BEE89507B600FCFDCF97BEE89526C042
:107F20008437B1F42ED02DD0F82E2BD03CD0F601D2
:107F3000EF2C8F010F5F1F4F84911BD0EA94F80143
:107F4000C1F70894C11CD11CFA94CF0CD11C0EC0EF
:107F5000853739F428D08EE10CD085E90AD08FE03E
:107F60007ACF813511F488E018D01DD080E101D09E
:107F700065CF982F8091C00085FFFCCF9093C600FD
:107F800008958091C00087FFFCCF8091C00084FDE0
:107F900001C0A8958091C6000895E0E6F0E098E160
:107FA000908380830895EDDF803219F088E0F5DF5B
:107FB000FFCF84E1DECF1F93182FE3DF1150E9F7E5
:107FC000F2DF1F91089580E0E8DFEE27FF27099494
:0400000300007E007B
:00000001FF
рджрд░рдЕрд╕рд▓, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдм Arduino рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рддреН 8MHz 3.3V рдкрд░ рдкреНрд░реЛ рдорд┐рдиреАред рдЗрд╕ рдмреЛрд░реНрдб рд╕реЗ mic5203 LDO рд░реЗрдЧреБрд▓реЗрдЯрд░ рдХреЛ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдХрдо рдзрд╛рд░рд╛рдУрдВ рдкрд░ рднреА рдЧреНрд▓реВрдЯреЛрдирд╕) рдФрд░ рдПрд▓рдИрдбреА рдкреНрд░рддрд┐рд░реЛрдзрдХ рдХреЛ рд╢рдХреНрддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдирддреАрдЬрддрди, рдиреАрдВрдж рдореЛрдб рдореЗрдВ 10 ╬╝Ah рдХреА рдКрд░реНрдЬрд╛ рдЦрдкрдд рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рдЬреЛ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рдЧрднрдЧ 462.96 рджрд┐рди рджреЗрддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рддрд┐рд╣рд╛рдИ рдШрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд▓рдЧрднрдЧ 10 рдорд╣реАрдиреЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдм рддрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЖрдпрдирд╕реНрдЯреЛрд░реНрд╕ рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, 3 рдПрдордПрдПрдЪ рдХреА рдЕрдВрддрд┐рдо рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде, рдпрд╣ 6 рджрд┐рди (рдЙрдЪреНрдЪ рд╕реНрд╡-рдирд┐рд░реНрд╡рд╣рди) рддрдХ рдирд╣реАрдВ рд░рд╣рддрд╛ рд╣реИред рдЖрдпрдирд┐рд╕реНрдЯрд░ рдХреА рд╕рдорд╛рдИ рдХреА рдЧрдгрдирд╛ рд╕реВрддреНрд░ C * V / 3.6 = X mAh рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреА рдЧрдИ рдереАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реМрд░ рдмреИрдЯрд░реА рдФрд░ MSP430 рд╡рд╛рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЖрдо рддреМрд░ рдкрд░ рд╢рд╛рд╢реНрд╡рдд рд╣реЛрдЧрд╛ред
рд╡рд░реНрдЧреАрдХреГрдд:#include <SPI.h>
#include <Wire.h>
#include <ssd1606.h>
#include <Adafruit_BME280.h>
//#include <BME280_2.h> // local optimisation
#include <LowPower.h>
#include <avr/sleep.h>
#include <avr/power.h>
#define TIME_X_POS 0
#define TIME_Y_POS 12
#define DATE_X_POS 2
#define DATE_Y_POS 9
#define WEECK_X_POS 65
#define WEECK_Y_POS 9
// ====================================== //
#define TEMP_X_POS 105
#define TEMP_Y_POS 15
#define PRESURE_X_POS 105
#define PRESURE_Y_POS 12
#define HUMIDITY_X_POS 105
#define HUMIDITY_Y_POS 9
// ====================================== //
#define BATT_X_POS 65
#define BATT_Y_POS 15
#define ONE_PASCAL 133.322
// ==== for presure history in graph ==== //
#define MAX_MESURES 171
#define BAR_GRAPH_X_POS 0
#define BAR_GRAPH_Y_POS 0
#define PRESURE_PRECISION_RANGE 4.0 // -/+ 4 mm
#define PRESURE_GRAPH_MIN 30 // vertical line graph for every N minutes
#define PRESURE_PRECISION_VAL 10 // max val 100
#define PRESURE_CONST_VALUE 700.0 // const val what unneed in graph calculations
#define PRESURE_ERROR -1000 // calibrated value
// ====================================== //
#define VCC_CALIBRATED_VAL 0.027085714285714 // == 3.792 V / 140 (real / mesured)
//#define VCC_CALIBRATED_VAL 0.024975369458128 // == 5.070 V / 203 (real / mesured)
#define VCC_MIN_VALUE 2.95 // min value to refresh screen
#define CALIBRATE_VCC 1 // need for battery mesure calibration
// 37 ~296 sec or 5 min * MAX_MESURES = 14,33(3) hours for full screen
#define SLEEP_SIZE 37
#ifdef BME280_ADDRESS
#undef BME280_ADDRESS
#define BME280_ADDRESS 0x76
#endif
#define ISR_PIN 3 // other mega328-based 2, 3
#define POWER_OFF_PIN 4 // also DONEPIN
#define E_CS 6 // CS ~ D6
#define E_DC 5 // D/C ~ D5
#define E_BSY 7 // BUSY ~ D7
#define E_RST 2 // RST ~ D2
#define E_BS 8 // BS ~ D8
/*
MOSI ~ D11
MISO ~ D12
CLK ~ D13
*/
EPD_SSD1606 Eink(E_CS, E_DC, E_BSY, E_RST);
Adafruit_BME280 bme;
volatile bool adcDone;
bool updateSreen = true;
bool normalWakeup = false;
float battVal =0;
uint8_t battValcV =0;
uint8_t timeToSleep = 0;
float presure =0;
float temperature =0;
float humidity =0;
float presure_mmHg =0;
unsigned long presureMin =0;
unsigned long presureMax =0;
uint8_t currentMesure = MAX_MESURES;
uint8_t presureValHistoryArr[MAX_MESURES] = {0};
typedef struct {
uint8_t *pData;
uint8_t pos;
uint8_t size;
unsigned long valMax;
unsigned long valMin;
} history_t;
рдкреНрд░рд╛рд░рдВрдн:void setup()
{
saveExtraPower();
Eink.begin();
initBME();
// https://www.arduino.cc/en/Reference/attachInterrupt
pinMode(ISR_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(ISR_PIN), ISRwakeupPin, RISING);
//drawDefaultGUI();
drawDefaultScreen();
// tiiiiny fix....
checkBME280();
updatePresureHistory();
}
void saveExtraPower(void)
{
power_timer1_disable();
power_timer2_disable();
// Disable digital input buffers:
DIDR0 = 0x3F; // on ADC0-ADC5 pins
DIDR1 = (1 << AIN1D) | (1 << AIN0D); // on AIN1/0
}
void initBME(void)
{
bme.begin(BME280_ADDRESS); // I2C addr
LowPower.powerDown(SLEEP_250MS, ADC_OFF, BOD_OFF); // wait for chip to wake up.
while(bme.isReadingCalibration()) { // if chip is still reading calibration, delay
LowPower.powerDown(SLEEP_120MS, ADC_OFF, BOD_OFF);
}
bme.readCoefficients();
bme.setSampling(Adafruit_BME280::MODE_FORCED,
Adafruit_BME280::SAMPLING_X1, // temperature
Adafruit_BME280::SAMPLING_X1, // pressure
Adafruit_BME280::SAMPLING_X1, // humidity
Adafruit_BME280::FILTER_OFF);
}
рдореБрдЦреНрдп рдХреЛрдб:void loop()
{
for(;;) { // i hate func jumps when it's unneed!
checkVCC();
if(normalWakeup) {
checkBME280();
updatePresureHistory();
} else {
normalWakeup = true;
}
updateEinkData();
enterSleep();
}
}
// func to exec in pin ISR
void ISRwakeupPin(void)
{
// Keep this as short as possible. Possibly avoid using function calls
normalWakeup = false;
updateSreen = true;
timeToSleep = 1;
}
ISR(ADC_vect)
{
adcDone = true;
}
void debounceFix(void)
{
normalWakeup = true;
updateSreen = false;
}
//https://github.com/jcw/jeelib/blob/master/examples/Ports/bandgap/bandgap.ino
uint8_t vccRead(void)
{
uint8_t count = 4;
set_sleep_mode(SLEEP_MODE_ADC);
ADMUX = bit(REFS0) | 14; // use VCC and internal bandgap
bitSet(ADCSRA, ADIE);
do {
adcDone = false;
while(!adcDone) sleep_mode();
} while (--count);
bitClear(ADCSRA, ADIE);
// convert ADC readings to fit in one byte, ie 20 mV steps:
// 1.0V = 0, 1.8V = 40, 3.3V = 115, 5.0V = 200, 6.0V = 250
return (55U * 1023U) / (ADC + 1) - 50;
}
unsigned long getHiPrecision(double number)
{
// what if presure will be more 800 or less 700? ...
number -= PRESURE_CONST_VALUE; // remove constant value
number *= PRESURE_PRECISION_VAL; // increase precision by PRESURE_PRECISION_VAL
return (unsigned long)number; // Extract the integer part of the number
}
void checkVCC(void)
{
// reconstruct human readable value
battValcV = vccRead();
battVal = battValcV * VCC_CALIBRATED_VAL;
if(battVal <= VCC_MIN_VALUE) { // not enought power to drive E-Ink or work propetly
detachInterrupt(digitalPinToInterrupt(ISR_PIN));
// to prevent full discharge: just sleep
bme.setSampling(Adafruit_BME280::MODE_SLEEP);
LowPower.powerDown(SLEEP_2S, ADC_OFF, BOD_OFF);
Eink.sleep(true);
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
void checkBME280(void)
{
bme.takeForcedMeasurement(); // wakeup, make new mesure and sleep
temperature = bme.readTemperature();
humidity = bme.readHumidity();
presure = bme.readPressure();
}
void updatePresureHistory(void)
{
// convert Pa to mmHg; 1 mmHg == 133.322 Pa
presure_mmHg = (presure + PRESURE_ERROR)/ONE_PASCAL;
// === calc presure history in graph === //
if((++currentMesure) >= (MAX_MESURES/3)) { // each 4,75 hours
currentMesure =0;
presureMin = getHiPrecision(presure_mmHg - PRESURE_PRECISION_RANGE);
presureMax = getHiPrecision(presure_mmHg + PRESURE_PRECISION_RANGE);
}
// 36 == 4 pixels in sector * 9 sectors
presureValHistoryArr[MAX_MESURES-1] = map(getHiPrecision(presure_mmHg), presureMin, presureMax, 0, 35);
for(uint8_t i=0; i < MAX_MESURES; i++) {
presureValHistoryArr[i] = presureValHistoryArr[i+1];
}
}
void updateEinkData(void)
{
if(updateSreen) {
updateSreen = false;
Eink.sleep(false);
// bar history
Eink.fillRect(BAR_GRAPH_X_POS, BAR_GRAPH_Y_POS, MAX_MESURES, 9, COLOR_WHITE);
for(uint8_t i=1; i <= (MAX_MESURES/PRESURE_GRAPH_MIN); i++) {
Eink.drawVLine(BAR_GRAPH_X_POS+i*PRESURE_GRAPH_MIN, BAR_GRAPH_Y_POS, 35, COLOR_DARKGREY);
}
for(uint8_t i=0; i <= MAX_MESURES; i++) {
Eink.drawPixel(i, BAR_GRAPH_Y_POS+presureValHistoryArr[i], COLOR_BLACK);
}
#if CALIBRATE_VCC
Eink.setCursor(BATT_X_POS, BATT_Y_POS);
Eink.print(battVal);
Eink.setCursor(BATT_X_POS, BATT_Y_POS-3);
Eink.print(battValcV);
#endif
Eink.setCursor(TEMP_X_POS, TEMP_Y_POS);
Eink.print(temperature);
Eink.setCursor(PRESURE_X_POS, PRESURE_Y_POS);
Eink.print(presure_mmHg);
Eink.setCursor(HUMIDITY_X_POS, HUMIDITY_Y_POS);
Eink.print(humidity);
updateEinkSreen();
Eink.sleep(true);
}
}
void updateEinkSreen(void)
{
Eink.display(); // update Eink RAM to screen
LowPower.idle(SLEEP_15MS, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF, SPI_OFF, USART0_OFF, TWI_OFF);
Eink.closeChargePump();
// as Eink display acts not like in DS, then just sleep for 2 seconds
LowPower.powerDown(SLEEP_2S, ADC_OFF, BOD_OFF);
}
void effectiveIdle(void)
{
LowPower.idle(SLEEP_30MS, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF, SPI_OFF, USART0_OFF, TWI_OFF);
}
void drawDefaultScreen(void)
{
Eink.fillScreen(COLOR_WHITE);
Eink.printAt(TEMP_X_POS, TEMP_Y_POS, F("00.00 C"));
Eink.printAt(PRESURE_X_POS, PRESURE_Y_POS, F("000.00 mm"));
Eink.printAt(HUMIDITY_X_POS, HUMIDITY_Y_POS, F("00.00 %"));
#if CALIBRATE_VCC
Eink.printAt(BATT_X_POS, BATT_Y_POS, F("0.00V"));
// just show speed in some kart racing game in mushr... kingdom \(^_^ )/
Eink.printAt(BATT_X_POS, BATT_Y_POS-3, F("000cc"));
#endif
}
void drawDefaultGUI(void)
{
Eink.drawHLine(0, 60, 171, COLOR_BLACK); // split 2 areas
// draw window
Eink.drawRect(0, 0, 171, 71, COLOR_BLACK);
// frame for text
Eink.drawRect(BATT_X_POS, BATT_Y_POS, 102, 32, COLOR_BLACK);
}
void snooze(void)
{
do {
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
} while(--timeToSleep);
}
void disablePower(void)
{
digitalWrite(POWER_OFF_PIN, HIGH);
delay(1);
digitalWrite(POWER_OFF_PIN, LOW);
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
void enterSleep(void)
{
// wakeup after ISR signal;
timeToSleep = SLEEP_SIZE;
debounceFix();
snooze();
}
рдЖрд╡рд╛рд╕
рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ 3D рдкреНрд░рд┐рдВрдЯрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ 3D рдкреЗрди MyRiwell RP800A рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреНрд▓реЗрдирд░ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдмрдирд╛рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛ред рд╕рдм рдХреБрдЫ рдкреАрдПрд▓рдП рдкреНрд▓рд╛рд╕реНрдЯрд┐рдХ рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдЙрд╕ рд╕рдордп рдерд╛, рдЗрд╕рд▓рд┐рдП рдорд╛рдорд▓рд╛ рдмрд╣реБ-рд░рдВрдЧреАрди рдирд┐рдХрд▓рд╛, рдЬреЛ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд░реНрд╖рдг рджреЗрддрд╛ рд╣реИ (рддрдм рдореИрдВ рд▓рдХрдбрд╝реА рдХреЗ рдЪрд┐рдкреНрд╕ рдХреЗ рд╕рд╛рде рдкреНрд▓рд╛рд╕реНрдЯрд┐рдХ рдХреЗ рдкреЗрдбрд╝ рдХреЗ рдиреАрдЪреЗ рдЗрд╕рдХрд╛ рд░реАрдореЗрдХ рдмрдирд╛рдКрдВрдЧрд╛)ред
рдкрд╣рд▓реЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╕реАрдзреЗ рдХрд╛рдЧрдЬ рдкрд░ рдЦреАрдВрдЪрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ред рдЗрд╕рд╕реЗ рдкреНрд▓рд╛рд╕реНрдЯрд┐рдХ рдкрд░ рдирд┐рд╢рд╛рди рдкрдбрд╝ рдЧрдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рд╡рд░рдг рдЯреЗрдврд╝реЗ рдереЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕реАрдзрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА!

рд╕рдорд╛рдзрд╛рди рд╕рд╛рдзрд╛рд░рдг рд╕рд░рд▓ рдирд┐рдХрд▓рд╛ - рдХрд╛рдВрдЪ рдкрд░ рдбреНрд░рд╛, рдФрд░ рдЗрд╕рдХреЗ рддрд╣рдд рдорд╛рдорд▓реЗ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡реЛрдВ рдХреЗ "рдЪрд┐рддреНрд░" рдбрд╛рд▓реЗрдВред
рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ:

рд╕реНрдХреНрд░реАрди рд░рд┐рдлреНрд░реЗрд╢ рдмрдЯрди рдмрд╕ рдПрдХ рд╕рдлреЗрдж рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рд▓рд╛рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛!

рдкреАрдЫреЗ рдХреА рджреАрд╡рд╛рд░ рдХреЛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╡реЗрдВрдЯрд┐рд▓реЗрд╢рди рдЫреЗрдж рдмрдирд╛ рд░рд╣рд╛ рд╣реИред

рдмрдЯрди рдХреЛ рдПрдХ рд╣реИрдВрдбрд▓ рдХреЗ рдЕрдВрджрд░ (рдкреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ) рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рдЕрдХрдбрд╝ рдкрд░ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдмрдЯрди рдЦреБрдж рдПрдХ рдкреБрд░рд╛рдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗрд╕ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЗрд╕рдореЗрдВ рдЕрдЪреНрдЫреА рдЖрд╡рд╛рдЬ рд╣реИ)ред

рдЕрдВрджрд░, рд╕рдм рдХреБрдЫ рдЧрд░реНрдо-рдкрд┐рдШрд▓ рдЪрд┐рдкрдХрдиреЗ рдФрд░ рдкреНрд▓рд╛рд╕реНрдЯрд┐рдХ рдХреЗ рд╕рд╛рде рддрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рди рд╣реЛред

рдмреЗрд╢рдХ, рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдЪрд╛рд░реНрдЬ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯрд░ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдЕрдзрд┐рдХ рдордЬрдмреВрддреА рдХреЗ рд▓рд┐рдП рдЕрдЦрдВрдб рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
4 рдорд╣реАрдиреЗ рдмреАрдд рдЧрдП, рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд╛рд░реНрдЬ рдирд╣реАрдВ рд╣реЛрдиреЗ (4 рд╡реА рддрдХ) рдХреЗ рдмрд╛рдж, рдмреИрдЯрд░реА рдкрд░ рд╡реЛрд▓реНрдЯреЗрдЬ рдХреЗрд╡рд▓ 3.58 рд╡реА рддрдХ рдиреАрдЪреЗ рдЪрд▓рд╛ рдЧрдпрд╛, рдЬреЛ рдЕрдЧрд▓реЗ рдЪрд╛рд░реНрдЬ рддрдХ рдПрдХ рд╕рдорд╛рди рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реЗрд╡рд╛ рдЬреАрд╡рди рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред
рд╣реЛрдорд╡рд░реНрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рд╕рд┐рд░рджрд░реНрдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕ рдЧрд░реНрднрдирд┐рд░реЛрдзрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдЧрд▓реЗ рдПрдХ рдпрд╛ рджреЛ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рдореМрд╕рдо рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рддреБрд░рдВрдд рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЬрд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рджрдмрд╛рд╡ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реБрдЖред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрдкреАрдбреАрд╡реА рдкрд░, рдПрдХ рдордЬрдмреВрдд рджрдмрд╛рд╡ рдбреНрд░реЙрдк рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рднрд╛рд░реА рдмрд░реНрдл рдФрд░ рд╣рд╡рд╛ рдЧрд┐рд░рдиреЗ рд▓рдЧреАред
рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдВрдХ:
тЖТ
рд╕реНрдХреНрд░реАрди рд▓рд╛рдЗрдмреНрд░реЗрд░реАтЖТ
рд▓реЛрд╡рд░рдкрд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реАтЖТ
BME280 рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпрдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛:
рд╢рд░реАрд░ рдореЗрдВ рдмрдврд╝рддреА рд░реБрдЪрд┐ рдХреЗ рдХрд╛рд░рдг, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдзрд┐рдХ рдЫрд╡рд┐рдпрд╛рдВ рдкреЛрд╕реНрдЯ рдХреАрдВред рджреВрд╕рд░реЗ рд╕рдВрд╢реЛрдзрди рдХреА рд╕реНрдорд╛рд░реНрдЯ-рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕реНрдХреНрд░реАрдиред рдЕрд▓реА рдкрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдПрдирд╛рд▓реЙрдЧ
рдпрд╣рд╛рдБ рд╣реИ ред
рдореБрдЭреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ: PS рд╢рд╛рдо рдХреЛ CPDV рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдореЗрдВ рдЖрдЬ рд░рд╛рдд рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдмрд░реНрдл рдЧрд┐рд░реА рдереАред
рдкреАрдкреАрдПрд╕ рдмреНрд▓реВ рдЯреЗрдк рдХреЛ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЧрдпрд╛ред