I will use a Wii console Nunchuck to get the movement from the Joystiock and send the data using the Bluetooth module. This actuallly has an i2c communication, so you might use that to read the values of the joystick if you want. The schematic would be something like you have below with a battery and a switch, the Arduino, the joystick analog outputs and the Bluetooth module.
/* This code is for the balancing robot Bluetooth controller. You can find more about this on https://www.electronoobs.com.
* Kind thanks to Joop Brokking for the help: https://www.youtube.com/user/MacPuffdog
*
* Tutorial: https://electronoobs.com/eng_arduino_tut160.php */
byte Byte_to_send; //We store here the data to send
int JoystickX_IN = A0; //Input from the X axis joystick
int JoystickY_IN = A1; //Input from the Y axis joystick
void setup(){
Serial.begin(9600); //Start the serial port at 9600 kbps
pinMode(JoystickX_IN, INPUT); //Declare the pin as INPUT
pinMode(JoystickY_IN, INPUT); //Declare the pin as INPUT
delay(20); //Short delay
}
void loop(){
Byte_to_send = B00000000;
int joystick_x = analogRead(JoystickX_IN);
int joystick_y = analogRead(JoystickY_IN);
if(joystick_x < 80) Byte_to_send |= B00000001; //Rotate Left
if(joystick_x > 170)Byte_to_send |= B00000010; //Rotate Right
if(joystick_y < 80) Byte_to_send |= B00001000; //Forward
if(joystick_y > 170)Byte_to_send |= B00000100; //Backward
if(Byte_to_send)Serial.print((char)Byte_to_send); //Send the send_byte variable if it's value is larger then 0
delay(40); //Create a 40 millisecond loop delay
}