AudioSwitcher - рдХреНрдпрд╛ рдСрдЯреЛрдореЗрд╢рди рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрдЧреА рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рди


рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдореЗрд░реЗ рдкрд╛рд╕ рдШрд░ рдкрд░ рдЕрдЪреНрдЫреЗ рд╕реЛрд╡рд┐рдпрдд рд╕реНрдкреАрдХрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреБрдЫ рд╕реЗрдЯ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рддрдХрдиреАрдХ рдХрд╛рдлреА рдкреБрд░рд╛рдиреА рд╣реИ рдФрд░ рдмрд╕ рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рд╕реЗ рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд▓рдЧрд╛рддрд╛рд░ рдзреНрд╡рдирд┐ рдПрдореНрдкрд▓реАрдлрд╛рдпрд░ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЖрд▓рд╕реА рдкрд░ / рдмрдВрдж рдХрд░реЗрдВред рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Arduino рдХреЛ рдЦрд░реАрджрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрд╕ рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрд░реЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рдереА рдФрд░ STM32F103C8 рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдирддреАрдЬрддрди, рдореБрдЭреЗ рдПрдХ рдЙрдкрдХрд░рдг рдорд┐рд▓рд╛ рдЬрд┐рд╕рдореЗрдВ 4 рдСрдбрд┐рдпреЛ рдЗрдирдкреБрдЯ, 1 рдСрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ, 220V рдЗрдирдкреБрдЯ рдФрд░ 220V рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВред рдпрджрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рдХреНрд░рд┐рдп рдСрдбрд┐рдпреЛ рдЗрдирдкреБрдЯ рд╣реИ, рддреЛ 220V рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдПрдХ рд╡реЛрд▓реНрдЯреЗрдЬ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдзреНрд╡рдирд┐ рдПрдореНрдкрд▓реАрдлрд╛рдпрд░ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдФрд░ рд╕рдХреНрд░рд┐рдп рдСрдбрд┐рдпреЛ рдЪреИрдирд▓ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рд╡рд┐рдХрд╛рд╕ рдХреА рдЪреБрдиреМрддрд┐рдпрд╛рдБ


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

рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХреИрд╕реЗ рдХрд░реЗрдВ?


рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рд▓рд╛рдЧрдд рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд╕реНрдерд╛рди рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:

  • рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб
  • рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ ST-Link v2
  • 1 рдЪрд┐рдк STM32f103C8
  • 4 рдЗрдирдкреБрдЯ рдСрдбрд┐рдпреЛ рдЪреИрдирд▓ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реЗ рдХрд░рддрд╛ рд╣реИ
  • рдПрдореНрдкрд▓реАрдлрд╛рдпрд░ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 220 рд╡реА рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 1 рд░рд┐рд▓реЗ
  • AC-DC рд╣рд┐рд░рди рдХрдиреНрд╡рд░реНрдЯрд░ 220V - 5V (рдкреБрд░рд╛рдиреЗ рдлреЛрди рдЪрд╛рд░реНрдЬ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
  • рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдПрдореНрдкрд▓реАрдлрд╛рдпрд░ рдХреЛ рдХрд░рдВрдЯ рд╕рдкреНрд▓рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрди рдХреЗрдмрд▓ рдФрд░ рдХрдиреЗрдХреНрдЯрд░
  • рд╕реЙрдХреЗрдЯ
  • рдкреНрд░рддрд┐рд░реЛрдз, рдХреИрдкреЗрд╕рд┐рдЯрд░ рдФрд░ рдЕрдиреНрдп рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдореЗрдВ рдЬреИрдХ рдХреЗ рд╕рд╛рде рдСрдбрд┐рдпреЛ рддрд╛рд░реЛрдВ рдФрд░ рдПрдХ рдорд┐рдиреАрдЬреИрдХ рдкреНрд▓рдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдореИрдВ рд░рд┐рд▓реЗ рдХреА рдкрд╕рдВрдж рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ ... рдпрджрд┐ 220 рд╡реА рд░рд┐рд▓реЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдпрд╣ 220 рд╡реА рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡реЛрд▓реНрдЯреЗрдЬ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ 3.3 рд╡реА рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдзреНрд╡рдирд┐ рд░рд┐рд▓реЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рд╣рд░ рд░рд┐рд▓реЗ рдирд╣реАрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдареЛрд╕-рд░рд╛рдЬреНрдп рднреА, рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рджреЗрдЧрд╛, рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдореИрдВ рдорд┐рдиреНрд╕реНрдХ рдореЗрдВ рд░рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдХреБрдЫ рднреА рдЙрдкрдпреБрдХреНрдд рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рдХреАрдордд рдкрд░ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдЪреАрдиреА рд╕реНрдЯреЛрд░ рд╕реЗ 4 рдкреАрд╡реАрдЯреА 322 рдП рд░рд┐рд▓реЗ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╢рд╛рдпрдж рдЕрдкрдиреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрдк рдХреБрдЫ рд╕рд╕реНрддрд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрдХреАрдо рдФрд░ рд╡рд╛рдпрд░рд┐рдВрдЧ


рдЬрдм рд╕реЗ рд╣рдордиреЗ рд╢реБрд░реБрдЖрдд рдХреА рд╣реИ, рд╣рдо рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред рдЙрд╕ рдЖрд░реЗрдЦ рдореЗрдВ, рдЬрд┐рд╕реЗ рдЖрдк рдИрдЧрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рднрдВрдбрд╛рд░ рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд░рд┐рд▓реЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди-рд╕реАрдорд┐рдд рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ (R4-7) рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ 30 рдУрдо рд╣реИред рдПрдХ рдПрд▓ 1 рдХреЙрдЗрд▓ рднреА рд╣реИ: рдХреЛрдИ рднреА рдлрд╝рд┐рд▓реНрдЯрд░ рдЪреБрдиреЗрдВ рдЬреЛ рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐ рд╢реЛрд░ рдХреЛ рд╕реБрдЪрд╛рд░реВ рдХрд░рддрд╛ рд╣реИред

рдЖрдк PCBWAY рдпрд╛ JLCPCB рдкрд░ рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб рдХрд╛ рдЖрджреЗрд╢ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХреА рдХреАрдорддреЗрдВ рдХрдо рд╣реИрдВ, рдореИрдВрдиреЗ JLCPCB рд╕реЗ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдХреЗрд╡рд▓ $ 2 рдХрд╛ рдмрд┐рд▓ рджрд┐рдпрд╛ред рдореБрджреНрд░рд┐рдд рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб рдХрд╛ рдЖрджреЗрд╢ рджреЗрддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЧреЗрд░рдмрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЖрдк рдПрдХ рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╕рдм рдХреБрдЫ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЪрд▓реЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рднрд╛рдЧ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ


рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдмреЗрд╣рдж рд╕реБрд▓рдн рд╣реИрдВред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕рд░реНрдХрд┐рдЯ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ Visual Studio 2017 + VisualGDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЙрд╕реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж , рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред рддреБрд░рдВрдд Settings.cpp рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЪрд╛рд▓реВ рдХрд░реЗрдВред

Settings.cpp
#define DEBUG0 0//init USART and send all measurement values #define DEBUG1 1//init USART and send information about recognition music or not #define DEBUG2 0//just init USART #define MaxEqualToZeroValue 3 //the value which equal or less is equated to zero #define MaxAvarageForNoise (float)0.4//this is max avarage of measurement values so that the sound is considered noise for NOT active channel #define MaxAvarageForActiveNoise (float)0.06//this is max avarage of measurement values so that the sound is considered noise for active channel #define CountOfConsecutiveZeroValueForNoise 250//if count of consecutive zero values bugger it that sound is equated to noise #define MinCountOfZeroValue 550//it's minimum count of zero values to equate to music(not consecutive) #define USE_LED 1 #define LED_GPIO_PERIPH RCC_APB2Periph_GPIOC #define LED_GPIO_GROUP GPIOC #define LED_GPIO_PIN GPIO_Pin_13 #define USE_AMP 1 #define AMP_GPIO_PERIPH RCC_APB2Periph_GPIOB #define AMP_GPIO_GROUP GPIOB #define AMP_GPIO_PIN GPIO_Pin_12 


рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рд╡реИрд╕реЗ рднреА рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдЯрд┐рдВрдЧ рдкрд░ рд░реБрдХреЗрдВрдЧреЗред

 #define DEBUG0 0 #define DEBUG1 1 #define DEBUG2 0 

рдпрджрд┐ рд╣рдо DEBUG0 рдХреЛ рдПрдХ рдЗрдХрд╛рдИ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░рд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреБрдЫ рднреА рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдСрдбрд┐рдпреЛ рдЗрдирдкреБрдЯреНрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдорд╛рдиреЛрдВ рдХреЛ рдПрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ SerialPortPlotter UART рджреНрд╡рд╛рд░рд╛ "рдбрд╛рдЗрдЬреЗрд╕реНрдЯ" рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

DEBUG2 рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ UART рдХрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рджреЗрдЧрд╛ред рдЕрдЧрд░ рдЖрдкрдХреЛ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ, рддреЛ :-)

 #define MaxEqualToZeroValue 3 

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

 #define MaxAvarageForNoise (float)0.4 

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

 #define MaxAvarageForActiveNoise (float)0.06 

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

 #define CountOfConsecutiveZeroValueForNoise 250 

рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реАрдкреАрдпреВ рдЦрдкрдд рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рд╣реИред рдпрджрд┐ рдЙрдкрдХрд░рдг рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдХреЗрдд рдзреНрд╡рдирд┐ рдирд╣реАрдВ рд╣реИред

 #define MinCountOfZeroValue 550 

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

 #define USE_LED 1 #define LED_GPIO_PERIPH RCC_APB2Periph_GPIOC #define LED_GPIO_GROUP GPIOC #define LED_GPIO_PIN GPIO_Pin_13 #define USE_AMP 1 #define AMP_GPIO_PERIPH RCC_APB2Periph_GPIOB #define AMP_GPIO_GROUP GPIOB #define AMP_GPIO_PIN GPIO_Pin_12 

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

рдЪрд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:

рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ main.cpp рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдХрд░
 int main() 
рдЖрдкрдХреЛ рдЪрд░ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреА рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдорд┐рд▓реЗрдЧреАред

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

 const uint8_t channelsCount = 2; 

рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдСрдбрд┐рдпреЛ рдЗрдирдкреБрдЯ рдЪреИрдирд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред

 const uint8_t countOfIterationsForSwitch = 5; 

рд╕рдХреНрд░рд┐рдп / рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдорд╛рдк рдЪрдХреНрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ред

 const uint8_t ADCSampleTime = ADC_SampleTime_239Cycles5; 

рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдк рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпрд╣ рдЕрдзрд┐рдХрддрдо рдкрд░ рд╕реЗрдЯ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреЗрддрд╛ред

 const uint16_t measurementsDuration = 2000; 

рдпрд╣ рдПрдордПрд╕ рдореЗрдВ рд╡рд╣ рд╕рдордп рд╣реИ рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рдПрдХ рдорд╛рдк рдЪрдХреНрд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

 const uint32_t measurementFrequencies[] = { 1000, 1000, 1000, 1000 }; 

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

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


рдЦреИрд░, рдпрд╣ рд╕рдм рд╣реИред рдореИрдВрдиреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╕рд░реНрдХрд┐рдЯ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ, рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рдЖрдирдиреНрдж рдореЗрдВ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред

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


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


рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИ, рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдЖрд▓реЛрдЪрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдХреГрддрд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХреАред

рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

UPD1: рд▓реЗрдЦ рдореЗрдВ рдпреЛрдЬрдирд╛рдмрджреНрдз рдФрд░ рддрд╛рд░реЛрдВ рд╡рд╛рд▓реА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред

UPD2: рднрдВрдбрд╛рд░ рдореЗрдВ рдпреЛрдЬрдирд╛рдмрджреНрдз рдФрд░ рддрд╛рд░реЛрдВ рд╡рд╛рд▓реА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдХреЛрдб рдореЗрдВ рдирдИ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реА рдЧрдИрдВред

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


All Articles