рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

Habr рдорд╛ "DIY or Do It Yourself" рдЦрдгреНрдбрдХрд╛ рд╕рдмреИ рдкрд╛рдардХрд╣рд░реВрд▓рд╛рдИ рдЕрднрд┐рд╡рд╛рджрди! рдЖрдЬрдХреЛ рд▓реЗрдЦ TTP223 рдЪрд┐рдкрдорд╛ рдЯрдЪ рд╕реНрд╡рд┐рдЪрдХреЛ рдмрд╛рд░реЗрдорд╛ рд╣реБрдиреЗрдЫ | рдбрд╛рдЯрд╛ рдкрд╛рдирд╛ред рд╕реНрд╡рд┐рдЪ nRF52832 рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░ рдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ | рдбрд╛рдЯрд╛ рдкрд╛рдирд╛, рдПрдХ YJ-17103 рдореЛрдбреНрдпреБрд▓ рдкреНрд░рд┐рдиреНрдЯ рдЧрд░рд┐рдПрдХреЛ рдПрдиреНрдЯреЗрдирд╛ рд░ рдмрд╛рд╣реНрдп MHF4 рдПрдиреНрдЯреЗрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреЗрдХреНрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдЯрдЪ рд╕реНрд╡рд┐рдЪ CR2430 рд╡рд╛ CR2450 рдмреНрдпрд╛рдЯреНрд░реАрд╣рд░реВрдорд╛ рд╕рдЮреНрдЪрд╛рд▓рди рд╣реБрдиреНрдЫред рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ рдореЛрдбрдорд╛ рдЦрдкрдд 8 рдПрдордП рднрдиреНрджрд╛ рдмрдвреА рд╣реБрдБрджреИрди, рд╕реНрд▓реАрдк рдореЛрдбрдорд╛ 6 ┬╡A рднрдиреНрджрд╛ рдмрдвреА рд╣реБрдБрджреИрдиред
рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рд╕рдмреИ рдЕрдШрд┐рд▓реНрд▓реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рдЬрд╕реНрддреИ, рдпреЛ рдкрдирд┐ рдПрдХ Arduino рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛ, рдХрд╛рд░реНрдпрдХреНрд░рдо Arduino IDE рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫред рдпрдиреНрддреНрд░рдХреЛ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди Mysensors рдкреНрд░реЛрдЯреЛрдХрд▓рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫ GitHub рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ, nRF5 рдмреЛрд░реНрдб рд╕рдорд░реНрдерди GitHub Mysensors рдорд╛ред рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдлреЛрд░рдо - http://forum.mysensors.org, рд░реВрд╕реА рднрд╛рд╖рд╛ рд╕рдореБрджрд╛рдп рдлреЛрд░рдо - http://mysensors.ru/forum/
(рдЕрдзреНрдпрдпрди рдЧрд░реНрди рдЪрд╛рд╣рдиреЗрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ - рджрд╕реНрддрд╛рд╡реЗрдЬ, рд╕рд┐рд░рд┐рдпрд▓ рдкреНрд░реЛрдЯреЛрдХрд▓, рдПрдкреАрдЖрдИ, рдкреНрд░реЛрдЯреЛрдХрд▓, рдкрд╛рд░реНрд╕рд░ | рд╕рд╣рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреЗрд╣рд░реБрдХреЛ рд▓рд╛рдЧрд┐ (рдпреЛрдЧрджрд╛рди) рдЖрдпреЛрдЬрдирд╛рдХреЛ рд╡рд┐рдХрд╛рд╕рдорд╛ - рджрд╕реНрддрд╛рд╡реЗрдЬ)

