{"id":172,"date":"2021-07-23T08:36:53","date_gmt":"2021-07-23T08:36:53","guid":{"rendered":"https:\/\/blog.embeddedexpert.io\/?p=172"},"modified":"2021-07-23T15:07:07","modified_gmt":"2021-07-23T15:07:07","slug":"working-with-ultrasonic-sensor-and-stm32","status":"publish","type":"post","link":"https:\/\/blog.embeddedexpert.io\/?p=172","title":{"rendered":"Working with Ultrasonic Sensor and STM32"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"422\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/HC-SR04-Ultrasonic-Sensor-Module-Distance-Measurement-Component-Part-Front.jpg\" alt=\"\" class=\"wp-image-173\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/HC-SR04-Ultrasonic-Sensor-Module-Distance-Measurement-Component-Part-Front.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/HC-SR04-Ultrasonic-Sensor-Module-Distance-Measurement-Component-Part-Front-300x169.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/HC-SR04-Ultrasonic-Sensor-Module-Distance-Measurement-Component-Part-Front-400x225.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/HC-SR04-Ultrasonic-Sensor-Module-Distance-Measurement-Component-Part-Front-250x141.jpg 250w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p>This guide shows how to use the HC-SR04 Ultrasonic Sensor with the STM32F411 Nucleo-64 board using only registers level with GPIO polling mode. The ultrasonic sensor uses sonar to determine the distance to an object. We\u2019ll show you how to wire the sensor to the STM32F411 Nucleo-64 and provide an example application to determine the distance in cm to an object using the HC-SR04.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">We well cover the following:<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Introduction to Ultrasonic<\/li><li>Required Parts<\/li><li>Schematic<\/li><li>Code <\/li><li>Results<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">1.1 Introduction to Ultrasonic<\/h2>\n\n\n\n<p>The HC-SR04 ultrasonic sensor uses sonar to determine the distance to an object. This sensor reads from 2cm to 400cm (0.8inch to 157inch) with an accuracy of 0.3cm (0.1inches), which is good for most hobbyist projects. In addition, this particular module comes with ultrasonic transmitter and receiver modules.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1.2 HC-SR04 Ultrasonic Sensor Technical Data<\/h2>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td>Power Supply<\/td><td class=\"has-text-align-center\" data-align=\"center\">5V DC<\/td><\/tr><tr><td>Working Current<\/td><td class=\"has-text-align-center\" data-align=\"center\">15mA<\/td><\/tr><tr><td>Working Frequency<\/td><td class=\"has-text-align-center\" data-align=\"center\">40KHz<\/td><\/tr><tr><td>Maximum Range<\/td><td class=\"has-text-align-center\" data-align=\"center\">4m<\/td><\/tr><tr><td>Minimum Range <\/td><td class=\"has-text-align-center\" data-align=\"center\">2cm<\/td><\/tr><tr><td>Measuring Angle<\/td><td class=\"has-text-align-center\" data-align=\"center\">15<sup>o<\/sup><\/td><\/tr><tr><td>Resolution<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.3cm<\/td><\/tr><tr><td>Trigger Input Signal<\/td><td class=\"has-text-align-center\" data-align=\"center\">10uS TTL Pulse<\/td><\/tr><tr><td>Echo Output Signal<\/td><td class=\"has-text-align-center\" data-align=\"center\">TTL pulse proportional to the distance range<\/td><\/tr><\/tbody><\/table><figcaption>HC-SR04 Technical Data<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">1.3 How does Ultrasonic work<\/h2>\n\n\n\n<p>The Ultrasonic uses sonar to determine the distance from the sensor and the object. This particular sensor works as following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>When a trigger signal is received, an 8 burst of 40KHz is sent.<\/li><li>Those bursts are traveled through the air to hit an object an return to to the sensor.<\/li><li>Then the sensor and sends a pulse which its time is proportional to the distance.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"484\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-9.29.18-AM-1024x484.png\" alt=\"\" class=\"wp-image-181\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-9.29.18-AM-1024x484.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-9.29.18-AM-300x142.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-9.29.18-AM-768x363.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-9.29.18-AM-1536x726.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-9.29.18-AM-2048x968.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-9.29.18-AM-1150x544.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-9.29.18-AM-750x355.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-9.29.18-AM-400x189.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-9.29.18-AM-250x118.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Timing diagram<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"453\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/how-ultrasonic-sensor-works-01-1.png\" alt=\"\" class=\"wp-image-182\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/how-ultrasonic-sensor-works-01-1.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/how-ultrasonic-sensor-works-01-1-300x181.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/how-ultrasonic-sensor-works-01-1-400x242.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/how-ultrasonic-sensor-works-01-1-250x151.png 250w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><figcaption>Sensor operation <\/figcaption><\/figure>\n\n\n\n<p>Taking into account the sound\u2019s velocity in the air and the travel time (time passed since the transmission and reception of the signal) we can calculate the distance to an object. Here\u2019s the formula:<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-white-background-color has-text-color has-background\">distance to an object = ((speed of sound in the air)*time)\/2<\/p>\n\n\n\n<p>speed of sound in the air at 20\u00baC  =&nbsp;<strong>343m\/s<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Required Parts<\/h2>\n\n\n\n<p>We will be using the following parts:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>STM32F411RE Nucleo-64<\/li><li>HC-SR04 Ultrasonic Sensor.<\/li><li>Hookup wires<\/li><\/ul>\n\n\n\n<p>We will be using keil uVision to program the STM32<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Schematic<\/h2>\n\n\n\n<p>The wiring of HC-SR04 with STM32 is shown as below. The Vcc of the HC-SR04 is connected to the 5V of the Nucleo board, GND to GND of the Nucleo board, Trig to A0 (PA0) and echo to A1 (PA1).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"861\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-10.01.54-AM-1024x861.png\" alt=\"\" class=\"wp-image-185\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-10.01.54-AM-1024x861.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-10.01.54-AM-300x252.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-10.01.54-AM-768x646.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-10.01.54-AM-1536x1291.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-10.01.54-AM-1150x967.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-10.01.54-AM-750x631.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-10.01.54-AM-400x336.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-10.01.54-AM-250x210.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-10.01.54-AM.png 2034w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>HC-SR04 Connection with STM32<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/IMG_5916-768x1024.jpg\" alt=\"\" class=\"wp-image-187\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/IMG_5916-768x1024.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/IMG_5916-225x300.jpg 225w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/IMG_5916-1152x1536.jpg 1152w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/IMG_5916-1536x2048.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/IMG_5916-1150x1533.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/IMG_5916-750x1000.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/IMG_5916-400x533.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/IMG_5916-250x333.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/IMG_5916-scaled.jpg 1920w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">4. Code<\/h2>\n\n\n\n<p>The following code is the code which has been used in this article.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csrc&quot;,&quot;theme&quot;:&quot;dracula&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">#include &quot;stm32f4xx.h&quot;                 \t\t\t \/\/ Device header\n\/\/macros for trigger pin\n#define Trig_high\t\tGPIOA-&gt;BSRR=GPIO_BSRR_BS_0 \t\t\t\/\/ turn on \tPA0 (trig pin)\n#define Trig_low\t\tGPIOA-&gt;BSRR=GPIO_BSRR_BR_0 \t\t\t\/\/ turn off \tPA0 (trig pin)\n\nuint32_t duration;\nfloat distance;\n\/\/prototypes of the used function\nvoid delaymS(uint32_t ms);\nvoid delayuS(uint32_t us);\nuint32_t read_echo(uint32_t timeout);\n\nint main(void)\n\n{\nRCC-&gt;AHB1ENR\t|=\tRCC_AHB1ENR_GPIOAEN; \t\t\t\t\t\t\/\/enable GPIOA Clock\nGPIOA-&gt;MODER\t|=\t(1&lt;&lt;0);   \t\t\t\t\t\t\t\t\t\/\/set PA0 to Output\n\t\n\/\/configure Timer1 to generate micorseconds delay\t\nRCC-&gt;APB2ENR |= RCC_APB2ENR_TIM1EN;  \/*Enable TIM3 clock*\/\nTIM1-&gt;PSC = 16 -1;  \/* 16 000 000 \/16 = 1000 000*\/\nTIM1-&gt;ARR = 1;  \/* 1000 000 \/1 = 1000000*\/\nTIM1-&gt;CNT =0;\nTIM1-&gt;CR1 =1;\nwhile(1)\n{\nTrig_low; \t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/turn off trig\ndelayuS(10); \t\t\t\t\t\t\t\t\t\t\t\t\t\/\/wait 4uS\nTrig_high;  \t\t\t\t\t\t\t\t\t\t\t\t\t\/\/turn on trig\ndelayuS(10); \nTrig_low;\nduration=read_echo(400000); \t\t\t\t\t\t\t\t    \/\/measure the time of echo pin\ndistance=duration\/58;\t\t\t\t\t\t\t\t\t\t\t\/\/distance=duration\/2*SOUND_SPEED\ndelaymS(1000);\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/delay for 1 second between each read\n}\n\n}\n\nvoid delaymS(uint32_t ms) \/\/delay for certain amount in milliseconds\n\t{\n\tSysTick-&gt;LOAD=16000-1;\n\tSysTick-&gt;VAL=0;\n\tSysTick-&gt;CTRL=0x5;\n\t\tfor (int i=0;i&lt;ms;i++)\n\t\t{\n\t\t\twhile(!(SysTick-&gt;CTRL &amp;0x10000)){}\n\t\t}\n\tSysTick-&gt;CTRL=0;\n\t\n\t}\n\t\nvoid delayuS(uint32_t us) \/\/delay for certain amount in microseconds\n\t{\nfor(int i =0;i&lt;us;i++){\n\t\n\t\t while(!(TIM1-&gt;SR &amp; 1)){}   \/*wait for UIF set*\/\n\t\t\t TIM1-&gt;SR &amp;= ~1;\n\t\t\t \n\t}\n\t}\n\t\nuint32_t read_echo(uint32_t timeout)\n\t{\n\t\tuint32_t duration;\n\twhile(!((GPIOA-&gt;IDR)&amp;GPIO_IDR_ID1)){duration++;delayuS(1);\n\tif(duration&gt;timeout){return 0;}\n\t}\n\tduration=0;\nwhile((GPIOA-&gt;IDR&amp;GPIO_IDR_ID1)){duration++;delayuS(1);if(duration&gt;timeout){return 0;} }\n\treturn duration;\n\t}\n\t<\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Results<\/h2>\n\n\n\n<p>From debugging session in keil uVision, you can see the variable after they being added to watch windows<\/p>\n\n\n\n<p>to add a variable open a debug session and select the variable and follow these steps:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"759\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.23.21-AM-1024x759.png\" alt=\"\" class=\"wp-image-192\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.23.21-AM-1024x759.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.23.21-AM-300x222.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.23.21-AM-768x569.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.23.21-AM-1536x1139.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.23.21-AM-2048x1518.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.23.21-AM-1150x853.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.23.21-AM-750x556.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.23.21-AM-400x297.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.23.21-AM-250x185.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>here is the results, the distance can be measured using ultrasonic sensor. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"282\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.24.55-AM-1024x282.png\" alt=\"\" class=\"wp-image-191\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.24.55-AM-1024x282.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.24.55-AM-300x83.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.24.55-AM-768x211.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.24.55-AM-1536x423.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.24.55-AM-2048x563.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.24.55-AM-1150x316.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.24.55-AM-750x206.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.24.55-AM-400x110.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/Screen-Shot-2021-07-23-at-11.24.55-AM-250x69.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>This guide shows how to use the HC-SR04 Ultrasonic Sensor with the STM32F411 Nucleo-64 board using only registers level with GPIO polling mode. The ultrasonic sensor uses sonar to determine the distance to an object. We\u2019ll show you how to wire the sensor to the STM32F411 Nucleo-64 and provide an example application to determine the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,11,12],"tags":[],"class_list":["post-172","post","type-post","status-publish","format-standard","hentry","category-embedded-systems","category-peripheral-drivers","category-stm32"],"_links":{"self":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/172"}],"collection":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=172"}],"version-history":[{"count":16,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/172\/revisions"}],"predecessor-version":[{"id":199,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/172\/revisions\/199"}],"wp:attachment":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=172"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}