{"id":283,"date":"2024-01-23T17:10:14","date_gmt":"2024-01-23T17:10:14","guid":{"rendered":"https:\/\/foxlap.com\/tutorials\/?p=283"},"modified":"2026-08-27T00:21:56","modified_gmt":"2026-08-27T00:21:56","slug":"diy-build-your-foxlap-device","status":"publish","type":"post","link":"https:\/\/foxlap.com\/tutorials\/diy-build-your-foxlap-device\/","title":{"rendered":"DIY-Build Your FoxLAP device"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">FoxLAP &#8211; The DIY version<\/mark><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>EDIT: This tutorial is starting to show its age, as it was originally written in late 2021. Some of the components used at the time, such as the GNSS module, are now becoming difficult to find.<\/strong><br><br><strong>This is what you will have at the end of this tutorial: a fully functional GPS lap timer.<\/strong><br><\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"384\" height=\"302\" data-id=\"289\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/FOXLAP-DIY-01.png\" alt=\"\" class=\"wp-image-289\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/FOXLAP-DIY-01.png 384w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/FOXLAP-DIY-01-300x236.png 300w\" sizes=\"auto, (max-width: 384px) 100vw, 384px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"384\" height=\"312\" data-id=\"288\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/FOXLAP-DIY-Back.png\" alt=\"\" class=\"wp-image-288\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/FOXLAP-DIY-Back.png 384w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/FOXLAP-DIY-Back-300x244.png 300w\" sizes=\"auto, (max-width: 384px) 100vw, 384px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">It does, however, come with a few limitations. <br>This DIY version does not include external sensors such as RPM, water temperature or EGT, and it has no built-in accelerometer. It is also not designed to be fully water-resistant and uses a simple physical power switch instead of an advanced battery-management system.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And yes, the inside is going to look a little rough, with hand-soldered wires and hot glue!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is intentionally a quick and simple implementation. The first FoxLAP prototype was built in almost exactly the same way so that I could start developing the firmware. I rebuilt one for this tutorial without spending too much time trying to make the internal assembly perfect. I\u2019m sure many of you can build something cleaner \u2014 and if you do, please share it!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Despite these limitations, you still get the essential FoxLAP features: lap timing, gap to best lap, speed, sectors, theoretical best lap, live delta and session recording. You can also analyse your recorded GPS data afterwards using <a href=\"https:\/\/foxlap.com\/software.php\" target=\"_blank\" rel=\"noreferrer noopener\">GPXRender software<\/a> or with the <a href=\"https:\/\/foxlap.com\/dashboard.php\" target=\"_blank\" rel=\"noreferrer noopener\">online tool<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-6 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"128\" data-id=\"341\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/shot0.png\" alt=\"\" class=\"wp-image-341\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"128\" data-id=\"340\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/shot2.png\" alt=\"\" class=\"wp-image-340\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"128\" data-id=\"337\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/shot6.png\" alt=\"\" class=\"wp-image-337\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"128\" data-id=\"339\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/shot7.png\" alt=\"\" class=\"wp-image-339\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"128\" data-id=\"336\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/shot13.png\" alt=\"\" class=\"wp-image-336\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"128\" data-id=\"342\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/shot14.png\" alt=\"\" class=\"wp-image-342\"\/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"945\" height=\"424\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/screenshot.jpg\" alt=\"\" class=\"wp-image-293\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/screenshot.jpg 945w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/screenshot-600x269.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/screenshot-300x135.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/screenshot-768x345.jpg 768w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><br><strong>The goal of this tutorial<\/strong><br>The aim is to build the simplest possible FoxLAP device using readily available components. This is very close to the hardware i originally used when I started developing FoxLAP, so rebuilding it for this tutorial brings back a few memories<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Is it the ultimate hardware design? Definitely not. Could some components be replaced with better or cheaper alternatives? Of course.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Why Blender? Why this display? Why this ESP32 board? There are plenty of choices that could be debated or improved. But this version exists, it works, and it is relatively easy to reproduce.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>So, ready to build one?<\/strong><\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">1- Required parts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is what I used, mainly because I already had most of these items at home. Some of these parts can be replaced with more convenient or cheaper alternatives, depending on what is available in your country.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I have included links to purchase the components, but I have no affiliation with these sellers and I do not earn anything from these links. You are of course free to buy the parts wherever you prefer. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>1, ESP32 ESP-WROOM-32 development board<\/strong>. Used: <a href=\"https:\/\/www.az-delivery.de\/fr\/products\/esp-32-dev-kit-c-v4\" target=\"_blank\" rel=\"noreferrer noopener\">ESP32 Board<\/a> (Usually around 5$ per unit)<\/li>\n\n\n\n<li><strong>1, Lithium Battery Charger<\/strong>. Used: <a href=\"https:\/\/www.aliexpress.com\/item\/32804528128.html\" target=\"_blank\" rel=\"noreferrer noopener\">Shield Wemos D1 Mini ESP8266<\/a> (1$)<\/li>\n\n\n\n<li><strong>1, GNSS Module<\/strong>. Used: <a href=\"https:\/\/www.aliexpress.com\/i\/1005004502736260.html\" target=\"_blank\" rel=\"noreferrer noopener\">Mateksys SAM-M10Q GNSS module<\/a> (36$) <\/li>\n\n\n\n<li><strong>1, display<\/strong>. Used: <a href=\"https:\/\/fr.aliexpress.com\/item\/32841650697.html?spm=a2g0o.order_list.order_list_main.57.8e435e5baZGao0&amp;gatewayAdapt=glo2fra\" target=\"_blank\" rel=\"noreferrer noopener\">JLX 256&#215;128 COG 5V White SPI<\/a> (12$)<\/li>\n\n\n\n<li><strong>1, sdcard module<\/strong>. Used: <a href=\"https:\/\/fr.aliexpress.com\/item\/1005006104770909.html\" target=\"_blank\" rel=\"noreferrer noopener\">Micro SD Card Shield<\/a>&nbsp;(0.50$)<\/li>\n\n\n\n<li><strong>1, 18650 Battery<\/strong>. Used: <a href=\"https:\/\/www.google.com\/search?q=18650+INR18650-35E+Samsung+Li-Ion+3%2C7V+3450mAh\" target=\"_blank\" rel=\"noreferrer noopener\">18650 INR18650-35E Samsung Li-Ion 3,7V 3450mAh<\/a> (6$)<\/li>\n\n\n\n<li><strong>2, 10K resistors<\/strong> <\/li>\n\n\n\n<li><strong>4, 1K resistors<\/strong><\/li>\n\n\n\n<li><strong>1, power switch<\/strong>. used: <a href=\"https:\/\/www.amazon.com\/Tnuocke-Vertical-Position-Latching-SS12F15-G5\/dp\/B099N3HFPG\/ref=sr_1_3?keywords=slide%2Bswitch&amp;qid=1706265703&amp;sr=8-3&amp;th=1\" target=\"_blank\" rel=\"noreferrer noopener\">2 position mini switch<\/a> (6$ for 100 units)<\/li>\n\n\n\n<li><strong>1, micro sd card<\/strong>. Used SanDisk 16G or <a href=\"https:\/\/www.amazon.fr\/Verbatim-44010-microSDHC-Class-m%C3%A9moire\/dp\/B0054KHY8C\/\" target=\"_blank\" rel=\"noreferrer noopener\">Verbatim 16G<\/a> (5$)<\/li>\n\n\n\n<li><strong>4, push buttons<\/strong> 6x6x4mm. Used <a href=\"https:\/\/everythingpi.co.uk\/products\/6mm-x-6mm-x-4mm-dip-push-button-momentary-tactile-switch-4-pin-5-10-20-pcs\" target=\"_blank\" rel=\"noreferrer noopener\">buttons<\/a><br><\/li>\n\n\n\n<li>Hot Glue and regular glue<\/li>\n\n\n\n<li>Wire wrapping. Used: <a href=\"https:\/\/www.amazon.fr\/gp\/product\/B08J421XZJ\/ref=ppx_yo_dt_b_asin_title_o07_s01?ie=UTF8&amp;psc=1\" target=\"_blank\" rel=\"noreferrer noopener\">link<\/a><\/li>\n\n\n\n<li>6 M3 16mm screws<\/li>\n\n\n\n<li>1 M8 30mm screws<\/li>\n\n\n\n<li>2 M8 flat washer<\/li>\n\n\n\n<li>4 M1.2&#215;5 screws<br><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><span style=\"color:red\">More &amp; important informations<\/span><\/strong>: <br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1- <strong>GNSS module:<\/strong> this tutorial is designed to use the <strong>MatekSYS SAM-M10Q<\/strong> mounted inside the enclosure. However, you can probably use any genuine u-blox GNSS module. Please avoid very cheap GNSS replicas. A $5 GNSS module is unlikely to provide the accuracy and reliability you want for lap timing. You can find cheaper genuine u-blox modules such as the <strong>M8N<\/strong>, but you will be limited to 10 Hz. That is still perfectly usable \u2014 for comparison, the Alfano 6 GNSS also runs at 10 Hz. With some M8N modules, you may not be able to install the GNSS receiver inside the enclosure, so it will have to remain external. In that case, you will need to adapt the 3D enclosure model. I already have a few 3D models designed for this type of configuration.<br>I had good results with this u-blox M8N receiver:<br><a href=\"https:\/\/www.aliexpress.com\/item\/32748573256.html\">https:\/\/www.aliexpress.com\/item\/32748573256.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At the moment, this project is only compatible with u-blox GNSS chips. I may add support for other GNSS modules in the future if they prove to be reliable, accurate and affordable. Some users have also successfully used the <strong>QUESCAN M10Q<\/strong>.<br><strong>Note:<\/strong> on first startup, FoxLAP attempts to communicate with the GNSS receiver at <strong>9600 baud<\/strong>. Depending on the module you use, you may therefore need to configure the GNSS receiver before installing it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2- <strong>Display:<\/strong> this <a href=\"https:\/\/fr.aliexpress.com\/item\/32841650697.html?spm=a2g0o.order_list.order_list_main.57.8e435e5baZGao0&amp;gatewayAdapt=glo2fra\">JLX 256&#215;128 COG<\/a> is available in both 5 V and 3.3 V versions. I used the 5 V version simply because I already had one. The battery shield used in this tutorial includes a 5 V boost converter, so I used it to power the ESP32, the GNSS module and the display. You can also use the 3.3 V version of the display, but obviously <strong>do not connect it directly to 5 V<\/strong>. I chose the white backlight version simply because I prefer white backlights.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Important: the display must be the SPI version.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3- <strong>MicroSD card:<\/strong> the ESP32 cannot directly use FAT32 partitions larger than 32 GB, so I recommend using a card of <strong>32 GB or less<\/strong>. If you use a larger card, you will first need to create a 32 GB FAT32 partition on it. For this project, even <strong>16 GB is already more than enough<\/strong>. As with the GNSS module, avoid cheap no-name microSD cards. They can cause all kinds of read\/write errors and intermittent problems that are extremely frustrating to diagnose. I have already wasted far too much time with cheap cards before eventually throwing them in the trash! Use a reputable brand and save yourself the headache.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4- <strong>18650 battery:<\/strong> again, don\u2019t be fooled by unrealistic specifications. Avoid no-name batteries advertised as <strong>12,000 mAh<\/strong> or similarly impossible capacities. Use a good-quality 18650 cell from a reputable manufacturer. The battery\u2019s <strong>positive and negative terminals must be flat<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"284\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/battery.jpg\" alt=\"\" class=\"wp-image-353\" style=\"width:377px;height:auto\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/battery.jpg 589w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/battery-300x145.jpg 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"444\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/battery-no-good.jpg\" alt=\"\" class=\"wp-image-354\" style=\"width:277px;height:auto\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/battery-no-good.jpg 450w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/battery-no-good-100x100.jpg 100w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/battery-no-good-300x296.jpg 300w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">With batteries that have a raised button-top terminal, it may be difficult or even impossible to fit the battery into the slot provided in the enclosure.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">2- 3D Print<\/h2>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"779\" height=\"617\" data-id=\"298\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/screenshot-3dmodels.jpg\" alt=\"\" class=\"wp-image-298\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/screenshot-3dmodels.jpg 779w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/screenshot-3dmodels-600x475.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/screenshot-3dmodels-300x238.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/screenshot-3dmodels-768x608.jpg 768w\" sizes=\"auto, (max-width: 779px) 100vw, 779px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"416\" height=\"639\" data-id=\"302\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20240123190647-1.jpg\" alt=\"\" class=\"wp-image-302\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20240123190647-1.jpg 416w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20240123190647-1-195x300.jpg 195w\" sizes=\"auto, (max-width: 416px) 100vw, 416px\" \/><\/figure>\n<\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>STL <\/strong>files were created using <strong><a href=\"https:\/\/www.blender.org\/download\/\">Blender<\/a><\/strong>. <\/li>\n\n\n\n<li><strong>3D Printer:<\/strong> <strong>Creality CR10s PRO<\/strong>.<\/li>\n\n\n\n<li><strong>Slicer<\/strong>: I used <a href=\"https:\/\/ultimaker.com\/software\/ultimaker-cura\/\"><strong>Cura<\/strong> <\/a>to slice the 3D models <\/li>\n\n\n\n<li><strong>3D filament<\/strong>: i used the <strong>1.75mm ZIRO Filament PLA with carbon fiber<\/strong>. Amazon link: <a href=\"https:\/\/www.amazon.com\/dp\/B01IICFS4Y\/\">https:\/\/www.amazon.com\/dp\/B01IICFS4Y\/<\/a><\/li>\n\n\n\n<li><strong>Print settings:<\/strong> 0.4mm nozzle, Standard quality (0.2mm), 40% infill, Support (zig zag support)<\/li>\n\n\n\n<li><strong>Print Speed:<\/strong> Usually I set the speed to 60% of the maximum speed the printer can achieve. Because I saw that the more I increase the speed, the more faulty prints I get. <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"739\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/cura02-1024x739.jpg\" alt=\"\" class=\"wp-image-307\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/cura02-1024x739.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/cura02-600x433.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/cura02-300x217.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/cura02-768x554.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/cura02.jpg 1042w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>I\u2019m not a 3D-printing expert<\/strong>, but I got my best results by printing the STL models this way. In the screenshot, I assembled all the STL parts together only to show you how they are positioned. In practice, I printed each STL part separately, not all together as shown in the image.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>There is also 2 other parts printed with <a href=\"https:\/\/www.3dprintersolutions.nl\/polymaker-polyflex-true-black-750gr.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>flexibale filament<\/strong>.<\/a> You will need <strong>two M8 flat-washer parts<\/strong>. They will help you mount the lap timer securely to the steering wheel. This filament gives very good results, but it is quite expensive, and you probably won\u2019t want to buy an entire spool just for two small parts. You can try printing them with regular PLA instead.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"970\" height=\"724\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/cura2-1.jpg\" alt=\"\" class=\"wp-image-360\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/cura2-1.jpg 970w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/cura2-1-600x448.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/cura2-1-300x224.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/cura2-1-768x573.jpg 768w\" sizes=\"auto, (max-width: 970px) 100vw, 970px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the STL files you must print:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-3544c5bb-0c60-4848-bcd7-289c93b40671\" href=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/FOXLAP-DIY-STL-v1.1.zip\">Download FOXLAP-DIY-STL-v1.1<\/a><a href=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/FOXLAP-DIY-STL-v1.1.zip\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-3544c5bb-0c60-4848-bcd7-289c93b40671\">Download<\/a><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<ul class=\"wp-block-list\">\n<li><strong>01-FOXLAP-DIY-Overlay.stl<\/strong>:  1 print (you can use a different color for this part)<\/li>\n\n\n\n<li><strong>02-FOXLAP-DIY-box-top.stl<\/strong>: 1 print<\/li>\n\n\n\n<li><strong>03-FOXLAP-DIY-box-bottom.stl:<\/strong> 1 print <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">(print this one if you don&#8217;t want external sensors)<\/mark><\/em><\/li>\n\n\n\n<li><strong>03-FOXLAP-DIY-box-bottom-ext.sensor.stl:<\/strong> 1 print <em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">(print this one if you want external sensors)<\/mark><\/em><\/li>\n\n\n\n<li><strong>04-FOXLAP-DIY-buttons.stl<\/strong>: 4 prints<\/li>\n\n\n\n<li><strong>05-FOXLAP-DIY-buttons-support.stl<\/strong>: 2 prints<\/li>\n\n\n\n<li><strong>06-FOXLAP-DIY-flex-rond.stl<\/strong>: 2 prints<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">3- Assembly guide<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">From this point on, you should have the <strong>3D-printed enclosure and all the electronic components in front of you<\/strong>. Here is the complete wiring diagram. Even though the circuit itself is quite simple, it requires a fairly large number of wires.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"552\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/ESP32-pinout-1024x552.png\" alt=\"\" class=\"wp-image-425\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/ESP32-pinout-1024x552.png 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/ESP32-pinout-600x323.png 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/ESP32-pinout-300x162.png 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/ESP32-pinout-768x414.png 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/ESP32-pinout.png 1462w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"803\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/complete-foxlap-diy-schem2-1024x803-2.png\" alt=\"\" class=\"wp-image-1023\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/complete-foxlap-diy-schem2-1024x803-2.png 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/complete-foxlap-diy-schem2-1024x803-2-300x235.png 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/complete-foxlap-diy-schem2-1024x803-2-768x602.png 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/complete-foxlap-diy-schem2-1024x803-2-600x471.png 600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">3.1 Buttons assembly<\/mark><\/strong><br>Insert the <strong>four buttons<\/strong> into the button holder you printed earlier.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" data-id=\"373\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208092046-1024x578.jpg\" alt=\"\" class=\"wp-image-373\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208092046-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208092046-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208092046-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208092046-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208092046-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208092046-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1023\" height=\"652\" data-id=\"372\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208092109-1.jpg\" alt=\"\" class=\"wp-image-372\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208092109-1.jpg 1023w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208092109-1-600x382.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208092109-1-300x191.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208092109-1-768x489.jpg 768w\" sizes=\"auto, (max-width: 1023px) 100vw, 1023px\" \/><\/figure>\n<\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208103220-1024x578.jpg\" alt=\"\" class=\"wp-image-376\" style=\"width:819px;height:auto\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208103220-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208103220-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208103220-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208103220-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208103220-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/01\/IMG20231208103220-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" data-id=\"384\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208105330-1-1024x578.jpg\" alt=\"\" class=\"wp-image-384\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208105330-1-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208105330-1-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208105330-1-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208105330-1-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208105330-1-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208105330-1-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"578\" height=\"1024\" data-id=\"383\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110447-578x1024.jpg\" alt=\"\" class=\"wp-image-383\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110447-578x1024.jpg 578w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110447-scaled-600x1064.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110447-169x300.jpg 169w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110447-768x1362.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110447-866x1536.jpg 866w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110447-1155x2048.jpg 1155w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110447-scaled.jpg 1444w\" sizes=\"auto, (max-width: 578px) 100vw, 578px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Make sure the buttons slide freely without binding. Enlarge the holes slightly if necessary, as 3D printing can sometimes leave a small amount of excess material around the edges.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-6 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" data-id=\"385\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110846-1024x578.jpg\" alt=\"\" class=\"wp-image-385\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110846-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110846-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110846-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110846-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110846-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208110846-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" data-id=\"386\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208111433-1024x578.jpg\" alt=\"\" class=\"wp-image-386\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208111433-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208111433-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208111433-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208111433-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208111433-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208111433-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Then attach the button-holder parts using <strong>M1.2 \u00d7 5 mm screws<\/strong>. Repeat the same process for both the left and right button assemblies.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"482\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttons-ground-1024x482.jpg\" alt=\"\" class=\"wp-image-406\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttons-ground-1024x482.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttons-ground-600x282.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttons-ground-300x141.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttons-ground-768x361.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttons-ground-1536x722.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttons-ground-2048x963.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Connect all the button ground pins together, then connect them to the display\u2019s <strong>K ground pin<\/strong>. Use a different wire color for each button. This will make it much easier to identify the correct wire when you solder them to their corresponding ESP32 GPIO pins later. It&#8217;s time to add the 4 debounce resistors on the buttons.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ff0000\" class=\"has-inline-color\">IMPORTANT<\/mark><\/strong>: you may not have to add the debounce resistors (even if it&#8217;s not recommanded). <strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ff0000\" class=\"has-inline-color\">But you must add them if you are willing to use the device in engine environnement <\/mark><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"571\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/12\/debounce-1024x571.png\" alt=\"\" class=\"wp-image-635\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/12\/debounce-1024x571.png 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/12\/debounce-600x335.png 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/12\/debounce-300x167.png 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/12\/debounce-768x429.png 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/12\/debounce.png 1156w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"418\" height=\"90\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttons_wire.png\" alt=\"\" class=\"wp-image-449\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttons_wire.png 418w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttons_wire-300x65.png 300w\" sizes=\"auto, (max-width: 418px) 100vw, 418px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"438\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttonswire-1024x438.jpg\" alt=\"\" class=\"wp-image-413\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttonswire-1024x438.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttonswire-scaled-600x257.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttonswire-300x128.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttonswire-768x329.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttonswire-1536x658.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/buttonswire-2048x877.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Apply hot glue to all solder joints. Remember: <strong>vibration is our enemy<\/strong>. Leave enough length on the wires, as you will need to solder them later to the ESP32 located in the other half of the enclosure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\"><strong>3.2 Display<\/strong> <strong>assembly<\/strong><\/mark><\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" data-id=\"400\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208115442-1-1024x578.jpg\" alt=\"\" class=\"wp-image-400\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208115442-1-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208115442-1-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208115442-1-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208115442-1-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208115442-1-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231208115442-1-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" data-id=\"415\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211174124-1024x578.jpg\" alt=\"\" class=\"wp-image-415\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211174124-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211174124-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211174124-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211174124-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211174124-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211174124-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Install the display and secure it with the screws. You can add a small amount of hot glue to help position the display correctly and make sure it does not move.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-8 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"495\" data-id=\"420\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/esp-32-dev-kitdisplay-pin-1024x495.jpg\" alt=\"\" class=\"wp-image-420\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/esp-32-dev-kitdisplay-pin-1024x495.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/esp-32-dev-kitdisplay-pin-600x290.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/esp-32-dev-kitdisplay-pin-300x145.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/esp-32-dev-kitdisplay-pin-768x371.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/esp-32-dev-kitdisplay-pin-1536x743.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/esp-32-dev-kitdisplay-pin.jpg 1902w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Here is how the display should be connected to the ESP32. Prepare and solder the wires to the display, but <strong>do not solder them to the ESP32 yet<\/strong>. Again, leave enough length on the wires, as you will need to connect them later to the ESP32 located in the other half of the enclosure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">3.3 Bottom part assembly<\/mark><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152532-1024x578.jpg\" alt=\"\" class=\"wp-image-428\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152532-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152532-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152532-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152532-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152532-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152532-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Place the power on\/off switch and hot glue it.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152701-1024x578.jpg\" alt=\"\" class=\"wp-image-429\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152701-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152701-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152701-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152701-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152701-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211152701-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Insert the <strong>M8 \u00d7 30 mm screw<\/strong>, apply a small amount of regular glue to the top of the screw, then tighten it into place.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211153450-1024x578.jpg\" alt=\"\" class=\"wp-image-430\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211153450-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211153450-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211153450-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211153450-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211153450-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211153450-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Fill the remaining space around the <strong>M8 screw head<\/strong> with hot glue to secure it firmly in place.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">3.4 Battery assembly<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now take your <strong>18650 battery<\/strong> and use a spot welder to attach <strong>nickel strips<\/strong> to both terminals.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"345\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/battery-prepare-1024x345.jpg\" alt=\"\" class=\"wp-image-433\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/battery-prepare-1024x345.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/battery-prepare-600x202.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/battery-prepare-300x101.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/battery-prepare-768x259.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/battery-prepare-1536x518.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/battery-prepare.jpg 1921w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211160338-1024x578.jpg\" alt=\"\" class=\"wp-image-434\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211160338-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211160338-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211160338-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211160338-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211160338-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211160338-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Place the battery inside the enclosure and apply hot glue around it to hold it securely in place.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"498\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/diagram-bottom-1024x498.jpg\" alt=\"\" class=\"wp-image-436\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/diagram-bottom-1024x498.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/diagram-bottom-600x292.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/diagram-bottom-300x146.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/diagram-bottom-768x373.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/diagram-bottom.jpg 1099w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Follow this wiring diagram to connect the <strong>lithium battery charger<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211163329-1024x578.jpg\" alt=\"\" class=\"wp-image-439\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211163329-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211163329-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211163329-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211163329-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211163329-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211163329-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You should now have something that looks like this.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Make sure the power switch is OFF during the following steps.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At this point, you can also check that the battery charges correctly and verify that you can measure approximately <strong>+5 V between the 5V and GND pins<\/strong> on the lithium battery charger board. The two <strong>10 k\u03a9 resistors<\/strong> connected across the battery terminals will allow us to estimate the battery level using the ESP32 ADC. This is clearly not the most accurate way to measure battery level, but remember: this tutorial is intended to build a <strong>simple and inexpensive version<\/strong> of FoxLAP. It will still give you a reasonable indication of the remaining battery level.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">3.5 GNSS assembly<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Take your <strong>MatekSYS SAM-M10Q<\/strong> GNSS module. Prepare the required wires and solder them to the module according to the wiring diagram.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"694\" height=\"392\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/gnss-wire-diag.jpg\" alt=\"\" class=\"wp-image-445\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/gnss-wire-diag.jpg 694w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/gnss-wire-diag-600x339.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/gnss-wire-diag-300x169.jpg 300w\" sizes=\"auto, (max-width: 694px) 100vw, 694px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">3.6 SDCARD assembly<\/mark><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"383\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/sdcard-wire-1024x383.jpg\" alt=\"\" class=\"wp-image-448\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/sdcard-wire-1024x383.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/sdcard-wire-600x224.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/sdcard-wire-300x112.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/sdcard-wire-768x287.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/sdcard-wire.jpg 1067w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">3.7 Wire to the ESP32<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The SD card reader module I used here is <strong>not exactly the same as the one listed in the parts section<\/strong>. The one shown here is actually too large for this build, but it was the only module I had available when I recreated the DIY device for this tutorial. I didn\u2019t want to buy another SD card module just for that. <strong>Use the SD card module listed earlier in the parts list.<\/strong> Alternatively, you can also use a <strong>microSD-to-SD adapter<\/strong> as the card holder \u2014 yes, it works.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-9 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"925\" height=\"522\" data-id=\"451\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211174156.jpg\" alt=\"\" class=\"wp-image-451\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211174156.jpg 925w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211174156-600x339.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211174156-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211174156-768x433.jpg 768w\" sizes=\"auto, (max-width: 925px) 100vw, 925px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Now solder the wires to the corresponding <strong>ESP32 GPIO pins<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>It\u2019s starting to look pretty ugly now, isn\u2019t it? \ud83d\ude42<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"955\" height=\"1024\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211183136-955x1024.jpg\" alt=\"\" class=\"wp-image-453\" style=\"width:819px;height:auto\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211183136-955x1024.jpg 955w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211183136-scaled-600x643.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211183136-280x300.jpg 280w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211183136-768x823.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211183136-1433x1536.jpg 1433w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231211183136-1910x2048.jpg 1910w\" sizes=\"auto, (max-width: 955px) 100vw, 955px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Now connect the <strong>display and button wires<\/strong> to their corresponding pins on the ESP32.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"493\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/closethebox-1024x493.jpg\" alt=\"\" class=\"wp-image-454\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/closethebox-1024x493.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/closethebox-600x289.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/closethebox-300x145.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/closethebox-768x370.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/closethebox.jpg 1260w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">(<strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">Only after Point 4 and 5 have been completely done<\/mark><\/strong>) <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>But before closing the box, you have to flash the board with the firmware<\/strong>. See Point 5. Firmware installation to do it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Close the enclosure and secure it with <strong>six M3 \u00d7 16 mm screws<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then glue the <strong>front panel<\/strong> into place. I printed mine in yellow, but of course, <strong>yellow is not mandatory! \ud83d\ude42<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231212004058-1024x578.jpg\" alt=\"\" class=\"wp-image-457\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231212004058-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231212004058-scaled-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231212004058-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231212004058-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231212004058-1536x866.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/02\/IMG20231212004058-2048x1155.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">It should be working now&#8230; And it definitely looks better once you can\u2019t see what\u2019s inside. \ud83d\ude04<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Obviously, the <strong>dedicated-board version<\/strong> is much easier to assemble. It also includes a <strong>larger display<\/strong> and many more features. If you are interested in the dedicated-board version, you can find more information on <a href=\"https:\/\/foxlap.com\/tutorials\/foxlap-dedicated-board\/\">this page<\/a><\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-10 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" data-id=\"553\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/08\/pic1-1024x578.jpg\" alt=\"\" class=\"wp-image-553\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/08\/pic1-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/08\/pic1-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/08\/pic1-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/08\/pic1-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/08\/pic1.jpg 1388w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" data-id=\"552\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/08\/pic2-1024x578.jpg\" alt=\"\" class=\"wp-image-552\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/08\/pic2-1024x578.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/08\/pic2-600x338.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/08\/pic2-300x169.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/08\/pic2-768x433.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/08\/pic2.jpg 1388w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"496\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/12\/foxlap-1-1024x496.jpg\" alt=\"\" class=\"wp-image-675\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/12\/foxlap-1-1024x496.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/12\/foxlap-1-600x291.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/12\/foxlap-1-300x145.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/12\/foxlap-1-768x372.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/12\/foxlap-1.jpg 1069w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">4- Prepare your SDcard<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Partitions larger than <strong>32 GB<\/strong> will not be recognized by the device. So if the SD card is not detected, make sure that:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>You are not using a poor-quality, no-name SD card.<\/li>\n\n\n\n<li>The partition size is <strong>32 GB or less<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">If your SD card has a capacity greater than 32 GB, you will need to create a <strong>16 GB or 32 GB partition<\/strong>. Any remaining space on the card will not be used.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"263\" height=\"524\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/SDCARD.jpg\" alt=\"\" class=\"wp-image-488\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/SDCARD.jpg 263w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/SDCARD-151x300.jpg 151w\" sizes=\"auto, (max-width: 263px) 100vw, 263px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Format the SD card using the <strong>FAT32 file system<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once the formatting is complete, the SD card will be empty and ready to be inserted into the device.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">5- Firmware installation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Download this zip file containing the firmware and the tools to flash the board.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">Version 2.14 &#8211; release date 2026\/<\/mark>05\/20<\/strong><br>What&#8217;s new in version 2.1X:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Faster Gui using hardware SPI<\/li>\n\n\n\n<li>Led controller<\/li>\n\n\n\n<li>Fix bug in track management<\/li>\n\n\n\n<li>Fix Bug in Live Delta for custom tracks<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/foxlap.com\/dl\/foxlap-DIY-v2.14.zip\">Download FoxLAP Firmware DIY V2.14<\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">5.1 Flashing on windows<\/mark><\/strong> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">operating system<\/mark><\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"618\" height=\"175\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/flash01.jpg\" alt=\"\" class=\"wp-image-486\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/flash01.jpg 618w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/flash01-600x170.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/flash01-300x85.jpg 300w\" sizes=\"auto, (max-width: 618px) 100vw, 618px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Unzip the contents of the downloaded archive. Connect your ESP32 board to your computer via USB, then run the <strong><code>flash_firmware.bat<\/code><\/strong> file.<br>You will be asked to enter the COM port used to communicate with the board. Enter it like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>COM6<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, if your board is using a different COM port, replace <code>COM6<\/code> with the correct one. And please don\u2019t contact me just because <strong>COM6 is not recognized<\/strong> \u2014 your board may simply be using another COM port. \ud83d\ude04<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"927\" height=\"502\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/flash02.jpg\" alt=\"\" class=\"wp-image-487\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/flash02.jpg 927w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/flash02-600x325.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/flash02-300x162.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/flash02-768x416.jpg 768w\" sizes=\"auto, (max-width: 927px) 100vw, 927px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Or you can enter directly the following command<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">esptool.exe --chip esp32 --port <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">COM6<\/mark><\/strong> --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x1000 foxlap.DIY.bootloader.bin 0x8000 foxlap.DIY.partitions.bin 0xe000 boot_app0.bin 0x10000 foxlap.DIY.bin<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now Hard reboot the board. OK, now the device must be working&#8230; <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">5.2 Install a new firmware on an exising and running device<\/mark><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Start your <strong>FoxLAP<\/strong> device, then go to:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>WiFi transfer \u2192 Start WiFi<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you have not yet set a WiFi password, go to:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>WiFi transfer \u2192 Set WiFi password<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Your password must be at least <strong>8 characters long<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once this is done and the device is running in WiFi mode, you should see <strong>\u201cWiFi Data Transfer\u201d<\/strong> on the screen, along with the name of the hotspot created by the device, for example:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>FoxLAP_xxxxxx<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On your computer, connect to this WiFi hotspot. <strong>Remember that WiFi passwords are case-sensitive.<\/strong> Then open <strong>GPXRender<\/strong>, available on this website, and click <strong>\u201cSynchronize device\u201d<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If your computer is correctly connected to the FoxLAP device, a window will appear. Go to the <strong>Firmware<\/strong> tab, select the new firmware file, then click <strong>Flash<\/strong>. You can now update the firmware over WiFi without having to open or disassemble the device.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"766\" height=\"558\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/06\/gpxrender-flash-firmware.png\" alt=\"\" class=\"wp-image-521\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/06\/gpxrender-flash-firmware.png 766w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/06\/gpxrender-flash-firmware-600x437.png 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/06\/gpxrender-flash-firmware-300x219.png 300w\" sizes=\"auto, (max-width: 766px) 100vw, 766px\" \/><\/figure>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">6- First launch and configuration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">At the first launch, you must get this screen. If it is not already done, <a href=\"https:\/\/foxlap.com\/register.php\">create a FoxLAP account here<\/a><br>You will need to enter your <strong>name<\/strong>, choose a <strong>password<\/strong>, and provide a few other details. Some characters are not allowed, so please pay attention when choosing your login information. You will need to enter the same information directly on the FoxLAP device, and since screen space is limited, I had to restrict the list of supported characters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Only these characters are allowed at this time: <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-nv-c-2-color\">0-9, a-z, A-Z, ! # $ % &amp; &#8216; ( ) * + , &#8211; . @ : ; =<\/mark><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"461\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403174947-1024x461.jpg\" alt=\"\" class=\"wp-image-489\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403174947-1024x461.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403174947-scaled-600x270.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403174947-300x135.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403174947-768x345.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403174947-1536x691.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403174947-2048x921.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">What you need to enter during the <strong>first startup<\/strong> is shown in this video. The device must be able to connect to the Internet, so you will need to enter your <strong>WiFi credentials<\/strong>. You may have trouble with WiFi passwords containing special characters that are not supported by the device. In that case, you can share your phone\u2019s Internet connection by creating a <strong>mobile hotspot<\/strong> with a password that only contains characters supported by FoxLAP.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"FoxLAP - First Launch\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/bhl_U4WhiV8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If the connection is unsuccessful, <strong>turn off the device and restart it to try again<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once the connection is successful, the device will automatically retrieve the settings stored in your account, which are available on this page <a href=\"https:\/\/foxlap.com\/mydevice.php\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/foxlap.com\/mydevice.php<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"521\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/trackssettings-1024x521.jpg\" alt=\"\" class=\"wp-image-490\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/trackssettings-1024x521.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/trackssettings-600x305.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/trackssettings-300x153.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/trackssettings-768x391.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/trackssettings-1536x782.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/trackssettings.jpg 1872w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You will be able to change the device settings and also <strong>select or unselect the tracks<\/strong> available on your FoxLAP. <strong>Do not select all tracks.<\/strong> Only select the tracks from your country or the ones you are likely to use. The more tracks you select, the longer the <strong>automatic track detection<\/strong> may take. After changing your track selection, don\u2019t forget to click <strong>\u201cSave Track Selection\u201d<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-11 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"461\" data-id=\"491\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192134-1024x461.jpg\" alt=\"\" class=\"wp-image-491\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192134-1024x461.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192134-scaled-600x270.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192134-300x135.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192134-768x345.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192134-1536x691.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192134-2048x921.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"461\" data-id=\"492\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192145-1024x461.jpg\" alt=\"\" class=\"wp-image-492\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192145-1024x461.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192145-scaled-600x270.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192145-300x135.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192145-768x345.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192145-1536x691.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240403192145-2048x921.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Then, on the device, go to the <strong>\u201cSynchronize\u201d<\/strong> menu and select <strong>\u201cUpdate Track Database\u201d<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What to do if your track is not available on the device<\/strong>?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I recommend creating your own track using the tool provided here: <a href=\"https:\/\/foxlap.com\/track_creation.php\">https:\/\/foxlap.com\/track_creation.php<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"track creation\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/yb-_YDaLdlY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once the track has been created, go to <a href=\"https:\/\/foxlap.com\/mydevice.php\">https:\/\/foxlap.com\/mydevice.php<\/a>, select your newly created track in the <strong>\u201cMy Own Tracks\u201d<\/strong> category, then click <strong>\u201cSave Selection\u201d<\/strong>. Then, on the device, go to the <strong>\u201cSynchronize\u201d<\/strong> menu and select <strong>\u201cUpdate Track Database\u201d<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A few tips:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><br><strong>I will add more information and tutorials explaining how to use everything. But please keep the following points in mind:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>There may still be some bugs. The DIY firmware is a fork of the dedicated-board firmware, and I have not tested every feature on this DIY version, as I do not personally use it.<\/li>\n\n\n\n<li>I cannot predict how good the GNSS reception will be at your location. Here in France, the signal quality is very good. In an upcoming firmware version, I also plan to add an option that will allow you to select the <strong>SBAS PRNs<\/strong> yourself.<\/li>\n\n\n\n<li>Before heading out onto the track, turn on the device and make sure the GNSS reception is good. In the bottom status bar, you should see <strong>at least 12 satellites<\/strong>, and the <strong>HDOP<\/strong> (Horizontal Dilution of Precision) should preferably be below <strong>1.0<\/strong>. Around <strong>0.7 or lower is ideal<\/strong>; here in France, I often get values around <strong>0.6<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Turn the device on and leave it stationary for a while before driving, to allow the GNSS receiver to obtain a good and stable position fix.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"564\" src=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240404011519-1024x564.jpg\" alt=\"\" class=\"wp-image-494\" style=\"width:532px;height:auto\" srcset=\"https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240404011519-1024x564.jpg 1024w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240404011519-600x330.jpg 600w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240404011519-300x165.jpg 300w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240404011519-768x423.jpg 768w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240404011519-1536x845.jpg 1536w, https:\/\/foxlap.com\/tutorials\/wp-content\/uploads\/2024\/04\/IMG20240404011519.jpg 1548w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>I have one important requirement regarding commercial distribution: you may not sell this DIY version.<\/strong> Commercial use of the DIY version is not permitted.<br><br>That&#8217;s all for the moment,<br>Renan BROQUIN<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/foxlap.com\/dl\/foxLAP-UserGuide.pdf\"><img decoding=\"async\" src=\"https:\/\/foxlap.com\/home\/images\/pdf-userguide.png\" alt=\"\" style=\"width:106px;height:auto\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<h2 class=\"wp-block-heading\"><strong>Download FoxLAP User Guide<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/foxlap.com\/dl\/foxLAP-UserGuide.pdf\">https:\/\/foxlap.com\/dl\/foxLAP-UserGuide.pdf<\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">This is what it looks like to drive with FoxLAP1:<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"training with FoxLAP lap timer. Biscarosse gokart track\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/5etYgwyPGMw?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">This is what it looks like to drive with FoxLAP2:<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"FoxLAP2\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/o0_1SNUoRJ0?start=76&amp;feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">DIY <strong>Builds from the community<\/strong>:<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Amigos no Kart 2026 - 16\/05\/2026 - 4\u00aa etapa Kart\u00f3dromo de Ascurra\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/wFe0UfVk_u0?start=95&amp;feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>FoxLAP &#8211; The DIY version EDIT: This tutorial is starting to show its age, as it was originally written in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":457,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[7,6],"tags":[],"class_list":["post-283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gps","category-telemetry"],"_links":{"self":[{"href":"https:\/\/foxlap.com\/tutorials\/wp-json\/wp\/v2\/posts\/283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/foxlap.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/foxlap.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/foxlap.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/foxlap.com\/tutorials\/wp-json\/wp\/v2\/comments?post=283"}],"version-history":[{"count":149,"href":"https:\/\/foxlap.com\/tutorials\/wp-json\/wp\/v2\/posts\/283\/revisions"}],"predecessor-version":[{"id":1480,"href":"https:\/\/foxlap.com\/tutorials\/wp-json\/wp\/v2\/posts\/283\/revisions\/1480"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/foxlap.com\/tutorials\/wp-json\/wp\/v2\/media\/457"}],"wp:attachment":[{"href":"https:\/\/foxlap.com\/tutorials\/wp-json\/wp\/v2\/media?parent=283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/foxlap.com\/tutorials\/wp-json\/wp\/v2\/categories?post=283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/foxlap.com\/tutorials\/wp-json\/wp\/v2\/tags?post=283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}