#pragma once typedef enum { COMM_IN_UDP = 0x00, COMM_IN_ESPNOW = 0x01, COMM_IN_OTHER = 0x02 } comm_input; typedef enum { COMM_OUT_UDP = 0x00, // Send output via protocol over UDP COMM_OUT_ESPNOW = 0x01, COMM_OUT_UART = 0x02 } comm_output; typedef struct { comm_input input; comm_output output; char wifi_ssid[23]; char wifi_pass[23]; } comm_settings; extern comm_settings communicationSettings; ////////////////////////////////////////////////////////// // macro types for different configurations and boards #define CFG_ODROIDGO 0 #define CFG_ESPNOW_RELAY 1 #define CFG_TTGO_IMU_WIFI 2 #define CFG_TTGO_PADDELEC 3 #define CFG_TESTRUN 4 #define CFG_PADDELEC 5 #define CFG_PADDLE 6 #define CFG_WIRESHARK 7 #define CFG_NUNCHUK_ESPNOW_RELAY 8 #define CFG_PANZER 10 // Default config setting #ifndef CONFIGURATION_SET # define CONFIGURATION_SET CFG_ODROIDGO #endif ////////////////////////////////////////////////////////// #if (CONFIGURATION_SET == CFG_ODROIDGO) //# define ESPNOW_PEERMAC 0x24,0x0A,0xC4,0xAF,0xC9,0xE0 // Woodenboard //# define ESPNOW_PEERMAC 0x30,0xAE,0xA4,0x26,0x26,0x14 // feather board with OLED //# define ESPNOW_PEERMAC 0x30,0xAE,0xA4,0xEE,0xC4,0x64 // wrover dev kit # define OTA_HANDLER # define DEBUG_PING # define ODROID_GO_HW //# define DEBUG_DISABLE_PWMOUTPUT # define INPUT_NUNCHUK # define NUNCHUK_VCCPIN 12 # define NUNCHUK_SDAPIN 15 # define NUNCHUK_SCLPIN 4 # define DEBUG_CONSOLE #endif #if (CONFIGURATION_SET == CFG_ESPNOW_RELAY) //# define ESPNOW_PEERMAC 0x30,0xAE,0xA4,0x26,0x6A,0xD4 // feather esp remote # define ESPNOW_PEERMAC 0x30,0xAE,0xA4,0xE0,0x34,0x70 // odroid phail #endif #if (CONFIGURATION_SET == CFG_TTGO_IMU_WIFI) # define TTGO # define DEBUG_OLED # define INPUT_IMU # define IMU_CPIN 23 # define IMU_ZPIN 25 # define WIFI #endif #if (CONFIGURATION_SET == CFG_TTGO_PADDELEC) # define TTGO # define DEBUG_OLED // #define INPUT_NUNCHUK # define NUNCHUK_VCCPIN 16 # define INPUT_PADDELECIMU # define IMU_CPIN 23 # define IMU_ZPIN 25 //# define ESPNOW_PREFIX "PADDELEC" // ESPNOW "Channel" encoded in SSID # define DEBUG_CONSOLE # define OTA_HANDLER #endif #if (CONFIGURATION_SET == CFG_TESTRUN) # define INPUT_TESTRUN #endif #if (CONFIGURATION_SET == CFG_WIRESHARK) # define OTA_HANDLER # define INPUT_NUNCHUK # define NUNCHUK_VCCPIN 18 # define NUNCHUK_GNDPIN 19 //# define DEBUG_CONSOLE #endif #if (CONFIGURATION_SET == CFG_PADDELEC) # define OTA_HANDLER #endif #if (CONFIGURATION_SET == CFG_PADDLE) # define OTA_HANDLER # define INPUT_PADDELECIMU // look at Paddelec.h for paddelec specific config options! # define IMU_GNDPIN 14 # define IMU_VCCPIN 32 # define PADDELEC_STOPSWITCH_PIN1 A2 # define PADDELEC_STOPSWITCH_PIN2 A1 #endif #if (CONFIGURATION_SET == CFG_NUNCHUK_ESPNOW_RELAY) # define INPUT_NUNCHUK # define NUNCHUK_VCCPIN 18 # define NUNCHUK_GNDPIN 19 //# define ESPNOW_PEERMAC 0x30,0xAE,0xA4,0x26,0x6A,0xD4 // feather esp remote //# define ESPNOW_PEERMAC 0xB4,0xE6,0x2D,0xD4,0x29,0xD9 // odroid Nico # define ESPNOW_PEERMAC 0x30,0xAE,0xA4,0xE0,0x34,0x70 // odroid phail #endif #if (CONFIGURATION_SET == CFG_PANZER) # define OTA_HANDLER # define SERIAL2_GNDPIN 26 // Pin used as GND - Needed for psycho #endif // ############################### Settings ############################### /****************************** Debug *********************************/ //#define DEBUG_OLED //#define TTGO // TODO: Rename, only used to identify other OLED display //#define ODROID_GO_HW // TODO: odroid Settings.. //#define DEBUG_CONSOLE // Debug through Serial Interface //#define DEBUG_PLOTTER // Plot Values through Serial Interface // Get Listener: https://github.com/devinaconley/arduino-plotter/wiki/Installation-and-Quickstart //#define DEBUG_PROTOCOL_OUTGOING_MARKUP // Write all outgoing Messages to debug com in human readable form //#define DEBUG_PROTOCOL_MEASUREMENTS // Write measured values to debug com //#define debugESPNOW // Debug ESPnow //#define DEBUG_PING // Send periodic Pings over protocol //#define DEBUG_SPEED // Use closed loop speed control instead of pwm /******************************* Wifi **********************************/ //#define WIFI #ifdef WIFI #include #define OTA_HANDLER //#define WIFI_TRYSTA // Try to connect to network on boot #define WIFI_IP 192, 168, 4, 1 #define WIFI_NETMASK 255, 255, 255, 0 #endif /***************************** Serial ********************************/ #ifndef NUM_COM #define NUM_COM 3 // total number of COM Ports #endif #ifndef DEBUG_COM #define DEBUG_COM 0 // debug output to COM0 #endif #ifndef MOTOR_COM #define MOTOR_COM 2 // motor control output to COM2 #endif /**** COM Port 0 ****/ #ifndef UART_BAUD0 #define UART_BAUD0 115200 // Baudrate UART0 #endif #ifndef SERIAL_PARAM0 #define SERIAL_PARAM0 SERIAL_8N1 // Data/Parity/Stop UART0 #endif #ifndef SERIAL0_RXPIN #define SERIAL0_RXPIN 3 // receive Pin UART0 #endif #ifndef SERIAL0_TXPIN #define SERIAL0_TXPIN 1 // transmit Pin UART0 #endif #ifndef SERIAL0_TCP_PORT #define SERIAL0_TCP_PORT 8880 // Wifi Port UART0 #endif /**** COM Port 1 ****/ #ifndef UART_BAUD1 #define UART_BAUD1 9600 // Baudrate UART1 #endif #ifndef SERIAL_PARAM1 #define SERIAL_PARAM1 SERIAL_8N1 // Data/Parity/Stop UART1 #endif #ifndef SERIAL1_RXPIN #define SERIAL1_RXPIN 9 // receive Pin UART1 #endif #ifndef SERIAL1_TXPIN #define SERIAL1_TXPIN 10 // transmit Pin UART1 #endif #ifndef SERIAL1_TCP_PORT #define SERIAL1_TCP_PORT 8881 // Wifi Port UART1 #endif /**** COM Port 2 ****/ #ifndef UART_BAUD2 #define UART_BAUD2 115200 // Baudrate UART2 #endif #ifndef SERIAL_PARAM2 #define SERIAL_PARAM2 SERIAL_8N1 // Data/Parity/Stop UART2 #endif #ifndef SERIAL2_RXPIN #define SERIAL2_RXPIN 16 // receive Pin UART2 #endif #ifndef SERIAL2_TXPIN #define SERIAL2_TXPIN 17 // transmit Pin UART2 #endif #ifndef SERIAL2_TCP_PORT #define SERIAL2_TCP_PORT 8882 // Wifi Port UART2 #endif //#define SERIAL2_VCCPIN 5 // Pin used as VCC //#define SERIAL2_GNDPIN 0 // Pin used as GND #ifndef bufferSize #define bufferSize 1024 // Buffer size used to exchange data between COM and telnet #endif #ifndef MAX_NMEA_CLIENTS #define MAX_NMEA_CLIENTS 4 #endif #ifndef ESPNOW_PREFIX #define ESPNOW_PREFIX "ESPNOW" // ESPNOW "Channel" encoded in SSID #endif // #define ESPNOW_PEERMAC 0x30,0xAE,0xA4,0x02,0x7E,0x98 // Paddelec WROOM // #define ESPNOW_PEERMAC 0xB4,0xE6,0x2D,0xB2,0x79,0x3D // Paddel TTGO // #define ESPNOW_PEERMAC 0x30,0xAE,0xA4,0x26,0x86,0x68 // Psycho Board // #define ESPNOW_PEERMAC 0x30,0xAE,0xA4,0x26,0x6A,0xD4 // feather board Remote // #define ESPNOW_PEERMAC 0x30,0xAE,0xA4,0x26,0x26,0x14 // feather board with OLED // #define ESPNOW_PEERMAC 0x24,0x0A,0xC4,0xAF,0xC9,0xE0 // Woodenboard // #define ESPNOW_PEERMAC 0xB4,0xE6,0x2D,0xD4,0x29,0xD9 // odroid Nico // #define ESPNOW_PEERMAC 0x30,0xAE,0xA4,0xE0,0x34,0x70 // odroid phail // #define ESPNOW_PEERMAC 0x30,0xAE,0xA4,0xEE,0xC4,0x64 // wrover dev kit #ifndef MOTORINPUT_PERIOD #define MOTORINPUT_PERIOD 30 // Update Motor each xx milliseconds #endif /*************************** Input Method ******************************/ // Simulated Input //#define INPUT_TESTRUN // Cycle through some Motortestmodes (Sinus, constant speed..) Only for Test setup, can hurt you. // IMU Based //#define INPUT_IMU //#define INPUT_PADDELECIMU // look at Paddelec.h for paddelec specific config options! //#define IMU_GNDPIN 14 //#define IMU_VCCPIN 32 //#define IMU_CPIN 23 //#define IMU_ZPIN 25 // Nunchuk //#define INPUT_NUNCHUK // look at ArduinoNunchuk.h for Nunchuk specific config options! //#define NUNCHUK_VCCPIN 18 //#define NUNCHUK_GNDPIN 19 // Platooning //#define INPUT_PLATOONING // Only 2 Gametraks are possible, as the ESP32 ADC2 is not available when WIFI is used /**** Gametrak 1 ****/ //#define GAMETRAK1_RPIN 33 // wire length Pin Gametrak 1 - white - Pin 3 //#define GAMETRAK1_PHIPIN 35 // horizontal angle Pin Gametrak 1 - blue/yellow - Pin 2 //#define GAMETRAK1_THETAPIN 32 // vertical angle Pin Gametrak 1 - red/orange - Pin 4 //#define GAMETRAK1_PHI_REV 1 // Phi is inverted //#define GAMETRAK1_THETA_REV 0 // Theta is inverted //#define GAMETRAK1_VCCPIN 25 // Pin used to supply Power - black/brown - Pin 5 //#define GAMETRAK1_GNDPIN 26 // Pin used as GND - green - Pin 1 /**** Gametrak 2 ****/ //#define GAMETRAK2_PHIPIN 34 // horizontal angle Pin //#define GAMETRAK2_RPIN 39 // wire length Pin //#define GAMETRAK2_THETAPIN 36 // vertical angle Pin - PIN13 is ADC2, not functional with wifi //#define GAMETRAK2_PHI_REV 1 // Phi is inverted //#define GAMETRAK2_THETA_REV 0 // Theta is inverted