Lassen Sie Python für Sie handeln, dann Ihre Augen und Ihr Gehirn ...

Hintergrund

Es gibt Zeiten, in denen Sie an einem Tablet arbeiten und eine Weile weiter tippen müssen. Aber ich kann meine Hände nicht abnehmen, weil ich etwas anderes mache oder mit einer gebrochenen Hand aufgebe. Selbst in einem solchen Fall habe ich einen "Finger" gemacht, der mit Python, Arduino und einem Servomotor als Tipp dient. Wenn dies funktioniert, besteht der nächste Schritt darin, den Bildschirm des Tablets zu erfassen und einen Mann zu erstellen, den die KI beurteilt und dem Finger Anweisungen gibt.

Kaufen Sie das Arduino UNO Starter Kit

Zuallererst die Mikrocomputerplatine. Für diesen Zweck reicht Arduino aus. Wenn Sie also nach einem Kit mit Sensor suchen, können Sie dieses bei Amazon für etwas mehr als 3000 Yen kaufen! Das ist billig. image.png Sofort installierte ich die IDE von Sketch, die Entwicklungssprache für Arduino, und probierte das sogenannte "L Chika" aus, eine Einführung in blinkende LEDs. Ja einfach. Sketch ist ein Mechanismus, der auf einem PC kompiliert und das Modul über USB an Arduino überträgt, um es auszuführen. Hmmmm. Also beschloss ich, einen Servomotor für meine Finger erscheinen zu lassen. image.png Es ist ungefähr 3 cm groß und wenn Sie einen Winkel angeben, bewegt es sich in diesen Winkel. Es ist kein sich drehender Motor. Die Skizze zur Steuerung dieses Servos ist wie folgt sehr einfach. Geben Sie einfach den Arduino-Pin an, an den das Servo angeschlossen ist, und geben Sie dort den Winkel ein. Fügen Sie eine entsprechende Verzögerung ein und überprüfen Sie, ob sie ordnungsgemäß funktioniert. image.png

Mach einen Finger

Nachdem wir bestätigt haben, dass das Servo funktioniert, drücken wir mit dem Finger auf das Tablet. Binden Sie den Draht an die Spitze des Servomotors und befestigen Sie den elektrostatischen Teil an der Spitze. Die Ohrpolster der Kopfhörer sind mit Aluminiumfolie umwickelt, da das weiche Gefühl durch Elektrizität dem eines Fingers ähnelt. Dort wird ein Überbrückungskabel eingeführt und an GND geerdet. Da der Servomotor leicht ist, wird er mit einem großen Eisenclip befestigt. 9C9F0974-9B54-4904-838D-343930155B93.jpeg

Vorbereitung zur Steuerung des Servos mit Python (Firmata)

Übrigens lädt das Programm, das so ausgeführt wird, wie es mit SketchIDE kompiliert wurde, auf dem PC, sodass es abhängig von verschiedenen Situationen nicht möglich ist, Anweisungen zu geben. Daher werden wir auf einen Mechanismus umsteigen, der in Echtzeit mit einem PC verbunden werden kann. Die Bibliothek dafür ist "Firmata". Es ist wie ein Protokoll für die Interaktion mit Ihrem PC. Kompilieren Sie einfach den Beispiel-Firmata-Code in Sketch und laden Sie ihn in Arduino. Sie warten dann auf Anweisungen von Ihrem PC. Dieses Mal habe ich ein Programm für Servo namens "ServoFirmata" geladen. image.png

Bewegen wir das Servo mit Python (Pyfirmata)

Sie müssen lediglich ein Programm schreiben, das das Servo in Python ausführt. Dazu müssen Sie die Bibliothek "Pyfirmata" importieren. Mit pip schnell installieren.

pip install pyfirmata

Alles, was Sie tun müssen, ist es zu importieren, es an den Port anzuschließen, an den Arduino angeschlossen ist, den Servostift anzugeben und dort den Winkel zu schreiben. Das folgende Beispiel funktioniert ordnungsgemäß, ruht und endet um 4:50 Uhr morgens. Der Grund für das zufällige Schlafen ist, dass es sich wie ein Mensch verhält. (Dies ist nur ein Code zum Überprüfen des Vorgangs. Fragen Sie daher nicht, wofür Sie ihn verwendet haben.)

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

Am Ende

Bisher haben Sie Python erfolgreich verwendet, um ein Servo anstelle eines Fingers zu bewegen. Danach werden wir beginnen, die Anweisungen automatisch entsprechend der Situation des Tablets zu ändern. Insbesondere planen wir, den Tablet-Bildschirm zu erfassen, ihn auf einen PC zu importieren, die aktuelle Situation anhand des im Voraus erlernten AI-Klassifizierungsmodells zu identifizieren und ein Programm zu erstellen, das genaue Anweisungen enthält. Wenn Sie dies bisher tun können, können Sie anscheinend Ihre Augen, Ihr Gehirn und Ihre Finger durch Menschen ersetzen. Ob es Sinn macht oder nicht, ist eine andere Sache, aber w

Recommended Posts

Lassen Sie Python für Sie handeln, dann Ihre Augen und Ihr Gehirn ...
[Python] Packen und verteilen Sie Ihre eigenen Module
6 Python-Bibliotheken für schnellere Entwicklung und Debugging
Bis Sie Ihre eigene Python-Bibliothek installieren
SublimeText2 und SublimeLinter - Syntax prüfen auf Python3--
Für Python 3.4 oder höher sollten Sie einfach os.path wegwerfen und pathlib verwenden
Schritte, um dlib in Python Tools für Visual Studio einzufügen und Spaß zu haben
Wie viele Arten von Python haben Sie in Ihrem MacOS? Ich hatte 401 Typen.