{"id":15760627,"url":"https://github.com/flrs/vpn_remote_control_gadget","last_synced_at":"2025-04-21T04:31:29.835Z","repository":{"id":53699968,"uuid":"316810844","full_name":"flrs/vpn_remote_control_gadget","owner":"flrs","description":"Gadget to remote control VPN settings on ASUS RT-AC68U router using the LilyGo TTGO T5 V2.3 ESP32 e-paper board","archived":false,"fork":false,"pushed_at":"2021-08-18T19:49:15.000Z","size":26569,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-26T18:45:40.169Z","etag":null,"topics":["arduino","arduino-sketch","asus","epaper","esp32","esp32-arduino","gadget","iot-device","privacy","rt-ac68u","ttgo","ttgo-t5s-epaper","vpn"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flrs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-11-28T19:52:39.000Z","updated_at":"2023-03-18T23:05:26.000Z","dependencies_parsed_at":"2022-09-23T04:55:06.623Z","dependency_job_id":null,"html_url":"https://github.com/flrs/vpn_remote_control_gadget","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flrs%2Fvpn_remote_control_gadget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flrs%2Fvpn_remote_control_gadget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flrs%2Fvpn_remote_control_gadget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flrs%2Fvpn_remote_control_gadget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flrs","download_url":"https://codeload.github.com/flrs/vpn_remote_control_gadget/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223849432,"owners_count":17213640,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","arduino-sketch","asus","epaper","esp32","esp32-arduino","gadget","iot-device","privacy","rt-ac68u","ttgo","ttgo-t5s-epaper","vpn"],"created_at":"2024-10-04T10:59:19.410Z","updated_at":"2024-11-09T16:03:04.905Z","avatar_url":"https://github.com/flrs.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VPN Remote Control Gadget\n\n\u003e Make it easy to be more private on the internet and remote control the VPN settings on your ASUS RT-AC68U router.\n\n![VPN Remote Control Gadget Case](./docs/final_assembly_top.jpg)![VPN Remote Control Gadget Without Case](./docs/board.jpg)\n\nThis project creates a remote control from the Arduino-programmed LilyGo TTGO T5 V2.3 ESP32 e-paper microcontroller \nboard and a custom-designed 3D-printed case.\n\n## Getting Started\n\nHere is what you will need to build this project yourself:\n- ASUS RT-AC68U router, configured to use a VPN of your choice\n- LilyGo TTGO T5 V2.3 board\n- USB charger and/or small LiPo battery (look for model number 301525)\n\n### Programming the TTGO T5\n\nYou can find the Arduino sketch in the [vpn_remote_control_gadget](./arduino/vpn_remote_control_gadget) directory. \n\n1. Copy this directory into your Arduino sketch directory.\n2. Follow the instructions in the \n   [LilyGo repository](https://github.com/Xinyuan-LilyGO/LilyGo-T5-ink-series/tree/acffc2fce8a6d504aa812ce1f9745281bd57a4bc)\n   to install Arduino libraries for the TTGO T5 V2.3 board.\n3. Install the following Arduino libraries via the Arduino library manager:\n   - [ArduinoHttpClient](https://github.com/arduino-libraries/ArduinoHttpClient/tree/7f36561e0bced5458516066ae09636e119cae0ed)\n   - [rBASE64](https://github.com/boseji/rBASE64/tree/a127f41eea31d2de7abc91cff4b2d1f4521625ec)\n   - [ArduinoJson](https://arduinojson.org/)\n   - [StringSplitter](https://github.com/aharshac/StringSplitter/tree/faef239fcea57055ba7bddc35d4a6c47bc05a9b4)\n4. Modify the credentials in file [credentials_template.h](./arduino/vpn_remote_control_gadget/credentials_template.h) \n   and rename the file to `credentials.h`.\n5. Upload the sketch to the board!\n\n### Printing the Case\n\nSend the file [vpn_control_gadget_assembly_manuf.obj](./cad/manufacturing/vpn_remote_control_gadget_assembly_manuf.obj)\nto a 3D printing place of your choice. The case is designed so it can be printed through SLS with PA 12 material and a\nrough finish. A [vpn_control_gadget_assembly_manuf.stl](./cad/manufacturing/vpn_remote_control_gadget_assembly_manuf.stl)\nfile is also available, should your printing place not like `.obj` files.\n\n## Using the Gadget\n\nTo select a new VPN server or disconnect from the VPN, turn the TTGO T5 on using the slider on top of the case. Then,\nselect a VPN with the button next to the slider. Once the checkmark appears in the bottom right of the screen, the\nrequest to change the VPN has been sent to the router. Now, you can turn off the gadget with the slider again. This \nhelps to save battery. \n\nThanks to the e-paper display your choice will remain visible even when the device powers off.\n\n## Code Overview\n\nThe code on the Arduino talks to the ASUS router via POST requests. This is just like how the browser communicates with\nthe ASUS configuration page when you are logged into the router configuration in your browser.\n\nThe code was only tested with RT-AC68U firmware version 3.0.0.4.385_20633. If you use a different firmware, this code\nmay not longer work without adjustments.\n\nAll icons in the UI except for the arrow have been downloaded from [flaticon.com](https://www.flaticon.com) and \nconverted to an Arduino-readable file format via the [LCD Image Converter](https://lcd-image-converter.riuson.com).\n\n## CAD Overview\n\n(see also on [Thingiverse](https://www.thingiverse.com/thing:4668495))\n\n![360 degree view of CAD assembly](./docs/360.gif)\n\nIf you want to modify the case, you can find all CAD design files in the [cad/design](./cad/design) directory. You can\nopen and edit the files in [FreeCAD](https://www.freecadweb.org/). The files were created in FreeCAD version 0.19-22492.\n\n### Mechanical Features\n\n**Lid:** The case has a sliding lid on the back through which the microcontroller board can be inserted and removed. \nThe lid is held in place by a pin. The pin unlocks when the lid is bent outward.\n\n**Buttons:** The case has interfaces to 2 of TTGO T5's buttons. The lid features a cover for the button that is \nconnected to channel IO39. The cover is connected to the case by a living hinge, avoiding any additional assembly. \nThe case also provides an interface for the board's on/off slider. The slider is a removable part of the assembly, \nbut stays in place thanks to a groove in the case's body once the board is assembled.\n\n### Assembly Notes\n\nWith the case, the TTGO T5 can be either used with a USB connection alone, or with a small LiPo battery. There is space \nfor a 80 mAh battery in the case (search for model number 301525).\n\nThere are 6 cylindrical support pins that help the assembly stay in placing during printing. After printing, you need \nto remove these 6 pins to separate the model into its 3 parts. If printed with PA 12, these pins should be easy to cut \nwith scissors, a knife, or simply bending until they break. To make sure all components slide and fit neatly, you should\n grind down any leftovers of the pins.\n\nOnce all components are separated, push the on/off slider component onto the on/off switch, insert the board into to \ncase, and slide the lid shut.\n\nOptionally, the case can be mounted on surfaces by means of double-sided tape.\n\n## Potential Design Improvements\n\nThe design presented here is functional. However, based on feedback from the very first 3d print of the gadget \n(see make on [Thingiverse](https://www.thingiverse.com/make:906624)), there are a couple of improvements future makers\nmay want to take on:\n\n![VPN Remote Control Gadget bottom, open cover, with annotations](./docs/final_assembly_bottom_open_with_annotations.jpg)\n\n- **Tolerances of part are too large.** During design, I was extra cautious to implement a +0.5 mm tolerance in all directions. \nThis creates gaps that are too large, resulting in the PCB in the case sliding around and the slider originally not working. Filling material \ngets the job of fixing the PCB done and makes the slider workable (see red ellipses). Before printing, I \nwould advise makers to add about 0.4 mm to the inner walls to restrict lateral movement of the PCB. Also consider that \nthis may bring the e-paper screen further off-center, potentially hiding part of the screen.\n\n- **Pushbutton casing component not properly dimensioned.** The gap between the lower side of the case's pushbutton \ncomponent is too far from the top of the actual pushbutton. This results in the user having to press the push button \nin the casing with a lot of force for the actual pushbutton to be actuated. I would advise adding about 0.5 mm to \nthe inner-facing part of the push button component in the casing before printing (see orange arrow).\n\n- **USB interface slot slightly misaligned.** The USB interface slot should be positioned a little bit more (about\n 0.5 mm) to the left, looking from the bottom of the case, as in the picture above. While the current position works\n for connecting a USB charger, it is slightly off-center.\n\n- **Case cover too thin.** The sliding case cover, while functional, is subjectively too thin. It bends, making it \nhard for the pin that goes into the groove for closing the cover to stay in place. For future iterations, I \nwould advise to deepen the groove for closing and to make the pin bigger. I would also advise to increase the \nthickness of the cover. Alternatively, I would add structural elements to the underside of the cover to improve its stiffness.\n\n\n## Contributing\n\nFor questions or feedback, please file an issue here on GitHub. Feel free to open pull requests for any changes you \nthink the project could benefit from.\n\n## Credits\n\nCode:\n - Used LilyGO [starter sketch](https://github.com/Xinyuan-LilyGO/LilyGo-T5-ink-series/blob/acffc2fce8a6d504aa812ce1f9745281bd57a4bc/LilyGo_T5_V2.3/LilyGo_T5_V2.3.ino) as a basis for communicating with e-paper display\n - WiFi Error icon, WiFi icon, VPN, and tick icon made by [Freepik](https://www.flaticon.com/authors/freepik) from [www.flaticon.com](https://www.flaticon.com/)\n - Hourglass icon made by [Kiranshastry](https://www.flaticon.com/free-icon/hourglass_709705?term=hourglass\u0026page=1\u0026position=18\u0026related_item_id=709705) from [www.flaticon.com](https://www.flaticon.com/)\n\nCAD:\n - The eye illustration on the back of the lid is part of Samuel Jessurun de Mesquita's print \n   \"Zelfportret van alleen de ogen\" (public domain, see [here](http://hdl.handle.net/10934/RM0001.COLLECT.209046)).\n\n## License\n\nThis project is published under the [MIT License](./LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflrs%2Fvpn_remote_control_gadget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflrs%2Fvpn_remote_control_gadget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflrs%2Fvpn_remote_control_gadget/lists"}