Design and realize a 3D object with ESP8266 : Joystick remote controller 

Objective of this project

The goal of this project is to realize the design and the integration of a “joystick” remote control allowing to control different other maker projects : robots, pan-tilt cam ...

This type of project is a real challenge in modeling and printing a 3D object. It allow to learn or improve the handling of a 3D design software.

Joystick_Fusion360_1.PNG
Joystick_Fusion360_2.PNG
Joystick_Fusion360_3.PNG

Operating principle

The operation is quite simple : the microcontroller connects itself to a WiFi access point. Next, it collects the sensors state and transmits informations to the network at the rate of about ten packets per second.

The project specificity is that the information transmission on the WiFi network is performed in Udp multicast.

Joystick_ESP8266_Principe.png

Multicast Transmission

The data transmission in “Multicast” mode allows to benefit from several advantages :

  • UDP packets are in “not connected” mode, it is not necessary to establish and maintain a session with the equipment in charge of the reception. Neither, acknowledgment of packets isn’t required.
  • It is not necessary to know the destination IP address, the data is transmit unconditionally to the multicast group, even if no destination or receiver exists !
  • It is possible to transmit the information to several recipients simultaneously.     


Diagram

Joystick_ESP8266_V2.png

Joystick Module

The ESP8266 has only one analog input. So, the joystick module is connected using an analog/digital converter ADS1115 on the I2C bus. One entry for the X axis, one for the Y axis, another for the integrated button.

Gyroscope & Accelerometer

Space positioning data is from the DMP (Digital Motion Processor) integrated into the module MPU6050, in the form of variable of type “Quaternion”.

        MPU6050 mpu;
Quaternion q;           // [w, x, y, z]         quaternion container
mpu.dmpGetQuaternion(&q, fifoBuffer);
    

Project supply

The supply of this project is performed by a 3,7V / 1000mAh battery and a load management module type TP4056. The autonomy can reach about 8 hours. 

Realization

3D printing is done in PLA 1.75 on an Alfawise U20 printer via the Cura software with a layer height of 0.15 and a fill rate of 40%, without support but with a layer of adhesion.

The printing time is approximately 7:30.

FJ1_8789.jpg

Then, the difficulty is to bring in the electronics!

The ADS1115 module is stuck upon the ESP8266, while the MPU is below.

everything is inserted in the controller preceded by the battery.

FJ1_8795.jpg
FJ1_8799.jpg
FJ1_8812.jpg
FJ1_8809.jpg
Frédéric JELMONI
For recreational hacking legalization