рдЗрд╕ рдмрд╛рд░ рдореИрдВрдиреЗ рдПрд╣рддрд┐рдпрд╛рдд рдХреЗ рддреМрд░ рдкрд░ рдЕрдкрдиреА рдмрд╛рдЗрдХ рдореЗрдВ рдЬреАрдкреАрдПрд╕ рдЯреНрд░реИрдХрд░ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рдХрд╛рд░, тАЛтАЛрдХрд╛рд░реНрдЧреЛ, рд╕рд╛рдЗрдХрд┐рд▓, рд╕рд╛рдорд╛рди, рдмрдЪреНрдЪреЛрдВ рдФрд░ рдЬрд╛рдирд╡рд░реЛрдВ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЬрд╛рд░ рдкрд░ рдХрдИ рд╕реНрд╡рд╛рдпрддреНрдд рдЙрдкрдХрд░рдг рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрд╕рдПрдордПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдорд╣рдВрдЧреЗ рд╡рд┐рдХрд▓реНрдк рдореЗрд░реЗ рдлреЛрди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдирд▓рд╛рдЗрди рд╕реЗрд╡рд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред
рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдореИрдВ рдЯреНрд░реИрдХрд░ рдкрд░ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рдПрд╕рдПрдордПрд╕ рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдореЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╕рддрд╣реА рдЧреВрдЧрд▓ рдиреЗ рдореБрдЭреЗ рдЪреАрди рд╕реЗ рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рд▓рд╛рдП, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдореИрдВрдиреЗ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ (рдП 9 рдЬреА рдкреБрдбрд┐рдВрдЧ рдмреЛрд░реНрдб) (~ $ 15)ред

