Stereopi + WebRTC = рдЯреЗрд▓реАрд╕реНрдкреНрд░реЗрдиреНрд╕ рдШрд░ рдкрд░

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд▓рд┐рдП рдпреВрдЯреНрдпреВрдм рд╡реАрдбрд┐рдпреЛ:


рдЪреЗрддрд╛рд╡рдиреА: рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд┐рд░реНрдл рдПрдХ рдирдореВрдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рд▓реЗрдЦ рдореЗрдВ рд╕реНрдЯреАрд░рд┐рдпреЛ рд╡рд┐рдЬрд╝рди рдФрд░ "рд╣реЗрдб рдЯрд░реНрдиреНрд╕" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Xbox рд░рд┐рдореЛрдЯ рд╡рд╛рд▓реЗ рдЯреИрдВрдХ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред

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

* рдореИрдВ рддреБрд░рдВрдд рдЖрд░рдХреНрд╖рдг рдХрд░реВрдБрдЧрд╛, YouTube рдкрд░ рд╡реАрдбрд┐рдпреЛ рд╡рд╛рд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдореИрдВрдиреЗ рдХреЛрдИ рдЧреБрдкреНрдд рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдм рдЙрд╕рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред
** рд╣рдо Xbox рд╕реЗ рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рддрд╣ рдкрд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд░ рд░реЛрдмреЛрдЯ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдЕрдкрдиреЗ рджрдо рдкрд░ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯ рд╕рдХрддреЗ рд╣реИрдВред
*** рдХреГрдкрдпрд╛ рдмрд╕реНрдЯ рдЬреВрддреЗ рди рдлреЗрдВрдХреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрднреА рднреА рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рджреЛ рдЪреАрдЬреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:

  • рдХреИрд╕реЗ рдПрдХ рд╣реЗрд▓рдореЗрдЯ рдореЗрдВ рдлреЛрди рдкрд░ рдПрдХ рд╕реНрдЯреАрд░рд┐рдпреЛ рддрд╕реНрд╡реАрд░ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП;
  • рд╕рд┐рд░ рдШреБрдорд╛рдХрд░ рд╕рд░реНрд╡реЛрд╕ рдХреЛ рдХреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВред

рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЕрд╡рдзрд╛рд░рдгрд╛, рдпрджрд┐ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреА рдЧрдИ рд╣реИ, рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:

  • 2 рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдЕрдкрдиреЗ рдХреИрдорд░реЛрдВ рд╕реЗ рд╡реЗрдмрдмреНрд░реИрдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рднреЗрдЬрддреА рд╣реИрдВ;
  • рдлреЛрди (рд╣реЗрд▓рдореЗрдЯ рдореЗрдВ) рдлреЛрди рдкрд░ 2 рд╕рдорд╛рди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдзрд╛рд░рд╛рдУрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ - рдлреНрд▓реЛрдЯ рдРрдкреНрд╕ред
  • рдЙрд╕реА рд╕рдордп, рдлреЛрди рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рд▓реЗрдХрд┐рди рдбрд╛рдпрдмреНрд▓реЛ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╡рд┐рд╡рд░рдг рдФрд░ рдЕрд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╣реИ, рдЕрд░реНрдерд╛рддреН:

  • рдЖрдкрдХреЛ 2 рд░рд╛рд╕реНрдкрдмреЗрд░реА рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, 2 рдХреИрдорд░реЛрдВ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ, рдкрд╛рд╡рд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА * 2ред
  • рдлреЛрди рдореЗрдВ рдлреНрд▓реЛрдЯ рдРрдкреНрд╕ рд▓рдЧрд╛рддрд╛рд░ рд╕реНрд▓рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
  • ...

рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕реНрдЯреАрд░рд┐рдпреЛрдкреА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд░реЗрдВрдЧреЗ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд░реВрд╕реА рджреБрдХрд╛рдиреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ (рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рдмрд╛рдж рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрдЧрд╛):



Stereopi рд╣рдорд╛рд░реЗ рд╣рдорд╡рддрди рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИ, рдЬреЛ рдЕрдм рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрд╛рдЬрд╛рд░ рдкрд░ рд╡рд┐рдЬрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИред

рдирд╛рдо рд╕реЗ рдЗрд╕рдХрд╛ рдЖрдХрд░реНрд╖рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ - рдЖрдк рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ 2 рд╕реАрдПрд╕рдЖрдИ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреИрдорд░реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдпрд╣ рд╕рдм рдПрдХ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХрдореНрдкреНрдпреВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЙрдбреНрдпреВрд▓ рд╕реНрд╡рдпрдВ рдкреИрдХреЗрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЦрд░реАрджрдирд╛ рд╣реЛрдЧрд╛ред

рд╕реНрдЯреАрд░рд┐рдпреЛрдкреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдмреЗ рдкрд░ рд▓реЗрдЦ рд╣реИрдВред

рдЗрд╕рд╕реЗ рд╣рдореЗрдВ GPIO рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 2 рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд╕реНрдЯреАрд░рд┐рдпреЛрдкреА рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХрдореНрдкреНрдпреВрдЯ рдореЙрдбреНрдпреВрд▓ 3+ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рд╕реНрдЯреЗрд░рд┐рдпреЛрдкреА рдХреА рддреИрдпрд╛рд░реА


рд╕реНрдЯрд┐рд░реЛрдкреА рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (рд╕реНрдЯреНрд░реАрдкреА рдореЗрдВ рдХрдВрдкреНрд░реЗрд╢ рдореЙрдбреНрдпреВрд▓ рдбрд╛рд▓реЗрдВ, рдХреИрдорд░рд╛), рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЗрдВ рднрд░реЗрдВред

рд╣рдо рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХрдореНрдкреНрдпреВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рд░рд╛рд╕реНрдкрд┐рдпрди (рдЦрд┐рдВрдЪрд╛рд╡)ред рдпрд╣ stereopi.com рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ - рд░рд╛рд╕реНрдкрд┐рдпрди рд╕реНрдЯреНрд░реЗрдЪ OpenCV рдЫрд╡рд┐, Google рдбреНрд░рд╛рдЗрд╡
рдЗрд╕реЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╕реЗ рднрд░реЗрдВред

рдпрджрд┐ рднрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдЕрдиреНрдп рд▓реЛрдЧ рд╡рд┐рдХрд┐ рд╕реНрдЯрд┐рд░реЛрдкреА рдЬрд╛рддреЗ рд╣реИрдВ ред

Webrtc рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ред


рд╕реНрдЯрд┐рд░реЛрдкреА рдкрд░ рд╡реАрдмреНрд░рдЯ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрдирд╛ рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдкреГрд╖реНрда рд╕реЗ рд▓реА рдЧрдИ рд╣реИ: рдПрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрдирд╛ (рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ)


рд╣рдо рдЙрди рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдмрдЪреЗрдВрдЧреЗ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрд░реЛрдХреНрдд рдкреГрд╖реНрда рдкрд░ рд╣реИрдВ рдФрд░ рдмрд╕ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

curl http://www.linux-projects.org/listing/uv4l_repo/lpkey.asc | sudo apt-key add - sudo nano /etc/apt/sources.list deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/stretch stretch main sudo apt-get update sudo apt-get install uv4l uv4l-raspicam sudo apt-get install uv4l-raspicam-extras sudo raspi-config  Anvanced Options  Memory Split   256   enter sudo apt-get install uv4l-server uv4l-uvc uv4l-xscreen uv4l-mjpegstream uv4l-dummy uv4l-raspidisp sudo apt-get install uv4l-webrtc sudo apt-get install uv4l-demos sudo apt-get install uv4l-xmpp-bridge sudo apt-get install uv4l-raspidisp-extras 

рдЕрдм рдЖрдкрдХреЛ ssl рдХреАрдЬрд╝ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ Chrome http рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ (рдХреЗрд╡рд▓ https рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ):

 openssl genrsa -out selfsign.key 2048 && openssl req -new -x509 -key selfsign.key -out selfsign.crt -sha256 

* рдЪрд╛рдмрд┐рдпрд╛рдБ рдмрдирд╛рддреЗ рд╕рдордп рдХрдВрдкрдиреА, рдХреНрд╖реЗрддреНрд░, рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рдкреВрдЫреЗ рдЬрд╛рдПрдВрдЧреЗред - рдЖрдк рдЙрдиреНрд╣реЗрдВ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрддреНрдкрдиреНрди рдХреБрдВрдЬреА (selfsign.key рдФрд░ selfsign.crt рд╡рд░реНрддрдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА) рдХреЛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 /etc/ssl/private/ 

рд╕рднреА webrtc рд╕реЗрдЯрд┐рдВрдЧреНрд╕ 2 рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ:

 /etc/uv4l/uv4l-raspicam.conf /etc/uv4l/uv4l-raspidisp.conf 

рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдЖрдЗрдЯрдореЛрдВ рдХреЗ рдЯрд╛рдпрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛
рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ uv4l-raspicam.conf рдФрд░ uv4l-raspidisp.conf рдХреЗ рд╕рд╛рде рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░реЗрдВред

Raspoot Raspberry рдФрд░ рдХреНрд░реЛрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ip raspberry рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ:

 https://192.168.1.100:8080 

WebRTC рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЦреБрдж рдХреЛ рдПрдХ рдЪреАрдЬ рддрдХ рд╕реАрдорд┐рдд рд░рдЦреЗрдВрдЧреЗ - рд╣рдо webrtc рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВрдЧреЗ:

рдЪрд┐рддреНрд░


рдЕрдм рджреЗрдЦреЗрдВ рдХрд┐ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреАрд░рд┐рдпреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдлреЛрди рдкрд░ рд╡реЗрдм рдкреЗрдЬ рдХреЗ рдиреАрдЪреЗ "рдХреЙрд▓" рдмрдЯрди рджрдмрд╛рдПрдВред

рдЪрд┐рддреНрд░


рд╕реНрдЯреАрд░рд┐рдпреЛ рдХреИрдорд░реЛрдВ рд╕реЗ рдПрдХ рд╡реАрдбрд┐рдпреЛ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡реЗрдм рдХреИрдорд░рд╛ рд╕реЗ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдЦрд┐рдбрд╝рдХреА рдХреЗ рдиреАрдЪреЗ "рдлреБрд▓рд╕реНрдХреНрд░реАрди" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:

рдЪрд┐рддреНрд░


* рдлреЛрди рдкрд░ рдкреЗрдЬ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рди рдХрд░реЗрдВ! рдпрджрд┐ рдпрд╣ рдЕрднреА рднреА рд╣реБрдЖ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдорд╛рд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 sudo killall uv4l 

рдФрд░ рдЙрд╕ рдкрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ:

 sudo service uv4l_raspidisp restart sudo service uv4l_raspicam restart 

рдлрд┐рд░ рдлреЛрди рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреЗрдЬ рдкрд░ , "рдХреЙрд▓" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
** рдХреЛрдИ рдХреИрдорд░рд╛ рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ рддреЛ рдХреЙрд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рд╣рдо рд╕рд░реНрд╡реЛрд╕ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред


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

рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдЪрд▓реЛ servos рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд░рддреЗ рд╣реИрдВред YouTube рд╡реАрдбрд┐рдпреЛ рд╕реАрдзреЗ gpio рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рд░реНрд╡реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╕рд░реНрд╡реЛ рдХрдо-рд╢рдХреНрддрд┐ рд╣реИрдВ, рдЖрдк рд╢рд╛рдпрдж gpio рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд░ 2 рд╕рд░реНрд╡реЛ рд▓рдЯрдХрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпреЗ рдЯреНрд░рд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ sg-90 рд╕рд░реНрд╡рд░ рдкрд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рд╡реЗ рдкреЛрд╖рдг рдореЗрдВ рдорд╛рдВрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рднрд╛рд░ рдХреЗ рд▓рд┐рдП рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯреАрд░рд┐рдпреЛрдкреА рд╕реЗ рджреЛ рдХреИрдорд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд▓рдВрдмрди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЦреЛрдЬ "рдкреИрди-рдЯрд┐рд▓реНрдЯ" рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдмрд▓ рдХреЛ рдЙрд╕реА рдПрд▓рд╛рдЗрдХреНрд╕рдкреНрд░реЗрд╕ рдкрд░ рдЦрд░реАрджрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрди рд╕рд░реНрд╡реЛрд╕ рдореЗрдВ рдПрдХ рдЧрдВрднреАрд░ рдорд╛рдЗрдирд╕ рднреА рд╣реИ - рд╡реЗ "рднрдп рд╕реЗ рдХрд╛рдВрдкрддреЗ рд╣реИрдВред" рдпрд╣ рдкреНрд░рднрд╛рд╡ рд╣реИ рдХрд┐ YouTube рд╡реАрдбрд┐рдпреЛ рдХрд╛ рд▓реЗрдЦрдХ рдЕрд╡рд▓реЛрдХрди рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдпрд╣рд╛рдВ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдЪрд┐рддреНрд░


* Mg-996N "рдХрд╛рдВрдк" рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд░рд╛рд╕реНрдкрдмреЗрд░реА 3 рдкрд░ рдорд╛рдирдХ рдХреЗ рд╕рдорд╛рди рд╕реНрдЯреЗрд░рд┐рдпреЛрдкреА рдХрд╛ рдПрдХ gpio рд▓реЗрдЖрдЙрдЯ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╕рд░реНрд╡реЛрд╕ рд╕реЗ рд╕рд┐рдЧреНрдирд▓ рддрд╛рд░реЛрдВ рдХреЛ gpio рдкрд░ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╕реЗ 5V рдирд╣реАрдВ рд▓реЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдЗрдб рд╕реЗ, GND рд░рд╛рд╕реНрдкрдмреЗрд░реА рдФрд░ рдПрдХ рдмрд╛рд╣рд░реА рд╕реНрд░реЛрдд рдХреЗ GND рдХреЗ рд╕рд╛рде GND рд╕рд░реНрд╡ рдХреЛ рдорд┐рд▓рд╛рдПрдВред

рдЕрдм рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИ


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

 sudo systemctl start pigpiod.service 

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕реЙрдХреЗрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕реЗ рд╡рд╣ рд╕реНрд╡рдпрдВ рдмрдирд╛рддрд╛ рд╣реИ:

datachannel_server_tele.py
 # python 3 # Taken from: # https://stackoverflow.com/questions/45364877/interpreting-keypresses-sent-to-raspberry-pi-through-uv4l-webrtc-datachannel # based on: # https://raspberrypi.stackexchange.com/questions/29480/how-to-use-pigpio-to-control-a-servo-motor-with-a-keyboard # public domain # systemctl status pigpiod.service # sudo systemctl start pigpiod.service # goto http://raspberrypi:8080/stream/webrtc and press Call! # video from raspberry pi appear # run from cmd raspberry: sudo python3 datachannel_server.py # turn on gps on phone # put V on 'send device orientation' from phone import socket import time import pigpio import os import re import json socket_path = '/tmp/uv4l.socket' try: os.unlink(socket_path) except OSError: if os.path.exists(socket_path): raise s = socket.socket(socket.AF_UNIX, socket.SOCK_SEQPACKET) ROLL_PIN = 4 #gpio PITCH_PIN = 17 #gpio ! not phisical pin YAW_PIN = 15 MIN_PW = 1000 # 0 degree MID_PW = 1500 # 90 degree MAX_PW = 2000 # 180 degree print ('socket_path: %s' % socket_path) s.bind(socket_path) s.listen(1) def cleanup(): pi.set_servo_pulsewidth(ROLL_PIN, 0) pi.set_servo_pulsewidth(PITCH_PIN, 0) pi.set_servo_pulsewidth(YAW_PIN, 0) pi.stop() while True: print ('awaiting connection...') connection, client_address = s.accept() print ('client_address %s' % client_address) try: print ('established connection with', client_address) pi = pigpio.pi() #pi = pigpio.pi('soft', 9080) rollPulsewidth = MID_PW pitchPulsewidth = MID_PW yawPulsewidth = MID_PW pi.set_servo_pulsewidth(ROLL_PIN, rollPulsewidth) pi.set_servo_pulsewidth(PITCH_PIN, pitchPulsewidth) pi.set_servo_pulsewidth(YAW_PIN, yawPulsewidth) while True: try: data = json.loads(connection.recv(200).decode('utf-8')) # dict except ValueError: # no data return continue # data #{"do":{"alpha":0.1,"beta":-0.3,"gamma":-0.2,"absolute":false}, # "dm":{"x":0,"y":0,"z":-0.2,"gx":0,"gy":0,"gz":-9.6,"alpha":-0.1,"beta":-0.1,"gamma":0.1} #print ('received message"%s"' % data) #print ('received message"%s"' % data['dm']['x']) # coordinate x from data #print ('received message"%s"' % data['dm']['y']) # coordinate y from data time.sleep(0.01) key1 = float(data['do']['alpha']) # os x 0 to 360 degree #key2 = float(data['do']['beta']) # os y #print(key1) #print(key2) rollPW = rollPulsewidth pitchPW = pitchPulsewidth yawPW = yawPulsewidth pitchPW = key1*5+500 print ('x: '+str(pitchPW)) #if pitchPW > MAX_PW: # pitchPW = MAX_PW #elif pitchPW < MIN_PW: # pitchPW = MIN_PW #rollPW = int(key2 + 1000) #print ('y: '+ str(int(rollPW))) #if rollPW > MAX_PW: # rollPW = MAX_PW #elif rollPW < MIN_PW: # rollPW = MIN_PW if rollPW != rollPulsewidth: rollPulsewidth = rollPW pi.set_servo_pulsewidth(ROLL_PIN, rollPulsewidth) if pitchPW != pitchPulsewidth: pitchPulsewidth = pitchPW pi.set_servo_pulsewidth(PITCH_PIN, pitchPulsewidth) if yawPW != yawPulsewidth: yawPulsewidth = yawPW pi.set_servo_pulsewidth(YAW_PIN, yawPulsewidth) #if data: #print ('echo data to client') #connection.sendall(str(data)) #else: #print ('no more data from', client_address) #break finally: # Clean up the connection cleanup() connection.close() 


рдкрд╛рда рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдЫреЛрдбрд╝реА рдЧрдИ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдХрд╣рд╛рдБ рд╕реЗ рдЖрдпрд╛ рдФрд░ рдХреНрдпрд╛ рдФрд░ рд╕рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреЛрдб рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдЕрд░реНрде рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  • рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╕рд░реНрд╡реЛ рдордзреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВред
  • 3 рдкрд┐рди (gpio) рд╣реИрдВ, рдЬрд┐рди рдкрд░ рд╕рд░реНрд╡реЛ рдХреЗ рд╕рд┐рдЧреНрдирд▓ рд╡рд╛рдпрд░ рд▓рдЯрдХреЗ рд╣реБрдП рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, 2 рдкрд┐рди (2 рд╕рд░реНрд╡реЛрд╕ рдХрд╛ рдирд┐рд▓рдВрдмрди)ред
  • рдкреАрдбрдмреНрд▓реВрдПрдо рд░реЗрдВрдЬ рдореЗрдВ 1000 рд╕реЗ 2000 рддрдХ рд╕рд┐рдЧреНрдирд▓ рд▓рдЧрд╛рдХрд░ gpio рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдлреЛрди рд╕реЗ рдПрдХ рд▓рд╛рдЗрди рдЖрддреА рд╣реИ, рдЬрд┐рд╕реЗ json рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдк рдХреБрдЫ рдФрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдлрд┐рд░ рдорд╛рди x рдФрд░ y рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреАрдбрдмреНрд▓реВрдПрдо рдорд╛рдиреЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рд╕рд░реНрд╡реЛ рдХреЛ рдШреБрдорд╛ рд╕рдХреЗрдВред

* рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ x 0 рд╕реЗ 360 рддрдХ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ (рдлреЛрди рдЕрдкрдиреА рдзреБрд░реА рдкрд░ рдШреВрдорддрд╛ рд╣реИ), y рдХреА рддрд░рд╣ред рдФрд░ рдпреЗ рдорд╛рди PWM рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬреЛ 1000 рд╕реЗ 2000 рддрдХ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВред рдХреЛрдб рд╕реВрддреНрд░ рдкрд┐рдЪрдк = рдХреА 1 * 5/500 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред 500 рдиреНрдпреВрдирддрдо рдкреАрдбрдмреНрд▓реВрдПрдо рд╕рд░реНрд╡реЛ рдореВрд▓реНрдп рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЛрдб рдореЗрдВ рдзрд╛рд░рдгрд╛ 1000 рд╣реИ)ред рдФрд░ 5 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдирд╛ рд╕рд╢рд░реНрдд рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ x = 360 рдкрд░, PWM рдорд╛рди рдЕрдзрд┐рдХрддрдо рд╕реЗ рдХрдИ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реИред рдХреНрд╖рддрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛ рдХреЛ рдЕрдзрд┐рдХрддрдо рд░реЛрдЯреЗрд╢рди рдХреЛрдг рд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдкреНрд░рд╕рдиреНрди рдирд╣реАрдВ рд╣реИред

рд░рд╛рд╕реНрдкрдмреЗрд░реА рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдХреЛрдб рдЪрд▓рд╛рдПрдБ:

 sudo python3 datachannel_server_tele.py 

рд╣рдо рдлрд╝реЛрди рдкрд░ GPS рдЪрд╛рд▓реВ рдХрд░реЗрдВрдЧреЗ (рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реЛрди рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдЖрдЗрдХрди рд╣реЛрдЧрд╛) рдФрд░ IP рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд░ рдЬрд╛рдПрдБред

 https://192.168.1.100:8080/stream/webrtc 

"рдХреЙрд▓" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдкреГрд╖реНрда рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлреЛрди рдкрд░, "рдбрд┐рд╡рд╛рдЗрд╕ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдХреЛрдг рдЕрд▓реНрдлрд╛, рдмреАрдЯрд╛, рдЧрд╛рдорд╛ рднреЗрдЬреЗрдВ" рдЬрд╛рдВрдЪреЗрдВред

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

* рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ (рджреВрд╕рд░реА рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИ)ред

рдЕрдЪреНрдЫрд╛ рдмреЛрдирд╕ webrtc рдХрд╛ рднреА рдЖрдкрдХреЛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ :

  • рдлреЛрди рдФрд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдХреЗ рдмреАрдЪ рдПрдХ рдЯреЗрд▓реАрдмреНрд░рд┐рдЬ рдХрд╛ рдПрдХ рд╕рд╛рдВрдЪрд╛ рдмрдирд╛рдПрдВ (рдЖрдкрдХрд╛ рдЗрдВрдЯрд░рд▓реЙрдХрд░рд░ рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛),
  • рджреЛрдиреЛрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдзреНрд╡рдирд┐ рдХрд╛ рдкреНрд░рд╕рд╛рд░рдг (рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛),
  • рдПрдХ рд╡реЗрдм рдкреЗрдЬ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░реАрдо, 3 рдбреА рдореЗрдВ рдпреВрдЯреНрдпреВрдмред
  • рдХрдИ рджреЛрд╕реНрддреЛрдВ рд╕реЗ рдПрдХ рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ рдХреЙрд▓ рдХрд░реЗрдВ (рдЬрд┐рддреНрддреА рдореБрд▓рд╛рдХрд╛рдд)ред
  • рд╡реЗрдм-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдХреНрдпреЛрдВ рдШреВрдорддрд╛ рд╣реИ! рдФрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдордХреНрдЦреА рдкрд░ рдХреИрдорд░рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓реЗрдВред

рдЕрдм рдЙрджрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред


1. рд╕реНрдХреВрд▓ рд╢рд╛рд╕рдХ рдкрд░ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреИрдорд░реЛрдВ рдХреЛ рдордЫрд▓реА рдХреА рдЖрдБрдЦреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдХрд░ рд╢рд╛рд▓реНрдЯреБрд░рд┐рдЯ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдордЫрд▓реА рдХреА рдЖрдБрдЦреЗрдВ рдЕрд▓рдЧ рд╣реИрдВред рд╣рдореЗрдВ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреИрдорд░реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



2. рд╡реЗрдмрдмреНрд░реИрдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯреАрд░рд┐рдпреЛ рдХреИрдорд░реЛрдВ рд╕реЗ рддрд╕реНрд╡реАрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред рдЬрдмрдХрд┐ рддрд╕реНрд╡реАрд░реЗрдВ рд╕рдВрдХрд░реА рд╣реИрдВ, рдЬреИрд╕реЗ рдПрдХ рдлреНрд░реЗрдВрдЪрдореИрди рдХреА рдкреИрдВрдЯред



3. MG996N рд╕рд░реНрд╡реЛ -180 рд░реЛрдЯреЗрд╢рди рдПрдВрдЧрд▓ рддрдХ рд╕реАрдорд┐рдд рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - 160. рд╢рд╛рдпрдж рдХреЛрдИ 360 рдХреЗ рд╕рд╛рде рд╕рд▓рд╛рд╣ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдирд┐рд░рдВрддрд░ рд░реЛрдЯреЗрд╢рди рдХреЗ рдмрд┐рдирд╛ред

4. рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЛ рдкреАрд╕рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

5. рдХреЙрд▓ рдХрднреА-рдХрднреА рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдкрд░рд┐рд╢рд┐рд╖реНрдЯ:

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


All Articles