{"id":5386,"date":"2026-06-28T08:00:50","date_gmt":"2026-06-28T15:00:50","guid":{"rendered":"https:\/\/www.cloudacm.com\/?p=5386"},"modified":"2026-06-26T22:16:54","modified_gmt":"2026-06-27T05:16:54","slug":"the-cyd-careful-who-you-invite-for-dinner","status":"publish","type":"post","link":"https:\/\/www.cloudacm.com\/?p=5386","title":{"rendered":"The CYD &#8211; (C)areful who (Y)ou invite for (D)inner"},"content":{"rendered":"<p>This post will cover the ESP32 based CYD, commonly know as the Cheap Yellow Display. The earlier post wireless network health scanner code will be repurposed here, (<a href=\"https:\/\/www.cloudacm.com\/?p=5130\">https:\/\/www.cloudacm.com\/?p=5130<\/a>).<\/p>\n<p>The hardware platform here is the ESP32-2432S028. It is an ESP32 based development board with an integrated 240 x 320 2.8 TFT display and microSD slot. The board typically ships with a stylus, USB C cable, and 4 pin jumper cable to serial connections.<\/p>\n<p><a href=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/ESP32-2432S028-USB-C.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5389\" src=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/ESP32-2432S028-USB-C.jpg\" alt=\"\" width=\"1024\" height=\"548\" srcset=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/ESP32-2432S028-USB-C.jpg 1024w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/ESP32-2432S028-USB-C-300x161.jpg 300w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/ESP32-2432S028-USB-C-768x411.jpg 768w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/ESP32-2432S028-USB-C-505x270.jpg 505w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>The code at the bottom of this post will be provided that makes use of the display and memory card for data storage, which was built using the Arduino IDE. The changes made to the repurposed code is the use of the SPI, FS, and SD libraries which was used in earlier ESP32-Cam posts. In addition, the LovyanGFX library will be used to drive the display. The firmware makes use of macros to help with the readability of the code.<\/p>\n<pre>const char* FileName = \"\/DataLogFile.txt\";\r\n#define LogData(FileContent) appendFile(SD, FileName, FileContent)\r\n...\r\nLogData(\"This is data written to the micro SD media\");\r\n<\/pre>\n<p>Added to the code is a function that queries the public internet address if the internet access is successful. The MQTT subscription has been expanded to initiate that query on demand. There is an additional subscription to realtime epoch timestamp data that can be stored on the microSD log file.<\/p>\n<p>The LovyanGFX library (<a href=\"https:\/\/github.com\/lovyan03\/LovyanGFX\">https:\/\/github.com\/lovyan03\/LovyanGFX<\/a>) is extensive and this demo is extremely simplistic with the intent to gain inroads into its functionality. There is mention online about limitations with the CYD supporting the display, touch control, and SD card module together, see (<a href=\"https:\/\/github.com\/AndroidCrypto\/ESP32_CYD_Display_with_Touch_and_SD_Card\">https:\/\/github.com\/AndroidCrypto\/ESP32_CYD_Display_with_Touch_and_SD_Card<\/a>). For the sake of ease, touch functions will not be used in this demo.<\/p>\n<p>These sources were referenced in the development of this demo:<br \/>\n<a href=\"https:\/\/github.com\/lovyan03\/LovyanGFX\">https:\/\/github.com\/lovyan03\/LovyanGFX<\/a><br \/>\n<a href=\"https:\/\/github.com\/AndroidCrypto\/ESP32_CYD_Display_with_Touch_and_SD_Card\">https:\/\/github.com\/AndroidCrypto\/ESP32_CYD_Display_with_Touch_and_SD_Card<\/a><br \/>\n<a href=\"https:\/\/github.com\/dazzor\/photoframe\/blob\/main\/CYDusingLovyanGFX\">https:\/\/github.com\/dazzor\/photoframe\/blob\/main\/CYDusingLovyanGFX<\/a><br \/>\n<a href=\"https:\/\/medium.com\/@androidcrypto\/how-to-use-touch-and-sd-card-at-the-same-time-on-an-esp32-cheap-yellow-display-cyd-45fa55d01ffe\">https:\/\/medium.com\/@androidcrypto\/how-to-use-touch-and-sd-card-at-the-same-time-on-an-esp32-cheap-yellow-display-cyd-45fa55d01ffe<\/a><br \/>\n<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cyd-display-touchscreen-microsd-card\/\">https:\/\/randomnerdtutorials.com\/esp32-cyd-display-touchscreen-microsd-card\/<\/a><\/p>\n<p>The hardware is enclosed in a 3D printed case provided by KRO Labs, (<a href=\"https:\/\/www.etsy.com\/shop\/KROLabs\">https:\/\/www.etsy.com\/shop\/KROLabs<\/a>).<\/p>\n<p><a href=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/CYD-Demo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5393\" src=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/CYD-Demo.png\" alt=\"\" width=\"360\" height=\"640\" srcset=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/CYD-Demo.png 360w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/CYD-Demo-169x300.png 169w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/CYD-Demo-152x270.png 152w\" sizes=\"auto, (max-width: 360px) 100vw, 360px\" \/><\/a><\/p>\n<p>The CYD firmware was compiled on Arduino IDE ver 1.8.19<br \/>\nBoard: ESP32 Dev Module<\/p>\n<p><a href=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/Arduino-IDE-board-settings-for-CYD.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5394\" src=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/Arduino-IDE-board-settings-for-CYD.png\" alt=\"\" width=\"506\" height=\"667\" srcset=\"https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/Arduino-IDE-board-settings-for-CYD.png 506w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/Arduino-IDE-board-settings-for-CYD-228x300.png 228w, https:\/\/www.cloudacm.com\/wp-content\/uploads\/2026\/06\/Arduino-IDE-board-settings-for-CYD-205x270.png 205w\" sizes=\"auto, (max-width: 506px) 100vw, 506px\" \/><\/a><\/p>\n<p>Library used in this code:<br \/>\nWiFi at version 3.3.8 from Espressif<br \/>\nNetwork at version 3.3.8 from Espressif<br \/>\nPubSubClient at version 2.8 from <a href=\"https:\/\/github.com\/knolleary\/pubsubclient\">https:\/\/github.com\/knolleary\/pubsubclient<\/a><br \/>\nESPping at version 1.0.5 from <a href=\"https:\/\/github.com\/dvarrel\/ESPping\">https:\/\/github.com\/dvarrel\/ESPping<\/a><br \/>\nHTTPClient at version 3.3.8 from Espressif<br \/>\nNetworkClientSecure at version 3.3.8 from Espressif<br \/>\nLovyanGFX at version 1.2.21 from <a href=\"https:\/\/github.com\/lovyan03\/LovyanGFX\">https:\/\/github.com\/lovyan03\/LovyanGFX<\/a><br \/>\nSPI at version 3.3.8 from Espressif<br \/>\nFS at version 3.3.8 from Espressif<br \/>\nSD at version 3.3.8 from Espressif<\/p>\n<p>Sketch uses 1247519 bytes (39%) of program storage space. Maximum is 3145728 bytes.<br \/>\nGlobal variables use 52004 bytes (15%) of dynamic memory, leaving 275676 bytes for local variables. Maximum is 327680 bytes.<\/p>\n<p>Code is available here, <a href=\"https:\/\/github.com\/cloudacm\/ESP32-CYD-LovyanGFX-microSD\">https:\/\/github.com\/cloudacm\/ESP32-CYD-LovyanGFX-microSD<\/a><\/p>\n<p>This post was inspired by many developers of the CYD platform, too many to recall or name here. To give some scale of what the CYD can do this video demonstrates video on the CYD.<\/p>\n<p><iframe loading=\"lazy\" title=\"Turn the Cheap Yellow ESP32 Board into a Video Player\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/jYcxUgxz9ks?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post will cover the ESP32 based CYD, commonly know as the Cheap Yellow Display. The earlier post wireless network health scanner code will be repurposed here, (https:\/\/www.cloudacm.com\/?p=5130). The hardware platform here is the ESP32-2432S028. It is an ESP32 based development board with an integrated 240 x 320 2.8 TFT display and microSD slot. The board typically ships with a stylus, USB C cable, and 4 pin jumper cable to serial connections. The code at the bottom of this post&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.cloudacm.com\/?p=5386\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5386","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=\/wp\/v2\/posts\/5386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5386"}],"version-history":[{"count":13,"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=\/wp\/v2\/posts\/5386\/revisions"}],"predecessor-version":[{"id":5404,"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=\/wp\/v2\/posts\/5386\/revisions\/5404"}],"wp:attachment":[{"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cloudacm.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}