-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Neuartiger (?) Roboter mit MicroPython als Betriebssystem

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von barbar
    Registriert seit
    20.05.2006
    Beiträge
    142

    Neuartiger (?) Roboter mit MicroPython als Betriebssystem

    Anzeige

    Hallo Forum, nach langer, arbeitslastbedingter Forumsabwesenheit versuche ich ab heute rund eine Stunde/Tag in die Entwicklung eines Roboters zu investieren und hier darüber zu berichten. Dabei verfolge ich folgende

    Ziele
    1. Umsetzung der Idee eines Roboters der Spezies "landgängiger Kopffüßer" (Robot Geocephalopoda?)

    2. Einfaches Konzept, schnelle Ergebnisse.

    3. Python lernen (Bisher habe ich nur gelegentlich fremde Python-Codeschnipsel wiederverwendet. Ich bin also Anfänger).

    4. Interesse an MicroPython wecken. MicroPython ist frei und quelloffen (FOSS). Siehe hier: https://github.com/micropython/micro...python-project
    Es enthält eine stattliche Teilmenge der interpretierten Programmiersprache Python - speziell für Mikrocontroller entwickelt. (Ich finde es sehr gut, dass man interaktiv mit dem Roboter sprechen/testen/debuggen kann, keine Toolchain benötigt bzw. nichts kompilieren muss).

    Umsetzung

    So, genug Vorrede. Es geht los. Der Komponentenhaufen sieht vorläufig wie folgt aus:

    Klicke auf die Grafik für eine größere Ansicht

Name:	foto01.jpg
Hits:	39
Größe:	75,5 KB
ID:	31320
    Bildinhalt

    • STM32F4-Microcontrollerboard (hier ein etwas teureres PyBoard ca. 25 EUR, günstiger wäre STM32F4-Discovery ab ca. 15 EUR. Oder in Kürze* ein ESP8266-Board ab ca. 10 EUR oder noch weniger)
    • Zwei Miniservos (je ca. 5 EUR)
    • USB-Powerbank 1000mAh (ca. 3 EUR)
    • Breadboard in Miniausführung (ca. 2 EUR)
    • Sharp Distanz-Sensor GP2D120 bzw. GP2Y0A21 (ca. 9 EUR)
    • Piezo-Signalgeber Rmp-14p/Hat (ca. 1,50 EUR)
    • Stiftleisten
    • Doppelseitiges Klebeband/Montageband
    • Isolierband/PVC


    Als nächstes sollte wohl überprüft werden, ob das Controllerboard funktioniert.

    Anregungen oder Fragen?
    Demnächst mehr.
    Gruß
    /barbar



    * Hinweis: Seit etwa drei Wochen läuft eine bereits mehrfach überzeichnete Geldsammelaktion https://www.kickstarter.com/projects...fully-easy-iot. Ziel ist es, MicroPython auf den beliebten/billigen WLAN-Chip ESP8266 zu bringen. MicroPython für ESP8266 wird in etwa zwei Wochen in Erstfassung vorliegen. Gute ESP8266-Boards sind ab etwa 10 EUR erhältlich!

    Geändert von barbar (28.02.2016 um 14:02 Uhr)

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied Avatar von barbar
    Registriert seit
    20.05.2006
    Beiträge
    142
    Es folgt eine kurze

    Funktionsprüfung des Controllerboards:


    1. Das Board verbinde ich mit dem PC mittels USB-Kabel (Micro-B zu Typ-A Stecker). Die USB-Verbindung ist hier sowohl für die Stromversorgung des Boards als auch für die Kommunikation zuständig.

    2. Die gelbe LED des Boards blitzt kurz auf (gut!).

    3. Auf meinem Linux-PC werfe ich meine lieblings Terminal-Emulation an: picocom.
    Hinweis: Wer mit Windows arbeitet, kann z.B. PuTTY (putty.exe) einsetzen, muss zuvor aber Treiber installieren. Bei Mac OS X funktioniert es wie bei Linux "out of the box".

    4. Nachdem die Verbindung zum Board steht, sieht mein Terminal Fenster wie folgt aus:

    Klicke auf die Grafik für eine größere Ansicht

Name:	2016-02-21-110227_673x557_scrot.png
Hits:	19
Größe:	34,2 KB
ID:	31322

    Auf dem Bild ist zu sehen, dass man, nachdem die Terminal-Emulation gestartet ist, direkt im Python-Prompt landet. Das Board hat den ersten Eignungstest aus meiner Sicht bestanden.

    Als nächstes werden die Stiftleisten an das Board gelötet und kleine Peripherietests mit dem Piezo-Signalgeber und mit einem Servo unternommen. Zuvor "beantrage" ich noch ein Youtube-Konto

    Anregungen oder Fragen?
    Demnächst mehr.
    Gruß
    /barbar

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von barbar
    Registriert seit
    20.05.2006
    Beiträge
    142
    Um keine Langeweile aufkommen zu lassen während ich die Stiftleisten anlöte, verlinke ich als Zwischeninformation für eventuell Interessierte auf die Kurzreferenz des hier verwendeten Controllerboards (pyboard PYBv1.0):

    Klicke auf die Grafik für eine größere Ansicht

Name:	pybv10-pinout.jpg
Hits:	25
Größe:	91,6 KB
ID:	31323
    http://docs.micropython.org/en/lates.../quickref.html


    Übrigens werden häufig Buchsenleisten an Stelle von Stiftleisten angebracht:

    Klicke auf die Grafik für eine größere Ansicht

Name:	pyboard_servo.jpg
Hits:	16
Größe:	69,0 KB
ID:	31324
    https://micropython.org/doc/tut-servo

    Mir passt das aber nicht so recht ins Konzept.

    Anregungen oder Fragen?
    Demnächst mehr.
    Gruß
    /barbar
    Geändert von barbar (21.02.2016 um 18:41 Uhr)

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied Avatar von barbar
    Registriert seit
    20.05.2006
    Beiträge
    142
    So, die Stiftleisten sind angelötet.

    Klicke auf die Grafik für eine größere Ansicht

Name:	foto02.jpg
Hits:	15
Größe:	54,1 KB
ID:	31326

    Diese Anordnung der Stiftleisten ist deshalb ausgewählt, damit

    1. das Controllerboard auf das kleine Steckbrett passt und

    2. zugleich die Servo-Pins nach oben frei zugänglich sind.

    Klicke auf die Grafik für eine größere Ansicht

Name:	foto03.jpg
Hits:	14
Größe:	45,1 KB
ID:	31328
    Bei dem kleinen Steckbrett muss Bestückung bzw. Verdrahtung unterhalb des Controllerboards wegen Überbreite desselben erfolgen

    3. Außerdem lässt sich bei dieser Stiftleistenanordnung gut auf der Powerbank herumreiten

    Klicke auf die Grafik für eine größere Ansicht

Name:	foto04.jpg
Hits:	22
Größe:	43,4 KB
ID:	31329


    Als nächstes wird ein Servo am Board getestet.

    Anregungen oder Fragen?
    Demnächst mehr.
    Gruß
    /barbar
    Geändert von barbar (21.02.2016 um 18:30 Uhr)

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von barbar
    Registriert seit
    20.05.2006
    Beiträge
    142
    Der Servotest ist erfolgreich abgeschlossen.

    Code sieht wie folgt aus:
    Code:
    def bewegen():
    
        import pyb
        servox = pyb.Servo(4)
    
        while True:
            for i in range(70, -70, -1):
                print(i)
                servox.angle(i)
                pyb.delay(10)
            for i in range(-70, 70, 1):
                servox.angle(i)
                print(i)
                pyb.delay(10)
    Und es bewegt sich etwas:
    https://youtu.be/JoGtijHsEzc

    Die Videoqualität ist katastrophal - bitte entschuldigt!
    [Erste youtube-"Produktion". Gefilmt mit Telefon (Flame mit Firefox OS). Muss jetzt etwa bessere Kamera her? §@#$€!]

    Anregungen oder Fragen?
    Demnächst mehr.
    Gruß
    /barbar

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied Avatar von barbar
    Registriert seit
    20.05.2006
    Beiträge
    142
    Heute stand das akustische Organ des zukünftigen Roboters auf dem Stundenplan.

    An den Piezo Signalgeber habe ich zunächst etwas stärkere Kupferdrähte angelötet, damit das Teil nicht herumhängt. Dann wurde angeschlossen ...

    Klicke auf die Grafik für eine größere Ansicht

Name:	foto05.jpg
Hits:	12
Größe:	46,3 KB
ID:	31342

    Klicke auf die Grafik für eine größere Ansicht

Name:	foto06.jpg
Hits:	11
Größe:	41,5 KB
ID:	31343

    ... und anschließend so lange geübt, bis das Pfeifen klang, wie es sollte:

    https://youtu.be/TBrJSGHhRPg
    [Nicht nur Bild, sondern auch Ton sind stark verbesserungsfähig: Zu leise! Mikrofon auf kameraabgewandter Seite des Telefons #@§! Naja, darauf gepfiffen!]


    Der zugehörige Python-Code sieht so aus:
    Code:
    def pfeifen():
    
        import pyb
        piezo = pyb.Pin(pyb.Pin.board.Y12, pyb.Pin.OUT_PP)
        led   = pyb.LED(4)
    
        for t in range(5):
    
            print('Pfiff',t) 
    
            for i in range(600, 10, -1):
                piezo.value(1)
                pyb.udelay(i)
                piezo.value(0)
                led.intensity(i)
            pyb.delay(200)
            for i in range(600, 10, -1):
                piezo.value(1)
                pyb.udelay(i)
                piezo.value(0)
                led.intensity(i)
            for i in range(10, 1200, 1):
                piezo.value(1)
                pyb.udelay(i)
                piezo.value(0)
                led.intensity(i)
            led.off()
            pyb.delay(1000)
    Die blaue Controllerboard-LED wurde "mitgenommen", damit man im Video auch sieht, wann gepfiffen wird


    Als Nächstes ist die Optik an der Reihe.

    Anregungen oder Fragen?
    Demnächst mehr.
    Gruß
    /barbar

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied Avatar von barbar
    Registriert seit
    20.05.2006
    Beiträge
    142
    Leider habe ich heute wenig Zeit. Deshalb dokumentiere ich nur kurz den neuesten Stand:

    Klicke auf die Grafik für eine größere Ansicht

Name:	foto07.jpg
Hits:	18
Größe:	43,6 KB
ID:	31346

    Auf dem Bild ist der Versuchsaufbau für den Distanz-Sensor zu erkennen. Der Sensor ist mit doppelseitigem Klebeband auf dem Servo angebracht. Zugleich wird hiermit ein erster Ansatz des Roboterkopfs präsentiert.

    Mit folgendem Code wird der Distanz-Sensor geprüft:
    Code:
    def sehen():
    
        import pyb
        irsinn = pyb.ADC(pyb.Pin.board.X1)
    
        while True:
            print(irsinn.read())
            pyb.delay(20)
    Testergebnisse bleibe ich bis morgen schuldig.

    Anregungen oder Fragen?
    Demnächst mehr.
    Gruß
    /barbar

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    24.06.2004
    Ort
    Berlin
    Alter
    52
    Beiträge
    376
    schicke arbeit, ich guck mal zu
    das leben ist hart, aber wir müssen da durch.

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    49
    Beiträge
    1.241
    Bist du sicher, dass das Board (ich hab gerade mal Infos gesucht, die Stromversorgung scheint auf max 300mA ausgelegt zu sein) die Servoströme wirklich verkraftet?
    Gerade diese Miniservos sind mitunter erstaunlich stromhungrig, die ziehen teilweise schon ohne Last mal eben 700mA....wenn du Glück hast, läuft es einfach nur langsamer, aber das kann auch ganz andere Nebenwirkungen mit sich bringen (Controller resettet, weil die Spannung einbricht oder irgend was geht in Rauch auf).
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied Avatar von barbar
    Registriert seit
    20.05.2006
    Beiträge
    142
    @morob: Danke für Zuspruch. Aktive Zuschauer führen womöglich zu sorgfältigerer Arbeit .

    @Rabenauge: Danke für Frage bzw. Hinweis. Nein, sicher bin ich nicht. Habe jedoch, ohne Anomalien festzustellen, bereits zwei Servos testweise gleichzeitig in Funktion gehabt (allerdings im Batteriebetrieb, da ich mir über den USB-Port am Notebook Sorgen gemacht habe). Darf ich nach der Quelle für die 300mA Fragen? Ich ging bisher von Absatz 4 dieser Anleitung aus: https://micropython.org/doc/tut-servo. Ihrzufolge verkraftet das Board mindestens 4 kleine bis mittlere Servos.

    Gruß
    /barbar

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. Betriebssystem: iRobot will Roboter zum Denken bringen
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 13.10.2014, 08:30
  2. Oddwerx: Smartphone-Roboter läuft mit Open-Source-Betriebssystem
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 19.04.2012, 12:40
  3. Neuartiger Speichertyp
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 03.10.2011, 20:50
  4. Projekt: Plattformübergreifendes Roboter-Betriebssystem
    Von michigrunf im Forum Open Source Software Projekte
    Antworten: 6
    Letzter Beitrag: 10.09.2007, 04:30
  5. Betriebssystem für AVR/µC auf dem Roboter
    Von MartinITM im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 05.08.2007, 19:55

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •