{"id":898,"date":"2025-07-09T13:02:43","date_gmt":"2025-07-09T13:02:43","guid":{"rendered":"https:\/\/cristianku.com\/?p=898"},"modified":"2025-07-09T19:41:01","modified_gmt":"2025-07-09T19:41:01","slug":"skywalker-roaster-controller-custom-interface-with-arduino","status":"publish","type":"post","link":"https:\/\/cristianku.com\/it\/2025\/07\/09\/skywalker-roaster-controller-custom-interface-with-arduino\/","title":{"rendered":"\ud83d\udd25 Skywalker Roaster Controller \u2013 Custom Interface with Arduino"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"898\" class=\"elementor elementor-898\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1e6ea64 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1e6ea64\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ba0fa1f\" data-id=\"ba0fa1f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-dae4295 elementor-widget elementor-widget-text-editor\" data-id=\"dae4295\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"757\" data-end=\"778\">\ud83c\udfaf Project Goal<\/h3><p>Build a <strong data-start=\"787\" data-end=\"840\">professional-looking, fully functional controller<\/strong> for the Skywalker coffee roaster that integrates seamlessly with Artisan software. The box handles temperature sensing, PID logic, and commands via USB and Bluetooth.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aa36b89 elementor-widget elementor-widget-spacer\" data-id=\"aa36b89\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-ec345f4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ec345f4\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-b5ecbf7\" data-id=\"b5ecbf7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2ad1ca4 elementor-widget elementor-widget-image\" data-id=\"2ad1ca4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"300\" height=\"258\" src=\"https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker1-300x258.jpg\" class=\"attachment-medium size-medium wp-image-903\" alt=\"\" srcset=\"https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker1-300x258.jpg 300w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker1-1024x882.jpg 1024w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker1-768x661.jpg 768w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker1-1536x1323.jpg 1536w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker1-2048x1764.jpg 2048w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker1-14x12.jpg 14w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-179db44\" data-id=\"179db44\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-55c8931 elementor-widget elementor-widget-spacer\" data-id=\"55c8931\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5191276 elementor-widget elementor-widget-text-editor\" data-id=\"5191276\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"426\" data-end=\"478\">Cos'\u00e8 il PID e a cosa serve nella tostatura del caff\u00e8?<\/h3><p data-start=\"480\" data-end=\"666\">Roasting coffee requires <strong data-start=\"505\" data-end=\"536\">precise temperature control<\/strong>. If the heat rises too fast, the beans can burn. If it&#8217;s too slow, they may stay underdeveloped.<br data-start=\"633\" data-end=\"636\" \/>That\u2019s where <strong data-start=\"649\" data-end=\"656\">PID<\/strong> comes in.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-34cd302 elementor-widget elementor-widget-spacer\" data-id=\"34cd302\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d50aca7 elementor-widget elementor-widget-text-editor\" data-id=\"d50aca7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h4 data-start=\"668\" data-end=\"704\">\ud83d\udd0d PID Explained:<\/h4><p data-start=\"91\" data-end=\"265\"><strong data-start=\"91\" data-end=\"98\">PID<\/strong> stands for <strong data-start=\"110\" data-end=\"146\">Proportional\u2013Integral\u2013Derivative<\/strong> \u2014 a smart way to control temperature.<br data-start=\"184\" data-end=\"187\" \/>It works like your foot on the gas pedal when trying to keep a car at 50 km\/h:<\/p><ul data-start=\"267\" data-end=\"397\"><li data-start=\"267\" data-end=\"308\"><p data-start=\"269\" data-end=\"308\"><strong data-start=\"269\" data-end=\"285\">Proporzionale<\/strong>: How far off you are<\/p><\/li><li data-start=\"309\" data-end=\"351\"><p data-start=\"311\" data-end=\"351\"><strong data-start=\"311\" data-end=\"323\">Integrale<\/strong>: How long you&#8217;ve been off<\/p><\/li><li data-start=\"352\" data-end=\"397\"><p data-start=\"354\" data-end=\"397\"><strong data-start=\"354\" data-end=\"368\">Derivative<\/strong>: How quickly it&#8217;s changing<\/p><\/li><\/ul><p data-start=\"399\" data-end=\"481\">The controller adjusts the heat automatically to keep the roast smooth and stable.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef32332 elementor-widget elementor-widget-spacer\" data-id=\"ef32332\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fed66e9 elementor-widget elementor-widget-text-editor\" data-id=\"fed66e9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"1416\" data-end=\"1446\">\ud83d\udd0c What is a Hardware PID?<\/h3><p data-start=\"1448\" data-end=\"1615\">In this project, the PID logic isn\u2019t just a software algorithm running on a PC.<br data-start=\"1527\" data-end=\"1530\" \/>It\u2019s built <strong data-start=\"1541\" data-end=\"1570\">directly into the Arduino<\/strong> \u2013 that\u2019s what we mean by \u201c<strong data-start=\"1597\" data-end=\"1613\">hardware PID<\/strong>.\u201d<\/p><p data-start=\"1617\" data-end=\"1628\">This means:<\/p><ul data-start=\"1629\" data-end=\"1819\"><li data-start=\"1629\" data-end=\"1693\"><p data-start=\"1631\" data-end=\"1693\">The roasting profile stays controlled even without a computer.<\/p><\/li><li data-start=\"1694\" data-end=\"1819\"><p data-start=\"1696\" data-end=\"1819\">The Arduino constantly reads the temperature, calculates how much heat is needed, and sends the right signal to the heater.<\/p><\/li><\/ul><p data-start=\"1821\" data-end=\"1907\">This is <strong data-start=\"1829\" data-end=\"1853\">much more responsive<\/strong> and reliable than trying to do it from Artisan alone.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e5b010a elementor-widget elementor-widget-spacer\" data-id=\"e5b010a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9c4f7f6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9c4f7f6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-12504f7\" data-id=\"12504f7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a2d6e31 elementor-widget elementor-widget-text-editor\" data-id=\"a2d6e31\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"1014\" data-end=\"1041\">\ud83d\udee0\ufe0f Hardware Highlights<\/h3><ul><li data-start=\"1043\" data-end=\"1071\"><p data-start=\"1045\" data-end=\"1071\"><strong data-start=\"1045\" data-end=\"1071\">Arduino-based firmware<\/strong><\/p><\/li><li data-start=\"1072\" data-end=\"1193\"><p data-start=\"1074\" data-end=\"1127\">Dual <strong data-start=\"1079\" data-end=\"1095\">PT100 probes<\/strong> with MAX31865 amplifier boards:<\/p><ul data-start=\"1130\" data-end=\"1193\"><li data-start=\"1130\" data-end=\"1159\"><p data-start=\"1132\" data-end=\"1159\"><code data-start=\"1132\" data-end=\"1140\">Bean T<\/code> \u2013 bean temperature<\/p><\/li><li data-start=\"1162\" data-end=\"1193\"><p data-start=\"1164\" data-end=\"1193\"><code data-start=\"1164\" data-end=\"1171\">ENV T<\/code> \u2013 chamber temperature<\/p><\/li><\/ul><\/li><li data-start=\"1194\" data-end=\"1230\"><p data-start=\"1196\" data-end=\"1230\">USB-C port for Artisan integration<\/p><\/li><li data-start=\"1231\" data-end=\"1273\"><p data-start=\"1233\" data-end=\"1273\">Debug port (for development\/programming)<\/p><\/li><li data-start=\"1274\" data-end=\"1310\"><p data-start=\"1276\" data-end=\"1310\">Metal case with 3D-printed handles<\/p><\/li><li data-start=\"1311\" data-end=\"1349\"><p data-start=\"1313\" data-end=\"1349\">Clearly labeled ports and interfaces<\/p><\/li><\/ul><figure class=\"nv nw nx ny nz oa of og paragraph-image\"><\/figure>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d71ba9d elementor-widget elementor-widget-image\" data-id=\"d71ba9d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"300\" height=\"272\" data-src=\"https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/coffee-300x272.jpg\" class=\"attachment-medium size-medium wp-image-904 lazyload\" alt=\"\" data-srcset=\"https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/coffee-300x272.jpg 300w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/coffee-1024x930.jpg 1024w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/coffee-768x697.jpg 768w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/coffee-1536x1395.jpg 1536w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/coffee-2048x1860.jpg 2048w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/coffee-13x12.jpg 13w\" data-sizes=\"(max-width: 300px) 100vw, 300px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 300px; --smush-placeholder-aspect-ratio: 300\/272;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c547856 elementor-widget elementor-widget-spacer\" data-id=\"c547856\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4d45e11 elementor-widget elementor-widget-text-editor\" data-id=\"4d45e11\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"1356\" data-end=\"1381\">\ud83d\udce1 Firmware Functions<\/h3><p data-start=\"1383\" data-end=\"1420\">The custom Arduino firmware includes:<\/p><ul><li>\ud83d\udd27 PID;SV;XXX.XX for setting roast temperature<\/li><li>\ud83d\udd01 Real-time PID control via PID_v2 library<\/li><li>\ud83c\udf2c\ufe0f Fan and heater PWM control<\/li><li>\ud83d\udcc9 Smoothed output (smoothedOutput) for stability<\/li><li>\ud83d\udd0c Serial over USB + Bluetooth command support<\/li><li>\ud83d\udccf Clean parsing via custom LineReader class<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7e56862 elementor-widget elementor-widget-spacer\" data-id=\"7e56862\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-573acf3 elementor-widget elementor-widget-text-editor\" data-id=\"573acf3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"835\" data-end=\"864\">\ud83d\udcd0 3D Design &amp; Assembly<\/h3><p data-start=\"865\" data-end=\"929\">The case was designed from scratch in <strong data-start=\"903\" data-end=\"917\">Fusion 360<\/strong>, including:<\/p><ul><li>Mounting holes for all components<\/li><li>Cutouts for USB, GX12, and panel-mount connectors<\/li><li>Positioning for the Arduino Uno and MAX31865 breakout boards<\/li><li>Functional hinged lid and 3D-printed handle supports<\/li><\/ul><p data-start=\"1138\" data-end=\"1177\"><em data-start=\"1138\" data-end=\"1177\">(Screenshot included from Fusion 360)<\/em><\/p><figure class=\"nv nw nx ny nz oa of og paragraph-image\"><\/figure>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a469c88 elementor-widget elementor-widget-image\" data-id=\"a469c88\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1024\" height=\"827\" data-src=\"https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/fusion_arduino-1024x827.png\" class=\"attachment-large size-large wp-image-905 lazyload\" alt=\"\" data-srcset=\"https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/fusion_arduino-1024x827.png 1024w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/fusion_arduino-300x242.png 300w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/fusion_arduino-768x621.png 768w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/fusion_arduino-1536x1241.png 1536w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/fusion_arduino-15x12.png 15w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/fusion_arduino.png 1948w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/827;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-055114a elementor-widget elementor-widget-spacer\" data-id=\"055114a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-22099dc elementor-widget elementor-widget-image\" data-id=\"22099dc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"768\" height=\"644\" data-src=\"https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker2-768x644.jpg\" class=\"attachment-medium_large size-medium_large wp-image-915 lazyload\" alt=\"\" data-srcset=\"https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker2-768x644.jpg 768w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker2-300x251.jpg 300w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker2-1024x858.jpg 1024w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker2-1536x1287.jpg 1536w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker2-2048x1716.jpg 2048w, https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/arduino_skywalker2-14x12.jpg 14w\" data-sizes=\"(max-width: 768px) 100vw, 768px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 768px; --smush-placeholder-aspect-ratio: 768\/644;\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-edd4ebb elementor-widget elementor-widget-spacer\" data-id=\"edd4ebb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1c88d6f elementor-widget elementor-widget-text-editor\" data-id=\"1c88d6f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>\ud83d\udd17 Firmware Source Code<\/h3><p>The full firmware is available on my self-hosted GitLab server:<br \/><a href=\"https:\/\/gitlab.farm.14bodhi.com\/14-bodhi\/coffee\/pid-firmware\/-\/tree\/ad5d0e5981c860be660a9fbd53fa742caa93acfc\/\" target=\"_blank\" rel=\"noopener noreferrer\">gitlab.farm.14bodhi.com \u2013 pid-firmware<br \/><\/a><strong>\ud83d\udd12 Access is private<\/strong><br \/>Please <a href=\"mailto:cris@cristianku.com?subject=Request%20Access%20to%20PID%20Firmware\">email me<\/a> if you&#8217;d like access to the repository.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>\ud83c\udfaf Project Goal Build a professional-looking, fully functional controller for the Skywalker coffee roaster that integrates seamlessly with Artisan software. The box handles temperature sensing, PID logic, and commands via USB and Bluetooth. \ud83e\udd16 What is a PID and Why It Matters in Roasting? Roasting coffee requires precise temperature control. If the heat rises too&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/cristianku.com\/it\/2025\/07\/09\/skywalker-roaster-controller-custom-interface-with-arduino\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":899,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[39],"tags":[40,42,43,41],"class_list":["post-898","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coffee","tag-arduino","tag-artisan-coffee-roasting-software","tag-c-programming-language","tag-coffee-roasting"],"jetpack_featured_media_url":"https:\/\/cristianku.com\/wp-content\/uploads\/2025\/07\/H904ae20df2ce45bfb68d3dceb4018839W.jpg_720x720q50.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cristianku.com\/it\/wp-json\/wp\/v2\/posts\/898","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cristianku.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cristianku.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cristianku.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cristianku.com\/it\/wp-json\/wp\/v2\/comments?post=898"}],"version-history":[{"count":40,"href":"https:\/\/cristianku.com\/it\/wp-json\/wp\/v2\/posts\/898\/revisions"}],"predecessor-version":[{"id":951,"href":"https:\/\/cristianku.com\/it\/wp-json\/wp\/v2\/posts\/898\/revisions\/951"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cristianku.com\/it\/wp-json\/wp\/v2\/media\/899"}],"wp:attachment":[{"href":"https:\/\/cristianku.com\/it\/wp-json\/wp\/v2\/media?parent=898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cristianku.com\/it\/wp-json\/wp\/v2\/categories?post=898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cristianku.com\/it\/wp-json\/wp\/v2\/tags?post=898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}