PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 mit ESP32 - ein kleine Library (via UART)



fabqu
28.01.2023, 19:52
Ein Hallo an die (hoffentlich zahlreichen) Noch- Enthusiasten des RP6! Ich hab meinen alten aus der Kiste geholt und versuche mich seither an der Kombination RP6-base und ESP32. Mein erster Start war die Remotrol (https://www.roboternetz.de/community/threads/47704-RP6-Remotrol-1-3-Die-Opensource-RP6-Fernsteuerung?highlight=remotrol)von FabianE., sprich der RP6 wird via UART an den ESP32 angebunden. Da letzterer ja sogar drei echte UARTs hat, hab ich hierfür seinen UART2 verwendet.
Dank sehr viel Hilfe eines echten Programmierers habe ich diese Library für den ESP32 (https://github.com/MINT-Labs-Regensburg/RP6_UART2_Library)gebastelt.

Derzeit wird hier und da noch geschraubt, man könnte die Library also als "beta" deklarieren. So versuche ich gerade, eine kleine WiFi- oder besser ESPnow-Fernsteuerung zu bauen:

Ich hab einmal mit RemoteXY (https://remotexy.com/) etwas herumgespielt. Ist ganz nett, aber zum Einen darf man (in der kostenfreien Version) nur fünf Objekte erstellen, und zum Anderen hatte ich häufige Abbrüche der App, die ich nicht wirklich erklären konnte. Zuletzt kann man kein Kamerabild einbinden und der Entwickler von RemoteXY scheint kein Interesse mehr am Projekt zu haben, es wird also wohl keine Updates mehr geben.
Stand heute (Januar 2023) versuche ich einen M5StickC zusammen mit dem JoyC Joystick-Modul als Fernsteuerung zu verwenden. Vorteil hier: insgesamt stehen dann zwei Joysticks und vier Buttons zur Verfügung sowie RGB-LEDs und ein OLED-Display als Ausgabe. Also insgesamt eine Menge Interaktionsmöglichkeiten. Die VErbindung zwischen Remote und RP6-ESP soll mittels ESPnow-Protokoll geschehen, also peer2peer. Ja, auch hier geht kein Kamerabild, aber das könnte parallel über einen zweiten ESP32-CAM via WiFi noch geschehen.


So. Falls es Input/Wünsche/Issues zur ESP-Library gibt, meldet euch gern. Der nächste Schritt wäre evtl. eine I2C-Library...

Grüße
fabqu

Pr0gm4n
29.01.2023, 16:07
Hallo Fabqu,

ich kenne den ESP32 leider gar nicht, und es sieht für mich so aus als ob dort die meiste Arbeit für Euer Projekt stecken wird. Kannst du ein wenig erklären warum die Wahl für den Programmierkurs auf die ESP32-Erweiterung fiel? Warum nicht einfach nur den RP6? Ich hätte den damals schon super gefunden, aber ohne jemanden der mir tatsächlich vor Ort damit hilft bin ich leider nie weit mit meinen Projekten gekommen.

LG Roland

fabqu
29.01.2023, 18:17
Hi! Ah, das verwechselst du: die M32 war eine Erweiterung des RP6, aber ich meine den ESP32 - das ist ein billiger aber viel viel besserer Arduino-Klon aus China, hat zwei Kerne, WLAN, Bluetooth, und sehr sehr viel Peripherie. Ist dank Arduino auch für jemanden wie mich zu programmieren ;) sehr schönes Spielzeug, geht mit C, C++, MicroPython und sogar Basic!

Pr0gm4n
29.01.2023, 18:49
Hallo Fabqu,

nein nein – war mir schon klar. Ich habe die M32 tatsächlich sogar hier rumliegen. Aber eben, ich meinte warum nicht nur den Basis-Roboter programmieren sondern einen anderen Chip, sozusagen als "Erweiterung"? Ich fand die Einfachheit gar nicht so viele Möglichkeiten zu haben eigentlich ganz schön. Auf der anderen Seite, wenn ihr das fixfertig zusammenbaut, können die Schüler natürlich jegliche Arduino-Ressourcen nutzen. Ich denke jetzt verstehe ich den Ansatz schon ein wenig besser. Was ist denn bei Euch die Zielgruppe?

Grüsse,
Roland

fabqu
30.01.2023, 16:49
Wir haben sowohl ganze Schulklassen bei uns, als auch (nachmittags/Ferien) Kleingruppen an Interessierten Kids/Jugendlichen. So ca. ab 8 Jahren. Da brauche ich leider mit bit-schubsen nicht anfangen, die wollen was schön aufbereitetes und etwas abstrahiertes, wie eben Arduino-C. Daher find ich den ESP so spannend. Viele Möglichkeiten, aber doch einfach in der Anwendung.

Pr0gm4n
01.02.2023, 20:26
Bunt gemischt also! Wenn du dann für eine ganze Horde an Kids passende Projekte haben musst, dann verstehe ich Euren Ansatz etwas besser. Habt ihr schon an Funktionen gedacht wie die verschiedenen Roboter miteinander interagieren könnten? Vielleicht eine simple Erkennung wie nah man sich ist? Ich bin gerade nicht ganz sicher was für Sensoren Eure Robbys so haben...

Verstehe ich richtig, dass die Roboter in einem ersten Schritt mal ferngesteuert werden? Per PC--(ESPnow)--ESP32--(UART)--RP6 Verbindung? Vielleicht kann man den Robotern ja sowas wie einen "Namen" setzen und wenn man nahe genug an einen anderen Roboter fährt zeigt es einem sowas an wie "Hallo von <Name des anderen Bots>". Was man mit einer Interaktion sinnvolles machen könnte, außer kollaborative Aufgaben zu bewältigen oder Kollisionen zu vermeiden, weiss ich aber gerade auch nicht.

Habt ihr sonst noch Pläne? In was für einem Zeitumfang können sich die Kids normal mit den Robotern beschäftigen? Eher einzelne Tage, oder gibt es auch längerfristige Bastelgruppen bei Euch?

LG Roland

fabqu
02.02.2023, 08:11
Hi! Das Konzept ist da noch offen, erst mal will ich das Ding so herbringen, dass es überhaupt von Kindern genutzt werden kann, dass sie also eine gut laufende Bibliothek im Sinne von "Fahre Vorwärts" auf dem ESP nutzen können. Und dann teste ich das an unseren Junghackern, die sind schon mal etwas fitter in den Bereichen.
Und dann erst überlegen wir uns Aufgaben für andere Gruppen! Aber deine Idee gefällt mir ;)
Und wie du sagst - man könnte ihn fernsteuern (PC, Smartphone, anderer ESP) oder halt eher autark "Dinge" tun lassen. Als Roboter ist das Autarke natürlich von meiner Seite aus das Interessante, aber mal sehen was später bei raus kommt.

Unsere Zielgruppe ist recht breitbandig: Kinder, Jugendliche, Lehrkräfte. Alles rund um Schule ab ca. 8 Jahren, aber wir hatten auch schon vierjährige bei uns. Und wir haben ganze Schulklassen hier oder Kleinst- und Kleingruppen. Alles ist möglich :D

Schöne Grüße

Pr0gm4n
02.02.2023, 09:19
Guten Morgen,

ich finde jedenfalls das klingt echt super! Sonst fällt mir gerade noch simple "Computer Vision" als nützliches Feature ein, mit dem man schon recht gut mit der Umwelt interagieren kann. Sei es, dass man gewisse (simple!) Fiducial Markers unterstützt, also im Prinzip so etwas wie vereinfachte QR Codes und dadurch erlaubt etwas zu basteln, das den Programmfluss steuert, oder ob man einfach einen 2D-Vektor mit Helligkeitswerten bekommt, anhand von dem man z.B. Kollisionserkennung machen könnte.

Die Marker könnten u.A. auch die jeweiligen Roboter identifizieren, ich denke dabei an einen Interrupt / eine Callback-Routine die man dafür registrieren könnte. Dazu könnte man auch Marker im Raum positionieren und den Kids erlauben bei Marker 0x7 nach rechts, aber bei Marker 0x8 nach links zu fahren. Und so weiter.

Der Vektor an Helligkeiten ist wohl eher was für Fortgeschrittene... aber wenn man schon mal dabei ist? ;-) Ich bin jedenfalls gespannt was Euch noch alles einfällt. Habt ihr dafür schon eine fixe Timeline, oder läuft das halt nebenbei bis es so weit ist?

LG Roland

fabqu
02.02.2023, 09:23
Sehr cooler Input, danke dir!
Das ganze läuft gerade bei mir nebenbei, eher als Hobby mit Nutzfaktor! Also noch nix festes geplant. Morgen Abend sind die JungHacker da, da werd ich mal einen ersten Probeballon steigen lassen!
Grüße
Fabian

inka
03.02.2023, 13:14
hallo fabqu,
wie ist der anschluss des ESP32 geplant?

auf der arduino-IO ist ja die möglichkeit einen mega 2560 anzuschliessen, es gibt bereits die 2560 mit integriertem ESP 8266. wäre sowas eine möglichkeit?

wie sollen der RP und der ESP untereinander kommunizieren? I2C?

Pr0gm4n
03.02.2023, 13:24
... sprich der RP6 wird via UART an den ESP32 angebunden. Da letzterer ja sogar drei echte UARTs hat, hab ich hierfür seinen UART2 verwendet.

Ich denke UART via Remotrol ist geplant.

LG Roland

fabqu
03.02.2023, 13:51
Hi Inka!
Das läuft schon, siehe hier: https://github.com/MINT-Labs-Regensburg/RP6_UART2_Library
entsprechend hängt der ESP32 mit seinem UART2 am UART des RP6. UART1 vom ESP wollte ich mir für Debugging etc frei halten.
Aber ja, auch über die ArduIO wäre es möglich gewesen - aber da die nur sehr wenige Menschen haben, wollte ich es direkt ohne Umwege gestalten.

Es wäre geplant (wenn mir nicht die Lust abhanden kommt) auch eine I2C-Schnittstelle mit entsprechender Library für den RP6 zu bauen. Aber mittels UART war der Einstieg erst mal leichter und es läuft sehr zuverlässig. Da gehen die Credits natürlich an FabianE. für seine Remotroll-UART-Firmware für den RP6!!!

Grüße