EyeTrackVR-Docs/assets/how_to_build_full_build.md.2dab8f1f.js
2024-03-04 21:51:18 +00:00

2 lines
21 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{_ as r,a as l}from"./chunks/index.1debbbaa.js";import{_ as h}from"./chunks/CheckBoxList.aa824f48.js";import{_ as a,i as s}from"./chunks/index.1ee321cb.js";import{o as d,c as p,H as t,l as o,k as e,w as u,Q as i,a as n}from"./chunks/framework.d2e7204f.js";const c={state:!0,object:[{label:"2 ESP 32 CAM boards"},{label:"2 160 degree cameras"},{label:"1 USB board to power your ESPs"},{label:"1 Programmer board(buying an extra is reccomended)"},{label:"IR emitters, resistors, and preferably PCBs"},{label:"Lower gauge wire to power ESPs"},{label:"Higher gauge wire to power IR LEDs"},{label:"3d printer to print mounts. (Buying them from some place like JLCPCB is also an option)"},{label:"Glue of some form, hot glue highly recommended."}]},_=i('<h1 class="text-[var(--font-accent)]" id="build-guide" tabindex="-1">Build Guide <a class="header-anchor" href="#build-guide" aria-label="Permalink to &quot;Build Guide {.text-[var(--font-accent)]}&quot;"></a></h1><h2 id="this-page-will-contain-a-step-by-step-assembly-guide" tabindex="-1">This page will contain a step-by-step assembly guide. <a class="header-anchor" href="#this-page-will-contain-a-step-by-step-assembly-guide" aria-label="Permalink to &quot;This page will contain a step-by-step assembly guide.&quot;"></a></h2><h2 id="updated-documentation-is-still-in-progress-and-not-updated-here-please-be-patient" tabindex="-1">Updated documentation is still in progress and not updated here, please be patient. <a class="header-anchor" href="#updated-documentation-is-still-in-progress-and-not-updated-here-please-be-patient" aria-label="Permalink to &quot;Updated documentation is still in progress and not updated here, please be patient.&quot;"></a></h2><p>This guide provides a walkthrough on the assembly of a <strong>wireless</strong> V3 eye tracking. V4 specific final docs are Work In Progress: <a href="https://www.youtube.com/watch?v=AVUbDNe7uNU" target="_blank" rel="noreferrer">V4 LED Solderless assemblly rough edit:</a></p>',4),m=e("iframe",{width:"500",height:"300",src:"https://www.youtube.com/embed/AVUbDNe7uNU",title:"EyeTrackVR V4 Solder-less Assembly ROUGH EDIT",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""},null,-1),w=e("p",null,"Sketch of V4 solderless wiring:",-1),f=e("p",null,[n("Credit: @balty via "),e("a",{href:"https://discord.gg/kkXYbVykZX",target:"_blank",rel:"noreferrer"},"Discord")],-1),g=e("p",null,"Sketch of solder assembly of V4:",-1),b=i('<p>Nevertheless, it&#39;s worth noting that these instructions are also mostly applicable to those who are using wired or V4 trackers.</p><h2 id="step-1-make-sure-your-have-read-the-things-to-know-before-you-start-guide" tabindex="-1">Step 1: Make sure your have read the <a href="./../getting_started/things_to_know">Things to know before you start</a> guide <a class="header-anchor" href="#step-1-make-sure-your-have-read-the-things-to-know-before-you-start-guide" aria-label="Permalink to &quot;Step 1: Make sure your have read the [Things to know before you start](../getting_started/things_to_know) guide&quot;"></a></h2><p>This will give you a basic overview of the project&#39;s status and what to expect currently.</p><h2 id="step-2-order-all-the-parts-listed-on-our-parts-list" tabindex="-1">Step 2: Order all the parts listed on our <a href="./../how_to_build/parts_list">Parts list</a> <a class="header-anchor" href="#step-2-order-all-the-parts-listed-on-our-parts-list" aria-label="Permalink to &quot;Step 2: Order all the parts listed on our [Parts list](../how_to_build/parts_list)&quot;"></a></h2><p>Please take note of the fact that hardware still may change, although with more developments it seems like we are going to stick with current hardware.</p><h2 id="step-3-wait-for-things-to-arrive" tabindex="-1">Step 3: Wait for things to arrive <a class="header-anchor" href="#step-3-wait-for-things-to-arrive" aria-label="Permalink to &quot;Step 3: Wait for things to arrive&quot;"></a></h2><p>Long shipping times from China are <em>f u n</em>. Please allow anywhere from 2 weeks to 2 months for everything to arrive.</p><h2 id="step-4-gather-up-all-of-your-hardware" tabindex="-1">Step 4: Gather up all of your hardware <a class="header-anchor" href="#step-4-gather-up-all-of-your-hardware" aria-label="Permalink to &quot;Step 4: Gather up all of your hardware&quot;"></a></h2><p>Make sure you have at least the following:</p>',9),y=e("h2",{id:"step-5-install-external-antennas-or-shield-esp-antenna-with-an-antistatic-bag",tabindex:"-1"},[n("Step 5: Install external antennas or shield ESP antenna with an antistatic bag "),e("a",{class:"header-anchor",href:"#step-5-install-external-antennas-or-shield-esp-antenna-with-an-antistatic-bag","aria-label":'Permalink to "Step 5: Install external antennas or shield ESP antenna with an antistatic bag"'},"")],-1),S=e("p",null,"Some ESP-CAM boards have issues with signal integrity, there are 2 things you can do to help/solve the issues.",-1),v=e("p",null,"The first option is to use an external antenna.",-1),k=e("p",null,[n("This is the best solution when it comes to the final result. If you have Vive/Tundra trackers, this is a "),e("strong",null,"REQUIRED"),n(" step. The interference from the trackers will make your ESP stream unusable. An antistatic bag does not help in this case. Unfortunately, removing the antenna is not super easy, you have to either move a resistor or, remove it and bridge 2 solder pads. The attached image below shows the orientation of the pads that need to be connected, depending on the mode You can not bridge all connections and have both antennas active at the same time. The 0-ohm resistor does not need to be on the board, you can simply bridge the connections.")],-1),P=e("p",null,"Below is an example of bridging the connections and attaching an antenna.",-1),T=e("div",{align:"center"},[e("iframe",{width:"500",height:"300",src:"https://www.youtube.com/embed/aBTZuvg5sM8",title:"How to add an external antenna to an ESP32-CAM (2 methods)",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""})],-1),E=e("p",null,"The second option is to cover the ESP's antenna with an antistatic bag. This can help aid problems, and can completely solve them in some cases. Best of all, it is completely free! However, it should be noted that it performs worse than an external antenna and in certain cases will not solve the issue like if you have Vive trackers.",-1),x=e("div",{align:"center"},[e("iframe",{width:"500",height:"300",src:"https://www.youtube.com/embed/wS4PS3Mw250",title:"Covering an ESP32-CAM's antenna with anti-static bag",frameborder:"0",allow:"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""})],-1),C=e("h2",{id:"step-6-attach-cameras-to-esps",tabindex:"-1"},[n("Step 6: Attach cameras to ESPs "),e("a",{class:"header-anchor",href:"#step-6-attach-cameras-to-esps","aria-label":'Permalink to "Step 6: Attach cameras to ESPs"'},"")],-1),I=e("p",null,"Look at your ESP and locate the camera ribbon cable connector as circled below.",-1),V=e("p",null,"Flip the gray part up to allow the cameras to be connected. Do not force it, or shove objects into it to open, fingernails are fine.",-1),D=e("p",null,"Now slide in a camera, please note that the pins are facing down, you should only see the black part.",-1),A=e("p",null,"Once the camera has been slid in, press the gray part of the connector back down. There will be a small amount of force but still be gentle. Note the ammount of black coming out of the connector.",-1),B=e("h2",{id:"step-7-connect-esp-to-the-programmer-to-flash",tabindex:"-1"},[n("Step 7: Connect ESP to the programmer to flash "),e("a",{class:"header-anchor",href:"#step-7-connect-esp-to-the-programmer-to-flash","aria-label":'Permalink to "Step 7: Connect ESP to the programmer to flash"'},"")],-1),q=e("p",null,"Why flash before you have it assembled? It's simple, to make sure they actually work before you spend time soldering to them.",-1),N=e("p",null,"Slide your ESP into the programmer, and note the USB port goes away from the ESP's camera.",-1),L=i('<h2 id="step-8-configure-visual-studio-code-and-prepare-to-flash-the-firmware" tabindex="-1">Step 8: Configure Visual Studio Code and prepare to flash the firmware <a class="header-anchor" href="#step-8-configure-visual-studio-code-and-prepare-to-flash-the-firmware" aria-label="Permalink to &quot;Step 8: Configure Visual Studio Code and prepare to flash the firmware&quot;"></a></h2><p>Check out our guide on <a href="./../firmware_guide/setup_vscode">Setting up VS Code</a></p><p>Once VS Code is set up, move on to the next step.</p><h2 id="step-9-plug-in-your-esp-and-flash-the-firmware" tabindex="-1">Step 9: Plug in your ESP and flash the firmware <a class="header-anchor" href="#step-9-plug-in-your-esp-and-flash-the-firmware" aria-label="Permalink to &quot;Step 9: Plug in your ESP and flash the firmware&quot;"></a></h2><p>Our guide, <a href="./../firmware_guide/upload_and_update_firmware">Building and uploading the firmware manually</a> has steps on how to do this. After it has flashed, make sure you get a video stream in your browser, then power it down and flash your next ESP.</p><h2 id="step-10-connect-your-power-wires-to-a-usb-type-a-board" tabindex="-1">Step 10: Connect your power wires to a USB Type-A board <a class="header-anchor" href="#step-10-connect-your-power-wires-to-a-usb-type-a-board" aria-label="Permalink to &quot;Step 10: Connect your power wires to a USB Type-A board&quot;"></a></h2><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Powering from the programmer board <strong>will not work correctly</strong>. This delivers a lower voltage which results in dim LEDs and video artifacts. These are highly likely to mess up tracking.</p></div><p>Get two pairs of wire, preferably two different colors, Cut them to length (56mm in my case) and twist together two for ground and two for 5V. Here I used speaker wire where the copper denotes positive and silver negative. Then, strip the wires to about 3mm of exposed wire.</p>',8),R=e("h2",{id:"step-11-cut-wires-for-ir-leds",tabindex:"-1"},[n("Step 11: Cut wires for IR LEDs "),e("a",{class:"header-anchor",href:"#step-11-cut-wires-for-ir-leds","aria-label":'Permalink to "Step 11: Cut wires for IR LEDs"'},"")],-1),U=e("p",null,"To find the optimal length, take a piece of wire and a marker and mock up your wire route, and mark the wire, cut it, then make another at the same size for the other eye. You will need 3 different cuts of wire. 2 short ones for connecting the 2 PCBs per eye together, 2 Longer ones for power, or ground and 2 slightly longer ones for power or ground for the LED near the camera at the bottom.",-1),G=e("p",null,"Once cut, strip them to around 4mm of exposed wire.",-1),O=e("h2",{id:"step-12-twist-the-positive-usb-wire-and-positive-ir-led-wires-together-and-tin-them",tabindex:"-1"},[n("Step 12: Twist the positive USB wire and positive IR LED wires together and tin them "),e("a",{class:"header-anchor",href:"#step-12-twist-the-positive-usb-wire-and-positive-ir-led-wires-together-and-tin-them","aria-label":'Permalink to "Step 12: Twist the positive USB wire and positive IR LED wires together and tin them"'},"")],-1),H=e("p",null,"Once twisted together add solder to keep them together. This makes the connection much easier.",-1),W=e("h2",{id:"step-13-solder-the-positive-wire-to-esp",tabindex:"-1"},[n("Step 13: Solder the positive wire to ESP "),e("a",{class:"header-anchor",href:"#step-13-solder-the-positive-wire-to-esp","aria-label":'Permalink to "Step 13: Solder the positive wire to ESP"'},"")],-1),M=e("p",null,"Lay the wire on the outside of the 5V pin and apply solder.",-1),j=i('<h2 id="step-14-solder-the-negative-wire-to-esp" tabindex="-1">Step 14: Solder the negative wire to ESP <a class="header-anchor" href="#step-14-solder-the-negative-wire-to-esp" aria-label="Permalink to &quot;Step 14: Solder the negative wire to ESP&quot;"></a></h2><p>Repeat <a href="#step-12-twist-the-positive-usb-wire-and-positive-ir-led-wires-together-and-tin-them">Step 12</a> but with the negative wires.</p><div class="info custom-block"><p class="custom-block-title">INFO</p><p>As a user in our discord has learned, you can short the <code>IO12</code> pin with the ground pin <code>(GND)</code> without issues.</p></div><p>In the below example I put it on the top of the pin, It will be a weak-ish joint but that&#39;s where glue comes in handy.</p>',4),F=i('<h2 id="step-15-wire-up-the-2nd-esp" tabindex="-1">Step 15: Wire up the 2nd ESP <a class="header-anchor" href="#step-15-wire-up-the-2nd-esp" aria-label="Permalink to &quot;Step 15: Wire up the 2nd ESP&quot;"></a></h2><p>Repeat steps <a href="#step-12-twist-the-positive-usb-wire-and-positive-ir-led-wires-together-and-tin-them">12</a>-<a href="#step-14-solder-the-negative-wire-to-esp">14</a> with the 2nd ESP.</p><h2 id="step-16-prepare-to-solder-ir-led-pcbs" tabindex="-1">Step 16: Prepare to solder IR LED PCBs <a class="header-anchor" href="#step-16-prepare-to-solder-ir-led-pcbs" aria-label="Permalink to &quot;Step 16: Prepare to solder IR LED PCBs&quot;"></a></h2><p>Get your magnifying glass out, it&#39;s time to solder very smol things.</p><p>Gather 4 PCBs, 4 IR LEDs, and either 4 ~350ohm.</p>',5),Y=e("p",null,"Here are the PCB pin-out labels:",-1),z=e("p",null,"LED labels:",-1),$=i('<p>If you have different LEDs, please consult their datasheet.</p><p>Some terminology related to them:</p><p><code>5V</code>: 5-volt power in.</p><p><code>GND</code>: Ground or power out.</p><p><code>AR</code>: After-Resistor this is to be used as the power in on the 2nd PCB in series as resistors are not needed on the 2nd PCB since they are on the 1st one.</p><p><code>SNG</code>: Single resistor, use this as 5V in if you are using only <strong>1</strong> <code>~700ohm</code> resistor on V3 boards (not recommended).</p><p><code>Negative</code>: This marks the negative side of the LED.</p><p><code>Positive</code>: This marks the positive side of the LED.</p><h2 id="step-18-solder-resistors-on-pcb-v3" tabindex="-1">Step 18: Solder resistors on PCB V3 <a class="header-anchor" href="#step-18-solder-resistors-on-pcb-v3" aria-label="Permalink to &quot;Step 18: Solder resistors on PCB V3&quot;"></a></h2><p>You only need 1 PCB to have resistors per eye.</p><p>Tin the resistor pads. Note: in this example, I use too much solder, it should only be enough to lightly cover the pad.</p>',11),J=e("p",null,"Next, grab a resistor and hold it on the pads.",-1),Q=e("p",null,"While holding the resistor add solder to your soldering iron and apply it to the resistor.",-1),X=e("p",null,"I like to do this by having a piece of my solder stick up in the air and then put it on my iron that way.",-1),Z=e("p",null,"Flip the PCB and solder the other end.",-1),K=e("p",null,"Now repeat for the other one.",-1),ee=e("h2",{id:"solder-leds-on-pcb-v3",tabindex:"-1"},[n("Solder LEDs on PCB V3 "),e("a",{class:"header-anchor",href:"#solder-leds-on-pcb-v3","aria-label":'Permalink to "Solder LEDs on PCB V3"'},"")],-1),te=e("p",null,"Tin the LED pads.",-1),oe=e("p",null,"Orientate the LED and hold it in place.",-1),ae=e("p",null,"Solder one end.",-1),se=e("p",null,"Flip around and solder the other end.",-1),ne=e("h2",{id:"wire-up-the-pcbs-v3",tabindex:"-1"},[n("Wire up the PCBs V3 "),e("a",{class:"header-anchor",href:"#wire-up-the-pcbs-v3","aria-label":'Permalink to "Wire up the PCBs V3"'},"")],-1),ie=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"WARNING"),e("p",null,"Pay attention to the direction of the LEDs on the PCBs.")],-1),re=e("p",null,"If the green dot is facing inwards toward the text like in the picture below:",-1),le=e("p",null,"Use the following diagram:",-1),he=e("p",null,"If the green dot is facing away from the text like the picture below:",-1),de=e("p",null,"Use the following diagram:",-1),pe=i('<h2 id="step-19-3d-print-mounts" tabindex="-1">Step 19: 3D print mounts <a class="header-anchor" href="#step-19-3d-print-mounts" aria-label="Permalink to &quot;Step 19: 3D print mounts&quot;"></a></h2><p>Head to the 3D printed parts section of the parts list <a href="./../how_to_build/parts_list#_3d-printed-mounts">here.</a></p><p>Find which parts are for your headset and print them. Some may work better or worse, it is recommended to test all of them if there are multiple, print one of each kind. If none work, try making an edit yourself if you have the skills. If you have made a mount make sure to ping me, <code>Prohurtz#0001</code>, so I can add them to the list.</p><p>Having trouble getting them to fit? Try resizing the mounts up, or down a little to ensure a good fit.</p><p>There are 2 different types of mounts, how to secure the camera to each type will be documented below.</p><h3 id="type-1" tabindex="-1">Type 1 <a class="header-anchor" href="#type-1" aria-label="Permalink to &quot;Type 1&quot;"></a></h3>',6),ue=e("p",null,"This uses a method of sliding in the camera. Generally, this is the recommended mounting method as it generally requires no glue.",-1),ce=e("p",null,"Place the camera into the mount",-1),_e=e("p",null,"Slowly apply pressure inwards until the camera snaps into place.",-1),me={align:"center"},we=e("p",null," There is a good chance of breaking the mount when putting in the camera. If this happens you may be able to save the mount depending on where the break was. A small dab of hot glue around the camera is likely all that is needed. ",-1),fe=e("h3",{id:"type-2",tabindex:"-1"},[n("Type 2 "),e("a",{class:"header-anchor",href:"#type-2","aria-label":'Permalink to "Type 2"'},"")],-1),ge=e("p",null,"This method involves gluing the camera in place.",-1),be=e("p",null,"Apply a bit of glue to the bottom of the camera mount.",-1),ye=e("p",null,"Place the camera on the mount.",-1),Se=e("h2",{id:"ir-led-mounting",tabindex:"-1"},[n("IR LED mounting "),e("a",{class:"header-anchor",href:"#ir-led-mounting","aria-label":'Permalink to "IR LED mounting"'},"")],-1),ve=e("p",null,"This again differs from mount to mount.",-1),ke=e("p",null,"In some cases, there are designated spots for the LEDs to go.",-1),Pe=e("p",null,"In others there are no specified spots, you will have to mess around to find what works best. This image shows the optimal/near-optimal position for the LEDs. Hot glue is your friend with this.",-1),Te=e("div",{class:"tip custom-block"},[e("p",{class:"custom-block-title"},"TIP"),e("p",null,"Use rubbing alcohol to easily remove hot glue.")],-1),qe=JSON.parse('{"title":"Build Guide","description":"","frontmatter":{},"headers":[],"relativePath":"how_to_build/full_build.md","filePath":"how_to_build/full_build.md","lastUpdated":1709588944000}'),Ee={name:"how_to_build/full_build.md"},Ne=Object.assign(Ee,{setup(xe){return(Ce,Ie)=>(d(),p("div",null,[_,m,w,t(a,{options:o(s).V4_wire_sketch},null,8,["options"]),f,g,t(a,{options:o(s).V4_solder_wire},null,8,["options"]),b,t(h,{options:{...o(c)}},null,8,["options"]),t(a,{options:o(s).image_one},null,8,["options"]),y,S,v,k,t(a,{options:o(s).external_antenna},null,8,["options"]),P,t(a,{options:o(s).external_antenna_resistors},null,8,["options"]),T,E,x,C,I,t(a,{options:o(s).camera_socket},null,8,["options"]),V,t(a,{options:o(s).camera_socket_clip},null,8,["options"]),D,t(a,{options:o(s).camera_cable},null,8,["options"]),A,t(a,{options:o(s).camera_clip_close},null,8,["options"]),B,q,N,t(a,{options:o(s)._7_12_one},null,8,["options"]),L,t(a,{options:o(s)._7_12_two},null,8,["options"]),R,U,G,O,H,t(a,{options:o(s)._7_12_three},null,8,["options"]),W,M,t(a,{options:o(s)._13_18_one},null,8,["options"]),j,t(a,{options:o(s)._13_18_two},null,8,["options"]),F,t(a,{options:o(s)._13_18_three},null,8,["options"]),Y,t(a,{options:o(s)._13_18_four},null,8,["options"]),z,t(a,{options:o(s)._13_18_five},null,8,["options"]),$,t(a,{options:o(s)._13_18_six},null,8,["options"]),J,t(a,{options:o(s)._13_18_seven},null,8,["options"]),Q,X,t(a,{options:o(s)._13_18_eight},null,8,["options"]),Z,t(a,{options:o(s)._13_18_nine},null,8,["options"]),K,t(a,{options:o(s)._13_18_ten},null,8,["options"]),ee,te,t(a,{options:o(s).end_one},null,8,["options"]),oe,t(a,{options:o(s).end_two},null,8,["options"]),ae,t(a,{options:o(s).end_three},null,8,["options"]),se,t(a,{options:o(s).end_four},null,8,["options"]),ne,ie,re,t(a,{options:o(s).end_five},null,8,["options"]),le,t(a,{options:o(s).end_six},null,8,["options"]),he,t(a,{options:o(s).end_seven},null,8,["options"]),de,t(a,{options:o(s).end_eight},null,8,["options"]),pe,t(a,{options:o(s).end_nine},null,8,["options"]),ue,ce,t(a,{options:o(s).end_ten},null,8,["options"]),_e,t(a,{options:o(s).end_eleven},null,8,["options"]),e("div",me,[t(r,{options:o(l).end_one},{content:u(()=>[we]),_:1},8,["options"])]),fe,t(a,{options:o(s).end_twelve},null,8,["options"]),ge,be,t(a,{options:o(s).end_thirteen},null,8,["options"]),ye,t(a,{options:o(s).end_fourteen},null,8,["options"]),Se,ve,ke,t(a,{options:o(s).end_fifteen},null,8,["options"]),Pe,t(a,{options:o(s).end_sixteen},null,8,["options"]),Te]))}});export{qe as __pageData,Ne as default};