Merge pull request #6 from Blu3u/feature/usb_support_docs

Initial setup guide for newly added ESP32-S3 over USB support
This commit is contained in:
Prohurtz 2023-06-04 11:36:14 -07:00 committed by GitHub
commit f26626434e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 153 additions and 57 deletions

View File

@ -72,7 +72,12 @@ The firmware supports multiple environments. This means that we have full suppor
- `esp32M5Stack` - This is for ESP32M5Stack.
- `esp32WRover` - This is for the ESP32WRover.
- `esp-eye` - This is for the ESP-EYE (not the S3 variant).
- `wrooms3` - For FREENOVE-ESP32-S3 (*wireless mode*)
- `wrooms3QIO` - For FREENOVE-ESP32-S3 (*wireless mode*, for boards with octal flash)
- `wrooms3USB` - For FREENOVE-ESP32-S3 (*wired mode*)
- `wrooms3QIOUSB` - For FREENOVE-ESP32-S3 (*wired mode*, for boards with octal flash)
- `xiaosenses3_release` - For SeedStudio's XAIO ESP32-S3 Sense (*wireless mode*)
- `xiaosenses3_USB_release` - For SeedStudio's XAIO ESP32-S3 Sense (*wired mode*)
Each environment has a `debug` and `release` configuration. The `debug` configuration is for debugging, and the `release` configuration is for production. The `debug` configuration is not recommended for production, as it will use more memory, and will be slower. However we recommend using the `debug` configuration for initial configuration and testing, as it will be easier to debug, for you and for us. Once you are confident that the firmware is working correctly, you can switch to the `release` configuration.
The `debug` configuration will print out debug messages to the serial port. The `release` configuration will not print out debug messages to the serial port, and will only print errors. This will save memory, and will make the firmware faster.

View File

