
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореМрд╕рдо рдерд░реНрдорд╛рдореАрдЯрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд╕реВрдЪрдирд╛ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рдгрд╛рд▓реА, рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИрдмреЗрд░рд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рджреЛрдиреЛрдВ рд╡рд╛рдпрд░реНрдб, рдИрдерд░рдиреЗрдЯ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рд╡рд╛рдИрдлрд╛рдИ тДв рдкрд░ рд╡рд╛рдпрд░рд▓реЗрд╕ред рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ - рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╣реИ, рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рд╣реИрдВред рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рдПрдХ рдФрд░ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ - 868 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреЗ рдЖрдИрдПрд╕рдПрдо рдмреИрдВрдб рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рдиред
рд░реВрд╕реА рд╕рдВрдШ рдореЗрдВ, рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдмрд┐рдирд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╡рд╛рд▓реА рд╕реАрдорд╛ рдЬреЛ рдХрд┐ рд░реЗрдбрд┐рдпреЛ рдлреНрд░реАрдХреНрд╡реЗрдВрд╕реА рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреНрдп рд╕рдорд┐рддрд┐ рд╕реЗ рдЕрдиреБрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдмреИрдВрдбрд╡рд┐рдбреНрде, рд╡рд┐рдХреАрд░реНрдг рд╢рдХреНрддрд┐ рдФрд░ рддреИрдпрд╛рд░ рдЙрддреНрдкрд╛рдж рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- 433.075-434.750 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ
- 868.0-868.2 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ
- 868.7-869.2 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ
- 2400.0-2483.5 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, 434 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рд╢рдХреНрддрд┐ 10 mW рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, 868.0-868.2 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреЗ рд▓рд┐рдП - 10 mW рддрдХ, 868.7-869.2 MHz рдХреЗ рд▓рд┐рдП - 25 mW рддрдХ, 2.4 GHz рдХреЗ рд▓рд┐рдП - 100 mW рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВред
12 рдЕрдХреНрдЯреВрдмрд░, 2004 рдПрди 539 рдХреЗ рд░реВрд╕реА рд╕рдВрдШ рдХреА рд╕рд░рдХрд╛рд░ рдХреЗ "
рдлрд░рдорд╛рди " рдореЗрдВ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ "
рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ ред"
рдЗрди рдЖрдИрдПрд╕рдПрдо рдмреИрдВрдб рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рд╡рд┐рдХрд┐рд░рдг рдХреА рдЖрд╡реГрддреНрддрд┐ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд░реЗрдбрд┐рдпреЛ рддрд░рдВрдЧреЛрдВ рдХреЗ рдЧреБрдгред рдХрд╛рд░реНрдп рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ - рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣, рд╡рд╛рдпрд░рд▓реЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА, рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рди 868 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдмреИрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред 2.4 GHz рдорд╛рдЗрдХреНрд░реЛрд╡реЗрд╡ рд░реЗрдВрдЬ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, 868 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рд▓рдВрдмреА рддрд░рдВрдЧ рджреИрд░реНрдзреНрдп рдореЗрдВ рдХреНрд░рдорд╢рдГ рдХреНрд╖реАрдгрди рдХреА рддреАрд╡реНрд░рддрд╛ рдХрдо рд╣реЛрддреА рд╣реИ, рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдзрд┐рдХ рдкрд╛рд░рдЧрдореНрдпрддрд╛ рдФрд░ рд╕рд┐рдЧреНрдирд▓ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рд░реЗрдВрдЬ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ 89 рдорд┐рдореА рдореЛрдЯреА рдИрдВрдЯ рдХреА рджреАрд╡рд╛рд░ 868 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреЗ 3.5 рдбреАрдмреА рдФрд░ 2.4 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреЗ 6 рдбреАрдмреА рдХреЛ рдЕрд╡рд╢реЛрд╖рд┐рдд рдХрд░рддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, 433 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд░реЗрдВрдЬ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ, 868 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдореЗрдВ рдХрдо рдЖрд╡реГрддреНрддрд┐ рднрд╛рд░ рд╣реИ, рдЬреЛ рд░реЗрдбрд┐рдпреЛ рдЪреИрдирд▓ рдХреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИред
рдПрдХ рдмрд╛рдзрд╛ рдХреА рдЕрдзрд┐рдХрддрдо рдореЛрдЯрд╛рдИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд░реЗрдбрд┐рдпреЛ рд╕рд┐рдЧреНрдирд▓ рдЧреБрдЬрд░ рд╕рдХрддрд╛ рд╣реИ |
рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ | рдИрдВрдЯ рдХреА рджреАрд╡рд╛рд░, рдореА | рдареЛрд╕, рдПрдоред |
434 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ | 4.3 | 0.47 |
868 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ | 2.18 | 0.24 |
реи.рек рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬрд╝ | 0.78 | 0.09 |
рдЕрдЧрд▓реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдбреЗрдЯрд╛ рджрд░ рд╣реИред рдЖрдзреБрдирд┐рдХ рдЖрдИрдПрд╕рдПрдо рдЯреНрд░рд╛рдВрд╕рд╕реАрд╡рд░реНрд╕ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд╛рдлреА рдЙрдЪреНрдЪ рд╣реИ, рдФрд╕рддрди рдпрд╣ рдорд╛рди 256 рд╕реЗ 1000 рдХреЗрдмрд┐рдЯ / рд╕реЗрдХрдВрдб рддрдХ рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрд╡реГрддреНрддрд┐ рд░реЗрдВрдЬ рдореЗрдВ рдЙрдЪреНрдЪ рдкрд╛рд░рдЧрдореНрдпрддрд╛, рдХрдо рднреАрдбрд╝ рдФрд░ рдРрд╕реЗ рд╣реА рдЙрдЪреНрдЪ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рджрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдХреБрд▓ рдореЗрдВ, 868 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд░реЗрдбрд┐рдпреЛ рддрд░рдВрдЧреЗрдВ рдЖрдИрдПрд╕рдПрдо рд░реЗрдВрдЬ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рди рд╣реИрдВред
рдЖрдИрдПрд╕рдПрдо рд░реЗрдВрдЬ рдореЗрдВ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд░рд┐рдореЛрдЯ рд╕реЗрдВрд╕рд░ рд╕реЗ рд░реАрдбрд┐рдВрдЧ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВрдЧреЗред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдпрд╣ рддрд╛рдкрдорд╛рди рдФрд░ рдЖрд░реНрджреНрд░рддрд╛ рд╣реЛрдЧрд╛ред рдпрд╛рдиреА рд╣рдореЗрдВ 2 рд░рд┐рдХреНрддрд┐ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдкрд╣рд▓рд╛ рд╣реЗрдб рдпреВрдирд┐рдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рд╛рд░рд╛рдВрд╢ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ - рд╕реЗрдВрд╕рд░, рд╕рдордп-рд╕рдордп рдкрд░ рдорд╛рдк рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╣реЗрдб рдпреВрдирд┐рдЯ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛрдиреЛрдВ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдорд╛рд░рддреЛрдВ рдореЗрдВ рджреГрд╖реНрдЯрд┐ рдХреА рд░реЗрдЦрд╛ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рдордВрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдЖрдкрдХреЛ 868 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд░реЗрдбрд┐рдпреЛ рдЪреИрдирд▓ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╣рдо рдПрдХ
рд╣рдорд┐рдВрдЧрдмрд░реНрдб (Arduino Mini + RF) рд╕реНрдХрд╛рд░реНрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ -8 рд╕реЗ + 13dbM рддрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпреЛрдЧреНрдп рдЖрдЙрдЯрдкреБрдЯ рдкрд╛рд╡рд░ рдХреЗ рд╕рд╛рде EZRadioPRO Si4431 рдЯреНрд░рд╛рдВрд╕реАрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ SCRF (20 mW) рдХреЗ рдорд╛рдирджрдВрдбреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред 3dbM рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░рдгред рд░рд┐рд╕реАрд╡рд░ рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛ -121 рдбреАрдмреАрдПрдоред рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд 18.5 mA рдкреНрд░рддрд┐ рд░рд┐рд╕реЗрдкреНрд╢рди рдФрд░ 30 mA рдкреНрд░рддрд┐ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рд╣реИред 5 рдпрд╛ 3.3V рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдмреЛрд░реНрдб рдкрд╛рд╡рд░ред рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рджрд░ 0.123 - 256 рдХреЗрдмреАрдкреАрдПрд╕ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреЛрд░реНрдб Arduino IDE рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
рд╕рд░реНрдХрд┐рдЯ рдЖрд░реЗрдЦ ред
рдЖрд░реНрджреНрд░рддрд╛ рдФрд░ рддрд╛рдкрдорд╛рди рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдбрд┐рдЬрд┐рдЯрд▓ рд╕реЗрдВрд╕рд░
SHT10 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХрд╛рдлреА рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдиреНрдпреВрдирддрдо рд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рддрд╛рдкрдорд╛рди рд░реАрдбрд┐рдВрдЧ рдХреЛ рдорд╛рдкрдиреЗ рдХреА рд╕рдЯреАрдХрддрд╛ of 0.5 тДГ, рдФрд░ рдЖрд░реНрджреНрд░рддрд╛ 4.5% рд╣реИред
рджрд╛рддрд╛рд╢реАрдЯ ред
рд╣реЗрдб рдпреВрдирд┐рдЯ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо 128 * 64 рдкрд┐рдХреНрд╕реЗрд▓ (
WG12864A-TGH-VNW ) рдХреЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓рд╕реАрдбреА рд▓реЗрддреЗ рд╣реИрдВред рдмреИрдХрд▓рд╛рдЗрдЯ рд╕рдлреЗрдж рд╣реИ, рдбреЙрдЯ рдХрд╛ рд░рдВрдЧ рдЧреНрд░реЗ рд╣реИред рдФрд░, рдЗрд╕рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдХреЗ рддрд╣рдд рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рднреА рдкрд┐рдиреЛрдВ рдкрд░ рдХрдмреНрдЬрд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ
MCP23S17 рдорд╛рдЗрдХреНрд░реЛрдХреНрд░реЗрд╕реАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ SPI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
рдЬреЛрдбрд╝реЗрдВрдЧреЗ ред рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдФрд░ рдмрд╛рдж рдореЗрдВред
рдкреНрд░рдореБрдЦ рдкреНрд░рдгрд╛рд▓реА рдШрдЯрдХ |
рд╣реЗрдб рдпреВрдирд┐рдЯ рдХреЗ рд▓рд┐рдП | рд░рд┐рдореЛрдЯ рд╕реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП |
"рдЖрдпрд░рди" |
- рд╣рдорд┐рдВрдЧрдмрд░реНрдб - 1 рдкреАрд╕реАред
- рдПрд▓рд╕реАрдбреА рдбрд┐рд╕реНрдкреНрд▓реЗ - 1 рдкреАрд╕реАред
- рд╡рд┐рдХрд╛рд╕ рдмреЛрд░реНрдб - 1 рдкреАрд╕реАред
- рдЪрд┐рдк MCP23S17 - 1 рдкреАрд╕реАред
- 5 рд╡реА рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ - 1 рдкреАрд╕реАред
- рдХреЛрдбрд╝рд╛ рдПрдВрдЯреАрдирд╛ - 1 рдкреАрд╕реАред
| - рд╣рдорд┐рдВрдЧрдмрд░реНрдб - 1 рдкреАрд╕реАред
- SHT10 - 1 рдкреАрд╕реАред
- рд╡рд┐рдХрд╛рд╕ рдмреЛрд░реНрдб - 1 рдкреАрд╕реАред
- 2AA рдмреИрдЯрд░реА рдХрдореНрдкрд╛рд░реНрдЯрдореЗрдВрдЯ - 1 рдкреАрд╕реАред
- 1.5 рд╡реА рдПрдП рдмреИрдЯрд░реА - 2 рдкреАрд╕реАред
- рдХреЛрдбрд╝рд╛ рдПрдВрдЯреАрдирд╛ - 1 рдкреАрд╕реАред
|
рдореБрд▓рд╛рдпрдо |
| |
рдкреНрд░рдзрд╛рди рдЗрдХрд╛рдИ
1. рдЕрд╕реЗрдореНрдмрд▓реА
рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╣реЗрдб рдпреВрдирд┐рдЯ рдХреЗ рдПрдХ рдЖрд░реЗрдЦ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВрдЧреЗред
рд╣реЗрдб рдпреВрдирд┐рдЯ рдореЗрдВ рдПрдХ рд╣рдорд┐рдВрдЧрдмрд░реНрдб рдмреЛрд░реНрдб рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ рдЬреЛ рдПрд▓рд╕реАрдбреА рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдПрдордкреАрд╕реА 23 рдПрд╕ 17 рдЪрд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрд╕рдкреАрдЖрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрд▓рд╕реАрдбреА рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рд╣рдо рдЗрд╕ рд╕рд░реНрдХрд┐рдЯ рдХреЛ рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдкрд░ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВрдЧреЗред рдиреАрд▓реА рд░реЗрдЦрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдирд┐рд╖реНрдХрд░реНрд╖ рд╣рдорд┐рдВрдЧрдмрд░реНрдб рдмреЛрд░реНрдб рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВ - рдпреЗ рдбрд┐рдЬрд┐рдЯрд▓ рд╕рдВрдкрд░реНрдХ 10, 11, 12, 13 (рдПрд╕рдкреАрдЖрдИ) рд╣реИрдВред рдпрд╣ рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдФрд░ рдЪрд┐рдбрд╝рд┐рдпреЛрдВ рдХреЛ 5V рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдпрд╛ рддреЛ рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ "рдИрдорд╛рдирджрд╛рд░" 5 рд╡реА, рдпрд╛ рдПрдХ рд░реИрдЦрд┐рдХ рд╕реНрдЯреЗрдмрд▓рд╛рдЗрдЬрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред

2. рдлрд░реНрдорд╡реЗрдпрд░
рд╣рдорд┐рдВрдЧрдмрд░реНрдб рдмреЛрд░реНрдб рдХреЗ рд░реЗрдбрд┐рдпреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Arduino IDE рдХреЗ рддрд╣рдд рддреИрдпрд╛рд░ EZRadioPRO рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕реЗ IDE рдХреЗ рдЕрдВрджрд░ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрд▓рд╕реАрдбреА рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ I2C_graphical_LCD_display рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕реЗ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╣рдо Arduino IDE рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╕реНрдХреЗрдЪ рдмрдирд╛рддреЗ рд╣реИрдВред#include <SI4431.h> #include "SimRF.h" #include <Wire.h> #include <SPI.h> #include <I2C_graphical_LCD_display.h> I2C_graphical_LCD_display lcd; // (0 ) #define LOCAL_ADDR (0) // 1: #define RF_FUNC01 (1) // 2: #define RF_FUNC02 (2) // unsigned char RFTX_buffer[32]; // unsigned char RFRX_buffer[32]; char i2a_buf[6]; /* 4- 16- */ typedef struct { u16 Register0; u16 Register1; u16 Register2; u16 Register3; } tRemoteSensor; tRemoteSensor RemoteSensorStatus[2]; // 1 2 tRemoteSensor RemoteSensorCmd[2]; // 1 2 void print_P (const char* s) { char c; while ((c = pgm_read_byte(s++)) != 0) Serial.print(c); } u8 get_xor(u8* Src, u8 len) { u8 xoracc = 0; while (len--) { xoracc ^= *Src++; } return xoracc; } // 02 RemoteSensorCmd[]; void RFTX_FUNC02(u8 addr) { RemoteSensorCmd[addr -1].Register0 = RemoteSensorStatus[addr -1].Register0; RemoteSensorCmd[addr -1].Register1 = RemoteSensorStatus[addr -1].Register1; RemoteSensorCmd[addr -1].Register2 = RemoteSensorStatus[addr -1].Register2; RemoteSensorCmd[addr -1].Register3 = RemoteSensorStatus[addr -1].Register3; RFTX_buffer[0] = addr; // RFTX_buffer[1] = LOCAL_ADDR; // RFTX_buffer[2] = RF_FUNC02; // 02 u16* p16 = (u16*) &RFTX_buffer[3]; *p16++ = RemoteSensorCmd[addr -1].Register0; *p16++ = RemoteSensorCmd[addr -1].Register1; *p16++ = RemoteSensorCmd[addr -1].Register2; *p16++ = RemoteSensorCmd[addr -1].Register3; // RFTX_buffer[11] = get_xor ((u8*)RFTX_buffer, 11); // /*print_P(PSTR("\r\nData to TX: ")); for (u8 i = 0; i< 12; i++) { Serial.print((u8)RFTX_buffer[i], HEX); print_P(PSTR(",")); }*/ SI4431.TXData((u8*) RFTX_buffer, 12); } void RFRX_FUNC01(u8 SlaveAddr, u16* Payload) { RemoteSensorStatus [SlaveAddr - 1].Register0 = *Payload++; RemoteSensorStatus [SlaveAddr - 1].Register1 = *Payload++; RemoteSensorStatus [SlaveAddr - 1].Register2 = *Payload++; RemoteSensorStatus [SlaveAddr - 1].Register3 = *Payload++; } /** * : * addr - * len - * pData - SRAM * : * (0..127) * -1 */ void RFRX_MASTER_PROCESS(u8 len) { s8 funccode; u8 SlaveAddr; // if (len < 3) return; //print_P(PSTR("\r\n Dump:")); /*for (u8 i = 0; i< len; i++) { Serial.print(RFRX_buffer[i], HEX); print_P(PSTR(",")); i2a((u16)RFRX_buffer[i], i2a_buf); lcd.string(i2a_buf); lcd.string("-"); } */ SlaveAddr = RFRX_buffer[1]; // if ((RFRX_buffer[0] == LOCAL_ADDR)&&(SlaveAddr != LOCAL_ADDR)) { // MASTER SLAVE ( >= 1) // XOR // print_P(PSTR("\r\n Correct Addr!")); if (get_xor((u8*)RFRX_buffer, len - 1) == (u8) RFRX_buffer[len-1]) { funccode = RFRX_buffer[2]; // switch (funccode) { case RF_FUNC01: { // //print_P(PSTR("\r\nData from sensor: ")); //Serial.print(SlaveAddr, HEX); tRemoteSensor* pSensorData = (tRemoteSensor*)&RFRX_buffer[3]; // // s16 Temperature_x100 = (s16) (pSensorData-> Register0); u16 Humidity_x100 = pSensorData-> Register1; u16 Data1 = pSensorData-> Register2; u16 Data2 = pSensorData-> Register3; // lcd.gotoxy (0, 16); lcd.string("Temperature: "); lcd.gotoxy (80, 16); if (Temperature_x100 < 0) { lcd.string("-"); Temperature_x100 = -Temperature_x100;// } u16 Temp = Temperature_x100 / 100; // i2a(Temp, i2a_buf); showString(i2a_buf); //lcd.string(i2a_buf); showString("."); i2a(Temperature_x100 - Temp * 100, i2a_buf); // showString(i2a_buf); lcd.string("C "); // lcd.gotoxy (0, 32); lcd.string("Humidity: "); lcd.gotoxy (80, 32); Temp = Humidity_x100 / 100; i2a(Temp, i2a_buf); showString(i2a_buf); showString("."); i2a(Humidity_x100 - Temp * 100, i2a_buf); showString(i2a_buf); lcd.string("% "); // //i2a(Data, i2a_buf); //lcd.string(i2a_buf); // 01 02 if (SlaveAddr <= 0x02) { RFRX_FUNC01(SlaveAddr, (u16*) &RFRX_buffer[3]); } // 500 delay (500); // 02 RFTX_FUNC02(SlaveAddr); } break; case RF_FUNC02: { // // - , print_P(PSTR("\r\nACK from sensor:")); Serial.print(SlaveAddr, HEX); } break; default: break; } } else print_P(PSTR("\r\n XOR error!")); } else print_P(PSTR("\r\n ADDR error!")); } // 01 void RFRX_RESP_FUNC02(t_cmd_servo* pcmd_servo) { s16 POS1, POS2, POS3, POS4; POS1 = pcmd_servo->POS1; POS2 = pcmd_servo->POS2; POS3 = pcmd_servo->POS3; POS4 = pcmd_servo->POS4; /*print_P(PSTR("\r\nServo function response OK!")); print_P(PSTR("\r\nPOS1:")); Serial.print(POS1, HEX); Serial.print(POS2, HEX); Serial.print(POS3, HEX); Serial.print(POS4, HEX); */ } void setup(){ u8 ItStatus1, ItStatus2; lcd.begin(0x20, 0, 10); Serial.begin(38400); u8 length; u8 temp8; delay (1000); SI4431.begin(); // , SPI /*for (u8 reg = 0; reg <=0x7f; reg++) { print_P(PSTR("\r\nReg:")); u8 c = SI4431.ReadRegister(reg); Serial.print(reg, HEX); print_P(PSTR(", ")); Serial.print(c, HEX); }*/ SI4431.Init(7); lcd.gotoxy(36, 0); lcd.string("I'm Ready!"); } void loop(){ u8 ItStatus1, ItStatus2; u8 len; // 2 : // a) : 'ipkval' // ) CRC: 'icrcerror' SI4431.RXIRQEnable(); // NIRQ SI4431.ReadStatus(&ItStatus1, &ItStatus2); /* */ SI4431.RXEnable(); // // , CRC if(SI4431.IRQstate() == 0 ){ // SI4431.RXDisable(); // NIRQ SI4431.ReadStatus(&ItStatus1, &ItStatus2); // CRC if( (ItStatus1 & 0x01) == 0x01 ){ print_P(PSTR("\r\n Received CRC Error!")); // FIFO SI4431.FIFOReset(); // /*TX_LED_SET RX_LED_SET delay(500); TX_LED_CLR RX_LED_CLR*/ } // if( (ItStatus1 & 0x02) == 0x02 ){ print_P(PSTR("\r\n Received good packet! Len = ")); // len = SI4431.RXPacketLen(); Serial.print(len, HEX); //, if(len <= sizeof(RFRX_buffer)) { SI4431.RXData((u8 *)RFRX_buffer, len); // RFRX_MASTER_PROCESS (len); } } // RX FIFO SI4431.FIFOReset(); // SI4431.RXEnable(); } } void i2a( unsigned int i, char* pOut_buf ){ int ii; char int_buf[5]; for (ii=0; ii < 5; ){ int_buf[ii++] = '0'+ i % 10; i = i / 10; } do{ ii--; }while( (int_buf[ii] == '0') && (ii != 0) ); do { *pOut_buf++= int_buf[ii--]; } while (ii >= 0); *pOut_buf = 0x00; }
рдпрд╣ рд╕реНрдХреЗрдЪ рд░реЗрдбрд┐рдпреЛ рдЪреИрдирд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ, рдПрдбреНрд░реЗрд╕ 0 рд╣реЗрдб рдпреВрдирд┐рдЯ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдзрд┐рдХрддрдо рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдкрд╛рд╡рд░ 13dBm: SI4431.Init (7) рдкрд░ рд╕реЗрдЯ рд╣реИ;
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдбрд┐рд╕реНрдкреНрд▓реЗ 1 рд░рд┐рдореЛрдЯ рд╕реЗрдВрд╕рд░ рд╕реЗ рд░реАрдбрд┐рдВрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдЙрд╕реА рддрд░рд╣ рдЖрдк рдХрдИ рд╕реЗрдВрд╕рд░ рд╕реЗ рд░реАрдбрд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рд╣рдорд┐рдВрдЧрдмрд░реНрдб рдмреЛрд░реНрдб рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред
- Arduino Board рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
- USB- рд╕реАрд░рд┐рдпрд▓ рдХрдирд╡рд░реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
- рдЗрди-рд╕рд░реНрдХрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
Arduino рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╕реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рдмреЛрд░реНрдбреЛрдВ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд┐рдиреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
Arduino | рдЧреБрдирдЧреБрдирд╛рд╣рдЯ-рдкрдХреНрд╖реА |
рдкрд┐рди 0 | рдкрд┐рди 0 |
рдкрд┐рди рез | рдкрд┐рди рез |
рд░реАрд╕реЗрдЯ | рд░реАрд╕реЗрдЯ |
+ 5 рд╡реА | + 5 рд╡реА |
GND | GND |
рдПрдХ рдмрд╛рд░ рдкрд╛рд╡рд░ рдЬрдореНрдкрд░ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ 5V рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдорд┐рдВрдЧрдмрд░реНрдб рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╣реИ, рддреЛ рдЖрдк Arduino рдХреЛ рдПрдХ рдкреАрд╕реА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Arduino IDE рдореЗрдВ, рд╕рд╣реА рдкреЛрд░реНрдЯ рдФрд░ рдЯреВрд▓реНрд╕ -> рдмреЛрд░реНрдб рд╕реЗрдХреНрд╢рди рдореЗрдВ, "Arduino Nano w / Atmega 168" рд╡рд┐рдХрд▓реНрдк рдЪреБрдиреЗрдВ, рдФрд░ рдлрд┐рд░ "рдбрд╛рдЙрдирд▓реЛрдб" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдпреВрдПрд╕рдмреА-рд╕реАрд░рд┐рдпрд▓ рдХрдирд╡рд░реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕реА рддрд░рд╣ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рддреА рд╣реИред рдЦреИрд░, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред Arduino IDE рдореЗрдВ, "рд╕рдВрдХрд▓рди" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдлрд┐рд░ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рд╣реЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ "рдвреВрдВрдвреЗрдВ"ред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╣рдорд┐рдВрдЧрдмрд░реНрдб ICSP рдХрдиреЗрдХреНрдЯрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдмреЛрд░реНрдб рдХреЛ рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░реЗрдВ, рдЗрд╕рдореЗрдВ рдлрд░реНрдорд╡реЗрдпрд░ рд▓реЛрдб рдХрд░реЗрдВ, рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╢реЗрд▓ рдореЗрдВ ATMEGA168A рдПрдордХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдлреНрдпреВрдЬрди: 0xF8, 0xDF, 0xFFред рд▓реЙрдХрдмрд┐рдЯ: 0xCFред
рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреВрдЫрд╛, рд╣рдорд┐рдВрдЧрдмрд░реНрдб рд╕реЗ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд░реЛрдВ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ред рдЕрдм рд╣рдо рдкрд╛рд╡рд░ рдмреЛрд░реНрдб рдХреЛ рдЦрд┐рд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрд▓рд╕реАрдбреА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдореИрдВ рддреИрдпрд╛рд░ рд╣реВрдВ! рдореБрдЦреНрдп рдЗрдХрд╛рдИ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛рдПрдВред
рд╕реЗрдВрд╕рд░
1. рдЕрд╕реЗрдореНрдмрд▓реА
рд╕реЗрдВрд╕рд░ рд╡рд╛рд▓реЗ рдмреЛрд░реНрдб рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╕реЗрдВрд╕рд░ рд╣реЛрдЧрд╛ред рдмреЛрд░реНрдб рдкрд╛рд╡рд░ рдмреИрдЯрд░реА рд╣реЛрдЧреА, 3 рд╡реАред
рд╕реЗрдВрд╕рд░ рд╕рд░реНрдХрд┐рдЯ SHT10ред