рдЯрдЪ рд╕реНрд╡рд┐рдЪ рдмреЛрд░реНрдб рд▓реЗрдЬрд░ рдЗрд╕реНрддреНрд░реА рдЯреЗрдХреНрдиреЛрд▓реЛрдЬреА (LUT) рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрдЫрд┐рдХреЛ рдирд┐рд░реНрдорд╛рдгрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ Deeptrace рдХрд╛рд░реНрдпрдХреНрд░рдордорд╛ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдмреЛрд░реНрдб 60x60mm рдХреЛ рдЖрдпрд╛рдо рдорд╛ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ (рдПрдХ рдорд╛рдирдХ рдЧрд┐рд▓рд╛рд╕ рдкреНрдпрд╛рдирд▓ 80x80mm рдХреЛ рдЖрдпрд╛рдо рдЫ)ред рд╕рд░реНрдХрд┐рдЯ рдПрдиреНрдЯреЗрдирд╛ рдкрддреНрд░рд┐рдХрд╛рдХреЛ рдкреГрд╖реНрдард╣рд░реВрдорд╛ рдЫрд╛рдкрд┐рдПрдХреЛ рдерд┐рдпреЛ рд░ "рд▓реЗрди" рд╕реЗрдЯрд┐рдЩ (рдЕрдзрд┐рдХрддрдо рдкрд╛рд╡рд░) рдХреЛ рд╕рд╛рде рдПрдХ рджреЛрд╣реЛрд░реЛ рдкрдХреНрд╖реАрдп рдкрдиреНрдиреА рдлрд╛рдЗрдмрд░рдЧреНрд▓рд╛рд╕ рдмреЛрд░реНрдб 1.5mm, 35┬╡m (рдЕрд░реНрдХреЛрдХреЛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐рдорд╛) рдорд╛ рдмреЛрд╢ рдлрд▓рд╛рдордХреЛ рд╕рд╛рде рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред
рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдирдХреНрдХрд╛рд╢реА рдлреЗрд░рд┐рдХ рдХреНрд▓реЛрд░рд╛рдЗрдбрдХреЛ рд╕рдорд╛рдзрд╛рдирдХреЛ рд╕рд╛рде рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдкрд╣рд┐рд▓реЗ 1.5 рдЪрдореНрдордЪ рдкреНрд░рддрд┐ 250 рдорд┐рд▓реА рддрд╛рддреЛ рдкрд╛рдиреАрдХреЛ рдЕрдиреБрдкрд╛рддрдорд╛ рддрдпрд╛рд░ рдкрд╛рд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ 15 рдорд┐рдиреЗрдЯ рд▓рд┐рдпреЛред
рдЗрдиреНрдЯрд░рд▓реЗрдпрд░ рднрд┐рдпрд╛рд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд╡рд╛рд▓рд╣рд░реВ рдбреНрд░рд┐рд▓ рдЧрд░реНрдиреЗ рд░ рдмреНрдпрд╛рдЯреНрд░реА рд╣реЛрд▓реНрдбрд░рд▓рд╛рдИ DREMEL 3000 рдбреНрд░рд┐рд▓ рд╕реНрдЯреНрдпрд╛рдиреНрдбрдорд╛ рдорд╛рдЙрдиреНрдЯ рдЧрд░рд┐рдПрдХреЛ DREMEL 220 рдорд┐рдиреА-рдбреНрд░рд┐рд▓рдХреЛ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдЗрдиреНрдЯрд░рд▓реЗрдпрд░ рднрд┐рд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд╡рд╛рд▓рд╣рд░реВ 0,4mm рдбреНрд░рд┐рд▓рд▓реЗ рдбреНрд░рд┐рд▓ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдмреНрдпрд╛рдЯреНрд░реА рд╣реЛрд▓реНрдбрд░рдХреЛ рд▓рд╛рдЧрд┐ 1,1mm рдбреНрд░рд┐рд▓рдХреЛ рд╕рд╛рде рдкреНрд╡рд╛рд▓рд╣рд░реВред ред рдмреЛрд░реНрдбрдХреЛ рдХрд┐рдирд╛рд░рдорд╛ рдЯреНрд░рд┐рдорд┐рдЩ DREMEL 540 рдПрдЯреНрдпрд╛рдЪрдореЗрдиреНрдЯ (Cutting рд╕рд░реНрдХрд▓ d=32.0mm) рд╕рдБрдЧ рдПрдЙрдЯреИ рдорд┐рдиреА-рдбреНрд░рд┐рд▓рдХреЛ рд╕рд╛рде рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдЫрд╛рдБрдЯреНрдиреЗ рдХрд╛рдо рд░реЗрд╕реНрдкрд┐рд░реЗрдЯрд░рдорд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред
рдирдХреНрдХрд╛рд╢реА рдЧрд░рд┐рдПрдХреЛ рдмреЛрд░реНрдбрдХреЛ рдЯрд┐рдирд┐рдЩ рдПрдХ рдЬрд▓реАрдп рдШреЛрд▓ (рдкреНрд░рддрд┐ 1 рдорд┐рд▓реАрд▓реАрдЯрд░ рдкрд╛рдиреАрдХреЛ 300 рдЪрдореНрдордЪ рдХреНрд░рд┐рд╕реНрдЯрд▓рд╛рдЗрдЬ рд╕рд╛рдЗрдЯреНрд░рд┐рдХ рдПрд╕рд┐рдб) рдорд╛ рдЧреБрд▓рд╛рдм рдорд┐рд╢реНрд░ рдзрд╛рддреБ рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред

рд╕реЛрд▓реНрдбрд░рд┐рдЩ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рдХрд░рд┐рдм рдПрдХ рдШрдгреНрдЯрд╛ рд▓рд┐рдпреЛ, рдзреЗрд░реИрдЬрд╕реЛ рд╕рдордп рдЗрдиреНрдЯрд░рд▓реЗрдпрд░ рднрд┐рдпрд╛рд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд╡рд╛рд▓рд╣рд░реВрдорд╛ рд╕реЛрд▓реНрдбрд░рд┐рдЩ рддрд╛рд░ (рдЯрд┐рди рдЧрд░рд┐рдПрдХреЛ, рд╡реНрдпрд╛рд╕рдорд╛ реж.рек рдорд┐рдореА) рдмрд┐рддреНрдпреЛред

