HomeAboutFinal Project
##Final Project
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
###Embody Paint
This is a project about using your body movement with wearables such as shoe or glove to 'paint' in the space.
###Project Overview
01 / Overview
02 / Calibration
03 / Scenario
###Weekly progress
week1: Initial Ideasweek8: Molding and Castingweek9: Input Devicesweek11: Networking and Communicationsweek12: Interface and Application Programming
###Electronics: ESP32 + BNO055
01 / Sketch the schematic
02 / Draw schematic in Eagle
03 / PCB fabrication files
Download PCB files here: Trace ,and Outline
04 / PCB milling
05 / ESP32 + BNO055 + Battery
06 / Program testing
07 / Enclosure design
Download enclosure files here: .SLDPRT (for Solidworks), .STEP (for Rhino)
###Fabrication: Sole Design
### Programming: Websocket to P5.js & AR
-
#### 01 / Data from BNO-055 serial input
There are many data that BNO-055 can read, acceleration, orientation, magnetic, gyroscope,....While not being familiar with the relationship between X,Y,and Z,
Reuben Fischer-Baum, who is also investigating in BNO055 for his final project,
gave me a general review of how different dataset works, and what matters to the shoe application.
Download Arduino IDE file here: BNO055 read-all-data
#### 02 / Websocket framework
-
#### Server-Client-Websocket Workshop
##### Iulian black boarding time!
##### Networking
##### Server-Client
##### Websocket-ChromeClient-P5
##### Merge code in Arduino IDE
#### LED to Websocket
One of the key features of my project so to make two devices(shoe and web browser) talk wirelessly.
I chose ESP32 and wi-fi communication to achieve so.
The first step to learn websocket is try to control the LED switch through wi-fi.
By following along a handy tutorial ESP32 Web Server-Arduino IDE,
I was able to build a LED switch that can be controlled from the web browser wirelessly.
-
#### BNO055 to Websocket
Then the next step is to modify this websocket code to send accelerometer data instead of LED.
Chrome Client,
a chrome plug-in, and P5.js, a web-based code visualization tool.
Iulian, our generous TA who offered a websocket workshop to teach me the whole websocket concept, from serve, client,to websocket.
He also gave me a very clear instruction of how to transfer from example code(LED) to my purpose by the following steps:
1. On the ESP use the example from RandomNerd, which sends the LED status: 0/1.
2. On the PC first test using the Chrome Websocket Client that you can connect to the ESP websocket to read 0/1.
3. On the PC, make P5.js connect to the ESP websocket, so you can see 0/1 in P5.js.
4. Then together we can change the ESP program, so it sends accelerometer instead of 0/1 to P5.js.
Download code for websocket here:
1) installed in Arduino IDE (mix Websocket with BNO055 code)
2) installed in P5.js
More useful tutorials here:
1) ws.Client in P5.js
2) ESP32 Web Server-Arduino IDE
3) Chrome Client plug-in
-
#### 03 / P5.js websocket
I used P5.js websocket to read 9 data from Arduino IDE, and tried to map the motion data to understandable visualization in P5.
I'm particularly interested in the following datasets: orientation XYZ, linearAccelerationXYZ, magnetic XYZ, which are more relevant to the movement of the shoes or gloves.
The orientation represents the angle between the normal vector of your feet plane to the horizontal, which can be explained by Euler angles.
The linear acceleration data is to sense how fast each X,Y,Z direction the foot is moving. The magnetic is as compass, indicate where you are in the earth context.
-
#### 04 / AR - Unity websocket
Inspired by Iulian's AR workshop, I started to think about the possibility of combining shoe movement to augmented reality.
By consulting with Iulian, he also agreed it would be an interesting exploration, so the collaboration formed! We actually got to kick off this collaboration just two weeks before the final.
-
### Final Design