Найти Ρ‚Π΅ΠΌΡƒ
106 подписчиков

🧑БозданиС прилоТСния для ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π²ΠΈΠ΄Π΅ΠΎ с физичСскими элСмСнтами управлСния


Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π° Python ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π΅ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ физичСских ΠΊΠ½ΠΎΠΏΠΎΠΊ?

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Arduino ΠΈΠ»ΠΈ Raspberry Pi) для взаимодСйствия с физичСскими ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π½Π° Python. ЦСль – Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ физичСских ΠΊΠ½ΠΎΠΏΠΎΠΊ.

НСобходимыС условия:
ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ, Π²Π°ΠΌ потрСбуСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

1. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ с установлСнным Python.
2. Π’Π΅Π±-ΠΊΠ°ΠΌΠ΅Ρ€Π°, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ.
3. ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Arduino, Raspberry Pi) с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΊ Π½Π΅ΠΌΡƒ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ.
4. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ знания ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° языкС Python.

Настройка оборудования
βœ”οΈ Π‘Π½Π°Ρ‡Π°Π»Π° настройтС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹:

β€’ ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ физичСскиС ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ.
β€’ Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ рСзисторы ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π° для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ.
β€’ ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΈ отпусканиС ΠΊΠ½ΠΎΠΏΠΎΠΊ.

УстановлСниС связи
βœ”οΈ Π”Π°Π»Π΅Π΅ слСдуСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠ°Π½Π°Π» связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π½Π° языкС Python ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ. Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс USB ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ интСрфСйсы Π² зависимости ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс USB.

НаписаниС ΠΊΠΎΠ΄Π° Π½Π° языкС Python
βœ”οΈ Π’Π΅ΠΏΠ΅Ρ€ΡŒ напишСм ΠΊΠΎΠ΄ Π½Π° языкС Python для управлСния Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ физичСских ΠΊΠ½ΠΎΠΏΠΎΠΊ. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ OpenCV для Π·Π°Ρ…Π²Π°Ρ‚Π° Π²ΠΈΠ΄Π΅ΠΎ с Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π΅Π³ΠΎ Π½Π° экран. Кнопки, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ, Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° запуск ΠΈ остановку Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠ°.

import cv2

# Initialize the webcams
cap_self = cv2.VideoCapture(0)
cap_other = cv2.VideoCapture(1) # Change the index to the appropriate camera for the other user

# Check if the webcams are opened successfully
if not cap_self.isOpened() or not cap_other.isOpened():
print("Error: Could not open one or both of the webcams.")
exit()

# Create a window to display both video feeds side by side
cv2.namedWindow("Video Chat App", cv2.WINDOW_NORMAL)
cv2.resizeWindow("Video Chat App", 640, 480) # Adjust the window size as needed

while True:
# Read frames from both webcams
ret_self, frame_self = cap_self.read()
ret_other, frame_other = cap_other.read()

if not ret_self or not ret_other:
print("Error: Could not read frames from one or both of the webcams.")
break

# Resize frames to have the same dimensions (optional)
frame_self = cv2.resize(frame_self, (320, 240))
frame_other = cv2.resize(frame_other, (320, 240))

# Concatenate frames horizontally to display side by side
display_frame = cv2.hconcat([frame_self, frame_other])

# Display the concatenated frame in the window
cv2.imshow("Video Chat App", display_frame)

# Break the loop when the 'q' key is pressed
if cv2.waitKey(1) & 0xFF == ord('q'):
break

# Release the webcams and destroy the window
cap_self.release()
cap_other.release()
cv2.destroyAllWindows()

ВСстированиС установки
Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для обнаруТСния наТатия ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° посылаСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ β€œSTART” (s – β€˜ΡΡ‚Π°Ρ€Ρ‚β€™ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅) ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ β€œSTOP” (q – β€˜ΡΡ‚ΠΎΠΏβ€™ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅) ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
ЗапуститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Python Π½Π° своСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.
ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π²Ρ‹
Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΠΎΠΊΠ½Π΅ OpenCV запуск ΠΈ остановку Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠ°.

⬅️ ΠœΡ‹ создали ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π²ΠΈΠ΄Π΅ΠΎ с физичСскими ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ запуска ΠΈ остановки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

⬅️ Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ дСмонстрируСт, ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ элСмСнты управлСния с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π½Π° Python для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

⬅️ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π² Π΅Π³ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ.

3 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