рдмреЛрд░реНрдб рдлреНрд▓рдХреНрд╕ рдЕрдл рдПрд░реЛрд╕реЛрд▓ рдХреНрд▓реАрдирд░рд▓реЗ рдзреЛрдЗрдпреЛред
рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдпрдиреНрддреНрд░ рд╢рд░реАрд░рдХреЛ рдбрд┐рдЬрд╛рдЗрди рддреАрди-рдЖрдпрд╛рдореА рдХрдореНрдкреНрдпреБрдЯрд░-рд╕рд╣рд╛рдпрддрд╛ рдбрд┐рдЬрд╛рдЗрди рд╕рдореНрдкрд╛рджрдХрдорд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдХреЗрд╕ рдЖрдпрд╛рдорд╣рд░реВ 78,5mm X 78,5mm X 12mmред
рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдХреЗрд╕ рд░ рдмреНрдпрд╛рдЯреНрд░реА рдХрдореНрдкрд╛рд░реНрдЯрдореЗрдиреНрдЯ рдХрднрд░рдХреЛ рдкреВрд░реНрдг рдореЛрдбреЗрд▓ STL рдврд╛рдБрдЪрд╛рдорд╛ рдмрдЪрдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рддреНрдпрд╕рдкрдЫрд┐ рдпреА рдореЛрдбреЗрд▓рд╣рд░реВрд▓рд╛рдИ SLA рдкреНрд░рд┐рдиреНрдЯрд░рдорд╛ рдкреНрд░рд┐рдиреНрдЯ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛ (рд╕рдорд░реНрдердирд╣рд░реВ, рдЕрднрд┐рдореБрдЦреАрдХрд░рдг рдердкреНрджреИ)ред рдпрд╕ рдЪрд░рдгрдорд╛, рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рднрдпреЛ, рдХрд┐рдирдХрд┐ рдШрд░реЗрд▓реБ SLA рдкреНрд░рд┐рдиреНрдЯрд░рд╣рд░реВрдХреЛ рдкреНрд░рд┐рдиреНрдЯ рдХреНрд╖реЗрддреНрд░ рд╕рд╛рдиреЛ рдЫред рдореБрджреНрд░рдг рд╕рдордп рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдмреИрднрдиреНрджрд╛ рдЗрд╖реНрдЯрддрдо рд╕реНрдерд┐рддрд┐ рдорд╛ рдЙрдкрдХрд░рдг рдХреЗрд╕ рдХреЛ рдореЛрдбреЗрд▓ рдореБрджреНрд░рдг рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЖрдпрд╛рдо рдорд╛ рдлрд┐рдЯ рдерд┐рдПрдиред рдореЛрдбреЗрд▓рд▓рд╛рдИ 45 рдбрд┐рдЧреНрд░реАрдорд╛ рд░рд╛рдЦреНрджрд╛, рдпрд╕рд▓реЗ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдирддрд┐рдЬрд╛ рдкрдирд┐ рджрд┐рдпреЛ; рд╕рдорд░реНрдердирдХреЛ рд╡рдЬрди рд╢рд░реАрд░ рдореЛрдбреЗрд▓рдХреЛ рд╡рдЬрди рдмрд░рд╛рдмрд░ рдерд┐рдпреЛред рдпреЛ рдореЛрдбреЗрд▓ рдард╛рдбреЛ рд░реВрдкрдорд╛ рдкреНрд░рд┐рдиреНрдЯ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░рд┐рдпреЛ, рдЕрдЧрд╛рдбрд┐ рдкрдХреНрд╖рд╣рд░реВ рдордзреНрдпреЗ рдПрдХрдорд╛ рд╕рдорд░реНрдерди рдмрдирд╛рдЙрдБрджреИ, рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдЩрдХреЛ рддрдереНрдпрд╕рдБрдЧ рдЕрдЧреНрд░рд┐рдо рд╕рд╣рдордд рднрдИред релреж рдорд╛рдЗрдХреНрд░реЛрдирдХреЛ рд▓реЗрдпрд░ рд╕реЗрдЯрд┐рдЩрдХреЛ рд╕рд╛рде рдмрдбреА рдкреНрд░рд┐рдиреНрдЯ рдЧрд░реНрди рел рдШрдгреНрдЯрд╛ рд▓рд╛рдЧреНрдпреЛред рдЕрд░реНрдХреЛ, рдзреЗрд░реИ рд░рд╛рдореНрд░реЛ-рджрд╛рдирд╛ рд╕реНрдпрд╛рдиреНрдбрдкреЗрдкрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ (рдо рдирдореНрдмрд░ рд▓реЗрдЦреНрджрд┐рди рдХрд┐рдирднрдиреЗ рдорд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫреИрди :))ред рдмреНрдпрд╛рдЯреНрд░реА рдХрднрд░ рдЫрд╛рдкреНрди 5 рдорд┐рдиреЗрдЯ рд▓рд╛рдЧреНрдпреЛред
рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

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

рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдПрд▓рдИрдбреА рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдбрд┐рдлреНрдпреВрдЬрд░ рдПрдХреНрд░рд┐рд▓рд┐рдХ рдЯрд╛рдБрд╕реЗрдХреЛ 3M 9088-200 рд╕рдБрдЧ рдбрдмрд▓-рдкрдХреНрд╖реАрдп рдЯреЗрдкрд▓реЗ рдмрдиреЗрдХреЛ рдерд┐рдпреЛред рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдкреНрд░рдХрд╛рд╢рдХреЛ рд▓рд╛рдЧрд┐ рддреНрдпрд╣рд╛рдБ рдЫрдиреМрдЯ рдЧрд░реНрди рдзреЗрд░реИ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдерд┐рдП, рдЪрд┐рдирд┐рдпрд╛рдБ рдЯрд╛рдБрд╕реНрдиреЗ рдЯреЗрдк рд░ рдЯрд╛рдБрд╕рдиреЗ рдХрд╛рдЧрдЬ рдШрд░реЗрд▓реБ рдХрдореНрдкрдиреА рд▓реБрдорд┐рдиреЛрдлреЛрд░рдмрд╛рдЯ рдЯреЗрдкрдорд╛ рдХрд╛рдЯрд┐рдПрдХреЛ рдерд┐рдпреЛред рдЫрдиреМрдЯ рдШрд░реЗрд▓реБ рдирд┐рд░реНрдорд╛рддрд╛рдХреЛ рдкрдХреНрд╖рдорд╛ рдмрдирд╛рдЗрдПрдХреЛ рдерд┐рдпреЛ; рдореЗрд░реЛ рднрд╛рд╡рдирд╛ рдЕрдиреБрд╕рд╛рд░, рдпреЛ рдЙрдЬреНрдпрд╛рд▓реЛ рд░ рд▓рд╛рдореЛ рднрдпреЛред рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдкрд┐рдЧреНрдореЗрдиреНрдЯ рднрдПрдХреЛ рдХрд╛рдЧрдЬрдХреЛ рд╡рд░реНрдЧрд▓рд╛рдИ рдорд╛рдерд┐ 3M 9088-200 рдбрдмрд▓-рд╕рд╛рдЗрдб рдЯреЗрдкрд▓реЗ рдЯрд╛рдБрд╕рд┐рдПрдХреЛ рдерд┐рдпреЛред

