├── Lid.stl ├── .DS_Store ├── Rear.stl ├── LICENSE.txt ├── Top_Button.stl ├── Bottom_Button.stl ├── Small_Button.stl ├── nextion ├── BlueFlag.png ├── Lumirank.HMI ├── Lumirank.tft ├── Sector1.png ├── Sector2.png ├── Sector3.png ├── BlackFlag.png ├── Greenflag.png ├── WhiteFlag.png ├── ChequeredFlag.png ├── DoubleYellow.png ├── ReadyScreen.png ├── flag_template.psd └── Lumirank.hmijmap └── readme.md /Lid.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/Lid.stl -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/.DS_Store -------------------------------------------------------------------------------- /Rear.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/Rear.stl -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | This thing was created by Thingiverse user Bregfer, and is licensed under cc-nc. -------------------------------------------------------------------------------- /Top_Button.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/Top_Button.stl -------------------------------------------------------------------------------- /Bottom_Button.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/Bottom_Button.stl -------------------------------------------------------------------------------- /Small_Button.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/Small_Button.stl -------------------------------------------------------------------------------- /nextion/BlueFlag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/BlueFlag.png -------------------------------------------------------------------------------- /nextion/Lumirank.HMI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/Lumirank.HMI -------------------------------------------------------------------------------- /nextion/Lumirank.tft: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/Lumirank.tft -------------------------------------------------------------------------------- /nextion/Sector1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/Sector1.png -------------------------------------------------------------------------------- /nextion/Sector2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/Sector2.png -------------------------------------------------------------------------------- /nextion/Sector3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/Sector3.png -------------------------------------------------------------------------------- /nextion/BlackFlag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/BlackFlag.png -------------------------------------------------------------------------------- /nextion/Greenflag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/Greenflag.png -------------------------------------------------------------------------------- /nextion/WhiteFlag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/WhiteFlag.png -------------------------------------------------------------------------------- /nextion/ChequeredFlag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/ChequeredFlag.png -------------------------------------------------------------------------------- /nextion/DoubleYellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/DoubleYellow.png -------------------------------------------------------------------------------- /nextion/ReadyScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/ReadyScreen.png -------------------------------------------------------------------------------- /nextion/flag_template.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fholgado/simhub-lumirank-display/HEAD/nextion/flag_template.psd -------------------------------------------------------------------------------- /nextion/Lumirank.hmijmap: -------------------------------------------------------------------------------- 1 | { 2 | "BindingsEx": {}, 3 | "RolesEx": {}, 4 | "ClickActionsEx": {}, 5 | "HotSpots": [], 6 | "PagesMappings": [ 7 | { 8 | "PageName": "readyscreen", 9 | "ConditionToPage": { 10 | "Expression": null 11 | }, 12 | "InGame": true, 13 | "Idle": true, 14 | "Skip": false 15 | }, 16 | { 17 | "PageName": "blackflag", 18 | "ConditionToPage": { 19 | "Expression": "isnull([ACCCDS_Graphics.ACC_ORANGE_FLAG],0)" 20 | }, 21 | "InGame": true, 22 | "Idle": false, 23 | "Skip": false 24 | }, 25 | { 26 | "PageName": "whiteflag", 27 | "ConditionToPage": { 28 | "Expression": "[ACCCDS_Graphics.globalWhite]" 29 | }, 30 | "InGame": true, 31 | "Idle": false, 32 | "Skip": false 33 | }, 34 | { 35 | "PageName": "blueflag", 36 | "ConditionToPage": { 37 | "Expression": "[Flag_Blue]" 38 | }, 39 | "InGame": true, 40 | "Idle": false, 41 | "Skip": false 42 | }, 43 | { 44 | "PageName": "chequeredflag", 45 | "ConditionToPage": { 46 | "Expression": "[Flag_Checkered]" 47 | }, 48 | "InGame": true, 49 | "Idle": false, 50 | "Skip": false 51 | }, 52 | { 53 | "PageName": "doubleyellow", 54 | "ConditionToPage": { 55 | "Expression": "[Flag_Yellow]" 56 | }, 57 | "InGame": true, 58 | "Idle": false, 59 | "Skip": false 60 | }, 61 | { 62 | "PageName": "greenflag", 63 | "ConditionToPage": { 64 | "Expression": "if([GameRawData.Graphics.Flag]='ACC_GREEN_FLAG',1,0)" 65 | }, 66 | "InGame": true, 67 | "Idle": false, 68 | "Skip": false 69 | }, 70 | { 71 | "PageName": "sector1", 72 | "ConditionToPage": { 73 | "Expression": "isnull([ACCCDS_Graphics.globalYellow1],0)" 74 | }, 75 | "InGame": true, 76 | "Idle": false, 77 | "Skip": false 78 | }, 79 | { 80 | "PageName": "sector2", 81 | "ConditionToPage": { 82 | "Expression": "isnull([ACCCDS_Graphics.globalYellow2],0)" 83 | }, 84 | "InGame": true, 85 | "Idle": false, 86 | "Skip": false 87 | }, 88 | { 89 | "PageName": "sector3", 90 | "ConditionToPage": { 91 | "Expression": "isnull([ACCCDS_Graphics.globalYellow3],0)" 92 | }, 93 | "InGame": true, 94 | "Idle": false, 95 | "Skip": false 96 | } 97 | ], 98 | "RefreshDelaysEx": {}, 99 | "VirtualPages": [] 100 | } -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Lumirank Screen for ACC 2 | ### Original work by [u/Bregfer](https://www.reddit.com/user/Bregfer/), with some code updates and tweaks by `@fholgado`. Licensed under `cc-nc`. 3 | 4 | ## Description 5 | This is a combination of a 3D printed case, a Nextion display, an Arduino board, and some code that runs on [SimHub](https://www.simhubdash.com/) that enables you to have a dedicated Lumirank screen for your sim rig. The Lumirank display is used in race cars to inform the driver of current flags on course. This currently only works for Assetto Corsa Competizione, although it could probably be made to work for iRacing and other games that have current flag telemetry data. 6 | 7 | This was originally published by [u/bregfer](https://www.reddit.com/user/Bregfer/) on [Reddit](https://www.reddit.com/r/simracing/comments/k8ok6q/diy_lumirank_flag_display_files_in_comments/). 8 | 9 | ![Lumirank screen on Bregfer's NSX rig](https://dl.dropboxusercontent.com/s/1whrf0awdydwq2i/IMG_20210315_221242233.jpg) 10 | 11 | ## Features 12 | Displays the following flags: 13 | - Yellow flags per sector (1/2/3) 14 | - Full course/double yellow 15 | - Green flag for race starts 16 | - White flag for last lap 17 | - Checkered flag for race finish 18 | - Blue flag for fast approaching cars 19 | 20 | ## Basic Instructions 21 | - Print the case using your 3D printer 22 | - Assemble the hardware by connecting the Nextion screen to your Arduino 23 | - Upload the `NextionBridge` sketch from SimHub to your Arduino 24 | - Use the Nextion uploader to upload the Nextion TFT code to your Nextion screen 25 | - Copy the Nextion template (`.hmijmap` and `.hmistruct` into your SimHub `NextionTemplates` folder 26 | - Enable a Nextion screen in SimHub, making sure to select the `Lumirank` template and the right `COM` port 27 | - Fire up ACC, and give it a spin! 28 | 29 | ## 3D files included 30 | - The front of the main box (Lid.stl) 31 | - The rear cover (Rear.stl) 32 | - The buttons for printing first Top, bottom and small buttons.stl (Optional) 33 | 34 | [Thingiverse link](https://www.thingiverse.com/thing:4678316) 35 | 36 | ## Hardware required: 37 | - Nextion 2.8 screen 38 | - Arduino Pro Micro (not required if you don't use the LEDs - a TTL converter would work instead, but I used Arduino) 39 | - Micro USB cable (Either ends to make you own cable or chop one up, also it needs 4 wires not 2) 40 | - 4pcs - M3 nuts. 41 | - 4pcs - M3x16 countersunk screw 42 | - 1pcs - 4 pin JST connector 43 | - 1pcs - Micro USB cable 44 | - 1pcs - LED array (4 long) - I used https://www.banggood.com/5pcs-CJMCU-354-4-Bit-Colorful-Lantern-Development-Board-RGB-LED-Programmable-p-1318464.html?rmmds=myorder&cur_warehouse=CN but a single LED that you can wire would also work. 45 | - Some wire 46 | 47 | ## Instructions for build: 48 | - Print the lid and rear parts. remove the support material from the side holes. 49 | - Push m3 nuts into the recesses in the body, glue may be required depending on print but mine did not require any. 50 | - Wire the LED array: 51 | - + to VCC 52 | - - to GND 53 | - Din to pin 3 of arduino. 54 | - Place the LED array in the slot for it and route the wire around the indent and up the side.s 55 | - Place the Nextion screen into the lid, with the JST connection at the side opposite the wire hole. 56 | - If you are using a micro USB cable, chop it close to the micro end, strip it, push it through the hole and resolder the wires. If you are making your own end, wire it. Once the wire is in its intended that a cable tie act as a strain relief, I found mine to be slightly too thick for this, your milage may vary. 57 | - Solder 4 wires on to the JST connector and wire them up to Arduino: 58 | ``` 59 | Nextion <-> Arduino 60 | 5V - RAW 61 | TX - RX 62 | RX - TX 63 | GND - GND 64 | ``` 65 | - Stick the Arduino down in the box somehwere. Hot glue is nice to attach it to the back of the Nextion screen. 66 | - Put the lid on and attach with the m3x20mm screws. 67 | - Optional: Print out the sticker in the PDF file for an extra tenth in your lap times. 68 | 69 | Construction complete. 70 | 71 | ## Instructions for software: 72 | 73 | 1. Install simhub, you need that. 74 | 2. Upload Nextion Micro Bridge sketch to arduino, its found in the simhub directory under 'Nextion Micro Bridge', If you have the LED you need to change the top part of the sketch to include LEDs, of which there are 4, and the data pin should be set to 3. Select the correct arduino type and COM port for the Arduino in the settings then upload. If you are unsure which COM port to use, look at the 'ports' section of windows device manager and see which one comes and goes as you plug and unplug it. If nothing appears, check your wiring to arduino. Nextion wiring does not affect this yet. 75 | 3. Upload Nextion template, in the Nextion files provided, double click the .tft file to open the Nextion uploader. This may take several attempts with unplugging and plugging the device in (usually twice) but eventually it should start uploading and complete. If you are having trouble - the screen should be showing some default Nextion stuff while plugged in, if not check wiring. If its lit up but failing to upload, check TX and RX wires are the right way round (they are crossed between Nextion and Arduino). Make sure Simhub isnt open when you upload, the port has to be free, close all other software or restart machine. 76 | 4. Set up Nextion within simhub, select the template file from the drop down menu and choose the one provided. It works by temporarily activating a screen when a flag appears, so setup each screen with a Conditional trigger, with the trigger being the flag. 77 | 78 | Have fun with it! --------------------------------------------------------------------------------