{"id":15056,"date":"2022-01-21T21:58:57","date_gmt":"2022-01-21T14:58:57","guid":{"rendered":"https:\/\/www.makeriot2020.com\/?p=15056"},"modified":"2022-01-21T21:59:01","modified_gmt":"2022-01-21T14:59:01","slug":"port-extender-card-for-the-mcu-8266-12e","status":"publish","type":"post","link":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/","title":{"rendered":"Port Extender Card for the MCU-8266-12E"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142319-1024x768.jpg\" alt=\"\" class=\"wp-image-15078 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142319-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142319-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142319-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142319-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142319-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142319-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption>Port Extender Card for the <a href=\"http:\/\/144.126.248.244\/index.php\/2021\/08\/16\/design-and-build-an-esp8266-based-iot-controller-part-1\/\" target=\"_blank\" rel=\"noreferrer noopener\">MCU-8266-12E IoT Controller<\/a><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Introduction<\/strong><br><br>After quite a few experiments, and playing with a lot of <a rel=\"noreferrer noopener\" href=\"http:\/\/144.126.248.244\/index.php\/2021\/09\/02\/taking-the-next-step-with-the-iot-controller\/\" target=\"_blank\">ideas<\/a>, we have finally produced and tested an almost final prototype for the MCU-8266-12E IoT Controller Port Extender Card. While the baseboard already has quite a lot of free GPIO pins for additional sensors and devices, It did however have quite a few issues, namely a lack of sufficient Power outputs, difficulty access to the I2C bus, as well as only 2 relay outputs. Granted that you do have access to unused pins on the PCF8574 Port Extender, We nonetheless decided that an add-on card would definitely make sense to allow this device to really be more useable.<br><br>While looking at various ideas for this card, the most flexible seemed to be the <a rel=\"noreferrer noopener\" href=\"https:\/\/esphome.io\/cookbook\/arduino_port_extender.html\" target=\"_blank\">APE Protocol device<\/a> as documented in ESPHome. They used a standard Arduino board for that, but we decided that, after testing it with an Arduino Nano, since it seems to work well, let us just design a dedicated PCB. It also looks much better as well \ud83d\ude42 <\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-2 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2021\/09\/20210902_212911-1024x768.jpg\" alt=\"\" data-id=\"13680\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2021\/09\/20210902_212911-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/index.php\/2021\/09\/02\/taking-the-next-step-with-the-iot-controller\/20210902_212911\/\" class=\"wp-image-13680 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/09\/20210902_212911-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/09\/20210902_212911-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/09\/20210902_212911-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/09\/20210902_212911-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/09\/20210902_212911-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/09\/20210902_212911-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142438-1024x768.jpg\" alt=\"\" data-id=\"15086\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142438-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15086\" class=\"wp-image-15086 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142438-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142438-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142438-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142438-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142438-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142438-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><\/figure><\/li><\/ul><figcaption class=\"blocks-gallery-caption\">The beginning of the APE (Arduino Port Extender) Device. MCU-8266-12E with Arduino Nano (left) and MCU-8266-12E with the newly designed APE Card (right)<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Some Features (Aside from being a fully functional Arduino clone as well)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1). Dedicated LDO Regulators for 5v and 3.3v (800mA each), with jumpers to switch them on or off (receive power only from the IoT Motherboard).<br>2.) Dedicated Logic Level Converter on the I2C Bus ( This is sort of very much needed \ud83d\ude42 The Atmega 328P-AU is running at 5v on this device, to enable it to run at 16Mhz.. and the ESP8266 on the Motherboard is a 3.3v device..<br><br>There are also 3x 3.3V I2C Headers, complete with 3.3v and Ground, as well as a single 5v I2C header<br>3). 8 Analog Inputs ( While practically you can only use 6 of these if you use I2C )<br>4). Voltage Divider provided on A0 to measure VIN ( to be safe, we calculated the resistors for 22v)<br>5). 100R current limiting resistor on A1 and A2, to measure 5v and 3.3v as well&#8230;<br>Analog inputs A0, A1 and A2 can be switched back to normal operation by changing the jumper at J2,J3 or J4 from On to Off.<br>6). 12 Digital Inputs\/Outputs (14 if you use D0 and D1 as well), as well as a Jumper to remove the LED on D13.<br>7). Full access to the PCF8574 and ESP8266 Pins from the motherboard below.<br><br><strong>Pictures of the PCB<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-3 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_141946-1-1024x768.jpg\" alt=\"\" data-id=\"15087\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_141946-1-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15087\" class=\"wp-image-15087 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141946-1-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141946-1-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141946-1-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141946-1-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141946-1-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141946-1-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">Side by side MCU-8266-12E (left) 8266-12E-Port Extender (right)<br><\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_141957-1024x768.jpg\" alt=\"\" data-id=\"15088\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_141957-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15088\" class=\"wp-image-15088 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141957-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141957-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141957-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141957-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141957-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141957-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">Side by side MCU-8266-12E (left) 8266-12E-Port Extender (right)<br><\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142020-1024x768.jpg\" alt=\"\" data-id=\"15089\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142020-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15089\" class=\"wp-image-15089 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142020-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142020-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142020-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142020-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142020-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142020-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">Side by side MCU-8266-12E (left) 8266-12E-Port Extender (right)<br>[ with unpopulated PCB at bottom]<br><\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142109-1024x768.jpg\" alt=\"\" data-id=\"15090\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142109-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15090\" class=\"wp-image-15090 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142109-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142109-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142109-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142109-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142109-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142109-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">Blank PCB 8266-12E-Port Extender<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142214-1024x768.jpg\" alt=\"\" data-id=\"15092\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142214-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15092\" class=\"wp-image-15092 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142214-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142214-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142214-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142214-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142214-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142214-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">Blank PCB MCU-8266-12E IoT Controller<br><\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142309-1024x768.jpg\" alt=\"\" data-id=\"15093\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142309-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15093\" class=\"wp-image-15093 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142309-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142309-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142309-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142309-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142309-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142309-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">Top view 8266-12E PE<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142319-1-1024x768.jpg\" alt=\"\" data-id=\"15094\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142319-1-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15094\" class=\"wp-image-15094 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142319-1-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142319-1-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142319-1-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142319-1-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142319-1-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142319-1-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">8266-12E-PE side view { from bottom)<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142337-1024x768.jpg\" alt=\"\" data-id=\"15095\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142337-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15095\" class=\"wp-image-15095 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142337-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142337-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142337-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142337-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142337-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142337-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">Right side view &#8211; 8266-12E-PE<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142349-1024x768.jpg\" alt=\"\" data-id=\"15096\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142349-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15096\" class=\"wp-image-15096 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142349-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142349-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142349-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142349-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142349-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142349-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">Left side view &#8211; 8266-12E-PE<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142438-1-1024x768.jpg\" alt=\"\" data-id=\"15097\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142438-1-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15097\" class=\"wp-image-15097 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142438-1-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142438-1-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142438-1-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142438-1-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142438-1-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142438-1-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">Stacked on-top-of MCU-8266-12E<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142448-1024x768.jpg\" alt=\"\" data-id=\"15098\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142448-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15098\" class=\"wp-image-15098 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142448-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142448-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142448-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142448-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142448-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142448-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">Stacked &#8211; Top Side view<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142500-1024x768.jpg\" alt=\"\" data-id=\"15099\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142500-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15099\" class=\"wp-image-15099 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142500-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142500-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142500-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142500-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142500-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142500-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">Stacked &#8211; Right side view<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"768\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142514-1024x768.jpg\" alt=\"\" data-id=\"15100\" data-full-url=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/20220121_142514-scaled.jpg\" data-link=\"http:\/\/144.126.248.244\/?attachment_id=15100\" class=\"wp-image-15100 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142514-1024x768.jpg 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142514-scaled-600x450.jpg 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142514-300x225.jpg 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142514-768x576.jpg 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142514-1536x1152.jpg 1536w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_142514-2048x1536.jpg 2048w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/768;\" \/><figcaption class=\"blocks-gallery-item__caption\">Stacked &#8211; Left side view<\/figcaption><\/figure><\/li><\/ul><figcaption class=\"blocks-gallery-caption\">Pictures of the PCB, alone and with the MCU-8266-12E IoT controller<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Circuit Diagram<\/strong><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"724\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/Atmega328-MCU-1024x724.png\" alt=\"\" class=\"wp-image-15102 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/Atmega328-MCU-1024x724.png 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/Atmega328-MCU-600x424.png 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/Atmega328-MCU-300x212.png 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/Atmega328-MCU-768x543.png 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/Atmega328-MCU.png 1169w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/724;\" \/><figcaption>ATMega328P-AU Circuit diagram with LDO Regulators, headers and supporting circuitry.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"725\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2022\/01\/Analog-Meassurement-and-Expansion-Ports-1024x725.png\" alt=\"\" class=\"wp-image-15103 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/Analog-Meassurement-and-Expansion-Ports-1024x725.png 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/Analog-Meassurement-and-Expansion-Ports-600x425.png 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/Analog-Meassurement-and-Expansion-Ports-300x212.png 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/Analog-Meassurement-and-Expansion-Ports-768x544.png 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/Analog-Meassurement-and-Expansion-Ports.png 1169w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/725;\" \/><figcaption>Analog measuring circuitry, level converters and supporting circuitry and headers<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Uploading Code to the ATMega328P<\/strong><br><br>Uploading code to the device requires the use of either an ISCP programmer ( Arduino as ISP works well ) or in the case of a pre-boot loaded chip, a USB-to-Serial converter. We did not find it necessary to add a dedicated USB-to-Serial converter onto the PCB. It is quite easy enough to do any flashing with the tools mentioned above.<br><br><br>Make sure that the PCB is not stacked when doing this. ( This will prevent excessive current use of other components when you supply 5v to the PE card.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Procedure to upload using ICSP<br><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">During assembly, you are required to solder a single 90-degree bend pin header on the bottom side of the PCB, in the same hole as the board side edge of the RESET push-button. This will serve as the RESET Pin for the ISCP. Other connections are as follows:<br><br>H2 Header   &lt;- > ICSP Programmer<br>MOSI  (E11~)   &#8211;  MOSI ( or Pin 11 on Arduino as ISP )<br>MISO  (E12 )    &#8211;  MISO ( or Pin 12 on Arduino as ISP )<br>SCK    (E13)     &#8211;  D13    (or Pin 13 on Arduino as ISP )<br>RESET              &#8211;  D10    (or Pin 10 on Arduino as ISP )<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">5v and Ground from Arduino as ISP or ISCP Programmer to any 5v and ground pin on the PE Card<br><br>Please note the description above for assembly of the RESET pin header<br><br><br><br>Procedure to upload using USB-to-Serial converter<br><br>H1 Header<br><br>E0\/Rx &lt;- to Tx of USB-to-Serial converter<br>E1\/Tx -> to Rx of USB-to-Serial converter<br><br>H2 Header<br><br>DTR &lt;-> to DTR of USB-to-Serial converter [ This connection is needed for successful uploading. Don&#8217;t leave it out ]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>5v and Ground from the USB-to-Serial converter to any 5v and ground pin on the PE Card<br><br><br><strong>Testing with ESPHome APE protocol and the MCU-8266-12E IoT controller<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The following Arduino Sketch needs to be uploaded to the device.<br>It will allow the device to function as a custom I2C device. Feel free to change the I2C address in the sketch as you choose, but remember to use the same address in your ESPHome YAML configuration file<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\nPorts:\n  0 0 .. 13 13\n  A0: 14, A1: 15, A2: 16, A3: 17: A4: 18: A5: 19: A6: 20, A7: 21\n  port bits: 5 ... 0..32\n  0:   0: 00000\n  1:   1: 00001\n  A7: 21: 10101\n*\/\n\n#include &lt;Arduino.h>\n#include &lt;Wire.h>\n\n\/\/#define DEBUG \/\/ remove debug so pin 0 and 1 can be used for IO\n\n#define I2C_ADDRESS 8\n\nvoid onRequest();\nvoid onReceive(int);\n\nvoid setup()\n{\n#ifdef DEBUG\n  Serial.begin(115200);\n  Serial.println(F(\"Init \"));\n#endif\n\n  analogReference(INTERNAL);\n\n  Wire.begin(I2C_ADDRESS);\n  Wire.onRequest(onRequest);\n  Wire.onReceive(onReceive);\n\n#ifdef DEBUG\n  Serial.println(F(\"Wire ok\"));\n#endif\n}\n\nvoid loop()\n{\n  \/\/int temp = analogRead(A1);\n  \/\/Serial.println(temp);\n}\n\nvolatile byte buffer&#91;3];\nvolatile byte len = 1;\n\n#define DIGITAL_READ(b, pin, mask) \\\n  if (digitalRead(pin))            \\\n    buffer&#91;b] |= mask;\n\nvoid readDigital()\n{\n  len = 3;\n  buffer&#91;0] = 0;\n  DIGITAL_READ(0, 0, 1);\n  DIGITAL_READ(0, 1, 2);\n  DIGITAL_READ(0, 2, 4);\n  DIGITAL_READ(0, 3, 8);\n  DIGITAL_READ(0, 4, 16);\n  DIGITAL_READ(0, 5, 32);\n  DIGITAL_READ(0, 6, 64);\n  DIGITAL_READ(0, 7, 128);\n\n  buffer&#91;1] = 0;\n  DIGITAL_READ(1, 8, 1);\n  DIGITAL_READ(1, 9, 2);\n  DIGITAL_READ(1, 10, 4);\n  DIGITAL_READ(1, 11, 8);\n  DIGITAL_READ(1, 12, 16);\n  DIGITAL_READ(1, 13, 32);\n  DIGITAL_READ(1, A0, 64);\n  DIGITAL_READ(1, A1, 128);\n\n  buffer&#91;2] = 0;\n  DIGITAL_READ(2, A2, 1);\n  DIGITAL_READ(2, A3, 2);\n\n\/\/ I2C\n\/\/DIGITAL_READ(2, A4, 4);\n\/\/DIGITAL_READ(2, A5, 8);\n\n\/\/ DIGITAL READ not supports on A3 .. A7\n#ifdef DEBUG_READ\n  Serial.print(F(\"Read 3 bytes: \"));\n  Serial.print(buffer&#91;0]);\n  Serial.print(' ');\n  Serial.print(buffer&#91;1]);\n  Serial.print(' ');\n  Serial.println(buffer&#91;2]);\n\n#endif\n}\nvoid readAnalog(int pin)\n{\n  int val = analogRead(A0 + pin);\n  len = 2;\n  buffer&#91;0] = val &amp; 0xFF;\n  buffer&#91;1] = (val >> 8) &amp; 0b11;\n#ifdef DEBUG_READ\n  Serial.print(F(\"Read analog pin \"));\n  Serial.println(pin);\n#endif\n}\n\nvoid onRequest()\n{\n  Wire.write(const_cast&lt;uint8_t *>(buffer), len);\n}\n\n#define CMD_DIGITAL_READ 0x0\n\n#define CMD_WRITE_ANALOG 0x2\n#define CMD_WRITE_DIGITAL_HIGH 0x3\n#define CMD_WRITE_DIGITAL_LOW 0x4\n\n#define CMD_SETUP_PIN_OUTPUT 0x5\n#define CMD_SETUP_PIN_INPUT_PULLUP 0x6\n#define CMD_SETUP_PIN_INPUT 0x7\n\n\/\/ 8 analog registers.. A0 to A7\n\/\/ A4 and A5 not supported due to I2C\n#define CMD_ANALOG_READ_A0 0b1000 \/\/ 0x8\n\/\/ ....\n#define CMD_ANALOG_READ_A7 0b1111 \/\/ 0xF\n\n#define CMD_SETUP_ANALOG_INTERNAL 0x10\n#define CMD_SETUP_ANALOG_DEFAULT 0x11\n\nvoid onReceive(int numBytes)\n{\n#ifdef DEBUG_READ\n  Serial.print(\"Received bytes: \");\n  Serial.println(numBytes);\n#endif\n  int cmd = Wire.read();\n\n  switch (cmd)\n  {\n  case CMD_DIGITAL_READ:\n    readDigital();\n    break;\n  }\n\n  if (cmd >= CMD_ANALOG_READ_A0 &amp;&amp; cmd &lt;= CMD_ANALOG_READ_A7)\n  {\n    readAnalog(cmd &amp; 0b111);\n    return;\n  }\n\n  int pin = Wire.read();\n\n  switch (cmd)\n  {\n  case CMD_WRITE_DIGITAL_HIGH:\n  case CMD_WRITE_DIGITAL_LOW:\n  {\n    bool output = cmd == CMD_WRITE_DIGITAL_HIGH;\n    digitalWrite(pin, output);\n#ifdef DEBUG\n    Serial.print(F(\"Pin \"));\n    Serial.print(pin);\n    Serial.println(output ? F(\" HIGH\") : F(\" LOW\"));\n#endif\n    break;\n  }\n  case CMD_WRITE_ANALOG:\n  {\n    int val = Wire.read() &amp; (Wire.read() &lt;&lt; 8);\n    analogWrite(pin, val);\n#ifdef DEBUG\n    Serial.print(F(\"Pin \"));\n    Serial.print(pin);\n    Serial.print(F(\" Analog write \"));\n    Serial.println(val);\n#endif\n    break;\n  }\n  case CMD_SETUP_PIN_OUTPUT:\n    pinMode(pin, OUTPUT);\n#ifdef DEBUG\n    Serial.print(F(\"Pin \"));\n    Serial.print(pin);\n    Serial.println(F(\" OUTPUT\"));\n#endif\n    break;\n  case CMD_SETUP_PIN_INPUT:\n    pinMode(pin, INPUT);\n#ifdef DEBUG\n    Serial.print(F(\"Pin \"));\n    Serial.print(pin);\n    Serial.println(F(\"INPUT\"));\n#endif\n    break;\n  case CMD_SETUP_PIN_INPUT_PULLUP:\n    pinMode(pin, INPUT_PULLUP);\n#ifdef DEBUG\n    Serial.print(F(\"Pin \"));\n    Serial.print(pin);\n    Serial.println(F(\"INPUT PULLUP\"));\n#endif\n    break;\n  case CMD_SETUP_ANALOG_INTERNAL:\n    analogReference(INTERNAL);\n#ifdef DEBUG\n    Serial.println(F(\"Analog reference INTERNAL\"));\n#endif\n    break;\n  case CMD_SETUP_ANALOG_DEFAULT:\n    analogReference(DEFAULT);\n#ifdef DEBUG\n    Serial.println(F(\"Analog reference DEFAULT\"));\n#endif\n    break;\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The following C header file needs to be uploaded to your Home Assistant ESPHome folder.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Must disable logging if using logging in main.cpp or in other custom components for the\n\/\/  __c causes a section type conflict with __c thingy\n\/\/ you can enable logging and use it if you enable this in logger:\n\/*\nlogger:\n  level: DEBUG\n  esp8266_store_log_strings_in_flash: False\n  *\/\n\n\/\/#define APE_LOGGING\n\n\/\/ take advantage of LOG_ defines to decide which code to include\n#ifdef LOG_BINARY_OUTPUT\n#define APE_BINARY_OUTPUT\n#endif\n#ifdef LOG_BINARY_SENSOR\n#define APE_BINARY_SENSOR\n#endif\n#ifdef LOG_SENSOR\n#define APE_SENSOR\n#endif\n\nstatic const char *TAGape = \"ape\";\n\n#define APE_CMD_DIGITAL_READ 0\n#define APE_CMD_WRITE_ANALOG 2\n#define APE_CMD_WRITE_DIGITAL_HIGH 3\n#define APE_CMD_WRITE_DIGITAL_LOW 4\n#define APE_CMD_SETUP_PIN_OUTPUT 5\n#define APE_CMD_SETUP_PIN_INPUT_PULLUP 6\n#define APE_CMD_SETUP_PIN_INPUT 7\n\/\/ 8 analog registers.. A0 to A7\n\/\/ A4 and A5 not supported due to I2C\n#define CMD_ANALOG_READ_A0 0b1000 \/\/ 0x8\n\/\/ ....\n#define CMD_ANALOG_READ_A7 0b1111 \/\/ 0xF\n\n#define CMD_SETUP_ANALOG_INTERNAL 0x10\n#define CMD_SETUP_ANALOG_DEFAULT 0x11\n\n#define get_ape(constructor) static_cast&lt;ArduinoPortExpander *>(constructor.get_component(0))\n\n#define ape_binary_output(ape, pin) get_ape(ape)->get_binary_output(pin)\n#define ape_binary_sensor(ape, pin) get_ape(ape)->get_binary_sensor(pin)\n#define ape_analog_input(ape, pin) get_ape(ape)->get_analog_input(pin)\n\nclass ArduinoPortExpander;\n\nusing namespace esphome;\n\n#ifdef APE_BINARY_OUTPUT\nclass ApeBinaryOutput : public output::BinaryOutput\n{\npublic:\n  ApeBinaryOutput(ArduinoPortExpander *parent, uint8_t pin)\n  {\n    this->parent_ = parent;\n    this->pin_ = pin;\n  }\n  void write_state(bool state) override;\n  uint8_t get_pin() { return this->pin_; }\n\nprotected:\n  ArduinoPortExpander *parent_;\n  uint8_t pin_;\n  \/\/ Pins are setup as output after the state is written, Arduino has no open drain outputs, after setting an output it will either sink or source thus activating outputs writen to false during a flick.\n  bool setup_{true};\n  bool state_{false};\n\n  friend class ArduinoPortExpander;\n};\n#endif\n\n#ifdef APE_BINARY_SENSOR\nclass ApeBinarySensor : public binary_sensor::BinarySensor\n{\npublic:\n  ApeBinarySensor(ArduinoPortExpander *parent, uint8_t pin)\n  {\n    this->pin_ = pin;\n  }\n  uint8_t get_pin() { return this->pin_; }\n\nprotected:\n  uint8_t pin_;\n};\n#endif\n\n#ifdef APE_SENSOR\nclass ApeAnalogInput : public sensor::Sensor\n{\npublic:\n  ApeAnalogInput(ArduinoPortExpander *parent, uint8_t pin)\n  {\n    this->pin_ = pin;\n  }\n  uint8_t get_pin() { return this->pin_; }\n\nprotected:\n  uint8_t pin_;\n};\n#endif\n\nclass ArduinoPortExpander : public Component, public I2CDevice\n{\npublic:\n  ArduinoPortExpander(I2CBus *bus, uint8_t address, bool vref_default = false)\n  {\n    set_i2c_address(address);\n    set_i2c_bus(bus);\n    this->vref_default_ = vref_default;\n  }\n  void setup() override\n  {\n#ifdef APE_LOGGING\n    ESP_LOGCONFIG(TAGape, \"Setting up ArduinoPortExpander at %#02x ...\", address_);\n#endif\n\n    \/* We cannot setup as usual as arduino boots later than esp8266\n            Poll i2c bus for our Arduino for a n seconds instead of failing fast,\n            also this is important as pin setup (INPUT_PULLUP, OUTPUT it's done once)\n        *\/\n    this->configure_timeout_ = millis() + 5000;\n  }\n  void loop() override\n  {\n    if (millis() &lt; this->configure_timeout_)\n    {\n      bool try_configure = millis() % 100 > 50;\n      if (try_configure == this->configure_)\n        return;\n      this->configure_ = try_configure;\n\n      if (ERROR_OK == this->read_register(APE_CMD_DIGITAL_READ, const_cast&lt;uint8_t *>(this->read_buffer_), 3))\n      {\n#ifdef APE_LOGGING\n        ESP_LOGCONFIG(TAGape, \"ArduinoPortExpander found at %#02x\", address_);\n#endif\n        delay(10);\n        if (this->vref_default_)\n        {\n          this->write_register(CMD_SETUP_ANALOG_DEFAULT, nullptr, 0); \/\/ 0: unused\n        }\n\n        \/\/ Config success\n        this->configure_timeout_ = 0;\n        this->status_clear_error();\n#ifdef APE_BINARY_SENSOR\n        for (ApeBinarySensor *pin : this->input_pins_)\n        {\n          App.feed_wdt();\n          uint8_t pinNo = pin->get_pin();\n#ifdef APE_LOGGING\n          ESP_LOGCONFIG(TAGape, \"Setup input pin %d\", pinNo);\n#endif\n          this->write_register(APE_CMD_SETUP_PIN_INPUT_PULLUP, &amp;pinNo, 1);\n          delay(20);\n        }\n#endif\n#ifdef APE_BINARY_OUTPUT\n        for (ApeBinaryOutput *output : this->output_pins_)\n        {\n          if (!output->setup_)\n          { \/\/ this output has a valid value already\n            this->write_state(output->pin_, output->state_, true);\n            App.feed_wdt();\n            delay(20);\n          }\n        }\n#endif\n#ifdef APE_SENSOR\n        for (ApeAnalogInput *sensor : this->analog_pins_)\n        {\n          App.feed_wdt();\n          uint8_t pinNo = sensor->get_pin();\n#ifdef APE_LOGGING\n          ESP_LOGCONFIG(TAGape, \"Setup analog input pin %d\", pinNo);\n#endif\n          this->write_register(APE_CMD_SETUP_PIN_INPUT, &amp;pinNo, 1);\n          delay(20);\n        }\n#endif\n        return;\n      }\n      \/\/ Still not answering\n      return;\n    }\n    if (this->configure_timeout_ != 0 &amp;&amp; millis() > this->configure_timeout_)\n    {\n#ifdef APE_LOGGING\n      ESP_LOGE(TAGape, \"ArduinoPortExpander NOT found at %#02x\", address_);\n#endif\n      this->mark_failed();\n      return;\n    }\n\n#ifdef APE_BINARY_SENSOR\n    if (ERROR_OK != this->read_register(APE_CMD_DIGITAL_READ, const_cast&lt;uint8_t *>(this->read_buffer_), 3))\n    {\n#ifdef APE_LOGGING\n      ESP_LOGE(TAGape, \"Error reading. Reconfiguring pending.\");\n#endif\n      this->status_set_error();\n      this->configure_timeout_ = millis() + 5000;\n      return;\n    }\n    for (ApeBinarySensor *pin : this->input_pins_)\n    {\n      uint8_t pinNo = pin->get_pin();\n\n      uint8_t bit = pinNo % 8;\n      uint8_t value = pinNo &lt; 8 ? this->read_buffer_&#91;0] : pinNo &lt; 16 ? this->read_buffer_&#91;1] : this->read_buffer_&#91;2];\n      bool ret = value &amp; (1 &lt;&lt; bit);\n      if (this->initial_state_)\n        pin->publish_initial_state(ret);\n      else\n        pin->publish_state(ret);\n    }\n#endif\n#ifdef APE_SENSOR\n    for (ApeAnalogInput *pin : this->analog_pins_)\n    {\n      uint8_t pinNo = pin->get_pin();\n      pin->publish_state(analogRead(pinNo));\n    }\n#endif\n    this->initial_state_ = false;\n  }\n\n#ifdef APE_SENSOR\n  uint16_t analogRead(uint8_t pin)\n  {\n    bool ok = (ERROR_OK == this->read_register((uint8_t)(CMD_ANALOG_READ_A0 + pin), const_cast&lt;uint8_t *>(this->read_buffer_), 2));\n#ifdef APE_LOGGING\n    ESP_LOGVV(TAGape, \"analog read pin: %d ok: %d byte0: %d byte1: %d\", pin, ok, this->read_buffer_&#91;0], this->read_buffer_&#91;1]);\n#endif\n    uint16_t value = this->read_buffer_&#91;0] | ((uint16_t)this->read_buffer_&#91;1] &lt;&lt; 8);\n    return value;\n  }\n#endif\n\n#ifdef APE_BINARY_OUTPUT\n  output::BinaryOutput *get_binary_output(uint8_t pin)\n  {\n    ApeBinaryOutput *output = new ApeBinaryOutput(this, pin);\n    output_pins_.push_back(output);\n    return output;\n  }\n#endif\n#ifdef APE_BINARY_SENSOR\n  binary_sensor::BinarySensor *get_binary_sensor(uint8_t pin)\n  {\n    ApeBinarySensor *binarySensor = new ApeBinarySensor(this, pin);\n    input_pins_.push_back(binarySensor);\n    return binarySensor;\n  }\n#endif\n#ifdef APE_SENSOR\n  sensor::Sensor *get_analog_input(uint8_t pin)\n  {\n    ApeAnalogInput *input = new ApeAnalogInput(this, pin);\n    analog_pins_.push_back(input);\n    return input;\n  }\n#endif\n  void write_state(uint8_t pin, bool state, bool setup = false)\n  {\n    if (this->configure_timeout_ != 0)\n      return;\n#ifdef APE_LOGGING\n    ESP_LOGD(TAGape, \"Writing %d to pin %d\", state, pin);\n#endif\n    this->write_register(state ? APE_CMD_WRITE_DIGITAL_HIGH : APE_CMD_WRITE_DIGITAL_LOW, &amp;pin, 1);\n    if (setup)\n    {\n      App.feed_wdt();\n      delay(20);\n#ifdef APE_LOGGING\n      ESP_LOGI(TAGape, \"Setup output pin %d\", pin);\n#endif\n      this->write_register(APE_CMD_SETUP_PIN_OUTPUT, &amp;pin, 1);\n    }\n  }\n\nprotected:\n  bool configure_{true};\n  bool initial_state_{true};\n  uint8_t read_buffer_&#91;3]{0, 0, 0};\n  unsigned long configure_timeout_{5000};\n  bool vref_default_{false};\n\n#ifdef APE_BINARY_OUTPUT\n  std::vector&lt;ApeBinaryOutput *> output_pins_;\n#endif\n#ifdef APE_BINARY_SENSOR\n  std::vector&lt;ApeBinarySensor *> input_pins_;\n#endif\n#ifdef APE_SENSOR\n  std::vector&lt;ApeAnalogInput *> analog_pins_;\n#endif\n};\n\n#ifdef APE_BINARY_OUTPUT\nvoid ApeBinaryOutput::write_state(bool state)\n{\n  this->state_ = state;\n  this->parent_->write_state(this->pin_, state, this->setup_);\n  this->setup_ = false;\n}\n#endif\n\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The file should be named &#8220;arduino_port_expander.h&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Make the following changes to your ESPHome YAML configuration file for the MCU-8266-12E device<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>esphome:\n  name: mcu-8266-12e-01\n  platform: ESP8266\n  board: nodemcuv2\n  includes:\n      - arduino_port_expander.h\n# Note the include file - This loads the APE Header\n\n# Enable logging\nlogger:\n\n# Enable Home Assistant API\napi:\n\nota:\n  password: \"&lt;your password will be different - dont change it>\"\n\nwifi:\n  ssid: &lt;your ssid>\n  password: &lt;your password>\n\n  # Enable fallback hotspot (captive portal) in case wifi connection fails\n  ap:\n    ssid: \"MCU-8266-Hotspot\"\n    password: \"password\"\n\ncaptive_portal:\n\ni2c:\n# PCB Prototype\n  sda: GPIO5\n  scl: GPIO4\n# PCB Rev 1.5 or higher, comment the above 2 lines\n# and uncomment\n#sda: GPIO4\n#scl: GPIO5\n#################### - IMPORTANT ###########\n  scan: true\n  id: i2c_bus_a\n  \npcf8574:\n  - id: 'pcf8574_hub'\n    address: 0x22 # Set at 0x22, feel free to change to your liking, Remember to set the chip to the address you choose as well\n    pcf8575: false\n\ntime:\n  - platform: sntp\n    id: ha_time\n    timezone: \"Etc\/GMT+7\"\n\nstatus_led:\n  pin:\n    number: GPIO16\n    inverted: true\n\n#Define the APE as a custom component, taking care to ensure that:\n#1). The I2C Bust ID is the same as the one you have defined in the I2C: Section\n#2). The address of the APE is the same as the one you set in the sketch\n    \ncustom_component:\n  - id: ape\n    lambda: |-\n      auto ape_component = new ArduinoPortExpander(i2c_bus_a, 0x08,true);\n      return {ape_component};\n    \n\nsensor:\n\n  - platform: custom\n    lambda: |-\n      return {ape_analog_input(ape, 0),  \/\/ 1 = A1\n             ape_analog_input(ape, 1),\n             ape_analog_input(ape, 2)};\n   \n#We define 3 analog inputs (A0,A1,A2) to monitor voltages on the card\n#Note that you MUST define them in the sensors section below as well AND\n#THAT THEY MUST BE IN THE SAME SEQUENCE THAT YOU DEFINED THEM IN ABOVE HERE\n#\n#ALSO NOTE THAT YOU CAN \"NOT\" use A4 and A5, as they are used for I2C !\n#\n# As an example, of adding another 3 analog inputs, your definition above will change to:\n#\n#    return {ape_analog_input(ape, 0),\n#           ape_analog_input(ape, 1),\n#           ape_analog_input(ape, 2),\n#           ape_analog_input(ape, 3),\n#           ape_analog_input(ape, 6),\n#           ape_analog_input(ape, 7)};\n#\n#\n# Now define the sensors connected to these analogs below:\n\n             \n    sensors:\n      - name: \"PE Card VIN\"\n        id: analog_a0\n        device_class: \"voltage\"\n        unit_of_measurement: \"v\"\n        accuracy_decimals: 2\n        filters:\n          - lambda: return x * (22.00\/1023.0);\n          - throttle: 60s\n\n# We use a lambda to scale the value of VIN - Our Voltage divider was designed around 22 volt\n# thus we need 22 volt here in the calculation as well to make it accurate\n#\n      - name: \"PE Card 5v\"\n        id: analog_a1\n        device_class: \"voltage\"\n        unit_of_measurement: \"v\"\n        accuracy_decimals: 2\n        filters:\n          - lambda: return x * (5.02\/1023.0); \n          - throttle: 60s\n      - name: \"PE Card 3v\"\n        id: analog_a2\n        device_class: \"voltage\"\n        unit_of_measurement: \"v\"\n        accuracy_decimals: 2\n        filters:\n          - lambda: return x * (5.02\/1023.0);\n          - throttle: 60s\n \n# The ATMega328P 's Analog Reference is set to 5v internally, thus we need to also scale the \n# 3v input with a maximum of 5v ... \n\n# In case you enabled the other 3 Analog Inputs above, you need to add the following\n#\n#    - name: \"Analog 3\"\n#      id: analog_a3\n#      filters:\n#        - throttle: 60s\n#    - name: \"Analog 6\"\n#      id: analog_a6\n#      filters:\n#        - throttle: 60s\n#    - name: \"Analog 7\"\n#      id: analog_a7\n#      filters:\n#        - throttle: 60s\n#\n#\n             \n             \n             \n  - platform: adc\n    pin: VCC\n    name: \"ESP8266 Chip Voltage\"\n    id: mcu_voltage\n    unit_of_measurement: \"V\"\n    device_class: \"voltage\"\n    accuracy_decimals: 2\n    update_interval: 60s\n    \n  - platform: wifi_signal\n    name: \"WiFi Signal Sensor\"\n    id: wifi_strength\n    device_class: \"signal_strength\"\n    unit_of_measurement: \"dBm\"\n    update_interval: 240s\n    \n\n#Digital outputs function the same\n\noutput:\n- platform: custom\n  type: binary\n  lambda: |-\n    return {ape_binary_output(ape, 2),\n            ape_binary_output(ape, 3),\n            ape_binary_output(ape, 4),\n            ape_binary_output(ape, 5),\n            ape_binary_output(ape, 6),\n            ape_binary_output(ape, 7)};\n  outputs:\n    - id: ape_output_p2\n      inverted: false\n    - id: ape_output_p3\n      inverted: false\n    - id: ape_output_p4\n      inverted: false\n    - id: ape_output_p5\n      inverted: false\n    - id: ape_output_p6\n      inverted: false\n    - id: ape_output_p7\n      inverted: false\n      \n- platform: gpio\n  id: relay_1\n  pin:\n    pcf8574: pcf8574_hub\n    number: 0\n    mode: OUTPUT\n    inverted: true\n- platform: gpio\n  id: relay_2\n  pin:\n    pcf8574: pcf8574_hub\n    number: 1\n    mode: OUTPUT\n    inverted: true\n- platform: gpio\n  id: led_status_1\n  pin:\n    pcf8574: pcf8574_hub\n    number: 2\n    mode: OUTPUT\n    inverted: true\n- platform: gpio\n  id: led_status_2\n  pin:\n    pcf8574: pcf8574_hub\n    number: 3\n    mode: OUTPUT\n    inverted: true\n      \nbinary_sensor:\n  - platform: gpio\n    id: push_button_1\n    name: 'Relay1 Pushbutton'\n    device_class: ''\n    pin: \n      pcf8574: pcf8574_hub\n      number: 4\n      mode: INPUT\n      inverted: true\n    on_press:\n      then:\n        - switch.toggle: switch_relay1\n        \n  - platform: gpio\n    id: push_button_2\n    name: 'Relay2 Pushbutton'\n    device_class: ''\n    pin:\n      pcf8574: pcf8574_hub\n      number: 5\n      mode: INPUT\n      inverted: true\n    on_press:\n      #min_length: 50ms\n      #max_length: 500ms\n      then:\n        - switch.toggle: switch_relay2\n    filters:\n        - delayed_on_off: 50ms\n      \n  \n\nswitch:\n  - platform: output\n    id: switch_relay1\n    name: \"Relay No. 1 (#0)\"\n    output: relay_1\n    on_turn_on:\n      - output.turn_on: led_status_1\n    on_turn_off:\n      - output.turn_off: led_status_1\n      \n  - platform: output\n    id: switch_relay2\n    name: \"Relay No. 2 (#1)\"\n    output: relay_2\n    on_turn_on:\n      - output.turn_on: led_status_2\n    on_turn_off:\n      - output.turn_off: led_status_2\n  - platform: restart\n    id: reboot_switch\n    name: \"Reboot Me\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Detailed information on the APE is available <a href=\"https:\/\/esphome.io\/cookbook\/arduino_port_extender.html\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Manufacturing the PCB<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"manufacturing\">This PCB was manufactured at&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.pcbway.com\/setinvite.aspx?inviteid=403795\" target=\"_blank\">PCBWAY<\/a>. The Gerber files and BOM, as well as all the schematics, will soon be available as a shared project on their website. If you would like to have&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.pcbway.com\/setinvite.aspx?inviteid=403795\" target=\"_blank\">PCBWAY<\/a>&nbsp;manufacture one of your own, designs, or even this particular PCB, you need to do the following\u2026<br>1) Click on this&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.pcbway.com\/setinvite.aspx?inviteid=403795\" target=\"_blank\">link<\/a><br>2) Create an account if you have not already got one of your own.<br>If you use the link above, you will also instantly receive a $5USD coupon, which you can use on your first or any other order later. (Disclaimer: I will earn a small referral fee from PCBWay. This referral fee will not affect the cost of your order, nor will you pay any part thereof.)<br>3) Once you have gone to their website, and created an account, or login with your existing account,<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1024\" height=\"515\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-34-50-1024x515.png\" alt=\"\" class=\"wp-image-13447 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-34-50-1024x515.png 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-34-50-600x302.png 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-34-50-300x151.png 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-34-50-768x386.png 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-34-50.png 1365w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/515;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">4) Click on PCB Instant Quote<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1024\" height=\"515\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-35-34-1024x515.png\" alt=\"\" class=\"wp-image-13449 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-35-34-1024x515.png 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-35-34-600x302.png 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-35-34-300x151.png 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-35-34-768x386.png 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-35-34.png 1365w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/515;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">5) If you do not have any very special requirements for your PCB, click on Quick-order PCB<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1024\" height=\"514\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-36-00-1024x514.png\" alt=\"\" class=\"wp-image-13450 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-36-00-1024x514.png 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-36-00-600x301.png 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-36-00-300x151.png 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-36-00-768x385.png 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-36-00.png 1365w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/514;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">6) Click on Add Gerber File, and select your Gerber file(s) from your computer. Most of your PCB details will now be automatically selected, leaving you to only select the solder mask and silk-screen colour, as well as to remove the order number or not. You can of course fine-tune everything exactly as you want as well.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1024\" height=\"481\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-36-43-1024x481.png\" alt=\"\" class=\"wp-image-13451 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-36-43-1024x481.png 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-36-43-600x282.png 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-36-43-300x141.png 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-36-43-768x361.png 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-36-43.png 1365w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/481;\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1024\" height=\"514\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-37-18-1024x514.png\" alt=\"\" class=\"wp-image-13452 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-37-18-1024x514.png 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-37-18-600x301.png 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-37-18-300x151.png 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-37-18-768x385.png 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-37-18.png 1365w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/514;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">7) You can also select whether you want an SMD stencil, or have the board assembled after manufacturing. Please note that the assembly service, as well as the cost of your components, ARE NOT included in the initial quoted price. ( The quote will update depending on what options you select ).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1024\" height=\"512\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-37-54-1024x512.png\" alt=\"\" class=\"wp-image-13453 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-37-54-1024x512.png 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-37-54-600x300.png 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-37-54-300x150.png 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-37-54-768x384.png 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-37-54.png 1365w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/512;\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1024\" height=\"514\" data-src=\"http:\/\/144.126.248.244\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-38-21-1024x514.png\" alt=\"\" class=\"wp-image-13454 lazyload\" data-srcset=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-38-21-1024x514.png 1024w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-38-21-600x301.png 600w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-38-21-300x151.png 300w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-38-21-768x385.png 768w, https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2021\/08\/Screenshot-from-2021-08-16-18-38-21.png 1365w\" data-sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/514;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">8) When you are happy with the options that you have selected, you can click on the Save to Cart Button. From here on, you can go to the top of the screen, click on Cart, make any payment(s) or use any coupons that you have in your account.<br><br>Then just sit back and wait for your new PCB to be delivered to your door via the shipping company that you have selected during checkout.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction After quite a few experiments, and playing with a lot of ideas, we have finally produced and tested an almost final prototype for the MCU-8266-12E IoT Controller Port Extender Card. While the baseboard already has quite a lot of free GPIO pins for additional sensors and devices, It did however have quite a few &hellip; <a href=\"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Port Extender Card for the MCU-8266-12E&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":15077,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,89,44,140,51,53,129],"tags":[6,81,133,141,67,55],"class_list":["post-15056","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-custom-pcb-design","category-electronics","category-esp8266","category-i2c-devices","category-iot-devices","category-pcbdesign","tag-arduino","tag-esp8266","tag-esphome","tag-homeassistant","tag-i2c","tag-iot"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"IntroductionAfter quite a few experiments, and playing with a lot of ideas, we have finally produced and tested an almost final prototype for the MCU-8266-12E IoT Controller Port Extender Card. While the baseboard already has quite a lot of free GPIO pins for additional sensors and devices, It did however have quite a few issues,\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"makeriot2020\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Maker and IOT Ideas - Infinite possibilities, waiting to be explored\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Port Extender Card for the MCU-8266-12E - Maker and IOT Ideas\" \/>\n\t\t<meta property=\"og:description\" content=\"IntroductionAfter quite a few experiments, and playing with a lot of ideas, we have finally produced and tested an almost final prototype for the MCU-8266-12E IoT Controller Port Extender Card. While the baseboard already has quite a lot of free GPIO pins for additional sensors and devices, It did however have quite a few issues,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/06\/LogoSmall.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/06\/LogoSmall.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"165\" \/>\n\t\t<meta property=\"og:image:height\" content=\"93\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2022-01-21T14:58:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2022-01-21T14:59:01+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Port Extender Card for the MCU-8266-12E - Maker and IOT Ideas\" \/>\n\t\t<meta name=\"twitter:description\" content=\"IntroductionAfter quite a few experiments, and playing with a lot of ideas, we have finally produced and tested an almost final prototype for the MCU-8266-12E IoT Controller Port Extender Card. While the baseboard already has quite a lot of free GPIO pins for additional sensors and devices, It did however have quite a few issues,\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/06\/LogoSmall.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#blogposting\",\"name\":\"Port Extender Card for the MCU-8266-12E - Maker and IOT Ideas\",\"headline\":\"Port Extender Card for the MCU-8266-12E\",\"author\":{\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.makeriot2020.com\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/20220121_141946-scaled.jpg\",\"width\":2560,\"height\":1920},\"datePublished\":\"2022-01-21T21:58:57+07:00\",\"dateModified\":\"2022-01-21T21:59:01+07:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#webpage\"},\"articleSection\":\"Arduino, Custom PCB Design, Electronics, ESP8266, I2C Devices, IoT Devices, PCBDesign, Arduino, ESP8266, ESPHome, HomeAssistant, I2C, IoT\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.makeriot2020.com\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/category\\\/arduino\\\/#listItem\",\"name\":\"Arduino\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/category\\\/arduino\\\/#listItem\",\"position\":2,\"name\":\"Arduino\",\"item\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/category\\\/arduino\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#listItem\",\"name\":\"Port Extender Card for the MCU-8266-12E\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#listItem\",\"position\":3,\"name\":\"Port Extender Card for the MCU-8266-12E\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/category\\\/arduino\\\/#listItem\",\"name\":\"Arduino\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/#organization\",\"name\":\"Maker and IOT Ideas\",\"description\":\"Infinite possibilities, waiting to be explored\",\"url\":\"https:\\\/\\\/www.makeriot2020.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.makeriot2020.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/LogoSmall.jpg\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#organizationLogo\",\"width\":165,\"height\":93},\"image\":{\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/author\\\/admin\\\/\",\"name\":\"makeriot2020\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#authorImage\",\"url\":\"https:\\\/\\\/www.makeriot2020.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/5c0\\\/5c020e1b07a03d905edecd8711801fe8x96.jpg\",\"width\":96,\"height\":96,\"caption\":\"makeriot2020\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#webpage\",\"url\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/\",\"name\":\"Port Extender Card for the MCU-8266-12E - Maker and IOT Ideas\",\"description\":\"IntroductionAfter quite a few experiments, and playing with a lot of ideas, we have finally produced and tested an almost final prototype for the MCU-8266-12E IoT Controller Port Extender Card. While the baseboard already has quite a lot of free GPIO pins for additional sensors and devices, It did however have quite a few issues,\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.makeriot2020.com\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/20220121_141946-scaled.jpg\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#mainImage\",\"width\":2560,\"height\":1920},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/index.php\\\/2022\\\/01\\\/21\\\/port-extender-card-for-the-mcu-8266-12e\\\/#mainImage\"},\"datePublished\":\"2022-01-21T21:58:57+07:00\",\"dateModified\":\"2022-01-21T21:59:01+07:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/#website\",\"url\":\"https:\\\/\\\/www.makeriot2020.com\\\/\",\"name\":\"Maker and IOT Ideas\",\"description\":\"Infinite possibilities, waiting to be explored\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.makeriot2020.com\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Port Extender Card for the MCU-8266-12E - Maker and IOT Ideas","description":"IntroductionAfter quite a few experiments, and playing with a lot of ideas, we have finally produced and tested an almost final prototype for the MCU-8266-12E IoT Controller Port Extender Card. While the baseboard already has quite a lot of free GPIO pins for additional sensors and devices, It did however have quite a few issues,","canonical_url":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#blogposting","name":"Port Extender Card for the MCU-8266-12E - Maker and IOT Ideas","headline":"Port Extender Card for the MCU-8266-12E","author":{"@id":"https:\/\/www.makeriot2020.com\/index.php\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/www.makeriot2020.com\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141946-scaled.jpg","width":2560,"height":1920},"datePublished":"2022-01-21T21:58:57+07:00","dateModified":"2022-01-21T21:59:01+07:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#webpage"},"isPartOf":{"@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#webpage"},"articleSection":"Arduino, Custom PCB Design, Electronics, ESP8266, I2C Devices, IoT Devices, PCBDesign, Arduino, ESP8266, ESPHome, HomeAssistant, I2C, IoT"},{"@type":"BreadcrumbList","@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.makeriot2020.com#listItem","position":1,"name":"Home","item":"https:\/\/www.makeriot2020.com","nextItem":{"@type":"ListItem","@id":"https:\/\/www.makeriot2020.com\/index.php\/category\/arduino\/#listItem","name":"Arduino"}},{"@type":"ListItem","@id":"https:\/\/www.makeriot2020.com\/index.php\/category\/arduino\/#listItem","position":2,"name":"Arduino","item":"https:\/\/www.makeriot2020.com\/index.php\/category\/arduino\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#listItem","name":"Port Extender Card for the MCU-8266-12E"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.makeriot2020.com#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#listItem","position":3,"name":"Port Extender Card for the MCU-8266-12E","previousItem":{"@type":"ListItem","@id":"https:\/\/www.makeriot2020.com\/index.php\/category\/arduino\/#listItem","name":"Arduino"}}]},{"@type":"Organization","@id":"https:\/\/www.makeriot2020.com\/#organization","name":"Maker and IOT Ideas","description":"Infinite possibilities, waiting to be explored","url":"https:\/\/www.makeriot2020.com\/","logo":{"@type":"ImageObject","url":"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/06\/LogoSmall.jpg","@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#organizationLogo","width":165,"height":93},"image":{"@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/www.makeriot2020.com\/index.php\/author\/admin\/#author","url":"https:\/\/www.makeriot2020.com\/index.php\/author\/admin\/","name":"makeriot2020","image":{"@type":"ImageObject","@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#authorImage","url":"https:\/\/www.makeriot2020.com\/wp-content\/wphb-cache\/gravatar\/5c0\/5c020e1b07a03d905edecd8711801fe8x96.jpg","width":96,"height":96,"caption":"makeriot2020"}},{"@type":"WebPage","@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#webpage","url":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/","name":"Port Extender Card for the MCU-8266-12E - Maker and IOT Ideas","description":"IntroductionAfter quite a few experiments, and playing with a lot of ideas, we have finally produced and tested an almost final prototype for the MCU-8266-12E IoT Controller Port Extender Card. While the baseboard already has quite a lot of free GPIO pins for additional sensors and devices, It did however have quite a few issues,","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.makeriot2020.com\/#website"},"breadcrumb":{"@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#breadcrumblist"},"author":{"@id":"https:\/\/www.makeriot2020.com\/index.php\/author\/admin\/#author"},"creator":{"@id":"https:\/\/www.makeriot2020.com\/index.php\/author\/admin\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/01\/20220121_141946-scaled.jpg","@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#mainImage","width":2560,"height":1920},"primaryImageOfPage":{"@id":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/#mainImage"},"datePublished":"2022-01-21T21:58:57+07:00","dateModified":"2022-01-21T21:59:01+07:00"},{"@type":"WebSite","@id":"https:\/\/www.makeriot2020.com\/#website","url":"https:\/\/www.makeriot2020.com\/","name":"Maker and IOT Ideas","description":"Infinite possibilities, waiting to be explored","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.makeriot2020.com\/#organization"}}]},"og:locale":"en_US","og:site_name":"Maker and IOT Ideas - Infinite possibilities, waiting to be explored","og:type":"article","og:title":"Port Extender Card for the MCU-8266-12E - Maker and IOT Ideas","og:description":"IntroductionAfter quite a few experiments, and playing with a lot of ideas, we have finally produced and tested an almost final prototype for the MCU-8266-12E IoT Controller Port Extender Card. While the baseboard already has quite a lot of free GPIO pins for additional sensors and devices, It did however have quite a few issues,","og:url":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/","og:image":"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/06\/LogoSmall.jpg","og:image:secure_url":"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/06\/LogoSmall.jpg","og:image:width":165,"og:image:height":93,"article:published_time":"2022-01-21T14:58:57+00:00","article:modified_time":"2022-01-21T14:59:01+00:00","twitter:card":"summary_large_image","twitter:title":"Port Extender Card for the MCU-8266-12E - Maker and IOT Ideas","twitter:description":"IntroductionAfter quite a few experiments, and playing with a lot of ideas, we have finally produced and tested an almost final prototype for the MCU-8266-12E IoT Controller Port Extender Card. While the baseboard already has quite a lot of free GPIO pins for additional sensors and devices, It did however have quite a few issues,","twitter:image":"https:\/\/www.makeriot2020.com\/wp-content\/uploads\/2022\/06\/LogoSmall.jpg"},"aioseo_meta_data":{"post_id":"15056","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2022-03-31 05:07:35","updated":"2026-06-29 02:52:15","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.makeriot2020.com\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.makeriot2020.com\/index.php\/category\/arduino\/\" title=\"Arduino\">Arduino<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tPort Extender Card for the MCU-8266-12E\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.makeriot2020.com"},{"label":"Arduino","link":"https:\/\/www.makeriot2020.com\/index.php\/category\/arduino\/"},{"label":"Port Extender Card for the MCU-8266-12E","link":"https:\/\/www.makeriot2020.com\/index.php\/2022\/01\/21\/port-extender-card-for-the-mcu-8266-12e\/"}],"_links":{"self":[{"href":"https:\/\/www.makeriot2020.com\/index.php\/wp-json\/wp\/v2\/posts\/15056","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.makeriot2020.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.makeriot2020.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.makeriot2020.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.makeriot2020.com\/index.php\/wp-json\/wp\/v2\/comments?post=15056"}],"version-history":[{"count":0,"href":"https:\/\/www.makeriot2020.com\/index.php\/wp-json\/wp\/v2\/posts\/15056\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.makeriot2020.com\/index.php\/wp-json\/wp\/v2\/media\/15077"}],"wp:attachment":[{"href":"https:\/\/www.makeriot2020.com\/index.php\/wp-json\/wp\/v2\/media?parent=15056"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.makeriot2020.com\/index.php\/wp-json\/wp\/v2\/categories?post=15056"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.makeriot2020.com\/index.php\/wp-json\/wp\/v2\/tags?post=15056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}