рдпрд╣ рд▓реЗрдЦ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЕрдЬрдЧрд░ рдХрд╛ рдХрд╛рдо рдХреИрд╕реЗ рдХрд┐рдпрд╛ред
рдпрджрд┐ рдП 9 рдЬреА рдИрдПрд╕рдкреА рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ (рдирд┐рд░реНрдорд╛рддрд╛, рд╡реИрд╕реЗ, рдПрдХ рд╣реА рд╣реИ), рддреЛ рдкреБрдбрд┐рдВрдЧ рдмреЛрд░реНрдб рд╕реНрд╡рдпрдВ рдПрдирдУрдбреАрдПрдорд╕реАрдпреВ рдмреЛрд░реНрдб рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдкреБрдбрд┐рдВрдЧ рдмреЛрд░реНрдб рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдпреВрдПрд╕рдмреА-рдпреВрдПрдЖрд░ рдХрдирд╡рд░реНрдЯрд░ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдХрдИ рдЕрдиреНрдп рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рд╣реИрдВред рдирд┐рд░реНрдорд╛рддрд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ:
- 32 рдмрд┐рдЯ рдХреЛрд░ (RISC), 312MHz рддрдХ
- 29x GPIO (рд╕рднреА рд╣рд▓ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)
- рдШрдбрд╝реА рдФрд░ рдШрдбрд╝реА
- 1x USB 1.1 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдореБрдЭреЗ рдпрд╣ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдСрдлрд╕рд╛рдЗрдЯ рд╕реЗ рдХреЙрдкреА) рдФрд░ рдкрд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрдпреВрдПрд╕рдмреА
- 2x UART (+1 рд╕реЗрд╡рд╛)
- 2x рдПрд╕рдкреАрдЖрдИ (рдЖрдЬрдорд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛)
- 3x I2C (рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рдЧрдИ)
- 1x рдПрд╕рдбреАрдПрдордПрдорд╕реА (рднреМрддрд┐рдХ рд╕реНрд▓реЙрдЯ рдХреЗ рд╕рд╛рде)
- 2x рдПрдирд╛рд▓реЙрдЧ рдЗрдирдкреБрдЯ (10 рдмрд┐рдЯреНрд╕, рд╕рдВрднрд╡рддрдГ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд▓рд┐рдерд┐рдпрдо рдмреИрдЯрд░реА рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)
- 4Mb рдлрд╝реНрд▓реИрд╢
- 4 рдПрдордмреА рдкреАрдПрд╕рдЖрд░рдПрдПрдо
- рдПрдбреАрд╕реА (рдорд╛рдЗрдХреНрд░реЛрдлреЛрди, рдмреЛрд░реНрдб рдкрд░ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рд╣реИ) рдФрд░ рдбреАрдПрд╕реА (рд╕реНрдкреАрдХрд░, рдЕрдиреБрдкрд╕реНрдерд┐рдд)
- рдмреИрдЯрд░реА рдЪрд╛рд░реНрдЬ рдирд┐рдпрдВрддреНрд░рдХ (рдХреЛрдИ рдмреИрдЯрд░реА рд╣реА рдирд╣реАрдВ рд╣реИ)
- рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрд╕рдПрдордПрд╕, рдЖрд╡рд╛рдЬ рдФрд░ рдЬреАрдкреАрдЖрд░рдПрд╕ рдХреЗ рд╕рд╛рде рдЬреАрдПрд╕рдПрдо (800, 900, 1800, 1900 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ)
- UART2 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреАрдкреАрдПрд╕ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ (рдЗрд╕рдХреЗ рдмрд┐рдирд╛ "A9" рдореЙрдбреНрдпреВрд▓ рд╣реИ)
- рд╕рд┐рдо рд╕реНрд▓реЙрдЯ (рдиреИрдиреЛ)
- рджреЛ рдмрдЯрди (рдПрдХ рд░реАрд╕реЗрдЯ, рдЕрдиреНрдп - рд╕рдорд╛рд╡реЗрд╢рди рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдлрд╝рдВрдХреНрд╢рди)
- рджреЛ рдПрд▓.рдИ.рдбреА.
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╡реЛрд▓реНрдЯреЗрдЬ 3.3V рд╣реИ, рдЗрдирдкреБрдЯ рд╡реЛрд▓реНрдЯреЗрдЬ 5-3.8V (рдХрдиреЗрдХреНрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреБрд╢-рдмрдЯрди рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдиреА рдЗрд╕реЗ рд╕реНрд▓реЙрдЯ рдорд╢реАрдиреЛрдВ рдпрд╛ рд╕реНрд▓реЙрдЯ рдорд╢реАрдиреЛрдВ рдпрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрд┐рдХреНрд░реА рдХреЗ рд▓рд┐рдП рдЦрд░реАрдж рд░рд╣реЗ рд╣реИрдВред рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдмрд▓реНрдХрд┐ рд▓реЛрдХрдкреНрд░рд┐рдп SIM800 рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ, рдЬреЛ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рдПрд╕рдбреАрдХреЗ рдирд╣реАрдВ рд╣реИ (рдпрд╛рдиреА рдореЙрдбреНрдпреВрд▓ рдПрдЯреА рдореЙрдбреЗрдо рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ)ред
рдПрд╕рдбреАрдХреЗ
рдореЙрдбреНрдпреВрд▓ рд╕рдВрддреЛрд╖рдЬрдирдХ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред рдЙрдмрдВрдЯреВ рдХреЗ рддрд╣рдд рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рдХрдВрдЯреЗрдирд░ рдкрд╕рдВрдж рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред GUI рдореЗрдВ рдкреЛрдХрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП ESPtool рдХреЛ рдЕрднреА рддрдХ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд░реНрдорд╡реЗрдпрд░ рдЦреБрдж рдореЗрдХрдлрд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбреАрдмрдЧрд░ рдореМрдЬреВрдж рд╣реИ: рдардВрдб рд╕реЗ рдкрд╣рд▓реЗ, рдореЙрдбреНрдпреВрд▓ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХреЛ рд╕реЗрд╡рд╛ рдкреЛрд░реНрдЯ рдореЗрдВ рдлреЗрдВрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдХреЛрдб рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдкрддреЗ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ (рдЬреАрдбреАрдмреА рд░рд┐рдкреЛрд░реНрдЯ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдкрддреЗ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИрдВ)ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм рд╕рдорд░реНрдерди рдХреЗ рдХрд╛рд░рдг рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдЯрд┐рдВрдХрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рддреЛ рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ (рдФрд░ рдЬреАрдердм рдкрд░ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░реЗрдВ)ред рдЕрдиреНрдпрдерд╛, рдпрд╣рд╛рдВ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рд╣реИред рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╕рднреА CSDTK/lib/libQt*
рдореЗрдВ .bashrc рдФрд░ delete (rename) рдкрдереЛрдВ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдЕрдиреНрдпрдерд╛, Flasher (рдЙрд░реНрдл рдбрд┐рдмрдЧрд░) рдмрд╕ рдПрдХ рд╡рд┐рд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд╢рд╛рдпрдж, рд╕реНрдерд╛рдкрд┐рдд libQtред

рдлреНрд▓реИрд╢рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИ ред
рд╕рдВрдмрдВрдз
NodeMCU рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдореЙрдбреНрдпреВрд▓ рд╕рдорд╛рди рджрд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреБрдбрд┐рдВрдЧ рдмреЛрд░реНрдб рдкрд░ рдХреЛрдИ USB-TTY рдЪрд┐рдк рдирд╣реАрдВ рд╣реИ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдпреВрдПрд╕рдмреА рдХреЗрд╡рд▓ рд╢рдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЖрдкрдХреЛ 3.3V рдкрд░ USB-TTY рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рджреЛ рдмреЗрд╣рддрд░ рд╣реИрдВ: рдПрдХ рдбреАрдмрдЧ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ UART1 рдХреЗ рд▓рд┐рдП: рдкрд╣рд▓рд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рдЖрдк рдПрдХ рдирд┐рдпрдорд┐рдд рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рд╕рднреА рд╕реНрдиреЛрдЯ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдирд╣реАрдВ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рджреЛ-рдореАрдЯрд░ рдХреЗрдмрд▓ рдФрд░ рдПрдХ рдмрд╛рд╣рд░реА рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ (рдЖрд╡рд╢реНрдпрдХ) рдХреЗ рд╕рд╛рде 4-рдкреЛрд░реНрдЯ рдпреВрдПрд╕рдмреА рд╕реНрдкреНрд▓рд┐рдЯрд░ рдЦрд░реАрджрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдЗрд╕ рдХрд┐рдЯ рдХреА рдХреБрд▓ рд▓рд╛рдЧрдд $ 25-30 (рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреЗ рдмрд┐рдирд╛: рдлреЛрди рд╕реЗ рдЙрдкрдпреЛрдЧ) рд╣реЛрдЧреАред
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рдореЙрдбреНрдпреВрд▓ AT рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ: рдЖрдк 3.3V arduino рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ UART1 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбреЗрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рдлрд░реНрдорд╡реЗрдпрд░ рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рджреЛ рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ make
: рдПрдХ рдХреЛ рд▓рдЧрднрдЧ рдПрдХ рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рд╕реАрд╡рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рддреЗрдЬреА рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдХреЛ рд╕реАрд╡рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдкрд╣рд▓реА рдмрд╛рд░ рдмрдбрд╝реА рд╣реИ, рдмрд╛рдж рдХреА рд╕рдордп рд╕реАрдорд╛ рдЫреЛрдЯреА рд╣реИред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдореЗрд░реЗ рдкрд╛рд╕ рдореЙрдбреНрдпреВрд▓, рдорд┐рдирд┐рдЯрд░реНрдо рдХреЛ stdio рдФрд░ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдЪреАрдиреА рдПрд╕рдбреАрдХреЗ ( coolwatcher
) рдЦреБрд▓рд╛ рд╣реИред
рдПрдкреАрдЖрдИ
рдПрдкреАрдЖрдИ рдХреА рд╕рд╛рдордЧреНрд░реА рдКрдкрд░ рдХреА рд╕реВрдЪреА рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╢реБрд░реБрдЖрддреА рджрд┐рдиреЛрдВ рдореЗрдВ рдИрдПрд╕рдкреА 8266 рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ: рд╣реИрд▓реЛрд╡рд░реНрд▓реНрдб рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрднрдЧ 3 рдШрдВрдЯреЗ рд▓рдЧреЗред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕реЗрдЯ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд┐рдо рдХрд╛рд░реНрдб рдкрд░ рдлреЛрди рдмреБрдХ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рд╕реЗрд▓реБрд▓рд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЬрд╛рдирдХрд╛рд░реА, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдПрдкреАрдЖрдИ рдкреНрд░рд▓реЗрдЦрди рднреА рдХрдо рдкреВрд░реНрдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЬрд┐рдирдореЗрдВ рд╕реЗ рджреЛ рджрд░реНрдЬрди рд╣реИрдВ) рдФрд░ рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдлрд┐рд░ рднреА, рдореЙрдбреНрдпреВрд▓ рдПрд╕рдПрд╕рдПрд▓ рдХрдиреЗрдХреНрд╢рди рддрдХ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдирд┐рд░реНрдорд╛рддрд╛ рдиреЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЪреАрдиреА рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪреАрдиреА рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛ рдкреНрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд╛рдХреА рд╕рднреА рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрдорд╛рддрд╛ рдиреЗ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░рд┐рдереЙрди рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ ред рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рдЕрдЪреНрдЫреЗ рдХрд╛рдо рдХреЛ рдЬрд╛рд░реА рд░рдЦрд╛ (рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд┐рдВрдХ)ред
micropython

