Fantastic project Dustin. Thanks so much for the details- I have assembled it using an Adafruit ESP32 feather and an RPi 3.5" tft display. Using your video, I was able to get it all working beautifully. This is the first time I've used the separate data upload utility, separate from the usual compile/upload operation. This is one impressive sketch! And the web configurator is beautiful. I will use some of these methods for my own sketches. I have learned a lot, and will study it further. Very much appreciated!! Don
How wonderful to hear Don! And good to hear that the ESP32 Feather and RPi display are a working combination. I'm curious what you come up with for your use case... so share if you like!
just made mine with a 4" display and a small vibrating motor for haptic feedback in place of the beep. Love this thank you for all the hard work that went into ths it's awesome. Having experience with TFT-eSPI made it to where my display and touch driver were easy to configure.
Great to hear! Love to hear comments like this. If you like. join my Discord and post some images or maybe even a small video, love to see what you did!
PlatformIO might be a wise choice for getting rid of task of collecting all the libraries and dependencies. Also you can freaze versions of core and libs, so it will be possible to compile your code even years ahead. And VS Code is way better than Arduino IDE editor.
I definitely agree that this is a great candidate for PlatformIO. I have been trying to get PlatformIO support, but for me it is still a bit of a search. I myself like VS Code a lot, but as for ease of use for a big community of inexperienced users , I think ArduinoIDE has a lower bar of entry.
I already have the screens and the ESP32 modules, I even have my own PCB that links them together... guess what I will be doing tomorrow! Thanks a lot Dustin !
@@DustinWatts I started doing this today but haven’t been able to get the sketch to compile yet, it complained about the font, I didn’t see an include for the gfx library so I added that, then added an explicit include to the font, now it’s complaining about converting it so something isn’t right with my config. I’m using the code from GitHub along with the supporting libraries you listed, with direct download from library manager for the latest libraries there. I’m probably doing something dumb, I will look at it again tomorrow.
@@TheDefpom I think I know what is happening. The TFT_eSPI library relies on the Adafruit GFX library, so maybe that is where it went wrong? Anyway, you use Discord right? Hit me up there and we can debug together :)
Quite a nice project. Some points to be improved in my opinion: If I understood correctly, one oft the 6 buttons on start screen is for starting configuration. Once you configured everything to your needs, you will not need it often anymore. But you use 1/6th of the space on homescreen for it. Woudn't it be better to connect a normal button to the ESP32 to start configuration screen (maybe at the backside of the case?), so you can call 6 menus from the homescreen? Even more important: Every menue needs one of the six possible buttons for going back to the homescreen, so only 5 buttons can be configured freely. With an extra mechanical key on the front for going home (maybee a cherry-style key with an "Escape" or a "cursor left" keycap on it?) you would win one freely configurable key. As you never have enough configurable keys anyway, I am a big fan of using normal keys for fixed functions leaving as much space on the touchscreen as possible for freely configurable keys. From the size of the touchscreen I think 3 mechanical keys left to the screen would make a nice fit. The functions I would recomment: Home (of course, as said), Mute (if telephone rings and you are not in the sound menu, you do not want to press home - sound - mute, but instantly stop the sound with one keypress and answer the call) and "Emerency" (start screensaver, lock computer, mute sound - when your wife or the childs come in while you surf on xxx-sites...) One maybe possible extension, as the ESP32 has Wifi: integrate a connection to Hue Bridge or Trafri Gateway to controll the lights. So beside sending keypress commands, you also get the option to set szenes for light with the same button. For example when using a video conferences I use extra lights (Ikea Floalt 30x30 cm²) left and right of my monitor. But of course for light I might simply add an old smartphone as seperate controllpanel.
it relies on bluetooth to connect so running wifi concurrently isn't possible or maybe is just very not advised in the current ESP32 architecture. back / esc / home would be cool, one button using short and long press
I’m gonna order the parts for this- this will be insanely useful. I wonder (but doubt it) if you can connect it to 2 computers at once? I’m a dual PC person so it would be very useful, but I imagine the Bluetooth controller could only ever handle one connection at a time. Might have to get 2!
@@DustinWatts yeah I would have to look into it. I doubt it would be possible to support 2 simultaneous connections, so then the next idea would be combining two of these into one, or just deciding which machine deserves it:) I’m also going to be a similar thing with a (character) display soon and now I’m wondering if this would be an easier way since it’s got built in wifi, although oi zero is cheap
As mentioned before: I will build this as soon as all the hardware has arrived. But I could start printing the case until then 😀 Not sure if it’s necessary but maybe you should add the information with which version of all the libraries and files you built this. If someone tries to make this in one or 2 years the then available newest libraries may not work. Or maybe provide a zip somewhere with all the needed files.
That is a good tip! I'm still trying to see which versions of all the libraries do not work (if any) an mention those. In the sketch there is however a reference to what library versions I used.
Hey Dustin, first of all, thank you a lot for this project! its one of the best constructed projects i've ever seen and your tutorial video is better than most of discovery channel's documentaries i've ever seen too, but somehow i managed to be stuck trying to solve a problem with the touch screen. i'm using a ESP32-2432S028R with a 2,8" tft screen that uses ILI9341 and everything is going fine except by the touch screen. i've tripple checked the touch_cs pin and my user_setup in the TFT_eSPI library so i thing it might be something with the screen size or orientation since the calibration touches itsefl and than jump to home screen where i can't use touch screen, but i'm also running out of ideias and hope you can help or have seen a solution for my problem since you posted the video! and again, Thank you a lot! Some more info: User setup #define TFT_MISO 12 #define TFT_MOSI 13 #define TFT_SCLK 14 #define TFT_CS 15 // Chip select control pin #define TFT_DC 2 // Data Command control pin //#define TFT_RST 4 // Reset pin (could connect to RST pin) #define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST #define TOUCH_CS 33 // Chip select pin (T_CS) of touch screen
Thank you for you fantastic compliment. I myself haven't tested the ILI9431, because I do not own one, but I now a few people who made it work. May I suggest you join my Discord server and ask there? I know someone there will know the answer. All I can tell you is to try one of the examples from the TFT_eSPI library and especially the touch example. Also you could consider a different pin on the ESP32 for the TOUCH_CS and the MISO. Most issue with touch and screen are due to wiring as the code works on a lot of devices. So I would start your search in the hardware portion until you get some could touches in the touch example and move forward.
This is so cool! Was thinking of building something similar myself 😊 how many pins are left not in use? Was thinking of perhaps extending it with some hardware buttons for macros as well. Would that work with this as a base?
The screen and touch only use 9 pins (and 3V3 and GND). So plenty of pins left. And it would work fine with this as a base. You would have to modify the code a bit, but I do not see any issues!
Hi @Dustin can you recommend any specifiv capacitive TFT? As i i think it will react much better to finger input then a resistive one (affiliat link welcome)
Absolutely, capacitve touch is much nicer. The problem I ran in to when picking a screen is that the "plug-n-play" modules from AliExpress are mostly resistive touch. That is why I'm designing my own all-in-one ESP32 with capacitive touch screen, battery management, IO-breakout and more. Called ESP32 TouchDown. I'm hoping to sell it on Tindie very soon. In the mean time, if you don't want to wait or buy, you can use an ILI9488 capacitive touch screen with FT6236 touch controller. This is already supported in the code. You would have to buy the loose screen and use and FPC connector breakout.
Fantastic project, i'm in!!! i'm trying to connect everything, but i dont have "sd card" pins under the display pcb, so i have to solder it myself? cause is written on both pcbs but there are no pins od video showing it. (sorry for the bad english but greetings from italy!) thank you!
@@riccardolachioma Well atm the SDcard is not used in FreeTouchDeck, so it is not needed to work, but I would do it anyway for structural support other wise the connection on the other side might flex to much. And also maybe for future software support.
More is a bit difficult. Because 6 is hardcoded. The size is calculated from the screen dimensions, which you can find in FreeTouchDeck.ino. More buttons is possible and if you are familiar with JSON you could try the -development branch. There are a lot more features there, but it lacks the Configurator, so everything has to be manually done in JSON and uploaded to the ESP32.
@@DustinWatts ok thank you. one last question... I'm trying to understand how you designed the board when it comes to read from the sd card on the back of the screen what pins are connected to it on your design?
Very good project. I can't get the touch to work. The connections you make with the Display and ESP32 pins are: VCC-3.3V; GND-GND; CS- GPIO15; RESET-GPIO4; DC-GPIO2; SDI(MOSI)-GPIO23; SCK-GPIO18; LED-VIN; SDO(MISO)-GPIO19; T_CS-GPIO21. I do not know if it is necessary to connect any more pin between the display and the ESP32. THANK YOU FOR ANY HELP
I don't know if it is the complete solution, but from your comment I can tell you that GPIO19 should not go to SDO/MISO, but to T_DO. You can leave SDO/MISO (on the screen) unconnected. The screen itself doesn't work well with SDO and SDO and T_DO on the display PCB aren't internally connected.
Thanks for the project, I got it built built using a ESP-32S I had laying around (long story and Ali clams involved). It lorded fine and posts a picture, but no-go on the touch. Pin for pin I'm good (though they are in different physical positions). Before diving further into troubleshooting, past verifying the screen works with a mega and J1 jumper soldered, I wanted to ask.... will this not work on anything but a DevKitC board, or would you happen to have some insight into the loss of touch function?
I don't see an immediate reason the 32S shouldn't work. I would start by making sure that T_CLK is making a good connection. You can also try different pins for T_DO (MISO in TFT_eSPI user_setup.h) and T_CS and then also update the (TFT_eSPI) User_Setup.h. You can always try and recalibrate the screen by typing "cal reset" in the serial monitor. Also you can try and upload the Test_Touch_Controller.ino and see if it responds to touches. A continued Z: 4095 means that there is something wrong with a connection.
@@DustinWatts Thank you for the response and tips/things to try. I checked the wiring with a meter (continuity only) but I'll try Ohms and see if that shows anything obvious. If not, I'll give moving pins a shot tonight and see how it goes. Perhaps before moving the pins, I'll try the serial monitor as mine never did enter a calibration test..... At power up it flashed a n image of a circle and finger, then went right to the home screen with the 6 boxes. If I get it figured out tonight, I'll post on what finally worked incase others need it.
I got it :) Kinda feel like an idiot, but..... in TFT_eSPI user_setup.h, I followed along, but perhaps too well. I verified all the pins you mentioned in the video were correct (going section by section). HOWEVER, I failed to notice I had some active that a slow review of your video showed you did not have included. After commenting these out, the calibration screen appeared immediately after re-uploading the partition data. Totally my issue, but I can verify now that this will work on a ESP-32S, if hand wired (pin placement is different). Thank you again for this project, absolutely love it and given other projects I've tried.... Very clear, accurate instructions, including the library files. Defiantly a standard setting "how too, instructional video" others would do well to imitate.
@@DustinWatts I was wondering, the speakerPin... After using it a while I decided I wanted to try it, so I had some sort of feedback on button press. So I defined it as 34 (PinD43) in the sketch and uploaded. I'm using a 2-3.5volt equivalent of a computer buzzer here (www.amazon.com/gp/product/B01FVZQ6F6/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1) but couldn't get a noise. Figured 34 would be + and I could tie it into ground. That didn't work so I reversed it (thinking my assumption was wrong) and still no go. Is there something further down in the sketch I need to do, or, if I got the wrong thing, what should I use?
@@2112user The buzzer you are using seems to be an active buzzer. Meaning that it just requires a voltage and will beep. That sketch is made for an passive buzzer, so it is generating a waveform. What you can do is modify the code to just put the speaker pin HIGH for a short time and then LOW again. Furthermore, on the ESP32 GPIO34 is an input only. So you also need to use another pin. Anything below 34 that is not used is ok.
Dear Dustin. absolutely nice work. Thumbs up and upper. I rebuild the deck. The Touchscreen shows me all buttons but no touch. Just time to time if i touch smooth wild on the screen i went to the speaker settings. The calibration will also work at the beginning. I am in the moment without any idea. Could you help me? Best regards Claus
Hi! Great video! Just having one problem that I can't find an answer to... I followed your guide (both video and instructable), but since "ESP32 Sketch Data Upload" did not work in Arduino IDE 2.3.3 which is current I installed the arduino 1.8.19. On this the "ESP32 Sketch Data Upload" existed. But when uploading is complete I get following message on board "Failed to init SPIFFS! Did you upload the data folder?" Any idea of what to do?
What does the serial monitor says when you upload the Data folder? Another thing you can do is use the web-installer. That installs everything for you. You can find it here: dustinwatts.github.io/install-freetouchdeck/ (Works on Chrome and Edge)
Solved the issue! Was misinterpeting the step in instructables... Now it is up and running! But another question. Your discord invite does not work... Is it not active any longer? :(
Excellent project, is it a possibility that we can implement it with micropython and raspberry pi Pico so we can use it via USB, Wi-Fi restriction at work :( you know sometimes. Thank you for a such great video!
Ordered and received the PCBs from PCBway. However my Hiletgo ESP-32S Developer Board [with header pins] (v1.1), which has a ESPRESSIF ESP32-WROOM-32D chip - does not fit into the rows on the PCB. Is there a particualr ESP32 board that should be used on this kit? The pins on one side fit, but appear to be a pins width off of being able to insert the other side (and I don't think bending the pins out that close to the chip is a good idea).
No I don't think that is a good idea. The PCB is made for an ESP32 DevKit C. For the ESP32-WROOM-32D that has 38-pins. The link is in the description below!
@@DustinWatts So I should acquire an ESP32 DevKitC (from Mouser). The width of the Hiletgo is 25.78 mm, the Mouser says their width is 27.9. I will try to acquire a Mouse unit and let you know.
@@KaaTheNaga The spacing between the rows on the combiner PCB is 25.4mm. Which is the width of the ones the sell on AliExpress. A 27.9mm spaced board will also fit, but you will loose 1 row of extra headers on the board PCB.
The ESP32DevKitC from Mouser fit perfectily. One of the visible differences is that the Hiletgo board there is no "legend" on the pins at the permieter of the board. They are present on the ones from Mouser. Buyer beware, know what you are getting (where you can). The Hiletgo boards work fine (including breadboard), just not in a PCB were to spacing is different. Thanks for your work on this project, hope to be working on it soon (waiting for part from AliExpress).
@@DustinWatts the idea is to control volume or light intensity with potentiometers and use some physical buttons to exchange the "back" "forward" pages of the touch screen deck. Do you think is possible to control that with physical buttons?
@@MilhafreTuga And yes again! But again, you would have to modify to code read the changes in and encode and do stuff with it. If I was still working on the current version of FreeTouchDeck I would consider doing this. But most off my effort is now going in to the V2 of FreeTouchDeck. I only do bug fixes now. However if someone does a nice addition to the current version of FreeTouchDeck, I do except pull requests.
Hi everyone, excuse me to disturb you with my Bad level in english ( i'm french), i need help for making a freetouchdeck, i have a esp32 dev module with USB c and a ili9341 but i dont no how to start After soldering and if i have to soldering like a 9844?
I'm still using my FreeTouchDeck! Very fun build! Does anyone know if its possible with the limited space, can I make a clock instead of the sleep mode?
Hi Dustin, I love this project and the video is very easy to follow. I am having one issue thought. After the sketch uploaded and the ESP32 booted the screen is just white. The calibration did not run and I can't seem to do anything with it. Any thoughts on this issue?
Nevermind, problem solved! I forgot to uncomment the driver that was defined in setup.h, so it was user the wrong driver for my display since 2 were selected. All is working now!
Hello, I'm waiting for my eps32 to arrive (covid was faster to arrive -_- ). Do you think, there's place left on the board to have a rotary encoder (for video and pictures editing in my case) ? Yes, I'm a newbies.
Is there any difference between ESP32 and 32C etc. Because I am getting so many errors everything goes OK until the final upload. errors such as TFT_CS redefined, TFT_RST redefined, jsonfile fail "general", ISO C++ forbids converting a string constant to "char" (-write-strings) jasonfilefail=homescreen. It all double dutch to me, I totally uninstalled arduino because originally I was getting multiple library errors. But after reinstalling and removing everything from registry before installing again - After that no more errors until the final upload.
Well those error should not come from using a different ESP32. Between the WROOM-32D and WROOM-32C there is not much more difference then some board revision. Double check what exact board you are using to be sure. The compile errors are likely to do with some library mishap. Also it could be some bad code. Can you open an issue here: github.com/DustinWatts/FreeTouchDeck-Helper/issues An post the whole error log, I can help you make sense and we will get it to work ;)
@@jonasz.6426 That is because the newest version of ESP32 Arduino core works different. Try downgrading until the error disappears. I would start with V2.0.0. You can always upgrade again. I have to work on a fix so no matter what version you have, it works. But I, really busy. Also In the description there is a link to my Discord. That works better then this.Because there a also other people that can help you. And this could turn out to be a long thread, kinda confusing,,,
Thanks for the amazing project! But I have one problem and I hope someone can help me out. When I upload the sketch to the ESP32 and it resets, it just turns white and doesn't start the calibration menu, I don't know if it is a soldering problem because I've followed the steps twice and used the example file for this particular screen (the one in the description with the silver border). Do any of you have an idea of what's wrong? It would help me a lot, thank you in advance!
You could open the serial monitor and see if there are any error messages (try baud 9600 and baud 115200). I don't know if you use Discord? It is a bit easier there to help you debug....
The sketch is written using BLE-Keyboard. That is because the ESP32 doesn't have a USB host. You could use a external chip that has a USB HID functionality and change the code from BLE-Keyboard to the regular keyboard library. But this is untested. If you want to test it, let me know and we can try together!
Make sure the 3v3 and ground match. Also the number of pins of the ESP32 need to match. There are more boards on that listing, make sure to pick the right one if you are going to use the combiner PCB.
@@DustinWatts Nice, i have made one now, just not the -development version :-( Its looks and works grate. Thanks for the good work. Vil there bee update to the firmware in the future.
Well not directly from the ESP32 as it does not have a native USB HID. But you could use an external USB chip with device mode. I'm experimenting now with a CH552.
Yes you can... you just have to set the size of the screen in FreeTouchDeck.ino and in the User_Setup.h of TFT_eSPI set the correct driver. You might wanna join my Discord server. Loads of people made it work, and I or someone else can guide you through the process of doing it.
is it possible to change the wifi settings without arduino IDE? Im building one for my brother and he will need to put his own Wifi settings when i send it him.
Yes you can. You could hard code it in to the sketch, but you can also use the config.json and edit the WiFi details there. In the latest version you could always change it in the configurator. Have fun building one!
@@DustinWatts Have built one, using the same components. Sketch has uploaded but the screen is just showing as white . Have I made some crazy mistake?.
@@TheTitaniumBunker Have a close look a the User_Setup.h in the TFT_eSPI library. There is probably something uncommented that should be commented out. You can copy the contents of the example User_Setup.h (called ESP32_Dev_Kit_V1_ILI9488_Resistive.h) included with FreeTouchDeck to the one that comes with the TFT_eSPI library.
@@prcvl also not with the combiner PCB. That is only for the 38-pin version. I’m working on pcb’s for other ESP32 development boards atm. But until then you’ll have to use a prototype board.
Translation of your question for other commenters: "Can it be connected to the PC directly or only by wifi?" The answer: you can use your computer to upload configuration files. Although the configurator will not work as that is a website served from the ESP32. But you can edit the JSON files manually and upload it.
No, the whole build is around an ESP32. Arduino doesn't have BLE for example. Another example is that the Arduino has 5V IOs. But the screen uses 3V3 IOs. But if you want to use an Arduino, have a look at "FreeDeck", that uses OLED screens as buttons and an Arduino Pro Micro.
Great work Dustin. I've followed along and attempted to get it going myself. All is good except the touch screen fails to initialise. I'm getting 255 for readRegister8 when it appears it should be 17 (FT62636.cpp in the first != check). I've triple checked my wiring and the major difference for me is that I'm using a raw ESP32 placed in a programming unit rather that a fixed dev board, but that shouldn't be an issue (assuming my wiring is correct). Have you come across this issue? Also I wondered why TFT_MISO is defined as 19 in the User_Setup.h yet 19 doesn't seem to be used in the wiring guide? I read Wire defaults to 22 and 21 but I don't have anything connected to 22 following the wiring guide? Any thoughts on what I've missed? Thanks again for insight on a great project
Hi Adam! What touchscreen are you using? Are you using the touchscreen module with resistive touch? The one I used in the video? With a silver border? That is an SPI screen and doesn't use the Wire library / I2C. Same goes for the Touch. That also uses SPI. If you uncomment #//#define USECAPTOUCH it starts using a capacitive touch controller, but if you leave it commented out, it will use the default touch controller that is on those modules (which is a XTP1046).
@@DustinWatts Ah yes. I am using the same. Ok thanks I shall comment the line back out thank you. The reason I uncommented it was because on the touch configuration screen it ran through each corner without me having to touch. I’ll put the comment back and try and figure out why it’s not waiting for me to touch the four corners. I’m guessing I have a bad connection maybe that the screen is taking as being a touch. Is that likely to be the interrupt pin or the TOUCH_CS? Thanks for your response!
@@samfisher00 It is possible that there is a bad connection. What you can do when it boots without touch because it skipped the calibration is type "cal reset " (or just "cal " is enough actually) to delete the calibration and do the calibration again. If there is a short, I would start looking around the TOUCH_CS pin.
@@samfisher00 Let's hope it is just 5 minutes and not a whole evening ;) If you run in to any problems, let me know. Discord might be a way to get a quick response. Also other people who have built it there, might point you in the right direction!
@@eletrixalt I bought mine on AliExpress. I usually buy them in a box with mixed colors: s.click.aliexpress.com/e/_DDz5sQf 26 AWG is well suited for most projects.
@@DustinWatts ok thanks by the way is it alright if i use these amazon links (down below) because aliexpress isnt working when trying to put my home address in Screen: www.amazon.com.au/Plroinp-3-5Inch-480X320-ILI9488-Digital/dp/B0BCQHVWR3/ref=sr_1_1?crid=2HFON85NMVT6W&keywords=ILI9488+TFT+screen+with+XPT2046+touch+controller&qid=1662809704&sprefix=ili9488+tft+screen+with+xpt2046+touch+controller+%2Caps%2C404&sr=8-1 ESP32: www.amazon.com.au/DIGISHUO-ESP-WROOM-32D-Development-Microcontroller-Integrated/dp/B09LLRRJ6B/ref=sr_1_2?crid=1CS6V81LIRCN9&keywords=ESP32-WROOM-32D+Development+Board&qid=1662810816&sprefix=esp32-wroom-32d+development+board%2Caps%2C206&sr=8-2 if they dont work can you send me links to get the esp and screen which isnt on aliexpress thanks :D
I can't say that it is impossible, but there are too many obstacles to overcome to make it worth while. IO voltage, RAM, CPU clock, no BLE, and more. So I would just use an ESP32. Or if you insist on using an Arduino, maybe have a look at FreeDeck: ua-cam.com/video/-3Zw8hbpVq4/v-deo.html Still not an Uno though...
Yes atm it is. Well unless you count uploading the whole SPIFFS as an option. All the configurator files are in JSON format, so it is possible to edit them human readable format.
@@DustinWatts BTW, sorry if this seems abrupt, but in the custom keyboard community we make keyboards using these micro controllers. There are some community developed softwares to flash them, QMK and VIA.
I don't know. Do you have a different TFT? Does it also not work in other sketches then FreeTouchDeck? For examples in examples of the TFT_eSPI library?
@@DustinWatts thanks. I have ILI9341 and edited user_setup for it, and it works well by TFT_eSPI other examples. does your logos shown affected by setRotation(0)?
@@saydiy1528 Everything should be a affected by the screen rotation. It is the way the pixels are drawn to to screen. In what corner to start and then what way to go to say it simple. But I must admit I never played with the screen rotation before. But I know some people rotated the screen and it works fine. Don't know if they did an extra step. Maybe join my Discord and ask there? Someone with a rotated setup will probably be able to tell you!
hi dustin i am running in a big issue. everything is working fine but the problem is the when i am going to the configarator it shows up like server not found. is there any solution. thanks dr.mecahnick on youtube
Did you set it up as being a STA in your network? Or as access point? Either way, try the IP address it shows on the screen instead of freetouchdeck.local. You can always join my Discord so we can do some troubleshooting together!
Hi Kombucha! What do you mean by adding more then one icon? You can have 5 menus with each 5 buttons. They each can have their own icon which you can create and upload yourself.
@@DustinWatts Thank you, I just meant if I would make a larger screen, would it be possible to add more menus because it would look kinda stupid with 6 large buttons on a huge display.
@@true3211 Well.. for now it will remain stupid looking then. In a future version I want to make different grid sizes available, but this going to take a while.
Anyways we could get an updated vid? For 3 reasons 1. The one u sell is sold out and plenty of Americans don't want to pay 20 dollars shipping 2. The written version and this are not in sync and u casually glace over a lot of tiny details that make or break it 3. The codes been re written so many times and this versions was broken, and the newest one I tried to use was still the same way because I probably missed a step
Well... the code is not broken. It works fine with the latest version. If there is any bug, please create an issue on Github. Also, steps for installing haven't changed since the first public release. There are some new features though. About shipping, the ESP32 TouchDown is an option but you can get the ESP32 and a screen from AliExpress. The shipping for an ESP32 TouchDown is more then 20 dollars, because the only service I have for shipping is the Dutch Postal service, which charges a lot to America.
@ Seung-Jin Sul Looking at the listing that seems to be the same screen as I'm using from AliExpress. The ILI9488 (screen) is the same. It doesn't mention the touch controller though. But judging what the description says, it seems to be the same. Maybe you can contact the seller and ask if the touch controller is a XPT2046. If it is, it will work!
Finally got all the parts needed and had time to work on this project. Now getting an error [ResolveLibrary(AsyncTCP.h)FreeTouchDeck:129:10: fatal error: AsyncTCP.h: No such file or directory] due to multiple libs and AsynchTCP.h not being found. Is the issue actually that more than one ArduinoJson was found or does the search path for header files need to be adjusted to a new name (I could rip out Arduino and start the project with only it, but I would rather avoid that). Error messages follow. Arduino is 1.18.3 Board is ESP32 Dev Module COM is 'COM3' Partition is 'NO OTA (2 MB APP / 2 MB SPIFFS) ESP32 Sketch Data Upload tool see device and can write to it The three libs managed by Arduino and three not managed by Arduino are installed and show in Sketch -> Include LIbrary Thanks for any help you or anyone else can provide to resolve this issue. Kaa Alternatives for AsyncTCP.h: [] ResolveLibrary(AsyncTCP.h)FreeTouchDeck:129:10: fatal error: AsyncTCP.h: No such file or directory -> candidates: [] #include //Async Webserver support header Multiple libraries were found for "ArduinoJson.h" ^~~~~~~~~~~~ Used: C:\Users\Kip\Documents\Arduino\libraries\ArduinoJson compilation terminated. Not used: C:\Users\Kip\Documents\Arduino\libraries\arduino_293580 Multiple libraries were found for "WiFi.h" Used: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\WiFi Not used: C:\Program Files (x86)\Arduino\libraries\WiFi Using library SPIFFS at version 2.0.0 in folder: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\SPIFFS Using library FS at version 2.0.0 in folder: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\FS Using library Preferences at version 2.0.0 in folder: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\Preferences Using library TFT_eSPI at version 2.4.72 in folder: C:\Users\Kip\Documents\Arduino\libraries\TFT_eSPI Using library SPI at version 2.0.0 in folder: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\SPI Using library ESP32-BLE-Keyboard-master at version 0.2.2 in folder: C:\Users\Kip\Documents\Arduino\libraries\ESP32-BLE-Keyboard-master Using library BLE at version 2.0.0 in folder: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\BLE Using library ArduinoJson at version 6.19.4 in folder: C:\Users\Kip\Documents\Arduino\libraries\ArduinoJson Using library WiFi at version 2.0.0 in folder: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\WiFi exit status 1 AsyncTCP.h: No such file or directory
@@DustinWatts It appears that I used the wrong library (ESP32AsyncTCP-master.zip), intead of AsyncTCP-master.zip. I will fix and re-try. Should I just use the 'web-installer' instead?
Twice in one weekend I'm grateful for your help!
Hardware and PCB already ordered, looking forward to this build. Thanks, G
You are welcome Garry! I'm looking forward to your build. If you have any pictures, share them with the world! :)
Fantastic project Dustin. Thanks so much for the details- I have assembled it using an Adafruit ESP32 feather and an RPi 3.5" tft display. Using your video, I was able to get it all working beautifully. This is the first time I've used the separate data upload utility, separate from the usual compile/upload operation. This is one impressive sketch! And the web configurator is beautiful. I will use some of these methods for my own sketches. I have learned a lot, and will study it further. Very much appreciated!! Don
How wonderful to hear Don! And good to hear that the ESP32 Feather and RPi display are a working combination. I'm curious what you come up with for your use case... so share if you like!
just made mine with a 4" display and a small vibrating motor for haptic feedback in place of the beep. Love this thank you for all the hard work that went into ths it's awesome. Having experience with TFT-eSPI made it to where my display and touch driver were easy to configure.
Great to hear! Love to hear comments like this. If you like. join my Discord and post some images or maybe even a small video, love to see what you did!
Ordered my pcb's, got it up and running, just have to config it now.
Very nice! I'm looking forward to your config!
PlatformIO might be a wise choice for getting rid of task of collecting all the libraries and dependencies. Also you can freaze versions of core and libs, so it will be possible to compile your code even years ahead. And VS Code is way better than Arduino IDE editor.
I definitely agree that this is a great candidate for PlatformIO. I have been trying to get PlatformIO support, but for me it is still a bit of a search. I myself like VS Code a lot, but as for ease of use for a big community of inexperienced users , I think ArduinoIDE has a lower bar of entry.
I already have the screens and the ESP32 modules, I even have my own PCB that links them together... guess what I will be doing tomorrow! Thanks a lot Dustin !
The only thing you need extra is a cup of tea :) Have fun Scott! If there is anything you need just let me know!
@@DustinWatts I started doing this today but haven’t been able to get the sketch to compile yet, it complained about the font, I didn’t see an include for the gfx library so I added that, then added an explicit include to the font, now it’s complaining about converting it so something isn’t right with my config. I’m using the code from GitHub along with the supporting libraries you listed, with direct download from library manager for the latest libraries there. I’m probably doing something dumb, I will look at it again tomorrow.
@@TheDefpom I think I know what is happening. The TFT_eSPI library relies on the Adafruit GFX library, so maybe that is where it went wrong? Anyway, you use Discord right? Hit me up there and we can debug together :)
Thank you for this and the personal help you provided. It works great. Now I have to just work on setting it up for my needs.
You are welcome @Jamok! I hope you come up with a nice setup for yourself! :)
I made it by following your video and it's a really fantastic project! Thank you for your instruction!
You are welcome! Good to hear my instructions made it easy to follow!
Could you do a tutorial on the WT32-SC01 (16MB) ESP32 Dev-kit ? You did a very good tutorial and your contribution will be invaluable.
What a great project. And well explained. Got my PCBs today and will start to build it later. Thanks!
That is great @Farzad! I hope the build goes smoothly. if not, don't hesitate to contact me!
This is exactly what I was looking for. Thank you so much!!!!
@NicleT You are so welcome! Your search is over :D
Quite a nice project.
Some points to be improved in my opinion: If I understood correctly, one oft the 6 buttons on start screen is for starting configuration. Once you configured everything to your needs, you will not need it often anymore. But you use 1/6th of the space on homescreen for it. Woudn't it be better to connect a normal button to the ESP32 to start configuration screen (maybe at the backside of the case?), so you can call 6 menus from the homescreen? Even more important: Every menue needs one of the six possible buttons for going back to the homescreen, so only 5 buttons can be configured freely. With an extra mechanical key on the front for going home (maybee a cherry-style key with an "Escape" or a "cursor left" keycap on it?) you would win one freely configurable key.
As you never have enough configurable keys anyway, I am a big fan of using normal keys for fixed functions leaving as much space on the touchscreen as possible for freely configurable keys. From the size of the touchscreen I think 3 mechanical keys left to the screen would make a nice fit. The functions I would recomment: Home (of course, as said), Mute (if telephone rings and you are not in the sound menu, you do not want to press home - sound - mute, but instantly stop the sound with one keypress and answer the call) and "Emerency" (start screensaver, lock computer, mute sound - when your wife or the childs come in while you surf on xxx-sites...)
One maybe possible extension, as the ESP32 has Wifi: integrate a connection to Hue Bridge or Trafri Gateway to controll the lights. So beside sending keypress commands, you also get the option to set szenes for light with the same button. For example when using a video conferences I use extra lights (Ikea Floalt 30x30 cm²) left and right of my monitor. But of course for light I might simply add an old smartphone as seperate controllpanel.
it relies on bluetooth to connect so running wifi concurrently isn't possible or maybe is just very not advised in the current ESP32 architecture. back / esc / home would be cool, one button using short and long press
Such a great project and really well explained in the video. Thanks so much for a great contribution to the community.
Thank you Justin for such a nice compliment! I hope you have fun with it!
Merry XMAS, dustin 🎄 🎄
I’m gonna order the parts for this- this will be insanely useful.
I wonder (but doubt it) if you can connect it to 2 computers at once? I’m a dual PC person so it would be very useful, but I imagine the Bluetooth controller could only ever handle one connection at a time. Might have to get 2!
Out of the box this is not possible. But there might be a way around this. I have not looked in to this to be honest...
@@DustinWatts yeah I would have to look into it. I doubt it would be possible to support 2 simultaneous connections, so then the next idea would be combining two of these into one, or just deciding which machine deserves it:)
I’m also going to be a similar thing with a (character) display soon and now I’m wondering if this would be an easier way since it’s got built in wifi, although oi zero is cheap
As mentioned before: I will build this as soon as all the hardware has arrived. But I could start printing the case until then 😀
Not sure if it’s necessary but maybe you should add the information with which version of all the libraries and files you built this. If someone tries to make this in one or 2 years the then available newest libraries may not work. Or maybe provide a zip somewhere with all the needed files.
That is a good tip! I'm still trying to see which versions of all the libraries do not work (if any) an mention those. In the sketch there is however a reference to what library versions I used.
@@DustinWatts It takes 2 months to get to Australia. Hopefully nothing gets changed too much by then.
I have build this kind of thing in early 2020 . Well done.
Thanks @xbox gamer!
That is an awesome project Dustin, and really well presented!
Thanks James! Appreciate that coming from you!
Merry XMAS, James! 🎄🎄
Hey Dustin, first of all, thank you a lot for this project! its one of the best constructed projects i've ever seen and your tutorial video is better than most of discovery channel's documentaries i've ever seen too, but somehow i managed to be stuck trying to solve a problem with the touch screen. i'm using a ESP32-2432S028R with a 2,8" tft screen that uses ILI9341 and everything is going fine except by the touch screen. i've tripple checked the touch_cs pin and my user_setup in the TFT_eSPI library so i thing it might be something with the screen size or orientation since the calibration touches itsefl and than jump to home screen where i can't use touch screen, but i'm also running out of ideias and hope you can help or have seen a solution for my problem since you posted the video! and again, Thank you a lot!
Some more info:
User setup
#define TFT_MISO 12
#define TFT_MOSI 13
#define TFT_SCLK 14
#define TFT_CS 15 // Chip select control pin
#define TFT_DC 2 // Data Command control pin
//#define TFT_RST 4 // Reset pin (could connect to RST pin)
#define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST
#define TOUCH_CS 33 // Chip select pin (T_CS) of touch screen
Thank you for you fantastic compliment. I myself haven't tested the ILI9431, because I do not own one, but I now a few people who made it work.
May I suggest you join my Discord server and ask there? I know someone there will know the answer. All I can tell you is to try one of the examples from the TFT_eSPI library and especially the touch example. Also you could consider a different pin on the ESP32 for the TOUCH_CS and the MISO.
Most issue with touch and screen are due to wiring as the code works on a lot of devices. So I would start your search in the hardware portion until you get some could touches in the touch example and move forward.
@@DustinWatts Nice! I'll join the server and take a better look at the examples and pins. thanks
This is so cool! Was thinking of building something similar myself 😊 how many pins are left not in use? Was thinking of perhaps extending it with some hardware buttons for macros as well. Would that work with this as a base?
The screen and touch only use 9 pins (and 3V3 and GND). So plenty of pins left. And it would work fine with this as a base. You would have to modify the code a bit, but I do not see any issues!
@@brianroyce4527 I'm excited to see how yours turns out! :)
Finally receave all the part. Work like a charm.
@Kawabxl! That is great to hear! I hope you enjoy it as much as I do!
Very detailed manual, thank you !
You are welcome Aaron!
Hi @Dustin can you recommend any specifiv capacitive TFT? As i i think it will react much better to finger input then a resistive one (affiliat link welcome)
Absolutely, capacitve touch is much nicer. The problem I ran in to when picking a screen is that the "plug-n-play" modules from AliExpress are mostly resistive touch. That is why I'm designing my own all-in-one ESP32 with capacitive touch screen, battery management, IO-breakout and more. Called ESP32 TouchDown. I'm hoping to sell it on Tindie very soon. In the mean time, if you don't want to wait or buy, you can use an ILI9488 capacitive touch screen with FT6236 touch controller. This is already supported in the code. You would have to buy the loose screen and use and FPC connector breakout.
Fantastic project, i'm in!!!
i'm trying to connect everything, but i dont have "sd card" pins under the display pcb, so i have to solder it myself? cause is written on both pcbs but there are no pins od video showing it.
(sorry for the bad english but greetings from italy!)
thank you!
Yeah the screens don't come with those for headers for some reason. They are just some standard 0.1" (2.54mm) headers.
@@DustinWatts wow! thank you for the super fast support!
so i have to solder them anyway in order to make it work, correct?
@@riccardolachioma Well atm the SDcard is not used in FreeTouchDeck, so it is not needed to work, but I would do it anyway for structural support other wise the connection on the other side might flex to much. And also maybe for future software support.
@@DustinWatts way more clear, thank you again!
hi! great jobb just build my own one 🤩 I just wonder witch file draws the buttons in case if I want more and smaller ones?
More is a bit difficult. Because 6 is hardcoded. The size is calculated from the screen dimensions, which you can find in FreeTouchDeck.ino. More buttons is possible and if you are familiar with JSON you could try the -development branch. There are a lot more features there, but it lacks the Configurator, so everything has to be manually done in JSON and uploaded to the ESP32.
@@DustinWatts ok thank you. one last question... I'm trying to understand how you designed the board when it comes to read from the sd card on the back of the screen what pins are connected to it on your design?
Very good project. I can't get the touch to work. The connections you make with the Display and ESP32 pins are: VCC-3.3V; GND-GND; CS- GPIO15; RESET-GPIO4; DC-GPIO2; SDI(MOSI)-GPIO23; SCK-GPIO18; LED-VIN; SDO(MISO)-GPIO19; T_CS-GPIO21. I do not know if it is necessary to connect any more pin between the display and the ESP32. THANK YOU FOR ANY HELP
I don't know if it is the complete solution, but from your comment I can tell you that GPIO19 should not go to SDO/MISO, but to T_DO. You can leave SDO/MISO (on the screen) unconnected. The screen itself doesn't work well with SDO and SDO and T_DO on the display PCB aren't internally connected.
great tutorial. feels like I'm watching an American 1930s Chevrolet educational commercial.
I’m gonna take that as a compliment! :)
@@DustinWatts it is the highest honor an informational video can get
Thanks for the project, I got it built built using a ESP-32S I had laying around (long story and Ali clams involved). It lorded fine and posts a picture, but no-go on the touch. Pin for pin I'm good (though they are in different physical positions). Before diving further into troubleshooting, past verifying the screen works with a mega and J1 jumper soldered, I wanted to ask.... will this not work on anything but a DevKitC board, or would you happen to have some insight into the loss of touch function?
I don't see an immediate reason the 32S shouldn't work. I would start by making sure that T_CLK is making a good connection. You can also try different pins for T_DO (MISO in TFT_eSPI user_setup.h) and T_CS and then also update the (TFT_eSPI) User_Setup.h. You can always try and recalibrate the screen by typing "cal reset" in the serial monitor. Also you can try and upload the Test_Touch_Controller.ino and see if it responds to touches. A continued Z: 4095 means that there is something wrong with a connection.
@@DustinWatts Thank you for the response and tips/things to try. I checked the wiring with a meter (continuity only) but I'll try Ohms and see if that shows anything obvious. If not, I'll give moving pins a shot tonight and see how it goes. Perhaps before moving the pins, I'll try the serial monitor as mine never did enter a calibration test..... At power up it flashed a n image of a circle and finger, then went right to the home screen with the 6 boxes. If I get it figured out tonight, I'll post on what finally worked incase others need it.
I got it :) Kinda feel like an idiot, but..... in TFT_eSPI user_setup.h, I followed along, but perhaps too well. I verified all the pins you mentioned in the video were correct (going section by section). HOWEVER, I failed to notice I had some active that a slow review of your video showed you did not have included. After commenting these out, the calibration screen appeared immediately after re-uploading the partition data. Totally my issue, but I can verify now that this will work on a ESP-32S, if hand wired (pin placement is different). Thank you again for this project, absolutely love it and given other projects I've tried.... Very clear, accurate instructions, including the library files. Defiantly a standard setting "how too, instructional video" others would do well to imitate.
@@DustinWatts I was wondering, the speakerPin... After using it a while I decided I wanted to try it, so I had some sort of feedback on button press. So I defined it as 34 (PinD43) in the sketch and uploaded. I'm using a 2-3.5volt equivalent of a computer buzzer here (www.amazon.com/gp/product/B01FVZQ6F6/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1) but couldn't get a noise. Figured 34 would be + and I could tie it into ground. That didn't work so I reversed it (thinking my assumption was wrong) and still no go. Is there something further down in the sketch I need to do, or, if I got the wrong thing, what should I use?
@@2112user The buzzer you are using seems to be an active buzzer. Meaning that it just requires a voltage and will beep. That sketch is made for an passive buzzer, so it is generating a waveform. What you can do is modify the code to just put the speaker pin HIGH for a short time and then LOW again. Furthermore, on the ESP32 GPIO34 is an input only. So you also need to use another pin. Anything below 34 that is not used is ok.
Dear Dustin. absolutely nice work. Thumbs up and upper. I rebuild the deck. The Touchscreen shows me all buttons but no touch. Just time to time if i touch smooth wild on the screen i went to the speaker settings. The calibration will also work at the beginning. I am in the moment without any idea. Could you help me? Best regards Claus
Hi! Great video!
Just having one problem that I can't find an answer to... I followed your guide (both video and instructable), but since "ESP32 Sketch Data Upload" did not work in Arduino IDE 2.3.3 which is current I installed the arduino 1.8.19. On this the "ESP32 Sketch Data Upload" existed. But when uploading is complete I get following message on board "Failed to init SPIFFS! Did you upload the data folder?"
Any idea of what to do?
What does the serial monitor says when you upload the Data folder? Another thing you can do is use the web-installer. That installs everything for you. You can find it here: dustinwatts.github.io/install-freetouchdeck/ (Works on Chrome and Edge)
Solved the issue! Was misinterpeting the step in instructables... Now it is up and running! But another question. Your discord invite does not work... Is it not active any longer? :(
@@nofearqtk1112 It is still active... and the link works for me. It should be: discord.com/invite/RE3XevS
Great guide Dustin!!!
Thanks BeardedT(h)inker! Still working on hass.io support. But have made some promising progress!
Excellent project, is it a possibility that we can implement it with micropython and raspberry pi Pico so we can use it via USB, Wi-Fi restriction at work :( you know sometimes. Thank you for a such great video!
May I suggest you check out StreamPi? I don't know about Pico support, but it might be a good start!
Ordered and received the PCBs from PCBway. However my Hiletgo ESP-32S Developer Board [with header pins] (v1.1), which has a ESPRESSIF ESP32-WROOM-32D chip - does not fit into the rows on the PCB. Is there a particualr ESP32 board that should be used on this kit?
The pins on one side fit, but appear to be a pins width off of being able to insert the other side (and I don't think bending the pins out that close to the chip is a good idea).
No I don't think that is a good idea. The PCB is made for an ESP32 DevKit C. For the ESP32-WROOM-32D that has 38-pins. The link is in the description below!
@@DustinWatts So I should acquire an ESP32 DevKitC (from Mouser). The width of the Hiletgo is 25.78 mm, the Mouser says their width is 27.9. I will try to acquire a Mouse unit and let you know.
@@KaaTheNaga The spacing between the rows on the combiner PCB is 25.4mm. Which is the width of the ones the sell on AliExpress. A 27.9mm spaced board will also fit, but you will loose 1 row of extra headers on the board PCB.
The ESP32DevKitC from Mouser fit perfectily. One of the visible differences is that the Hiletgo board
there is no "legend" on the pins at the permieter
of the board. They are present on the ones from
Mouser. Buyer beware, know what you are getting
(where you can). The Hiletgo boards work fine
(including breadboard), just not in a PCB were
to spacing is different.
Thanks for your work on this project, hope to
be working on it soon (waiting for part from
AliExpress).
Hey Dustin, great project. It is possible to add extra physical buttons or potentiometers?
Hi @MilhafreTuga Absolutely! Only not with the configurator. But by changing some code is absolutely is!
@@DustinWatts the idea is to control volume or light intensity with potentiometers and use some physical buttons to exchange the "back" "forward" pages of the touch screen deck. Do you think is possible to control that with physical buttons?
@@MilhafreTuga And yes again! But again, you would have to modify to code read the changes in and encode and do stuff with it. If I was still working on the current version of FreeTouchDeck I would consider doing this. But most off my effort is now going in to the V2 of FreeTouchDeck. I only do bug fixes now. However if someone does a nice addition to the current version of FreeTouchDeck, I do except pull requests.
Hi everyone, excuse me to disturb you with my Bad level in english ( i'm french), i need help for making a freetouchdeck, i have a esp32 dev module with USB c and a ili9341 but i dont no how to start After soldering and if i have to soldering like a 9844?
I'm still using my FreeTouchDeck! Very fun build! Does anyone know if its possible with the limited space, can I make a clock instead of the sleep mode?
You mean instead of going to sleep it displays a clock? Yeah should be possible without to much extra coding.
@@DustinWatts I think that would be a nice touch for my computer desk!
@@RobertCole1981 I'll add it to my idea list :)
Hi Dustin, I love this project and the video is very easy to follow. I am having one issue thought. After the sketch uploaded and the ESP32 booted the screen is just white. The calibration did not run and I can't seem to do anything with it. Any thoughts on this issue?
Nevermind, problem solved! I forgot to uncomment the driver that was defined in setup.h, so it was user the wrong driver for my display since 2 were selected. All is working now!
Luckily you found it! :) Great to hear it is working for you!
Hello, I'm waiting for my eps32 to arrive (covid was faster to arrive -_- ).
Do you think, there's place left on the board to have a rotary encoder (for video and pictures editing in my case) ? Yes, I'm a newbies.
Hi Kawabxl! Sure.. you can use all the GPIO's that are not used by the screen.
Is there any difference between ESP32 and 32C etc. Because I am getting so many errors everything goes OK until the final upload. errors such as TFT_CS redefined, TFT_RST redefined, jsonfile fail "general", ISO C++ forbids converting a string constant to "char" (-write-strings) jasonfilefail=homescreen. It all double dutch to me, I totally uninstalled arduino because originally I was getting multiple library errors. But after reinstalling and removing everything from registry before installing again - After that no more errors until the final upload.
Well those error should not come from using a different ESP32. Between the WROOM-32D and WROOM-32C there is not much more difference then some board revision. Double check what exact board you are using to be sure.
The compile errors are likely to do with some library mishap. Also it could be some bad code. Can you open an issue here: github.com/DustinWatts/FreeTouchDeck-Helper/issues An post the whole error log, I can help you make sense and we will get it to work ;)
Brilliant project - excellent video too! Thanks
Thanks John! Appreciate the nice comments!
I have a Node MCU ESP8266 Wi-Fi Module. Will it suffice? or do I have to buy an ESP32?
No... the ESP8266 does not have BLE....
how about a new tutorial with a bigger screen and more buttons?
Great Proyect !!!!!! a little question: can i use the 2.8" screen? (this have the ILI9341controller)
Yes. You will have to change some config settings though...
if i upload the sketch it shows the message: exit status 1
'class TFT_eSPI' has no member named 'setTouch' what can i do to fix it?
This error comes from not having TOUCH_CS defined in UserSetp.h from the TFT_eSPI library.
@@DustinWatts Thx now that works but it says: exit status 1
'ledcSetup' was not declared in this scope
@@jonasz.6426 That is because the newest version of ESP32 Arduino core works different. Try downgrading until the error disappears. I would start with V2.0.0. You can always upgrade again. I have to work on a fix so no matter what version you have, it works. But I, really busy. Also In the description there is a link to my Discord. That works better then this.Because there a also other people that can help you. And this could turn out to be a long thread, kinda confusing,,,
@@DustinWatts oh ok i will try this thx.
yay 12:00 how to setup/configure :)
Thanks for the amazing project! But I have one problem and I hope someone can help me out. When I upload the sketch to the ESP32 and it resets, it just turns white and doesn't start the calibration menu, I don't know if it is a soldering problem because I've followed the steps twice and used the example file for this particular screen (the one in the description with the silver border). Do any of you have an idea of what's wrong? It would help me a lot, thank you in advance!
You could open the serial monitor and see if there are any error messages (try baud 9600 and baud 115200). I don't know if you use Discord? It is a bit easier there to help you debug....
@@DustinWatts thank you! I will check it out when I get home from work, and of course I can log on discord, sorry that I forgot it was an option haha
Does it HAVE to use Bluetooth to connect? I prefer wired connections whenever possible
The sketch is written using BLE-Keyboard. That is because the ESP32 doesn't have a USB host. You could use a external chip that has a USB HID functionality and change the code from BLE-Keyboard to the regular keyboard library. But this is untested. If you want to test it, let me know and we can try together!
Is the board on Aliexpress still the right one? The 3.3V and ground do not match the images.
Make sure the 3v3 and ground match. Also the number of pins of the ESP32 need to match. There are more boards on that listing, make sure to pick the right one if you are going to use the combiner PCB.
@@DustinWatts I don’t see a correct one on the link you provide anymore. Pins don’t seem to match
@@matth4577 Look under "Color": "Color: ESP32-WROOM-32D" that is the correct one. I have in front of me right now ;)
Great video.. :) Any boards for sale? TFT combiner?
Well... I do not sell them myself, but the gerbers are available on Github. Or you can buy them of PCBWay via the link in the description....
Hi iam making one, and have but the pcb. Is ther any way to upload more "icons" to it??
Yes you van upload your own icons using the configurator. If you use the -development version, you can have a custom grid size as well...
@@DustinWatts Nice, i have made one now, just not the -development version :-( Its looks and works grate. Thanks for the good work. Vil there bee update to the firmware in the future.
Do you still have the PCB scheme project? It would be convenient, I don't know how to draw it
You can download the combiner board directly from PCBWay: www.pcbway.com/project/shareproject/ESP32_TFT_Combiner_V1.html
@@DustinWatts thanks mate
@@davideborgonovo9877 You are most welcome! :)
It it posible to make á bigger one
I would love to make it but have just moved to Linux Mint, so will it work with Linux Please?
If Mint supports wireless BLE keyboards I think it will. BLE support is the most important feature your PC has to have...
Can I make the same build but be connected via USB instead of bluetooth?
Well not directly from the ESP32 as it does not have a native USB HID. But you could use an external USB chip with device mode. I'm experimenting now with a CH552.
Can i do this with a ili9431 because i tried everything but idk it dont work
Yes you can... you just have to set the size of the screen in FreeTouchDeck.ino and in the User_Setup.h of TFT_eSPI set the correct driver. You might wanna join my Discord server. Loads of people made it work, and I or someone else can guide you through the process of doing it.
Can it handle a three key shortcut (e.g. Teams Mute / Unmute the use CTRL + SHIFT + M) ?
Yes absolutely!
@@DustinWatts great, waitin for the PCB to be audited and shipped to me. Thank you so much for the design.
@@hairpin86 Have fun! Looking forward to the result of your build!
Can you plug the usb into your computer or do you have to use bluetooth?
Unfortunately the ESP32 does not have an USB HID built in. So BLE is the only option without the use of an extra module.
is it possible to change the wifi settings without arduino IDE? Im building one for my brother and he will need to put his own Wifi settings when i send it him.
Yes you can. You could hard code it in to the sketch, but you can also use the config.json and edit the WiFi details there. In the latest version you could always change it in the configurator. Have fun building one!
@@DustinWatts Have built one, using the same components. Sketch has uploaded but the screen is just showing as white . Have I made some crazy mistake?.
@@TheTitaniumBunker Have a close look a the User_Setup.h in the TFT_eSPI library. There is probably something uncommented that should be commented out. You can copy the contents of the example User_Setup.h (called ESP32_Dev_Kit_V1_ILI9488_Resistive.h) included with FreeTouchDeck to the one that comes with the TFT_eSPI library.
@@DustinWatts Spot on! i forgot to comment out a line - works like a Charm!!!!
Can I use my 36 pin esp 32? I have 2 of them lying around so it'd be a waste if i couldn't youse one
Yes you can. Only not with the ESP + TFT combiner PCB!
@@DustinWatts and a 30pin one?
@@prcvl also not with the combiner PCB. That is only for the 38-pin version. I’m working on pcb’s for other ESP32 development boards atm. But until then you’ll have to use a prototype board.
@@DustinWatts ah ok thanks
Pretty nice pcb you made. Do you have the same for an esp32 wifi board too?
I only have a board for the ESP32 WROOM modules on AliExpress. But if you have a link to the board you mean, I can check if the pinout matches...
Se puede conectar al pc directamente o solo por wifi
Translation of your question for other commenters: "Can it be connected to the PC directly or only by wifi?" The answer: you can use your computer to upload configuration files. Although the configurator will not work as that is a website served from the ESP32. But you can edit the JSON files manually and upload it.
Does this work with an Arduino Nano ? If I delete the wifi configuration functionality ? :)
No, the whole build is around an ESP32. Arduino doesn't have BLE for example. Another example is that the Arduino has 5V IOs. But the screen uses 3V3 IOs. But if you want to use an Arduino, have a look at "FreeDeck", that uses OLED screens as buttons and an Arduino Pro Micro.
Hi Dustin i'm having issues getting my Touch deck to connect to the wifi. I keep getting an error
That is annoying but we can probably fix it! Can you join my Discord server in the description? That will make debugging a lot easier!
Great work Dustin. I've followed along and attempted to get it going myself. All is good except the touch screen fails to initialise. I'm getting 255 for readRegister8 when it appears it should be 17 (FT62636.cpp in the first != check). I've triple checked my wiring and the major difference for me is that I'm using a raw ESP32 placed in a programming unit rather that a fixed dev board, but that shouldn't be an issue (assuming my wiring is correct). Have you come across this issue? Also I wondered why TFT_MISO is defined as 19 in the User_Setup.h yet 19 doesn't seem to be used in the wiring guide? I read Wire defaults to 22 and 21 but I don't have anything connected to 22 following the wiring guide? Any thoughts on what I've missed? Thanks again for insight on a great project
Hi Adam! What touchscreen are you using? Are you using the touchscreen module with resistive touch? The one I used in the video? With a silver border? That is an SPI screen and doesn't use the Wire library / I2C. Same goes for the Touch. That also uses SPI. If you uncomment #//#define USECAPTOUCH it starts using a capacitive touch controller, but if you leave it commented out, it will use the default touch controller that is on those modules (which is a XTP1046).
@@DustinWatts Ah yes. I am using the same. Ok thanks I shall comment the line back out thank you. The reason I uncommented it was because on the touch configuration screen it ran through each corner without me having to touch. I’ll put the comment back and try and figure out why it’s not waiting for me to touch the four corners. I’m guessing I have a bad connection maybe that the screen is taking as being a touch. Is that likely to be the interrupt pin or the TOUCH_CS? Thanks for your response!
@@samfisher00 It is possible that there is a bad connection. What you can do when it boots without touch because it skipped the calibration is type "cal reset " (or just "cal " is enough actually) to delete the calibration and do the calibration again. If there is a short, I would start looking around the TOUCH_CS pin.
@@DustinWatts Thanks Dustin. That’s my evening planned 😀
@@samfisher00 Let's hope it is just 5 minutes and not a whole evening ;) If you run in to any problems, let me know. Discord might be a way to get a quick response. Also other people who have built it there, might point you in the right direction!
how do i get the wires pls help me
The ere is a wiring diagram in the series. Or do you mean where to buy them? :)
@@DustinWatts where to buy them
btw thanks for the quick response :D
@@eletrixalt I bought mine on AliExpress. I usually buy them in a box with mixed colors: s.click.aliexpress.com/e/_DDz5sQf
26 AWG is well suited for most projects.
@@DustinWatts ok thanks by the way is it alright if i use these amazon links (down below) because aliexpress isnt working when trying to put my home address in
Screen:
www.amazon.com.au/Plroinp-3-5Inch-480X320-ILI9488-Digital/dp/B0BCQHVWR3/ref=sr_1_1?crid=2HFON85NMVT6W&keywords=ILI9488+TFT+screen+with+XPT2046+touch+controller&qid=1662809704&sprefix=ili9488+tft+screen+with+xpt2046+touch+controller+%2Caps%2C404&sr=8-1
ESP32:
www.amazon.com.au/DIGISHUO-ESP-WROOM-32D-Development-Microcontroller-Integrated/dp/B09LLRRJ6B/ref=sr_1_2?crid=1CS6V81LIRCN9&keywords=ESP32-WROOM-32D+Development+Board&qid=1662810816&sprefix=esp32-wroom-32d+development+board%2Caps%2C206&sr=8-2
if they dont work can you send me links to get the esp and screen which isnt on aliexpress
thanks :D
him: "big cup of coffee" me: thats the smallest cup of coffee if ever seen
I had to scale down the footage a lot...
@@DustinWatts 😂
where or who sells the case? i dont have a printer
Hi Join my Discord and ask around. Depending on where you are someone will probably print one for you!
So for this project the computer must have bluetooth?
Yes, it only works with BLE (Bluetooth Low Energy).
Can i get this to work with an Arduino uno? Or is that impossible?
I can't say that it is impossible, but there are too many obstacles to overcome to make it worth while. IO voltage, RAM, CPU clock, no BLE, and more. So I would just use an ESP32. Or if you insist on using an Arduino, maybe have a look at FreeDeck: ua-cam.com/video/-3Zw8hbpVq4/v-deo.html Still not an Uno though...
@@DustinWatts ok thanks ;)
Do you know when the retailers will have stock of this product again? (ESP32 TouchDown) - thank`s :-)
Whenever I make more :) I have asked for a quote from the manufacturer today, so I hope soon. But count on a month or so...
@@DustinWatts Thank`s Dustin
is wifi the only way to access the configurator files?
Yes atm it is. Well unless you count uploading the whole SPIFFS as an option. All the configurator files are in JSON format, so it is possible to edit them human readable format.
Does the Esp32 Sketch Data Upload work on version 2.3.3?
I don't sure. It It hasn't been updated for a while, but why not try it :D
3D printer died last month. Getting another one and building this (probably after CNY).
I'm sorry to hear that. But new 3D printer: yay! :)
@@DustinWatts BTW, sorry if this seems abrupt, but in the custom keyboard community we make keyboards using these micro controllers. There are some community developed softwares to flash them, QMK and VIA.
is there a build of this for pico?
No, but you can check out: ua-cam.com/video/OpIwI28cHpk/v-deo.html which is basically a marco keypad with a RaspberryPI Pico.
just subbed, awesome
Well thank you very much!
good job. my TFT shown the wrong orientation in both: setRotation(0) and setRotation(1), why so?
I don't know. Do you have a different TFT? Does it also not work in other sketches then FreeTouchDeck? For examples in examples of the TFT_eSPI library?
@@DustinWatts thanks. I have ILI9341 and edited user_setup for it, and it works well by TFT_eSPI other examples. does your logos shown affected by setRotation(0)?
@@saydiy1528 It does, but it is written for the ILI9488. So odd behaviour might occur on other screens,
@@saydiy1528 Everything should be a affected by the screen rotation. It is the way the pixels are drawn to to screen. In what corner to start and then what way to go to say it simple. But I must admit I never played with the screen rotation before. But I know some people rotated the screen and it works fine. Don't know if they did an extra step. Maybe join my Discord and ask there? Someone with a rotated setup will probably be able to tell you!
@@DustinWatts Thanks. I'll join there.
only work with 3.5'' lcd or with bigger screens too?
The software is written for this particular screen. I haven't had the time to try bigger screens...
hi dustin
i am running in a big issue.
everything is working fine but the problem is the when i am going to the configarator it shows up like server not found.
is there any solution.
thanks dr.mecahnick on youtube
Did you set it up as being a STA in your network? Or as access point? Either way, try the IP address it shows on the screen instead of freetouchdeck.local. You can always join my Discord so we can do some troubleshooting together!
Ok
I did it by webinstaller
I'm confused, how do you power this?
The ESP32 has a micro USB port. So you can just plug in the USB cable. Or as some people did, modify the setup so it can run of a battery.
10 out 10 bro
Thanks StePhan!
Can add to become virtual keyboard?
Depends on what you mean by virtual keyboard :)
Is it possible to add more than one icon?
Hi Kombucha! What do you mean by adding more then one icon? You can have 5 menus with each 5 buttons. They each can have their own icon which you can create and upload yourself.
@@DustinWatts Thank you, I just meant if I would make a larger screen, would it be possible to add more menus because it would look kinda stupid with 6 large buttons on a huge display.
@@true3211 Well.. for now it will remain stupid looking then. In a future version I want to make different grid sizes available, but this going to take a while.
@@DustinWatts Amazing work by the way, this shouldn't come off as offensive.
I want to convert it for Arduino Leonardo but can not do that :(
Is anyone can do that and guide me for icons and actions code
This project is written for an ESP32 and it is not possible to re-write this for any Arduino. They are totally different.
@@DustinWatts thanks a lot for your reply. I have "NodeMCU V3 ESP8266 ESP-12E" in my hand. Is it compatible for this project?
Thanks a lot
@@irfanbagci84 Unfortunately the ESP8266 does not have BLE which is required for this project. So again, ESP32 it is ;)
Anyways we could get an updated vid? For 3 reasons
1. The one u sell is sold out and plenty of Americans don't want to pay 20 dollars shipping
2. The written version and this are not in sync and u casually glace over a lot of tiny details that make or break it
3. The codes been re written so many times and this versions was broken, and the newest one I tried to use was still the same way because I probably missed a step
Well... the code is not broken. It works fine with the latest version. If there is any bug, please create an issue on Github. Also, steps for installing haven't changed since the first public release. There are some new features though. About shipping, the ESP32 TouchDown is an option but you can get the ESP32 and a screen from AliExpress. The shipping for an ESP32 TouchDown is more then 20 dollars, because the only service I have for shipping is the Dutch Postal service, which charges a lot to America.
Whooza, it will work. My fault. I forgot to delete one "/" un the user file. 🤣
Ah... the "forgot to uncomment" bug :) Glad you found it!
nice video
Thanks! I love your avatar... I actually tried to wipe my screen! :D
pity it's not a clone, with buzzer and voltage divider
What do you mean by not a clone with a voltage divider?
Thank you for your great tutorial! Can I use a Fafeicy's screen from Amazon? ASIN: B08CN6M9VC Thanks!
@ Seung-Jin Sul Looking at the listing that seems to be the same screen as I'm using from AliExpress. The ILI9488 (screen) is the same. It doesn't mention the touch controller though. But judging what the description says, it seems to be the same. Maybe you can contact the seller and ask if the touch controller is a XPT2046. If it is, it will work!
@@DustinWatts Will check with the seller! Thank you so much!
just use a used smartphone and a shortcut app.
I still have a blank Discord. What is the Username#0000 to put in for #esp32-touchdown (Dustin Watts) Thanks.
Finally got all the parts needed and had time to work on this project. Now getting an error
[ResolveLibrary(AsyncTCP.h)FreeTouchDeck:129:10: fatal error: AsyncTCP.h: No such file or directory]
due to multiple libs and AsynchTCP.h not being found. Is the issue actually that more than one ArduinoJson
was found or does the search path for header files need to be adjusted to a new name (I could rip out Arduino
and start the project with only it, but I would rather avoid that). Error messages follow.
Arduino is 1.18.3
Board is ESP32 Dev Module
COM is 'COM3'
Partition is 'NO OTA (2 MB APP / 2 MB SPIFFS)
ESP32 Sketch Data Upload tool see device and can write to it
The three libs managed by Arduino and three not managed by Arduino are installed and
show in Sketch -> Include LIbrary
Thanks for any help you or anyone else can provide to resolve this issue.
Kaa
Alternatives for AsyncTCP.h: []
ResolveLibrary(AsyncTCP.h)FreeTouchDeck:129:10: fatal error: AsyncTCP.h: No such file or directory
-> candidates: []
#include //Async Webserver support header
Multiple libraries were found for "ArduinoJson.h"
^~~~~~~~~~~~
Used: C:\Users\Kip\Documents\Arduino\libraries\ArduinoJson
compilation terminated.
Not used: C:\Users\Kip\Documents\Arduino\libraries\arduino_293580
Multiple libraries were found for "WiFi.h"
Used: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\WiFi
Not used: C:\Program Files (x86)\Arduino\libraries\WiFi
Using library SPIFFS at version 2.0.0 in folder: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\SPIFFS
Using library FS at version 2.0.0 in folder: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\FS
Using library Preferences at version 2.0.0 in folder: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\Preferences
Using library TFT_eSPI at version 2.4.72 in folder: C:\Users\Kip\Documents\Arduino\libraries\TFT_eSPI
Using library SPI at version 2.0.0 in folder: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\SPI
Using library ESP32-BLE-Keyboard-master at version 0.2.2 in folder: C:\Users\Kip\Documents\Arduino\libraries\ESP32-BLE-Keyboard-master
Using library BLE at version 2.0.0 in folder: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\BLE
Using library ArduinoJson at version 6.19.4 in folder: C:\Users\Kip\Documents\Arduino\libraries\ArduinoJson
Using library WiFi at version 2.0.0 in folder: C:\Users\Kip\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\WiFi
exit status 1
AsyncTCP.h: No such file or directory
The AsyncTCP library is also one that need to be installed manually: github.com/DustinWatts/FreeTouchDeck#--library-dependencies--
@@DustinWatts It appears that I used the wrong library (ESP32AsyncTCP-master.zip), intead of AsyncTCP-master.zip. I will fix and re-try. Should I just use the 'web-installer' instead?
@@KaaTheNaga That is the easiest way. That has all the correct libraries.