рдЧрд┐рд▓рд╛рд╕ 3M VHB 4910 рдПрдХреНрд░рд┐рд▓рд┐рдХ рдЯрд╛рдБрд╕рд┐рдПрдХреЛ рдбрдмрд▓-рд╕рд╛рдЗрдб рдЯреЗрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрд╡рд┐рдЪ рдмрдбреАрдорд╛ рдЯрд╛рдБрд╕рд┐рдПрдХреЛ рдерд┐рдпреЛред
рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдЖрд╡рд░рдг рдПрдХ рдкреЗрдВрдЪ M 1,4 X 5 рдорд┐рдореА рд╕рдВрдЧ рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред

рдЙрдкрдХрд░рдгрдХреЛ рд▓рд╛рдЧрдд 890 rubles рдерд┐рдпреЛред

рдЕрд░реНрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдордХреЛ рднрд╛рдЧ рдЖрдпреЛред рдХреЗрд╣реА рд╕рдорд╕реНрдпрд╛ рднрдП ред TTP223 рд╕реЗрдиреНрд╕рд░ рдЪрд┐рдкрд╣рд░реВрд▓реЗ рд╕реНрдерд┐рд░ 3.3V рдкрд╛рд╡рд░ рд╕рдкреНрд▓рд╛рдИрд╕рдБрдЧ рд░рд╛рдореНрд░реЛ рдХрд╛рдо рдЧрд░реНрдЫ рд░ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдбрд┐рд╕реНрдЪрд╛рд░реНрдЬ рдЧрд░рд┐рдПрдХреЛ рдмреНрдпрд╛рдЯреНрд░реАрдмрд╛рдЯ рд╕реАрдзреИ рдкрд╛рд╡рд░ рдЧрд░реНрджрд╛ рдзреЗрд░реИ рд░рд╛рдореНрд░реЛ рд╣реБрдБрджреИрди рднрдиреНрдиреЗ рдХреБрд░рд╛ рдкрддреНрддрд╛ рд▓рд╛рдЧреНрдпреЛред 2.5v рдХреЛ рд╡рд░рд┐рдкрд░рд┐ рдкрд╛рд╡рд░ рд╕рдкреНрд▓рд╛рдИрдХреЛ рд╕рд╛рде рдпрдиреНрддреНрд░ рд╕реБрд░реБ рдЧрд░реНрджрд╛, рд╕рд╛рдереИ Mysensors рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдг рдХрд╛рд░реНрдп рдЧрд░реНрджрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд "рдбреНрд░рдбрд╛рдЙрди" рдкрдЫрд┐, TTP223 рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрдХрд┐рдЯ (рдХреНрдпрд╛рд▓рд┐рдмреНрд░реЗрд╕рди рдкрдЫрд┐ рддреБрд░реБрдиреНрддреИ) рд▓реЗ MK рдХреЛ рдЕрд╡рд░реЛрдз рдирд┐рдореНрддреНрдпрд╛рдпреЛ рдХрд┐рдирднрдиреЗ рдпреЛ рд╕рдХреНрд░рд┐рдп рдЯреНрд░рд┐рдЧрд░рдХреЛ рд╕рд╛рде рдерд┐рдпреЛред

рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрдХрд┐рдЯрдорд╛ рдкрд╛рд╡рд░ рд╕рдкреНрд▓рд╛рдИ рд╕рд░реНрдХрд┐рдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ (gpio MK рдХреЛ рд╕рд╛рде рдкрд╛рд╡рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди TTP223), рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреНрд░рд╛рдЙрдиреНрдб рдЖрдкреВрд░реНрддрд┐ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рд░ рдЙрдЪреНрдЪ рдкреНрд░рддрд┐рд░реЛрдзрдХрд╛ рд╕рд╛рде рдкреНрд░рддрд┐рд░реЛрдзрдХрд╣рд░реВ rgb рд▓реЗрдб рд▓рд╛рдЗрдирд╣рд░реВрдорд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдЧрд░рд┐рдпреЛ (рдЬреБрди рдХреНрдпрд╛рдкреЗрд╕рд┐рдЯрд┐рд╡ рд╕реЗрдиреНрд╕рд░ рдмреЛрд░реНрдбрдХреЛ рдЕрд░реНрдХреЛ рдЫреЗрдЙрдорд╛ рдЪрд▓реНрдЫ)ред рдпреЛ рд╕рдлреНрдЯрд╡реЗрдпрд░рдорд╛ рдкрдирд┐ рдердкрд┐рдПрдХреЛ рдерд┐рдпреЛ: рдорд╛рдЗрд╕реЗрдиреНрд╕рд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реБрд░реБ рдЧрд░реЗрдкрдЫрд┐ рд░ рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдгрдХреЛ рдХрд╛рдо рдЧрд░реЗрдкрдЫрд┐ рдХреНрдпрд╛рдкреЗрд╕рд┐рдЯрд┐рд╡ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрдХрд┐рдЯрдХреЛ рд▓рд╛рдЧрд┐ рдкрд╛рд╡рд░рдХреЛ рд╕рдХреНрд░рд┐рдпрддрд╛ред рдкрд╛рд╡рд░ рд▓рд╛рдЧреВ рд╣реБрдБрджрд╛ TTP223 рдЪрд┐рдкрдХреЛ рд╕реНрд╡рдд: рдХреНрдпрд╛рд▓рд┐рдмреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ рдврд┐рд▓рд╛рдЗ рджреЛрдмреНрдмрд░ рдЧрд░рд┐рдПрдХреЛ рдЫред рдпреА рд╕рдмреИ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрд▓реЗ рдпрд╕ рд╕рдорд╕реНрдпрд╛рд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╣рдЯрд╛рдПред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛрдб рд╣реЗрд░реНрдиреБ рдЕрдШрд┐, рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ Mysensors рдорд╛ рд╕реНрдХреЗрдЪ рдХреЛ рдЖрдзрд╛рд░рднреВрдд рд╕рдВрд░рдЪрдирд╛ рд╕рдВрдЧ рдкрд░рд┐рдЪрд┐рдд рд╣реБрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫреБредvoid before()
{
// ╨Ф╨╛╨┐╨╛╨╗╨╜╨╕╤В╨╡╨╗╤М╨╜╨░╤П ╤Д╤Г╨╜╨║╤Ж╨╕╤П, ╨╡╤Б╨╗╨╕ ╤Б╤А╨░╨▓╨╜╨╕╨▓╨░╤В╤М ╤Б╨╛ ╤Б╤В╨░╨╜╨┤╨░╤А╤В╨╜╨╛╨╣ ╤Б╤В╤А╤Г╨║╤В╤Г╤А╨╛╨╣ ╨Р╤А╨┤╤Г╨╕╨╜╨╛ ╤Б╨║╨╡╤В╤З╨╡╨╣, ╤В╨╛ before() ╤Н╤В╨╛ ╨┐╨╛╨┤╨╛╨▒╨╕╨╡ setup(), ╨╛╤В╤А╨░╨▒╨╛╤В╨║╨░ ╨┐╤А╨╛╨╕╤Б╤Е╨╛╨┤╨╕╤В ╨┤╨╛ ╨╕╨╜╨╕╤Ж╨╕╨░╨╗╨╕╨╖╨░╤Ж╨╕╨╕ ╤В╤А╨░╨╜╤Б╨┐╨╛╤А╤В╨╜╨╛╨│╨╛ ╤Г╤А╨╛╨▓╨╜╤П Mysensors, ╤А╨╡╨║╨╛╨╝╨╡╨╜╨┤╤Г╨╡╤В╤Б╤П ╨╜╨░╨┐╤А╨╕╨╝╨╡╤А ╨┤╨╗╤П ╨╕╨╜╨╕╤Ж╨╕╨░╨╗╨╕╨╖╨░╤Ж╨╕╨╕ ╤Г╤Б╤В╤А╨╛╨╣╤Б╤В╨▓ SPI
}

void setup()
{

}

void presentation()
{
//╨в╤Г╤В ╨┐╤А╨╛╨╕╤Б╤Е╨╛╨┤╨╕╤В ╨┐╤А╨╡╨╖╨╡╨╜╤В╨░╤Ж╨╕╤П ╨╜╨╛╨┤╤Л ╨╕ ╨╡╨╡ ╤Б╨╡╨╜╤Б╨╛╤А╨╛╨▓ ╨╜╨░ ╨║╨╛╨╜╤В╤А╨╛╨╗╨╡╤А╨╡ ╤З╨╡╤А╨╡╨╖ ╨╝╨░╤А╤И╤А╤Г╤В╨╕╨╖╨░╤В╨╛╤А
sendSketchInfo("Name of my sensor node", "1.0"); // ╨┐╤А╨╡╨╖╨╡╨╜╤В╨░╤Ж╨╕╤П ╨╜╨░╨╖╨▓╨░╨╜╨╕╤П ╨╜╨╛╨┤╤Л, ╨▓╨╡╤А╤Б╨╕╨╕ ╨Я╨Ю
present(CHILD_ID, S_WHATEVER, "Description"); // ╨┐╤А╨╡╨╖╨╡╨╜╤В╨░╤Ж╨╕╤П ╤Б╨╡╨╜╤Б╨╛╤А╨╛╨▓ ╨╜╨╛╨┤╤Л, ╨╛╨┐╨╕╤Б╨░╨╜╨╕╤П ╤Б╨╡╨╜╤Б╨╛╤А╨╛╨▓
}

void loop()
{

}

рдЯрдЪ рд╕реНрд╡рд┐рдЪ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд░реАрдХреНрд╖рдг рдХреЛрдб:test_sens.ino
/**
╨в╨Х╨б╨в╨Ю╨Т╨л╨Щ ╨б╨Ъ╨Х╨в╨з ╨б╨Х╨Э╨б╨Ю╨а╨Э╨Ю╨У╨Ю ╨Т╨л╨Ъ╨Ы╨о╨з╨Р╨в╨Х╨Ы╨п ╨б ╨Я╨а╨Х╨а╨л╨Т╨Р╨Э╨Ш╨п╨Ь╨Ш ╨Э╨Р NRF_LPCOMP
*/
bool button_flag;
bool sens_flag;
bool send_flag;
bool detection;
bool nosleep;
byte timer;
unsigned long SLEEP_TIME = 21600000; //6 hours
unsigned long oldmillis;
unsigned long newmillis;
unsigned long interrupt_time;
unsigned long SLEEP_TIME_W;
uint16_t currentBatteryPercent;
uint16_t batteryVoltage = 0;
uint16_t battery_vcc_min = 2400;
uint16_t battery_vcc_max = 3000;

#define MY_RADIO_NRF5_ESB
//#define MY_PASSIVE_NODE
#define MY_NODE_ID 30
#define MY_PARENT_NODE_ID 0
#define MY_PARENT_NODE_IS_STATIC
#define MY_TRANSPORT_UPLINK_CHECK_DISABLED
#define IRT_PIN 3 //(PORT0, gpio 5)
#include <MySensors.h>
// see https://www.mysensors.org/download/serial_api_20
#define SENS_CHILD_ID 0
#define CHILD_ID_VOLT 254
MyMessage sensMsg(SENS_CHILD_ID, V_VAR1);
//MyMessage voltMsg(CHILD_ID_VOLT, V_VOLTAGE);

void preHwInit() {
sleep(2000);
pinMode(RED_LED, OUTPUT);
digitalWrite(RED_LED, HIGH);
pinMode(GREEN_LED, OUTPUT);
digitalWrite(GREEN_LED, HIGH);
pinMode(BLUE_LED, OUTPUT);
digitalWrite(BLUE_LED, HIGH);
pinMode(MODE_PIN, INPUT);
pinMode(SENS_PIN, INPUT);
}

void before()
{
NRF_POWER->DCDCEN = 1;
NRF_UART0->ENABLE = 0;
sleep(1000);
digitalWrite(BLUE_LED, LOW);
sleep(150);
digitalWrite(BLUE_LED, HIGH);
}

void presentation() {
sendSketchInfo("EFEKTA Sens 1CH Sensor", "1.1");
present(SENS_CHILD_ID, S_CUSTOM, "SWITCH STATUS");
//present(CHILD_ID_VOLT, S_MULTIMETER, "Battery");
}

void setup() {
digitalWrite(BLUE_LED, LOW);
sleep(100);
digitalWrite(BLUE_LED, HIGH);
sleep(200);
digitalWrite(BLUE_LED, LOW);
sleep(100);
digitalWrite(BLUE_LED, HIGH);
lpComp();
detection = false;
SLEEP_TIME_W = SLEEP_TIME;
pinMode(31, OUTPUT);
digitalWrite(31, HIGH);
/*
while (timer < 10) {
timer++;
digitalWrite(GREEN_LED, LOW);
wait(5);
digitalWrite(GREEN_LED, HIGH);
wait(500);
}
timer = 0;
*/
sleep(7000);
while (timer < 3) {
timer++;
digitalWrite(GREEN_LED, LOW);
sleep(15);
digitalWrite(GREEN_LED, HIGH);
sleep(85);
}
timer = 0;
sleep(1000);
}

void loop() {

if (detection) {
if (digitalRead(MODE_PIN) == 1 && button_flag == 0 && digitalRead(SENS_PIN) == 0) {
//back side button detection
button_flag = 1;
nosleep = 1;
}
if (digitalRead(MODE_PIN) == 1 && button_flag == 1 && digitalRead(SENS_PIN) == 0) {
digitalWrite(RED_LED, LOW);
wait(10);
digitalWrite(RED_LED, HIGH);
wait(50);
}
if (digitalRead(MODE_PIN) == 0 && button_flag == 1 && digitalRead(SENS_PIN) == 0) {
nosleep = 0;
button_flag = 0;
digitalWrite(RED_LED, HIGH);
lpComp_reset();
}

if (digitalRead(SENS_PIN) == 1 && sens_flag == 0 && digitalRead(MODE_PIN) == 0) {
//sens detection
sens_flag = 1;
nosleep = 1;
newmillis = millis();
interrupt_time = newmillis - oldmillis;
SLEEP_TIME_W = SLEEP_TIME_W - interrupt_time;
if (send(sensMsg.set(detection))) {
send_flag = 1;
}
}
if (digitalRead(SENS_PIN) == 1 && sens_flag == 1 && digitalRead(MODE_PIN) == 0) {
if (send_flag == 1) {
while (timer < 10) {
timer++;
digitalWrite(GREEN_LED, LOW);
wait(20);
digitalWrite(GREEN_LED, HIGH);
wait(30);
}
timer = 0;
} else {
while (timer < 10) {
timer++;
digitalWrite(RED_LED, LOW);
wait(20);
digitalWrite(RED_LED, HIGH);
wait(30);
}
timer = 0;
}
}
if (digitalRead(SENS_PIN) == 0 && sens_flag == 1 && digitalRead(MODE_PIN) == 0) {
sens_flag = 0;
nosleep = 0;
send_flag = 0;
digitalWrite(GREEN_LED, HIGH);
sleep(500);
lpComp_reset();
}
if (SLEEP_TIME_W < 60000) {
SLEEP_TIME_W = SLEEP_TIME;
sendBatteryStatus();
}
}
else {
//if (detection == -1) {
SLEEP_TIME_W = SLEEP_TIME;
sendBatteryStatus();
}
if (nosleep == 0) {
oldmillis = millis();
sleep(SLEEP_TIME_W);
}
}

void sendBatteryStatus() {
wait(20);
batteryVoltage = hwCPUVoltage();
wait(2);

if (batteryVoltage > battery_vcc_max) {
currentBatteryPercent = 100;
}
else if (batteryVoltage < battery_vcc_min) {
currentBatteryPercent = 0;
} else {
currentBatteryPercent = (100 * (batteryVoltage - battery_vcc_min)) / (battery_vcc_max - battery_vcc_min);
}

sendBatteryLevel(currentBatteryPercent, 1);
wait(2000, C_INTERNAL, I_BATTERY_LEVEL);
//send(powerMsg.set(batteryVoltage), 1);
//wait(2000, 1, V_VAR1);
}

void lpComp() {
NRF_LPCOMP->PSEL = IRT_PIN;
NRF_LPCOMP->ANADETECT = 1;
NRF_LPCOMP->INTENSET = B0100;
NRF_LPCOMP->ENABLE = 1;
NRF_LPCOMP->TASKS_START = 1;
NVIC_SetPriority(LPCOMP_IRQn, 15);
NVIC_ClearPendingIRQ(LPCOMP_IRQn);
NVIC_EnableIRQ(LPCOMP_IRQn);
}

void s_lpComp() {
if ((NRF_LPCOMP->ENABLE) && (NRF_LPCOMP->EVENTS_READY)) {
NRF_LPCOMP->INTENCLR = B0100;
}
}

void r_lpComp() {
NRF_LPCOMP->INTENSET = B0100;
}