рдорд╛рдЗрдХреНрд░реЛрдкрд╛рдпрдереЙрди рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ cPython рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рджреЛ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рд╕рднреА рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реЛрдВ рдХреЛ рдХреЙрдорди рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдФрд░ рд╡рд┐рдХрд╛рд╕ рдЖрдо рд╣реИ рдЬреЛ рдХрд┐ рдЕрдЬрдЧрд░ рдореЗрдВ рдореБрдЦреНрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ: рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдлрд╝рдВрдХреНрд╢рдВрд╕, рдХреНрд▓рд╛рд╕реЗрд╕, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕, рдкрд░рдорд╛рдгреБ рдкреНрд░рдХрд╛рд░, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рджреВрд╕рд░рд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ: рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╡рд╣ рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП UART рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ "рд╕рд┐рдЦрд╛рдП", рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреИрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдПрдХ рд╕реЗрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: GPIO, рдкрд╛рд╡рд░, рд╡рд╛рдпрд░рд▓реЗрд╕, рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдоред
рдпрд╣ рд╕рдм рдореИрдХреНрд░реЛ рдХреЗ рд╕рд╛рде рд╢реБрджреНрдз рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ: рдорд╛рдЗрдХреНрд░реЛрдкрд╛рдЗрдерди рдореЗрдВ рд░реЛрдо рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╡реНрдпрдВрдЬрдиреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЬрдЧрд░ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдореЙрдбреНрдпреВрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ (рдореБрдЦреНрдп рдмрд╛рдд рд╕реНрдореГрддрд┐ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓рдирд╛ рд╣реИ)ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХреНрдпреВрд░реЗрдЯрд░ рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ dzhanga (рд░реЛрдЯреА рдХреА рд░реЛрдЯреА рдХреЗ рд╕рд╛рде рдЪрд┐рддреНрд░) рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ ред рдПрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ: рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрдкрдиреЗ рдмреЛрд░реНрдб рдХреЛ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрдЪрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ESP8266 рдФрд░ ESP32 рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ рднреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВред
рдЬрдм рдлрд░реНрдорд╡реЗрдпрд░ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдк рдмрд╕ UART рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рдпрдерди рдЖрд░рдИрдкреАрдПрд▓ рдореЗрдВ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВред
$ miniterm.py /dev/ttyUSB1 115200 --raw MicroPython cd2f742 on 2017-11-29; unicorn with Cortex-M3 Type "help()" for more information. >>> print("hello") hello
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рд╕реНрдореГрддрд┐ рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдХрд░ рд▓рдЧрднрдЧ рд╕рд╛рдорд╛рдиреНрдп python3 рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдП 9 рдЬреА рдореЙрдбреНрдпреВрд▓ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреА рдПрдХ рд╕реВрдЪреА micropython/ports
рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ рдПрдХ рджрд░реНрдЬрди рд╣реИрдВ)ред рдлрд┐рд░ рднреА, рд▓реЛрд╣реЗ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдиреЗ рдорд╛рдЗрдХреНрд░реЛрдкреАрдереЙрди рдХреЛ рддреНрдпрд╛рдЧ рджрд┐рдпрд╛ рдФрд░ рдП 9 рдЬреА рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рд╡рд╛рддрд╛рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд┐рдпрд╛: micropython/ports/gprs_a9
, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрд╕реЗ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдЙрд╕ рд╕рдордп рдЬрдм рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗ рд░рд╣рд╛ рдерд╛, рдкреЛрд░реНрдЯ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдиреЗ рдореБрдЭреЗ рдЖрд░рдИрдкреАрдПрд▓ рдХреЗ рд╕рд╛рде рд╢реБрднрдХрд╛рдордирд╛ рджреАред рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рддреГрддреАрдп-рдкрдХреНрд╖ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдФрд░ GPIO рдХреЗ рд╕рд╛рде рдХрд╛рдо рдерд╛: рд╡рд╛рдпрд░рд▓реЗрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдЬреАрдкреАрдПрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рднреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдерд╛ред рдореИрдВрдиреЗ рдЗрд╕ рджреЛрд╖ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдФрд░ рдЬреАрдкреАрдПрд╕ рдЯреНрд░реИрдХрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИ: рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдХреЛрдб рдореЗрдВ рдЪрд╛рд░реЛрдВ рдУрд░ рдкреНрд░рд╣рд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, micropython/ports
рдЬрд╛рдПрдВ рдФрд░ micropython/ports
micropython/ports/minimal
рдХреЛ рдирдП рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдкреЛрд░реНрдЯ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛ред рдлрд┐рд░, рдЕрдкрдиреЗ рдордВрдЪ рдХреЗ рд▓рд┐рдП main.c
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рд╕рднреА mp_init()
main
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ mp_init()
рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рд╕реНрдЯреИрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдлрд┐рд░, рдИрд╡реЗрдВрдЯ-рдЪрд╛рд▓рд┐рдд рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ pyexec_event_repl_init()
рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ UART рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рд╡рд░реНрдгреЛрдВ рдХреЛ pyexec_event_repl_process_char(char)
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдлрд╝реАрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЖрд░рдИрдкреАрдПрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рджреВрд╕рд░реА рдлрд╝рд╛рдЗрд▓, micropython/ports/minimal/uart_core.c
UART рдореЗрдВ рдмреНрд▓реЙрдХрд┐рдВрдЧ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП STM32 рдХреЗ рд▓рд┐рдП рдореВрд▓ рдХреЛрдб рд▓рд╛рддрд╛ рд╣реВрдВ рдЬреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВред
main.c
int main(int argc, char **argv) { int stack_dummy; stack_top = (char*)&stack_dummy; #if MICROPY_ENABLE_GC gc_init(heap, heap + sizeof(heap)); #endif mp_init(); #if MICROPY_ENABLE_COMPILER #if MICROPY_REPL_EVENT_DRIVEN pyexec_event_repl_init(); for (;;) { int c = mp_hal_stdin_rx_chr(); if (pyexec_event_repl_process_char(c)) { break; } } #else pyexec_friendly_repl(); #endif
uart_core.c
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ / рд╕рдВрдХрд▓рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛: рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╣реИред рд╕рдм рдХреБрдЫ, рдпрд╣ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рд╣рдо рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рднрд░рддреЗ рд╣реИрдВ рдФрд░ UART рдореЗрдВ REPL рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред
micropython
рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж micropython
рдЖрдкрдХреЛ рдЗрд╕рдХреА рднрд▓рд╛рдИ рдХреА рджреЗрдЦрднрд╛рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛, Ctrl-D рдХреА рд╕рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ (рдирд░рдо рд░реАрд╕реЗрдЯ) рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдЬреЛ рдореИрдВ рдЙрд╕ рдкрд░ рдирд╣реАрдВ mpconfigport.h
: mpconfigport.h
рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВред
рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдБ
рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦ рд░рд╣реА рд╣реИред рддреЛ, рдореЙрдбреНрдпреВрд▓ (рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рдВрдЫрдиреАрдп) рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ mod[].c
рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ SRC_C
( SRC_C
рдЪрд░ рдпрджрд┐ рдЖрдк рд╕рдореНрдореЗрд▓рди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ) рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЦрд╛рд▓реА рдореЙрдбреНрдпреВрд▓ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
рдмреЗрд╢рдХ, рдкреЛрд░реНрдЯ рд╕реНрд╡рдпрдВ mp_module_mymodule
рдкрд╣рдЪрд╛рдирддрд╛ рдирд╣реАрдВ рд╣реИ: рдЗрд╕реЗ mpconfigport.h
рдкреЛрд░реНрдЯ mpconfigport.h
рдореЗрдВ MICROPY_PORT_BUILTIN_MODULES
рдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реИрд╕реЗ рдмреЛрд░рд┐рдВрдЧ рд╡реЙрд▓рдкреЗрдкрд░ рдЪрд┐рдк рдирд╛рдо рдФрд░ рдмрдВрджрд░рдЧрд╛рд╣ рдХрд╛ рдирд╛рдо рднреА рд╡рд╣рд╛рдБ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрди рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж, рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ REPL рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ __name__
рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреА (рдЯреИрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ REPL рдореЗрдВ рдСрдЯреЛ-рдкреВрд░реНрдгрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдорд╛рдорд▓рд╛)ред
>>> import mymodule >>> mymodule.__name__ 'mymodule'
рд╕реНрдерд┐рд░рд╛рдВрдХ
рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рдЕрдЧрд▓рд╛ рдЪрд░рдг рд╕реНрдерд┐рд░рд╛рдВрдХ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ ( INPUT
, OUTPUT
, HIGH
, LOW
, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд░рдВрддрд░ magic_number = 10
:
STATIC const mp_map_elem_t mymodule_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_mymodule) }, { MP_OBJ_NEW_QSTR(MP_QSTR_magic_number), MP_OBJ_NEW_SMALL_INT(10) }, };
рдкрд░реАрдХреНрд╖рдг:
>>> import mymodule >>> mymodule.magic_number 10
рдХрд╛рд░реНрдпреЛрдВ
рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ: рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ, рд▓рдкреЗрдЯреЗрдВ, рдЬреЛрдбрд╝реЗрдВ (рдореИрдВ рдкреНрд░рд▓реЗрдЦрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ)ред
рдЯреЗрд╕реНрдЯ:
>>> import mymodule >>> mymodule.conditional_add_one(3) 4 >>> mymodule.conditional_add_one(9) >>>
рдХрдХреНрд╖рд╛рдПрдВ (рдкреНрд░рдХрд╛рд░)
рдХрдХреНрд╖рд╛рдУрдВ (рдкреНрд░рдХрд╛рд░) рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рднреА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╣реИред рдпрд╣рд╛рдБ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рд▓рдЧрднрдЧ):
рдЯреЗрд╕реНрдЯ:
>>> mymodule.helloObj <type 'helloObj'>
рдкрд░рд┐рдгрд╛рдореА рдкреНрд░рдХрд╛рд░ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреБрд▓рдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдпрд╛ рдХреЛрдИ рд╕рдВрдмрджреНрдз рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИред рдбреЗрдЯрд╛ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд╕рд╛рде "рдмрдЧрд▓ рдореЗрдВ" рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд╛рдпрдерди рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрд▓рдЧ рдФрд░ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдПрдХ рдордирдорд╛рдирд╛ рдбреЗрдЯрд╛ рд╕реЗрдЯред
рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреИрд╕реЗ рдХрд░реЗрдВ? рд╕рдмрд╕реЗ рдХрдард┐рди рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИред
рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ, рд╡рд╣рд╛рдБ рднреА рд╣реИ .print
, рдФрд░ рдореИрдВ .print
рдХреЗ рдмрд╛рдХреА рдЬрд╛рджреВ рдХрд╛ Python3
ред
рд▓реЗрдХрд┐рди make_new
рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ: рдЖрд░рдВрднреАрдХрд░рдг рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ micropython/ports/esp32/modsocket.c
рд╕реЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
рдмрдВрдзреЗ рд╣реБрдП рддрд░реАрдХреЗ
рдЕрдЧрд▓рд╛ рдХрджрдо рдмрд╛рдзреНрдп рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЕрдиреНрдп рд╕рднреА рддрд░реАрдХреЛрдВ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рд╣рдо рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ:
рдпрд╣ рдмрд╛рдд рд╣реИ!
>>> x = mymodule.helloObj(12) >>> x.inc()
рдЕрдиреНрдп рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ: рдЧреЗрдЯреИрдЯ , рд╕реЗрдЯрдЯреНрд░рд╛
рдЧреИрд░-рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, @property
рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ __getattr__
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ? рдХреГрдкрдпрд╛: рдпрд╣ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ mymodule_hello_locals_dict_table
рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рджрд░реНрджрдирд╛рдХ рд░реВрдк рд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд attr рдирд┐рдХрд▓рд╛ред рдпреЗ рд╕рднреА mp_raise_AttributeError
( рдиреЛрдЯ : рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ) рдХрд╣рд╛рдВ рд╣реИрдВ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ AttributeError
рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рд░рд╣рд╕реНрдп рдпрд╣ рд╣реИ рдХрд┐ dest
рджреЛ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред рдкрд╣рд▓реЗ рддрддреНрд╡ рдХрд╛ рдЕрд░реНрде рд╣реИ "рдЖрдЙрдЯрдкреБрдЯ", рд░рд╛рдЗрдЯ-рдУрдирд▓реА: рдпрд╣ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ MP_OBJ_SENTINEL
рдЕрдЧрд░ рдореВрд▓реНрдп рдХреЛ MP_OBJ_SENTINEL
рд╣реИ рдФрд░ MP_OBJ_NULL
рдЕрдЧрд░ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░, рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ mp_obj_t
рд╣реИ рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдХреБрдЫ mp_obj_t
ред рджреВрд╕рд░рд╛ рддрддреНрд╡ рдЗрдирдкреБрдЯ рд╣реИ, рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП: рд╡рд╕реНрддреБ рдХрд╛ рдореВрд▓реНрдп рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрддрд╛ рд╣реИ рдЕрдЧрд░ рдореВрд▓реНрдп рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ MP_OBJ_NULL
рдЕрдЧрд░ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдмрд╕ рдЗрддрдирд╛ рд╣реА, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
>>> x = mymodule.helloObj(12) >>> x.val = 3 >>> x.val 3
рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдпрд╣ рд╣реИ рдХрд┐ REPL рдореЗрдВ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдЯреИрдм рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдСрдлрд░ рдХрд░рддрд╛ рд╣реИред рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ C рдХрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдРрд╕рд╛ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ (рдСрдкрд░реЗрдЯрд░ == рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ)ред
рдмрдВрджрд░рдЧрд╛рд╣
рдП 9 рдЬреА рдореЙрдбреНрдпреВрд▓ рдкрд░ рд▓реМрдЯрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ, рдПрд╕рдПрдордПрд╕, рдЬреАрдкреАрдЖрд░рдПрд╕ (рдпреВрдкреНрд╕), рдЬреАрдкреАрдПрд╕, рдкрд╛рд╡рд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдХреЗ рд╕рдорд░реНрдерди рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ ред рдЕрдм рдЖрдк рдореЙрдбреНрдпреВрд▓ рдкрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛:
import cellular as c import usocket as sock import time import gps import machine
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд┐рд╕реА рднреА рд╕рдВрднрд╡ рдорджрдж рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ / рдпрд╛ рдпрд╣ рд▓реЗрдЦ рдкрд╕рдВрдж рдЖрдпрд╛ рд╣реИ, рддреЛ рдЧреАрдердм рдкрд░ рд▓рд╛рдЗрдХ рдЫреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВред