Faites agir Python pour vous, puis vos yeux et votre cerveau ...

Contexte

Il y a des moments où vous travaillez sur une tablette et que vous devez continuer à taper pendant un moment. Mais je ne peux pas retirer mes mains parce que je fais quelque chose de différent, ou j'abandonne avec une main cassée. Même dans un tel cas, j'ai fait un "doigt" qui agit comme un robinet avec Python, Arduino et un servomoteur. Si cela fonctionne, l'étape suivante consiste à capturer l'écran de la tablette et à créer un gars que l'IA juge et donne des instructions au doigt.

Achat du kit de démarrage Arduino UNO

Tout d'abord, la carte micro-ordinateur. A cet effet, Arduino semble être suffisant, donc si vous cherchez un kit livré avec un capteur, vous pouvez l'acheter sur Amazon pour un peu plus de 3000 yens! Ce n'est pas cher. image.png Immédiatement, j'ai installé l'IDE de Sketch, le langage de développement dédié à Arduino, et j'ai essayé le soi-disant "L Chika", qui est une introduction au clignotement des LED. Ouais, facile. Sketch est un mécanisme qui se compile sur un PC et transfère le module vers Arduino via USB pour l'exécuter. Hmmmm. J'ai donc décidé de faire apparaître un servomoteur au nom de mes doigts. image.png C'est un carré d'environ 3 cm comme celui-ci, et si vous spécifiez un angle, il se déplacera vers cet angle. Ce n'est pas un moteur qui tourne. L'esquisse pour contrôler ce servo est très facile comme suit. Spécifiez simplement la broche Arduino à laquelle le servo est connecté et entrez l'angle ici. Insérez un délai approprié et vérifiez qu'il fonctionne bien. image.png

Faire un doigt

Maintenant que nous avons confirmé que le servo fonctionne, nous allons faire un doigt pour appuyer sur la tablette. Attachez le fil à la pointe du servomoteur et fixez la partie électrostatique à la pointe. Les coussinets d'oreille des écouteurs sont enveloppés dans du papier d'aluminium car la sensation de douceur due à l'électricité est similaire à celle d'un doigt. Un fil de liaison y est inséré et il est mis à la terre à GND. Le servomoteur étant léger, il est fixé avec un gros clip en fer. 9C9F0974-9B54-4904-838D-343930155B93.jpeg

Se préparer à contrôler le servo avec Python (Firmata)

Au fait, le programme qui s'exécute tel quel charge celui compilé à l'aide de SketchIDE sur le PC, il n'est donc pas possible de donner des instructions en fonction des différentes situations. Par conséquent, nous allons passer à un mécanisme qui peut être lié à un PC en temps réel. La bibliothèque pour cela est "Firmata". C'est comme un protocole pour interagir avec votre PC, compilez simplement l'exemple de code Firmata dans Sketch et chargez-le dans Arduino, et vous attendez les instructions de votre PC. Cette fois, j'ai chargé un programme pour servo appelé "ServoFirmata". image.png

Déplaçons le servo avec Python (Pyfirmata)

Tout ce que vous avez à faire est d'écrire un programme qui exécute le servo en Python. Pour ce faire, vous devez importer la bibliothèque "Pyfirmata". Installez rapidement avec pip.

pip install pyfirmata

Tout ce que vous avez à faire est de l'importer, de le connecter au port auquel Arduino est connecté, de spécifier la broche du servo et d'y écrire l'angle. L'exemple ci-dessous fonctionne correctement, se repose et se termine à 4 h 50 du matin. La raison de dormir au hasard est de le faire se comporter comme un être humain. (Ceci est juste un code pour vérifier l'opération, alors ne demandez pas à quoi vous l'avez utilisé.)

python


import pyfirmata
import time
import sys
import random
import datetime

# >python servo.py [wait] [loop]
args = sys.argv
wt = 40.0
lp = 15
if len(args) > 2:
    wt = float(args[1])
if len(args) == 3:
    lp = int(args[2])

# setup servo moter for arduino UNO
board = pyfirmata.Arduino('COM3')
it = pyfirmata.util.Iterator(board)
it.start()
pin9 = board.get_pin('d:9:s')

while True:
    loop_n = random.randint(lp, lp + 5)
    for i in range(loop_n):
        pin9.write(110)
        time.sleep(0.25 + random.random() * 0.1)
        pin9.write(100)
        time.sleep(1.2 + random.random() * 1.0)

    time.sleep(wt + random.random() * 5.0 - float(loop_n - lp))

    # terminate at 04:50
    dt_now = datetime.datetime.now()
    if dt_now.hour == 4 and dt_now.minute > 50:
        break

À la fin

Jusqu'à présent, vous avez utilisé avec succès Python pour déplacer un servo au lieu d'un doigt. Après cela, nous commencerons à changer les instructions automatiquement en fonction de la situation de la tablette. Plus précisément, nous prévoyons de capturer l'écran de la tablette, de l'importer sur un PC, d'identifier la situation actuelle grâce au modèle de classification AI appris à l'avance et de créer un programme qui donne des instructions précises. Si vous pouvez le faire jusqu'à présent, il semble que vous puissiez remplacer vos yeux, votre cerveau et vos doigts par des humains. Que ce soit logique ou non est une autre question, mais w

Recommended Posts

Faites agir Python pour vous, puis vos yeux et votre cerveau ...
[Python] Empaquetez et distribuez vos propres modules
6 bibliothèques Python pour un développement et un débogage plus rapides
Jusqu'à ce que vous installiez votre propre bibliothèque Python
SublimeText2 et SublimeLinter - Vérification de la syntaxe pour Python3 -
Pour Python 3.4 ou version ultérieure, vous devez simplement jeter os.path et utiliser pathlib
Étapes pour mettre dlib dans Python Tools pour Visual Studio et s'amuser
Combien de types de Python avez-vous dans votre macOS? J'avais 401 types.