#if __CORTEX_M == 0x04
#define NRF5_RESET_EVENT(event)
event = 0;
(void)event
#else
#define NRF5_RESET_EVENT(event) event = 0
#endif

extern "C" {
void LPCOMP_IRQHandler(void) {
detection = true;
NRF5_RESET_EVENT(NRF_LPCOMP->EVENTS_UP);
NRF_LPCOMP->EVENTS_UP = 0;
MY_HW_RTC->CC[0] = (MY_HW_RTC->COUNTER + 2);
}
}

void lpComp_reset () {
s_lpComp();
detection = false;
NRF_LPCOMP->EVENTS_UP = 0;
r_lpComp();
}

MyBoardNRF5.cpp
#ifdef MYBOARDNRF5
#include <variant.h>

/*
* Pins descriptions. Attributes are ignored by arduino-nrf5 variant.
* Definition taken from Arduino Primo Core with ordered ports
*/
const PinDescription g_APinDescription[]=
{
{ NOT_A_PORT, 0, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // LFCLK
{ NOT_A_PORT, 1, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // LFCLK
{ PORT0, 2, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A0, PWM4, NOT_ON_TIMER},
{ PORT0, 3, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A1, PWM5, NOT_ON_TIMER},
{ PORT0, 4, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A2, PWM6, NOT_ON_TIMER},
{ PORT0, 5, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A3, PWM7, NOT_ON_TIMER},
{ PORT0, 6, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT3
{ PORT0, 7, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT4
{ PORT0, 8, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM10, NOT_ON_TIMER}, //USER_LED
{ PORT0, 9, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // NFC1
{ PORT0, 10, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // NFC2
{ PORT0, 11, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // TX
{ PORT0, 12, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // RX
{ PORT0, 13, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // SDA
{ PORT0, 14, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // SCL
{ PORT0, 15, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // SDA1
{ PORT0, 16, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // SCL1
{ PORT0, 17, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // TP4
{ PORT0, 18, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // TP5
{ PORT0, 19, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT2
{ PORT0, 20, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT1
{ PORT0, 21, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT1
{ PORT0, 22, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM9, NOT_ON_TIMER},
{ PORT0, 23, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM8, NOT_ON_TIMER},
{ PORT0, 24, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER}, // INT
{ PORT0, 25, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM11, NOT_ON_TIMER}, //RED_LED
{ PORT0, 26, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM11, NOT_ON_TIMER}, //GREEN_LED
{ PORT0, 27, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM11, NOT_ON_TIMER}, //BLUE_LED
{ PORT0, 28, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A4, PWM3, NOT_ON_TIMER},
{ PORT0, 29, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A5, PWM2, NOT_ON_TIMER},
{ PORT0, 30, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A6, PWM1, NOT_ON_TIMER},
{ PORT0, 31, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_A7, PWM0, NOT_ON_TIMER}
};

// Don't remove this line
#include <compat_pin_mapping.h>

#endif

MyBoardNRF5.h
#ifndef _MYBOARDNRF5_H_
#define _MYBOARDNRF5_H_

#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus

// Number of pins defined in PinDescription array
#define PINS_COUNT (32u)
#define NUM_DIGITAL_PINS (32u)
#define NUM_ANALOG_INPUTS (8u)
#define NUM_ANALOG_OUTPUTS (8u)

/*
* LEDs
*
* This is optional
*
* With My Sensors, you can use
* hwPinMode() instead of pinMode()
* hwPinMode() allows to use advanced modes like OUTPUT_H0H1 to drive LEDs.
* https://github.com/mysensors/MySensors/blob/development/drivers/NRF5/nrf5_wiring_constants.h
*
*/
#define PIN_LED1 (16)
#define PIN_LED2 (15)
#define PIN_LED3 (17)
#define RED_LED (PIN_LED1)
#define GREEN_LED (PIN_LED2)
#define BLUE_LED (PIN_LED3)
#define INTERRUPT_PIN (5)
#define MODE_PIN (25)
#define SENS_PIN (27)

/*
* Analog ports
*
* If you change g_APinDescription, replace PIN_AIN0 with
* port numbers mapped by the g_APinDescription Array.
* You can add PIN_AIN0 to the g_APinDescription Array if
* you want provide analog ports MCU independed, you can add
* PIN_AIN0..PIN_AIN7 to your custom g_APinDescription Array
* defined in MyBoardNRF5.cpp
*/
static const uint8_t A0 = ADC_A0;
static const uint8_t A1 = ADC_A1;
static const uint8_t A2 = ADC_A2;
static const uint8_t A3 = ADC_A3;
static const uint8_t A4 = ADC_A4;
static const uint8_t A5 = ADC_A5;
static const uint8_t A6 = ADC_A6;
static const uint8_t A7 = ADC_A7;

/*
* Serial interfaces
*
* RX and TX are required.
* If you have no serial port, use unused pins
* CTS and RTS are optional.
*/
#define PIN_SERIAL_RX (11)
#define PIN_SERIAL_TX (12)

#ifdef __cplusplus
}
#endif

#endif

рд╕реНрд╡рд┐рдЪрдорд╛ рдЯрдЪ рдмрдЯрди рд░ рдЙрдкрдХрд░рдгрдХреЛ рдкрдЫрд╛рдбрд┐ рдПрдХ рдпреБрдХреНрддрд┐ рдмрдЯрди рдЫред рдпреЛ рдЯреНрдпрд╛рдХреНрдЯ рдмрдЯрди рд╕реЗрд╡рд╛ рдореЛрдб, рдУрднрд░-рдж-рдПрдпрд░ рдмрд╛рдЗрдиреНрдбрд┐рдЩ рдореЛрдб, рд░ рдЙрдкрдХрд░рдг рд░рд┐рд╕реЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫред рдмрдЯрдирдорд╛ рдЖрдЗрд░рди рдПрдиреНрдЯреА рдмрд╛рдЙрдиреНрд╕ рд╕реБрд╡рд┐рдзрд╛ рдЫред рдХреНрдпрд╛рдкреЗрд╕рд┐рдЯрд┐рд╡ рд╕реЗрдиреНрд╕рд░рдХреЛ рд▓рд╛рдЗрди рд░ рдЯреНрдпрд╛рдХреНрдЯ рдмрдЯрдирдХреЛ рд▓рд╛рдЗрди Schottky рдбрд╛рдпреЛрдбрд╣рд░реВ рдорд╛рд░реНрдлрдд рдЬреЛрдбрд┐рдПрдХреЛ рдЫ рд░ рдПрдирд╛рд▓рдЧ рдкрд┐рди p0.05 рдорд╛ рдЬрдбрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ рдХреНрдпрд╛рдкреЗрд╕рд┐рдЯрд┐рд╡ рд╕реЗрдиреНрд╕рд░ рд░ рдЯреНрдпрд╛рдХреНрдЯ рдмрдЯрдирдмрд╛рдЯ рдкрдирд┐ MK рдкрд┐рди p0.25 рд░ p0.27 рдорд╛ рд▓рд╛рдЗрдирд╣рд░реВ рдЫрдиреНред .0.05 рдкрд┐рди p0.05. XNUMX рдорд╛ рдЕрд╡рд░реЛрдз рд╕рдХреНрд░рд┐рдп рдЧрд░реЗрдкрдЫрд┐ рдЕрд╡рд╕реНрдерд╛рд╣рд░реВ рдкрдвреНрдирдХреЛ рд▓рд╛рдЧрд┐ред рдкрд┐рди pXNUMX рдорд╛, EVENTS_UP рдорд╛рд░реНрдлрдд рддреБрд▓рдирд╛рдХрд░реНрддрд╛ (NRF_LPCOMP) рдорд╛рд░реНрдлрдд рдЕрд╡рд░реЛрдз рд╕рдХреНрд░рд┐рдп рд╣реБрдиреНрдЫред рдореИрд▓реЗ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдкреНрд░реЗрд░рдгрд╛ рдкрд╛рдПрдБ рдпрд╣рд╛рдБ ╨╕ рдпрд╣рд╛рдБ.

рдпреЛ рд╕реНрд╡рд┐рдЪ Mysensors рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдердкрд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬреБрди рд╕реНрдорд╛рд░реНрдЯ рдШрд░ рдирд┐рдпрдиреНрддреНрд░рдХ Majordomo (рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛)

рд╕реНрдЯреЗрдЯрд╕рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐рдорд╛ рд╕реНрд╡рд┐рдЪ рдердкреНрдирдХреЛ рд▓рд╛рдЧрд┐ PHP рдХреЛрдб

if (getGlobal("MysensorsButton01.status")==1) {
if (getGlobal('MysensorsRelay04.status') == 0) {
setGlobal('MysensorsRelay04.status', '1');
} else if (getGlobal('MysensorsRelay04.status') == 1) {
setGlobal('MysensorsRelay04.status', '0');
} 
}

рдирддрд┐рдЬрд╛ рднрд┐рдбрд┐рдпреЛрдорд╛ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН

рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдкрдЫрд┐, рдмреВрд╕реНрдЯ рдХрдиреНрднрд░реНрдЯрд░рдХреЛ рд╕рд╛рде рдПрдХ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдЗрдПрдХреЛ рдерд┐рдпреЛ, рддрд░ рдпреЛ TTP223 рдХреНрдпрд╛рдкреЗрд╕рд┐рдЯрд┐рд╡ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрдХрд┐рдЯрдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫреИрди; рд╕рдореНрдкреВрд░реНрдг рдмреНрдпрд╛рдЯреНрд░реА рдЬреАрд╡рдирднрд░ рдХреБрдЮреНрдЬреАрд╣рд░реВ рдерд┐рдЪреНрджрд╛ рд░рд╛рдореНрд░реЛ рд░ рд╕рдорд╛рди рд░реЛрд╢рдиреАрдХреЛ рд▓рд╛рдЧрд┐ рдердк рдЗрдЪреНрдЫрд╛ рд╣реБрдиреНрдЫред

рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНрдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдкрд░рд┐рдпреЛрдЬрдирд╛ Github - github.com/smartboxchannel/EFEKTA_WIRELESS_TOUCH_SWITCH

рд░реВрд╕реА рднрд╛рд╖рд╛ рдмреЛрд▓реНрдиреЗ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╕рд╛рдЗрдЯ Mysensors

рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдЪреНрдпрд╛рдЯ Mysensors - рдорд╛рдИрд╕реЗрдиреНрд╕рд░рд╣рд░реВ, рд╕реБрдЭрд╛рд╡рд╣рд░реВ, рдЪрд╛рд▓рд╣рд░реВ, рдмреЛрд░реНрдбрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ, atmega 328, stm32, nRF5 рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░рд╣рд░реВрд╕рдБрдЧ Arduino IDE рдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рджреНрд░реБрдд рд╕рдорд╛рдзрд╛рдиред @mysensors_rus

рдХреЗрд╣реА рддрд╕реНрдмрд┐рд░рд╣рд░реВрдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдЕрддрд┐рд░рд┐рдХреНрдд рдлреНрд▓реЛрд░реЛрд╕реЗрдиреНрдЯ рдмреНрдпрд╛рдХрд▓рд╛рдЗрдЯрдХреЛ рд╕рд╛рде рд╡рд╛рдпрд░рд▓реЗрд╕ рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди