Liste der Anhänge anzeigen (Anzahl: 1)
Neuartiger (?) Roboter mit MicroPython als Betriebssystem
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:
Anhang 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!
Liste der Anhänge anzeigen (Anzahl: 1)
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:
Anhang 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 :cool:
Anregungen oder Fragen?
Demnächst mehr.
Gruß
/barbar
Liste der Anhänge anzeigen (Anzahl: 2)
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):
Anhang 31323
http://docs.micropython.org/en/lates.../quickref.html
Übrigens werden häufig Buchsenleisten an Stelle von Stiftleisten angebracht:
Anhang 31324
https://micropython.org/doc/tut-servo
Mir passt das aber nicht so recht ins Konzept.
Anregungen oder Fragen?
Demnächst mehr.
Gruß
/barbar
Liste der Anhänge anzeigen (Anzahl: 3)
So, die Stiftleisten sind angelötet.
Anhang 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.
Anhang 31328
Bei dem kleinen Steckbrett muss Bestückung bzw. Verdrahtung unterhalb des Controllerboards wegen Überbreite desselben erfolgen :rolleyes:
3. Außerdem lässt sich bei dieser Stiftleistenanordnung gut auf der Powerbank herumreiten :cool:
Anhang 31329
Als nächstes wird ein Servo am Board getestet.
Anregungen oder Fragen?
Demnächst mehr.
Gruß
/barbar
Liste der Anhänge anzeigen (Anzahl: 2)
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 ...
Anhang 31342
Anhang 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 :rolleyes:
Als Nächstes ist die Optik an der Reihe.
Anregungen oder Fragen?
Demnächst mehr.
Gruß
/barbar
Liste der Anhänge anzeigen (Anzahl: 1)
Leider habe ich heute wenig Zeit. Deshalb dokumentiere ich nur kurz den neuesten Stand:
Anhang 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