@ -9,12 +9,26 @@ import { alerts } from '../../static/alerts'
Uploading your firmware must initially be done over cable. Once you have the tracker connected to your WiFi after your first firmware update, you can opt to use [OTA](#how-do-i-use-it) in the future.
## 1. Connect your tracker to your PC via the programmer
## 1. Connect your tracker to your PC
First, connect your ESP32-Cam to your programmer. In the case of the ESP32-Cam-MB board, it's as simple as sticking it into the socket the way it came in the package and then connecting it to your PC with a micro-USB cable. In some cases, there is a button labeled `IOO` on the programmer. If that button exists make sure to hold it in while you plug the programmer into your PC, once plugged in you can release the button.
### Option 1: Connect ESP32-CAM via the programmer
First, connect your ESP32-Cam to your programmer. In the case of the ESP32-Cam-MB board, it's as simple as sticking it into the socket the way it came in the package and then connecting it to your PC with a micro-USB cable.
In some cases, there is a button labeled `IOO` on the programmer. If that button exists make sure to hold it in while you plug the programmer into your PC, once plugged in you can release the button.
In the case of an FTDI programmer, the steps aren't as easy, so grab [this guide](https://randomnerdtutorials.com/program-upload-code-esp32-cam/) for how to set it up.
### Option 2: Connect ESP32-S3 via USB-C directly
To begin, connect your ESP32-S3 board directly to your PC.
On the initial attempt, you may have to adjust the USB mode by pressing the BOOT button and holding it down,
then pressing the RESET button while still holding down BOOT, and finally releasing the BOOT button.
This will produce a sound indicating the connection of a new device.
Once completed, you should be all set to proceed.
## 2. Build your firmware
1. Press the build button at the bottom of Visual Studio Code.

View File

@ -11,6 +11,10 @@ import { alerts } from '../../static/alerts'
## This page will contain a step-by-step assembly guide
This guide provides a walkthrough on the assembly of a **wireless** eye tracking.
Nevertheless, it's worth noting that these instructions are also mostly applicable to those who are using wired trackers.
## Step 1: Make sure your have read the [Things to know before you start](https://docs.eyetrackvr.dev/getting_started/things_to_know) guide
This will give you a basic overview of the project's status and what to expect currently.

View File

@ -16,69 +16,130 @@ import PartsList from '../../vue/parts_list/PartsList.vue'
## This page will include a basic part list for building an EyeTrackVR setup
<Alerts :options="alerts.parts_list_two">
<template v-slot:content>
<p>
It is recommended to source the main parts from AliExpress as it is much cheaper.
</p>
</template>
</Alerts>
---
<Alerts :options="alerts.parts_list_three">
<template v-slot:content>
<p>
It is good practice to buy more than needed in some cases, namely programmers and ESPs, this reduces the risk of a DOA (dead on arrival) causing a delay.
It is good practice to buy more than needed in some cases, namely cameras,programmers and ESPs. This reduces the risk of a DOA (dead on arrival) causing a delay.
</p>
</template>
</Alerts>
## Camera setup
## ESP setup
- ### 2x ESP-CAM-32 modules
::: danger
There are two primary categories of trackers supported: wireless and wired.
It's super important that you really look at all your options and consider your use case before making a decision.
:::
### Option 1: Wireless over WiFi 2.4 GHz
This offers a good starting point as the ESP boards are cheaper than wired capable trackers.
However, they can be a bit more temperamental and if you are using a wired headset, they start to make less sense.
**Pros:**
- Wider user adoption and greater support
- Low weight, less cables, easier to manage
**Cons:**
- Requires two external antennas for optimal streaming quality
- Requires WiFi 2.4 GHz router or access point in reasonable proximity
- Risk of radio interference with FBT and other WiFi 2.4 GHz devices
- ESP32-CAM uses more power and heats up due to radio module power needs
**Parts:**
- #### 2x ESP-CAM-32 modules
[AliExpress](https://a.aliexpress.com/_mKjL9Cq)
- ### 2x ov2640 160° FOV IR / Night vers 75mm (850nm)
[AliExpress](https://a.aliexpress.com/_mrNbZww)
[Amazon alternative](https://www.amazon.com/Camera-Aideepen-Wide-Angle-Megapixel-Support/dp/B09XXPX4SP/) (note that you will have to [manually remove the IR filter](https://www.youtube.com/watch?v=QYH-FWvDbDc))
- ### 1x ESP-CAM programmer / MB
- #### 1x ESP-CAM programmer / MB
[AliExpress](https://a.aliexpress.com/_mPaPgPu)
[Amazon](https://www.amazon.com/DORHEA-Bluetooth-Development-4-75V-5-25V-Raspberry/dp/B08ZS5YWCG/)
for 3 ESP32-Cams and programmers without the proper cameras
- ### 1x USB type-A male port to power both ESPs
- #### 1x USB type-A male port to power both ESPs
[Bare breakout on AliExpress](https://www.aliexpress.com/item/2255801092919590.html)
[Amazon](https://www.amazon.com/10Gtek-DIP-Breakout-Adapter-2-54mm/dp/B09LC8WQCD/)
\
[Or one with a cover on AliExpress](https://www.aliexpress.com/item/2251832820552545.html)
[Amazon](https://www.amazon.com/Pigtail-Extension-Cables-Connector-Replacement/dp/B09ZQNJ2DJ/)
- ### 1x Lower gauge wire to power ESPs
- #### 1x Lower gauge wire to power ESPs
[28 AWG gauge wire from AliExpress](https://a.aliexpress.com/_mK72cy6)
[28 AWG Amazon](https://www.amazon.com/Fermerry-Silicone-Stranded-Copper-Electrical/dp/B089CTT5X1/)
- ### 1x Higher gauge wire to power IR emitters
[34 AWG AliExpress](https://www.aliexpress.com/item/3256804720067942.html)
- #### 2x External antennas for ESPs
Required if you're running vive/tundra full body tracking or having issues with streaming. See the full build guide on how to configure the ESP board for antenna use.
## Recommended:
- ### Antennas
Needed if you're running vive/tundra full body tracking or having issues with streaming:
- ### 2x External antennas for ESPs
Small (what prohurtz uses):
Small (what Prohurtz uses):
[AliExpress](https://a.aliexpress.com/_ms1TzXc)
Large:
Large:
[AliExpress](https://www.aliexpress.com/item/2255800868378357.html)
[Amazon](https://www.amazon.com/gp/product/B09K3ZPY5Z/)
- ### 2x-4x Heatsinks
- #### 2x-4x Heatsinks (Optional)
[AliExpress](https://www.aliexpress.us/item/3256803892794950.html) (14mm for ESP, 8mm for voltage regulator)
### Option 2: Wired over USB Serial (in beta)
This is our latest setup recommended for users with wired headsets such as the Valve Index.
**Pros:**
- Much better performance and higher framerates up to 70 FPS with lower latency
- No conflicts with advanced FBT setups such as Vive or Tundra Trackers
- No heatsinks required due to lower power consumption and heat emission
- Can be wireless or wired
- Less soldering required
**Cons:**
- Requires USB port i.e. on Valve Index and USB hub mounted on your headset
- Can be more costly
**Parts:**
- #### 2x ESP32-S3 modules
2x SeedStudio XIAO ESP32-S3 Sense Modules (Recommended)
Very small size, lower price in some cases.
[SeedStudio](https://www.seeedstudio.com/XIAO-ESP32S3-Sense-p-5639.html)
OR
2x Freenove ESP 32-S3 WROOM
Much larger, price may be higher than the XIAOs
[Amazon](https://www.amazon.com/FREENOVE-ESP32-S3-WROOM-Compatible-Wireless-Detailed/dp/B0BMQ8F7FN)
- #### 1x USB 3.0+ hub
Ensure that it is of good quality, lightweight, compact in size, and I suggest including three ports - one for the face tracker and two for ESP32-S3 boards.
Ensure that you acquire appropriate USB-A to USB-C adapters wherever required, such as for the Valve Index which has only one USB-A port.
- #### 2x USB C cables (as short as possible) to connect both ESPs
As the ESP32-S3 has USB-C connectors, you may require some USB-C to USB-A cables depending on your USB hub.
It's worth noting that the HTC Face Tracker requires a USB-C port, so you may need to consider this requirement as well.
::: danger
Irrespective of whether you opt for a wired or wireless setup, additional components
will be required to set up eye tracking cameras around your headset's lenses.
The list below remains the same for both wired and wireless setups.
:::
## Camera Parts:
If the cameras are Dead on Arrival (DOA), keep in mind that you can swap the lenses with the ones that come with the stock cameras that were included with the ESP32 boards.
There is an experimental option to purchase OV2640 120° FOV cameras and manually remove the IR filters. This can result in a clearer view of the eye, but it's not a default recommendation.
- #### 2x OV2640 160° FOV IR / Night vers 75mm (850nm)
[AliExpress](https://a.aliexpress.com/_mrNbZww)
[Amazon alternative](https://www.amazon.com/Camera-Aideepen-Wide-Angle-Megapixel-Support/dp/B09XXPX4SP/) (note that you will have to [manually remove the IR filter](https://www.youtube.com/watch?v=QYH-FWvDbDc))
- #### 1x Higher gauge wire to power IR emitters
[34 AWG AliExpress](https://www.aliexpress.com/item/3256804720067942.html)
## Recommended:
- ### 2x Camera cable extensions
Certain mounts may require a cable extension (MUTE's frunk mod)
Certain mounts may require a cable extension (ex: MUTE's frunk mod)
To use a mount like that you will need a cable and a connector for each camera.
Headsets like the Quest 2 do not require extensions.
@ -89,8 +150,8 @@ Connectors (select 24P) [Aliexpress](https://www.aliexpress.com/item/32568040967
## IR Emitters
### IR LED kit
If you do not want to source things from multiple places or save money and time on assembly, you can buy an offical LED kit on our store:
### IR LED kit (recommended)
If you do not want to source things from multiple places or save money and time on assembly, you can buy an official LED kit on our store:
[Pre soldered kit](https://store.eyetrackvr.dev/products/assembled-eyetrackvr-ir-led-kit)
[Raw component kit](https://store.eyetrackvr.dev/products/eyetrackvr-pcbs-components-kit)
@ -107,15 +168,13 @@ The difference between them is the ones from LCSC are rated for lower power, whi
</template>
</Alerts>
<Alerts :options="alerts.parts_list_five">
<template v-slot:content>
<p>
<text class="font-bold">DO NOT BUY FOCUSED ONES!</text>
<br>
If they look like something you would find in a TV remote, do not use them. If you aren't exactly sure what you are doing, buy them from the LCSC or Digikey link.
</p>
</template>
</Alerts>
::: danger
If they look like something you would find in a TV remote, do NOT use them. Even if you think you can alter them THEY WILL NOT WORK AND PUT YOU AT RISK. If you aren't exactly sure what you are doing, buy them from the LCSC or Digikey link.
**DO NOT BUY FOCUSED ONES!**
:::
- 4x IR emitter PCBs (highly recommended) Gerber files and schematics located [here.](https://github.com/RedHawk989/EyeTrackVR-Hardware/tree/main/IR%20Emmitter)
@ -130,7 +189,7 @@ If you are a Patreon please check out discount codes available to you, and also
- 1x Wire to power IR emitters
[34 AWG AliExpress](https://www.aliexpress.com/item/3256804720067942.html)
## Misc parts
## Misc parts/tools
- 1x Hot glue or another form of glue.
[AliExpress](https://www.aliexpress.com/item/3256803968572059.html)

View File

@ -72,11 +72,25 @@ This will recenter your eye to whatever point you are looking at.
## Step 4: Adding your cameras to the software and configuring them
### Wireless configuration
Power your ESPs and find what the IP address is for your right eye. This can be done by opening both Cameras in a browser and then holding your finger over your right eye camera.
Copy that IP address and then close the browser tab with it open.
Enter that IP address into the app's `Camera Address` field and press the `Save and Restart Tracking` button.
Enter that IP address into the app's `Camera Address` field.
Press the `Save and Restart Tracking` button.
### Wired configuration (experimental)
Find your ESPs in Device Manager and figure out their COM port numbers i. e. ``COM4``.
Enter that COM port number into the app's `Camera Address` field.
Press the `Save and Restart Tracking` button.
### Setting up ROI
Don't see your camera feed? That's because we haven't set an ROI.
<ImageCard :options="image_settings.eyetrack_vr_guide_four"/>

View File

@ -6,10 +6,6 @@ const printed_parts = {
""
],
hyper_links: [
{
url: "https://github.com/RedHawk989/EyeTrackVR-Hardware/blob/main/3d_Printed_Mounts/Quest_2/Arkfall/EyeTrack_Quest_2_Mount_v10_By_Arkfall.stl",
desc: "Camera and IR emitter mount by Arkfall"
},
{
url: "https://github.com/RedHawk989/EyeTrackVR-Hardware/tree/main/3d_Printed_Mounts/Quest_2/Prohurtz",
desc: "★ Camera and IR emitter mount by Prohurtz"
@ -19,6 +15,10 @@ const printed_parts = {
url: "https://github.com/RedHawk989/EyeTrackVR-Hardware/tree/main/3d_Printed_Mounts/Quest_2/lordnathan",
desc: "★ ESP mount by lordnathan"
},
{
url: "https://github.com/RedHawk989/EyeTrackVR-Hardware/blob/main/3d_Printed_Mounts/Quest_2/Arkfall/EyeTrack_Quest_2_Mount_v10_By_Arkfall.stl",
desc: "Camera and IR emitter mount by Arkfall"
},
{
url: "https://github.com/RedHawk989/EyeTrackVR-Hardware/blob/main/3d_Printed_Mounts/Quest_2/Arkfall/Quest_2_ESP_Mount_v2_By_Arkfall.stl",
desc: "ESP mount by Arkfall"
@ -40,6 +40,10 @@ const printed_parts = {
url: "https://github.com/RedHawk989/EyeTrackVR-Hardware/tree/main/3d_Printed_Mounts/Valve_Index/Seaweed",
desc: "★ High IPD compatible 160 and 120 degree camera and IR emitter mounts by Seaweed"
},
{
url: "https://github.com/MUTEtheCyberwolf/VALVE-INDEX-DEV-Frunk-1.0/tree/main/3D%20Print%20Files%20STL(Ascii)",
desc: "★ ESP frunk mod by MUTE the Cyberwolf"
},
{
url: "https://github.com/RedHawk989/EyeTrackVR-Hardware/tree/main/3d_Printed_Mounts/Valve_Index/qdot",
desc: "Camera and IR emitter mount by Qdot"
@ -48,10 +52,6 @@ const printed_parts = {
url: "https://github.com/rrazgriz/IndexEyeTrackVR/tree/main/hardware",
desc: "Camera mount by Razgriz"
},
{
url: "https://github.com/MUTEtheCyberwolf/VALVE-INDEX-DEV-Frunk-1.0/tree/main/3D%20Print%20Files%20STL(Ascii)",
desc: "★ ESP frunk mod by MUTE the Cyberwolf"
},
],
link_id: 2
},