{"id":84225,"date":"2019-04-20T10:45:26","date_gmt":"2019-04-20T10:45:26","guid":{"rendered":"https:\/\/randomnerdtutorials.com\/?p=84225"},"modified":"2019-05-06T13:38:58","modified_gmt":"2019-05-06T13:38:58","slug":"esp32-esp8266-digital-inputs-digital-outputs-micropython","status":"publish","type":"post","link":"https:\/\/randomnerdtutorials.com\/esp32-esp8266-digital-inputs-digital-outputs-micropython\/","title":{"rendered":"ESP32\/ESP8266 Digital Inputs and Digital Outputs with MicroPython"},"content":{"rendered":"\n<p>This tutorial shows how to control the ESP32 and ESP8266 GPIOs as digital inputs and digital outputs using MicroPython firmware. As an example, you&#8217;ll learn how to read the value of a pushbutton and light up an LED accordingly.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/digital_io_micropython_esp32_esp8266.jpg?resize=1200%2C675&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"esp32 esp8266 micropython inputs and outputs\" class=\"wp-image-84229\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/digital_io_micropython_esp32_esp8266.jpg?w=1280&amp;quality=100&amp;strip=all&amp;ssl=1 1280w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/digital_io_micropython_esp32_esp8266.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/digital_io_micropython_esp32_esp8266.jpg?resize=768%2C432&amp;quality=100&amp;strip=all&amp;ssl=1 768w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/digital_io_micropython_esp32_esp8266.jpg?resize=1024%2C576&amp;quality=100&amp;strip=all&amp;ssl=1 1024w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites<\/h2>\n\n\n\n<p>To follow this tutorial you need MicroPython firmware installed in your ESP32 or ESP8266 boards. You also need an IDE to write and upload the code to your board. We suggest using Thonny IDE or uPyCraft IDE:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Thonny IDE:<ul><li><a href=\"https:\/\/randomnerdtutorials.com\/getting-started-thonny-micropython-python-ide-esp32-esp8266\/\">Installing and getting started with Thonny IDE<\/a><\/li><li><a href=\"https:\/\/randomnerdtutorials.com\/flashing-micropython-firmware-esptool-py-esp32-esp8266\/\">Flashing MicroPython Firmware with esptool.py<\/a><\/li><\/ul><\/li><li>uPyCraft IDE:<ul><li>Install uPyCraft IDE (<a href=\"https:\/\/randomnerdtutorials.com\/install-upycraft-ide-windows-pc-instructions\/\">Windows<\/a>,&nbsp;<a href=\"https:\/\/randomnerdtutorials.com\/install-upycraft-ide-mac-os-x-instructions\/\">Mac OS X<\/a>,&nbsp;<a href=\"https:\/\/randomnerdtutorials.com\/install-upycraft-ide-linux-ubuntu-instructions\/\">Linux<\/a>)<\/li><li><a href=\"https:\/\/randomnerdtutorials.com\/flash-upload-micropython-firmware-esp32-esp8266\/\">Flash\/Upload MicroPython Firmware to ESP32 and ESP8266<\/a><\/li><\/ul><\/li><\/ul>\n\n\n\n<p class=\"rntbox rntclblue\">If this is your first time dealing with MicroPython, we recommend following this guide: <a href=\"https:\/\/randomnerdtutorials.com\/getting-started-micropython-esp32-esp8266\/\">Getting Started with MicroPython on ESP32 and ESP8266<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Project Overview<\/h2>\n\n\n\n<p>To show you how to use digital inputs and digital outputs, we&#8217;ll build a simple project example with a pushbutton and an LED. We&#8217;ll read the state of the pushbutton and light up the LED accordingly as illustrated in the following figure.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"825\" height=\"411\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_pushbutton.png?resize=825%2C411&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"\" class=\"wp-image-84228\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_pushbutton.png?w=825&amp;quality=100&amp;strip=all&amp;ssl=1 825w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_pushbutton.png?resize=300%2C149&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_pushbutton.png?resize=768%2C383&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 825px) 100vw, 825px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Digital Inputs<\/h3>\n\n\n\n<p>To get the value of a GPIO, first you need to create a <span class=\"rnthl rntliteral\">Pin<\/span> object and set it as an input. For example:<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>button = Pin(4, Pin.IN)<\/code><\/pre>\n\n\n\n<p>Then, to get is value, you need to use the <span class=\"rnthl rntliteral\">value()<\/span> method on the <span class=\"rnthl rntliteral\">Pin<\/span> object without passing any argument. For example, to get the state of a <span class=\"rnthl rntliteral\">Pin<\/span> object called <span class=\"rnthl rntliteral\">button<\/span>, use the following expression:<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>button.value()<\/code><\/pre>\n\n\n\n<p>We&#8217;ll show you in more detail how everything works in the project example.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Digital Outputs<\/h3>\n\n\n\n<p>To set a GPIO on or off, first you need to set it as an output. For example:<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>led = Pin(5, Pin.OUT)<\/code><\/pre>\n\n\n\n<p>To control the GPIO, use the <span class=\"rnthl rntliteral\">value()<\/span> method on the <span class=\"rnthl rntliteral\">Pin<\/span> object and  pass <span class=\"rnthl rntliteral\">1<\/span> or <span class=\"rnthl rntliteral\">0<\/span> as argument. For example, the following command sets a <span class=\"rnthl rntliteral\">Pin<\/span> object (<span class=\"rnthl rntliteral\">led<\/span>) to HIGH:<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>led.value(1)<\/code><\/pre>\n\n\n\n<p>To set the GPIO to LOW, pass <span class=\"rnthl rntliteral\">0<\/span> as argument:<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>led.value(0)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Schematic<\/h2>\n\n\n\n<p>Before proceeding, you need to assemble a circuit with an LED and a pushbutton. We&#8217;ll connect the LED to <span class=\"rnthl rntcblue\">GPIO 5<\/span> and the pushbutton to <span class=\"rnthl rntcgreen\">GPIO 4<\/span>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Parts Required<\/h3>\n\n\n\n<p>Here\u2019s a list of the parts to you need to build the circuit:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" href=\"https:\/\/makeradvisor.com\/tools\/esp32-dev-board-wi-fi-bluetooth\/\" target=\"_blank\">ESP32<\/a>&nbsp;or&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/makeradvisor.com\/tools\/esp8266-esp-12e-nodemcu-wi-fi-development-board\/\" target=\"_blank\">ESP8266<\/a>&nbsp;(read:&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/makeradvisor.com\/esp32-vs-esp8266\/\" target=\"_blank\">ESP32 vs ESP8266<\/a>)<\/li><li><a href=\"https:\/\/makeradvisor.com\/tools\/3mm-5mm-leds-kit-storage-box\/\">5 mm LED<\/a><\/li><li><a href=\"https:\/\/makeradvisor.com\/tools\/resistors-kits\/\">330 Ohm resistor<\/a><\/li><li><a href=\"https:\/\/makeradvisor.com\/tools\/pushbuttons-kit\/\">Pushbutton<\/a><\/li><li><a href=\"https:\/\/makeradvisor.com\/tools\/resistors-kits\/\">10k Ohm resistor<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/makeradvisor.com\/tools\/mb-102-solderless-breadboard-830-points\/\" target=\"_blank\">Breadboard<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/makeradvisor.com\/tools\/jumper-wires-kit-120-pieces\/\" target=\"_blank\">Jumper wires<\/a><\/li><\/ul>\n\n\n<p>You can use the preceding links or go directly to <a href=\"https:\/\/makeradvisor.com\/tools\/?utm_source=rnt&utm_medium=post&utm_campaign=post\" target=\"_blank\">MakerAdvisor.com\/tools<\/a> to find all the parts for your projects at the best price!<\/p><p style=\"text-align:center;\"><a href=\"https:\/\/makeradvisor.com\/tools\/?utm_source=rnt&utm_medium=post&utm_campaign=post\" target=\"_blank\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2017\/10\/header-200.png?w=1200&#038;quality=100&#038;strip=all&#038;ssl=1\"><\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schematic \u2013 ESP32<br><\/h3>\n\n\n\n<p>Follow the next schematic diagram if you\u2019re using an ESP32 board:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"1065\" height=\"707\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_button_esp32_bb.png?resize=1065%2C707&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"\" class=\"wp-image-84226\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_button_esp32_bb.png?w=1065&amp;quality=100&amp;strip=all&amp;ssl=1 1065w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_button_esp32_bb.png?resize=300%2C199&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_button_esp32_bb.png?resize=768%2C510&amp;quality=100&amp;strip=all&amp;ssl=1 768w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_button_esp32_bb.png?resize=1024%2C680&amp;quality=100&amp;strip=all&amp;ssl=1 1024w\" sizes=\"(max-width: 1065px) 100vw, 1065px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Schematic \u2013 ESP8266<\/h3>\n\n\n\n<p>Follow the next schematic diagram if you\u2019re using an ESP8266 board:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1038\" height=\"573\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_button_esp8266_bb.png?resize=1038%2C573&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"\" class=\"wp-image-84227\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_button_esp8266_bb.png?w=1038&amp;quality=100&amp;strip=all&amp;ssl=1 1038w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_button_esp8266_bb.png?resize=300%2C166&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_button_esp8266_bb.png?resize=768%2C424&amp;quality=100&amp;strip=all&amp;ssl=1 768w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/led_button_esp8266_bb.png?resize=1024%2C565&amp;quality=100&amp;strip=all&amp;ssl=1 1024w\" sizes=\"(max-width: 1038px) 100vw, 1038px\" \/><\/figure><\/div>\n\n\n\n<p>On the ESP8266, the pin marked as D1 corresponds to <span class=\"rnthl rntcblue\">GPIO 5<\/span> and the pin marked as D2 corresponds to <span class=\"rnthl rntcgreen\">GPIO 4<\/span>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Script<\/h2>\n\n\n\n<p>The following code reads the state of the pushbutton and lights up the LED accordingly. The code works for both the ESP32 and ESP8266 boards.<\/p>\n\n\n<pre style=\"max-height: 40em; margin-bottom: 20px;\"><code class=\"language-python\"># Complete project details at https:\/\/RandomNerdTutorials.com\/micropython-programming-with-esp32-and-esp8266\/\n\nfrom machine import Pin\nfrom time import sleep\n\nled = Pin(5, Pin.OUT)\nbutton = Pin(4, Pin.IN)\n\nwhile True:\n  led.value(button.value())\n  sleep(0.1)\n<\/code><\/pre>\n\t<p style=\"text-align:center\"><a class=\"rntwhite\" href=\"https:\/\/github.com\/RuiSantosdotme\/ESP-MicroPython\/raw\/master\/code\/GPIOs\/Pushbutton\/pushbutton_led.py\" target=\"_blank\">View raw code<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How the Code Works<\/h3>\n\n\n\n<p>You start by importing the <span class=\"rnthl rntliteral\">Pin<\/span> class from the <span class=\"rnthl rntliteral\">machine<\/span> module, and the <span class=\"rnthl rntliteral\">sleep<\/span> class from the <span class=\"rnthl rntliteral\">time<\/span> module.<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>from machine import Pin\nfrom time import sleep<\/code><\/pre>\n\n\n\n<p> Then, create a <span class=\"rnthl rntliteral\">Pin<\/span> object called <span class=\"rnthl rntliteral\">led<\/span> on <span class=\"rnthl rntcblue\">GPIO 5<\/span>. LEDs are outputs, so pass as second argument <span class=\"rnthl rntliteral\">Pin.OUT<\/span>. <\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>led = Pin(5, Pin.OUT)<\/code><\/pre>\n\n\n\n<p>We also create an object called <span class=\"rnthl rntliteral\">button<\/span> on <span class=\"rnthl rntcgreen\">GPIO 4<\/span>. Buttons are inputs, so use <span class=\"rnthl rntliteral\">Pin.IN<\/span>.<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>button = Pin(4, Pin.IN)<\/code><\/pre>\n\n\n\n<p>Use <span class=\"rnthl rntliteral\">button.value()<\/span> to return\/read the button state.Then, pass the <span class=\"rnthl rntliteral\">button.value()<\/span> expression as an argument to the LED value.<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>led.value(button.value())<\/code><\/pre>\n\n\n\n<p>This way, when we press the button, <span class=\"rnthl rntliteral\">button.value()<\/span> returns <span class=\"rnthl rntliteral\">1<\/span>. So, this is the same as having <span class=\"rnthl rntliteral\">led.value(1)<\/span>. This sets the LED state to <span class=\"rnthl rntliteral\">1<\/span>, lighting up the LED. When the pushbutton is not being pressed, <span class=\"rnthl rntliteral\">button.value()<\/span> returns <span class=\"rnthl rntliteral\">0<\/span>. So, we have <span class=\"rnthl rntliteral\">led.value(0)<\/span>, and the LED stays off.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Demonstration<\/h2>\n\n\n\n<p>Save the code to your ESP board using <a href=\"https:\/\/randomnerdtutorials.com\/getting-started-thonny-micropython-python-ide-esp32-esp8266\/\">Thonny IDE<\/a> or <a href=\"https:\/\/randomnerdtutorials.com\/getting-started-micropython-esp32-esp8266\/\">uPyCraft IDE<\/a>. Then, the LED should light up when you press the button and stay off when you release it.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"414\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/micropython-esp32-esp8266-inputs-outputs.jpg?resize=750%2C414&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"\" class=\"wp-image-84230\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/micropython-esp32-esp8266-inputs-outputs.jpg?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/micropython-esp32-esp8266-inputs-outputs.jpg?resize=300%2C166&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n\n\n\n<p>To wrap up, to read the value of a GPIO, we simply need to use the <span class=\"rnthl rntliteral\">value()<\/span> method on the corresponding <span class=\"rnthl rntliteral\">Pin<\/span> object. To set the value of a GPIO, we just need to pass as argument <span class=\"rnthl rntliteral\">1<\/span> or <span class=\"rnthl rntliteral\">0<\/span> to the <span class=\"rnthl rntliteral\">value()<\/span> method to set it on or off, respectively.<\/p>\n\n\n\n<p>We hope you&#8217;ve found this tutorial useful. If you&#8217;re just getting started with MicroPython, you may also like the following resources:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/randomnerdtutorials.com\/micropython-programming-with-esp32-and-esp8266\/\"><strong>[eBook] MicroPython Programming with EPS32\/ESP8266<\/strong><\/a><\/li><li><a href=\"https:\/\/randomnerdtutorials.com\/micropython-gpios-esp32-esp8266\/\">ESP32\/ESP8266 GPIOs Explained with MicroPython<\/a><\/li><li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-esp8266-analog-readings-micropython\/\">ESP32\/ESP8266 Analog Readings with MicroPython<\/a><\/li><li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-esp8266-pwm-micropython\/\">ESP32\/ESP8266 PWM with MicroPython \u2013 Dim LED<\/a><\/li><li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-esp8266-micropython-web-server\/\">ESP32\/ESP8266 MicroPython Web Server \u2013 Control Outputs<\/a><\/li><\/ul>\n\n\n\n<p>Thanks for reading.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial shows how to control the ESP32 and ESP8266 GPIOs as digital inputs and digital outputs using MicroPython firmware. As an example, you&#8217;ll learn how to read the value &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"ESP32\/ESP8266 Digital Inputs and Digital Outputs with MicroPython\" class=\"read-more button\" href=\"https:\/\/randomnerdtutorials.com\/esp32-esp8266-digital-inputs-digital-outputs-micropython\/#more-84225\" aria-label=\"Read more about ESP32\/ESP8266 Digital Inputs and Digital Outputs with MicroPython\">CONTINUE READING \u00bb<\/a><\/p>\n","protected":false},"author":5,"featured_media":84229,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[276,214,230,309],"tags":[],"class_list":["post-84225","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp32","category-esp8266","category-guide","category-0-esp32-micropython"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/04\/digital_io_micropython_esp32_esp8266.jpg?fit=1280%2C720&quality=100&strip=all&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/84225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/comments?post=84225"}],"version-history":[{"count":0,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/84225\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media\/84229"}],"wp:attachment":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media?parent=84225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/categories?post=84225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/tags?post=84225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}