рд╣рдо рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдкрд░ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрдХрдЯреНрдард╛ рд╣реЛрддреЗ рд╣реИрдВред рд╕реЗрдВрд╕рд░ 4 рд╡рд╛рдпрд░рд┐рдВрдЧ (рдбрд┐рдЬрд┐рдЯрд▓ рдкрд┐рди 6 рдФрд░ 7 рдФрд░ рдкрд╛рд╡рд░) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдорд┐рдВрдЧрдмрд░реНрдб рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рдмреИрдЯрд░реА рдХрдВрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдХреЛ рд╣рдорд┐рдВрдЧрдмрд░реНрдб рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдмреИрдЯрд░реА рдбрд┐рдмреНрдмреЗ рдХреЛ рд╣рдорд┐рдВрдЧрдмрд░реНрдб рд╕реЗ 3 рд╡реА рдкрд╛рд╡рд░ рдХрдиреЗрдХреНрдЯрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ 3 рд╡реА рдХреЗ рд▓рд┐рдП рдЬрдореНрдкрд░ рднреА рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдкреЛрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред рдпрджрд┐ рдпрд╣ рд╕реЗрдВрд╕рд░ рдХреЛ рдмрд╛рд╣рд░ рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреБрдХреНрдд рдмреИрдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдмрд╕реЗ рдардВрдв рдкреНрд░рддрд┐рд░реЛрдзреА рдмреИрдЯрд░реА рд▓рд┐рдерд┐рдпрдо-рдерд┐рдпреЛрдирд╛рдЗрд▓ рдХреНрд▓реЛрд░рд╛рдЗрдб (LiSOCl2), рд▓рд┐рдерд┐рдпрдо-рдЖрдпрд░рди рдлреЙрд╕реНрдлреЗрдЯ (LiFePO4) рд╣реИрдВред
2. рдлрд░реНрдорд╡реЗрдпрд░
EZRadioPRO рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП SHT1x рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдо рддрд╛рдкрдорд╛рди рдФрд░ рдЖрд░реНрджреНрд░рддрд╛ рд░реАрдбрд┐рдВрдЧ рдкрдврд╝реЗрдВрдЧреЗред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред
рд╣рдо Arduino IDE рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рдПрдХ рд╕реНрдХреЗрдЪ рдмрдирд╛рддреЗ рд╣реИрдВред #include <SI4431.h> #include "SimRF.h" #include <avr/sleep.h> #include <avr/wdt.h> #include <SHT1x.h> #define dataPin 7 #define clockPin 6 SHT1x sht1x(dataPin, clockPin); //#define DEBUG_MODE // (0 ) #define SLAVE_ADDR (1) // // 1: #define RF_FUNC01 (1) // 2: #define RF_FUNC02 (2) // unsigned char RFTX_buffer[32]; // unsigned char RFRX_buffer[32]; unsigned char putch(unsigned char send_char) { while (!(UCSR0A & 0x20)); UDR0 = (unsigned char) send_char; while (!(UCSR0A & 0x20)); return(send_char); } /* FLASH */ void print_P (const char* s) { char c; while ((c = pgm_read_byte(s++)) != 0) putch(c); } /* XOR u8* Src - u8 len - */ u8 get_xor(u8* Src, u8 len){ u8 xoracc = 0; while (len--){ xoracc ^= *Src++; } return xoracc; } /* 01 u8 addr - u8* Data - u8 Len - */ void RFTX_FUNC01(u8 addr, u8* Data, u8 Len){ RFTX_buffer[0] = addr; // RFTX_buffer[1] = SLAVE_ADDR; // RFTX_buffer[2] = 0x01; // 01 // for (u8 i = 0 ; i < Len; i++){ RFTX_buffer[3+i] = *Data++; } // XOR RFTX_buffer[3 + Len] = get_xor ((u8*)RFTX_buffer, Len + 3); SI4431.TXData((u8*) RFTX_buffer, 3 + Len + 1); // } /** * : * addr - * len - * pData - SRAM * : * (0..127) * -1 */ s8 RFRX_PROCESS(u8 addr, u8 len, u8* pData){ s8 funccode; // if (len < 3) return -1; if ((RFRX_buffer[0] == SLAVE_ADDR)&&(RFRX_buffer[1] == addr)) { // if (get_xor((u8*)RFRX_buffer, len - 1) == RFRX_buffer[len-1]){ funccode = RFRX_buffer[2]; pData = (u8*) &RFRX_buffer[3]; return funccode; } else return -1; } else return -1; } /* 02 u8* PayloadData - u8 PayloadLen - */ void RFRX_RESP_FUNC02(u8* PayloadData, u8 PayloadLen){ // #ifdef DEBUG_MODE for (u8 i = 0; i< PayloadLen; i++){ Serial.print(*PayloadData++, HEX); } #endif } // void RFTX_ACK_FUNC02(u8 addr, u8* Data, u8 Len){ RFTX_buffer[0] = 0x00; // RFTX_buffer[1] = SLAVE_ADDR; // RFTX_buffer[2] = RF_FUNC02; // for (u8 i = 0 ; i < Len; i++){ RFTX_buffer[3+i] = *Data++; } // XOR RFTX_buffer[3 + Len] = get_xor ((u8*)RFTX_buffer, Len+3); SI4431.TXData((u8*) RFTX_buffer, 3 + Len + 1); // } u16 SensorData [4]; // 4 16 volatile unsigned char WDT_wake; volatile unsigned char SLEEP_TIME = 15; //volatile unsigned char WDT_counter; // /* */ ISR(WDT_vect) { static unsigned char WDT_counter; // if (WDT_counter++ == SLEEP_TIME) { WDT_counter = 0; WDT_wake = 1; } //Serial.print(WDT_counter, HEX); asm ("WDR"); } void setup_WDT(void) { asm ("CLI"); asm ("WDR"); MCUSR &= ~(1<<WDRF); // WDTCSR = (1 << WDCE)|(1<<WDE); WDTCSR = (1 << WDP2)|(1 << WDP1)|(1 << WDIE)|(1 << WDIF); // 1 . asm ("SEI"); } void off_WDT(void){ asm ("CLI"); asm ("WDR"); MCUSR &= ~(1<<WDRF); // WDTCSR = (1 << WDCE)|(1<<WDE)|(1 << WDIF); /* Turn off WDT */ WDTCSR = 0x00; asm ("SEI"); } void sys_sleep(void){ asm ("CLI"); ADCSRA &= ~(1 << ADEN); // SMCR |= (1<<SE); // power-down asm ("SEI"); asm ("SLEEP"); } void sys_wake(void){ // } void RF_sleep (void){ u8 ItStatus1, ItStatus2; // NIRQ SI4431.ReadStatus(&ItStatus1, &ItStatus2); SI4431.WriteRegister(0x08, 0x03); // FIFO SI4431.WriteRegister(0x08, 0x00); SI4431.WriteRegister(0x07, 0x00); // } void setup(){ Serial.begin(38400); delay (1000); u8 ItStatus1, ItStatus2; u8 length; u8 temp8; #ifdef DEBUG_MODE print_P (PSTR("\r\nHello!")); #endif delay (100); SI4431.begin(); #ifdef DEBUG_MODE // , SPI for (u8 reg = 0; reg <=0x7f; reg++){ print_P(PSTR("\r\nReg:")); u8 c = SI4431.ReadRegister (reg); Serial.print(reg, HEX); print_P(PSTR(", ")); Serial.print(c, HEX); } #endif SI4431.Init(7); #ifdef DEBUG_MODE print_P(PSTR("\r\nRadio initialisation is OK")); #endif delay (1000); setup_WDT(); SMCR = (1<<SE)|(1<<SM1); // power-down sys_sleep(); } void loop(){ u8 ItStatus1, ItStatus2; unsigned long Timer; if (WDT_wake){ Timer = 0; WDT_wake = 0; // N // off_WDT(); //digitalWrite(13, HIGH); // ( ) #ifdef DEBUG_MODE print_P(PSTR("\r\n WAKE UP!")); #endif // 1) , SHT11x float Temp = sht1x.readTemperatureC(); s16 Temp_x100 = (s16) (Temp * 100.0); // 100.0 SensorData[0] = (u16) Temp_x100; float Humidity = sht1x.readHumidity(); u16 Humidity_x100 = (s16) (Humidity * 100.0); // 100.0 SensorData[1] = Humidity_x100; SensorData[2] = 0; SensorData[3] = 0; // 2) , // 3) , // 4) 0 ( ... ) for (u8 TXcnt = 0; TXcnt< 4; TXcnt++) { #ifdef DEBUG_MODE print_P(PSTR("\r\n TX to MASTER #")); #endif Serial.print(TXcnt + 1, DEC); RFTX_FUNC01(0x00, (u8*) SensorData, 8); // 0 8 // 4) 0 } // 5) RX // // 2 : // a) : 'ipkval' // ) CRC: 'icrcerror' SI4431.RXIRQEnable(); // NIRQ SI4431.ReadStatus(&ItStatus1, &ItStatus2); // FIFO SI4431.FIFOReset(); /* */ SI4431.RXEnable(); // 6) 1 #ifdef DEBUG_MODE print_P(PSTR("\r\n Wait Resp")); #endif Timer = 0; #define RESP_TIMEOUT (65535 * 32) while (Timer < RESP_TIMEOUT){ //asm ("WDR"); if(SI4431.IRQstate() == 0 ) { // CRC // SI4431.RXDisable(); // NIRQ SI4431.ReadStatus(&ItStatus1, &ItStatus2); // CRC if( (ItStatus1 & 0x01) == 0x01 ) { #ifdef DEBUG_MODE print_P(PSTR("\r\n RX CRC Error!")); #endif // FIFO SI4431.FIFOReset(); // break; // } else if( (ItStatus1 & 0x02) == 0x02 ) { // #ifdef DEBUG_MODE print_P(PSTR("\r\n RX packet Len = ")); #endif // u8 len = SI4431.RXPacketLen(); #ifdef DEBUG_MODE Serial.print(len, HEX); #endif //, if(len <= sizeof(RFRX_buffer)) { SI4431.RXData((u8 *)RFRX_buffer, len); // s8 funccode = RFRX_PROCESS (0x00, len, (u8*)RFRX_buffer); switch (funccode) { case RF_FUNC02: { // ! #ifdef DEBUG_MODE print_P(PSTR("\r\n MASTER RESPONSE!")); #endif u8* PayloadData = (u8*) &RFRX_buffer[3]; // u8 PayloadLen = len - 4; // RFRX_RESP_FUNC02(PayloadData, PayloadLen); // // 7) , // for (u8 TXcnt = 0; TXcnt< 4; TXcnt++) { #ifdef DEBUG_MODE print_P(PSTR("\r\n ACK MASTER RESPONSE!")); #endif RFTX_ACK_FUNC02(0x00, PayloadData, PayloadLen); } } break; default: #ifdef DEBUG_MODE print_P(PSTR("\r\nInvalid RX packet!")); #endif break; } } } break; // } else { Timer++; } } #ifdef DEBUG_MODE if (Timer == RESP_TIMEOUT) print_P(PSTR("\r\n Response Timeout!")); print_P(PSTR("\r\n SLEEP...")); #endif // 8) RF_sleep(); setup_WDT(); //digitalWrite(13, LOW); } // 9) , N // 10) , . 1. sys_sleep(); }
рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдпреЛрдЬрдирд╛ рд╕рд░рд▓ рд╣реИред рд░реЗрдбрд┐рдпреЛ рдЪреИрдирд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд╣рд╛рдБ рдЗрд╕реЗ рдПрдбреНрд░реЗрд╕ 1 рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдбреНрд░реЗрд╕ 0 рдХреЗ рд╕рд╛рде рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдкрд╣рд▓рд╛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рд╣реЛрддрд╛ рд╣реИ, рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдЯреНрд░рд╛рдиреНрд╕реАрд╡рд░ рдХреЛ рд╕реНрд▓реАрдк рдореЛрдб рдореЗрдВ рдбрд╛рд▓ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдпрд╣ 15 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдордп рдХреЗ рдмреАрдд рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╡реЙрдЪрдбреЙрдЧ рдЬрд╛рдЧрддрд╛ рд╣реИ, рдЯреНрд░рд╛рдВрд╕реАрд╡рд░ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдЖрдк рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рд╕реЗрдВрд╕рд░ рдХреЛ рдПрдХ рд╣реЗрдб рдпреВрдирд┐рдЯ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рд╕реНрдХреЗрдЪ рдХреЛ рд╣рдорд┐рдВрдЧрдмрд░реНрдб рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрдВрдж рдХрд░реЗрдВ, рдмреИрдЯрд░реА рдкрд╛рд╡рд░ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдкрд╛рд╡рд░ рдЪрд╛рд▓реВ рдХрд░реЗрдВред рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рд╣рдо рд░рд┐рдореЛрдЯ рд╕реЗрдВрд╕рд░ рд╕реЗ рд╣реЗрдб рдпреВрдирд┐рдЯ рдкрд░ рд░реАрдбрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред
рдХрд╛рд╢, рдореИрдВ рд╕рдм рдХреБрдЫ рд▓рд┐рдЦрддрд╛ред рдЕрдЧрд░ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреВрдЫреЗрдВ :)