Der neue RP6-ESP

Hier soll der RP6 (genauer der RP6v2-Base) mit einem ESP kombiniert werden.

Hardware

Firmware RP6

Wie beschrieben kommt im Wesentlichen die Firmware für den RP6-Base von FabianE.'s Remotrol zum Einsatz. Hinzugefügt wurde in der RP6RobotBaseLib.c der Absatz zu den BackBumpers:

//*********NEW***********
// from: nil.at, RP6-Forum

uint8_t getBackBumperLeft(void) 
{ 
   PORTB &= ~SL4;				//Schalte StatusLED4 (liegt auf PortB) ab
   DDRB &= ~SL4; 				//Schalte StatusLED4 auf Eingang
   nop(); 						//warte kurz
   uint8_t tmp = PINB & SL4; 	//Lege den Wert von StatusLED4 auf "tmp"
   if(statusLEDs.LED4) 			//wenn StatusLED4 vorher schon an war
   { 
      DDRB |= SL4; 				//Schalte StatusLED4 auf Ausgang
      PORTB |= SL4; 			//und schalte StatusLED4 wieder an
   } 
   return tmp; 
} 

uint8_t getBackBumperRight(void) 
{ 
   PORTC &= ~SL1; 				//Schalte StatusLED1 (liegt auf PortC) ab
   DDRC &= ~SL1; 				//Schalte StatusLED1 auf Eingang
   nop(); 						//warte kurz
   uint8_t tmp = PINC & SL1; 	//Lege den Wert von StatusLED1 auf "tmp"
   if(statusLEDs.LED1) 			//wenn StatusLED1 vorher schon an war
   { 
      DDRC |= SL1; 				//Schalte StatusLED1 auf Ausgang
      PORTC |= SL1; 			//und schalte StatusLED1 wieder an
   } 
   return tmp; 
}

Entsprechend wurde auch der BUMPERS_stateChanged_DUMMY(void) angepasst und die RP6RobotBaseLib.h.

Software ESP32

Der auf dem ESP32 laufende Code findet sich am Ende dieses Artikels. Die Software des ESP32 wurde zunächst mit RemoteXY gemacht. RemoteXY liefert ein schönes GUI für das Smartphone, jedoch mit allerlei Einschränkungen (nur gewisse Bausteine; keine Einbindung eines Kamerabildes; bei mehr als fünf Bausteinen wird es mit 12,99 Euro kostenpflichtig!). Daher wurde doch wieder auf eigenen Code zurückgegriffen. Nun dient ein M5stickC mit JoyC-Joysticks als Remote-Controller sowie zur Anzeige der Sensordaten. Auf dem ESP32 des RP6 läuft ebenfalls eigener Code, welcher im Wesentlichen die Sensordaten via ESPnow an den M5stickC schickt und vom M5stickC Befehle erwartet. Der Code wurde von Fabian geschrieben.

Library für den RP6 mit UART2

Es gibt eine Bibliothek RP6_UART2_LIB.h, welche es dem ESP32 ermöglicht, via UART2 mit dem RP6 zu kommunizieren.

Änderungen und Erweiterungen

Einiges mehr soll noch kommen, hier ein paar Ideen/Pläne:

Hardware

Firmware RP6

Weitere Änderungen sollen sein: Wenn das ACS (Anti-Collision-System) an ist, soll automatisch beim Rückwärtsfahren das vordere ACS de- und das hintere (die beiden IR-Sharp-Sensoren) aktiviert werden; beim Vorwärtsfahren entsprechend das hintere de- und das vordere aktiviert. Bei einer Drehung auf der Stelle sollen beide aktiv sein.

Außerdem soll bei Kurven der jeweilige Blinker blinken und bei Drehungen auf der Stelle sowie bei Zusammenstößen soll der Warnblinker an gehen.

Software ESP32

Code auf dem ESP32

diesen gibt's demnächst auf der Github-Seite als Beispielcode zur UART-Library RP6_UART2_LIB.h.


Revision #12
Created 19 November 2022 17:32:17 by Fabian
Updated 19 March 2024 13:42:26 by Fabian