{"id":3800,"date":"2025-09-25T12:05:45","date_gmt":"2025-09-25T12:05:45","guid":{"rendered":"https:\/\/blog.embeddedexpert.io\/?p=3800"},"modified":"2025-09-25T12:05:49","modified_gmt":"2025-09-25T12:05:49","slug":"porting-u8g2-graphics-library-to-stm32-part5-nokia-5110-glcd-pcd8544","status":"publish","type":"post","link":"https:\/\/blog.embeddedexpert.io\/?p=3800","title":{"rendered":"Porting U8G2 Graphics Library to STM32 Part5: Nokia 5110 GLCD PCD8544"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/image-3-1024x683.png\" alt=\"\" class=\"wp-image-3801\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/image-3-1024x683.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/image-3-300x200.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/image-3-768x512.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/image-3-1150x767.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/image-3-750x500.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/image-3-400x267.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/image-3-250x167.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/image-3.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>This guide demonstrates how to interface a Nokia 5110 display based on the PCD8544 controller with an STM32 microcontroller using the U8G2 graphics library. We will cover hardware setup, library integration, and display initialization to build a solid foundation for graphical applications.<\/p>\n\n\n\n<p>In this guide, we shall cover the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Introduction.<\/li>\n\n\n\n<li>Connection.<\/li>\n\n\n\n<li>STM32CubeMX modification.<\/li>\n\n\n\n<li>Firmware modification.<\/li>\n\n\n\n<li>Results.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction:<\/h2>\n\n\n\n<p>The&nbsp;<strong>Nokia 5110 LCD<\/strong>&nbsp;is a compact, low-power&nbsp;<strong>monochrome graphic display<\/strong>&nbsp;originally used in classic Nokia mobile phones. It features a&nbsp;<strong>48 \u00d7 84 pixel resolution<\/strong>&nbsp;and uses the&nbsp;<strong>Philips\/NXP PCD8544<\/strong>&nbsp;controller, which provides a simple serial interface for controlling graphics and text. Its small size, reliability, and ease of interfacing make it a popular choice for embedded projects, hobbyists, and educational purposes.<\/p>\n\n\n\n<p>When combined with an&nbsp;<strong>STM32F4 microcontroller<\/strong>&nbsp;and the&nbsp;<strong>U8g2 graphics library<\/strong>, this display becomes a versatile tool for rendering text, shapes, and simple graphics at high speed. The STM32F4 provides ample processing power and flexible hardware SPI support, while U8g2 offers a full-featured graphics API and supports various fonts, drawing primitives, and buffering modes.<\/p>\n\n\n\n<p>Key advantages of this combination include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ease of use<\/strong>: U8g2 abstracts low-level communication and pixel management, allowing developers to focus on the graphical content.<\/li>\n\n\n\n<li><strong>High-speed graphics<\/strong>: Hardware SPI on STM32F4 allows fast updates, even when running at higher bus speeds (e.g., 6.25\u202fMHz).<\/li>\n\n\n\n<li><strong>Low power<\/strong>: The PCD8544 controller is designed for low-power operation, making it suitable for battery-powered applications.<\/li>\n\n\n\n<li><strong>Flexible drawing<\/strong>: Supports text, lines, boxes, circles, and custom bitmaps via U8g2\u2019s rich API.<\/li>\n<\/ul>\n\n\n\n<p>This guide demonstrates how to integrate the Nokia 5110 LCD with an STM32F4 board using U8g2, covering initialization, SPI configuration, and graphical operations. By following these steps, you can build responsive, visually rich interfaces for small embedded devices while leveraging the power and flexibility of the STM32 platform.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Connection:<\/h2>\n\n\n\n<p>The connection as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"732\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-26-58-1024x732.jpg\" alt=\"\" class=\"wp-image-3803\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-26-58-1024x732.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-26-58-300x215.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-26-58-768x549.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-26-58-1536x1098.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-26-58-2048x1464.jpg 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-26-58-1150x822.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-26-58-750x536.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-26-58-400x286.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-26-58-250x179.jpg 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Nokia 5110 LCD<\/td><td>STM32F411 Nucleo-64<\/td><\/tr><tr><td>RST<\/td><td>PA4 (A3 of Arduino)<\/td><\/tr><tr><td>CE<\/td><td>PA0 (A0 of Arduino)<\/td><\/tr><tr><td>DC<\/td><td>PA1 (A1 of Arduino)<\/td><\/tr><tr><td>Din<\/td><td>PA7 (D11 of Arduino)<\/td><\/tr><tr><td>CLK<\/td><td>PA5 (D13 of Arduino)<\/td><\/tr><tr><td>Vcc<\/td><td>5V<\/td><\/tr><tr><td>BL (Back Light)<\/td><td>5V<\/td><\/tr><tr><td>Gnd<\/td><td>Gnd<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">3. STM32CubeMX Modification:<\/h2>\n\n\n\n<p>From the previous project, open u8g2.ioc file as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"580\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-1024x580.jpg\" alt=\"\" class=\"wp-image-3726\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-1024x580.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-300x170.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-768x435.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-1536x871.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-1150x652.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-750x425.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-400x227.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-250x141.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35.jpg 1884w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>STM32CubeMX window shall appears.<\/p>\n\n\n\n<p>Next, head to SPI1 in connectivity and reduce to baud rate to be around 6.5MBps as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"808\" height=\"1024\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-56-56-808x1024.jpg\" alt=\"\" class=\"wp-image-3804\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-56-56-808x1024.jpg 808w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-56-56-237x300.jpg 237w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-56-56-768x973.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-56-56-1212x1536.jpg 1212w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-56-56-1150x1457.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-56-56-750x950.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-56-56-400x507.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-56-56-250x317.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-56-56.jpg 1506w\" sizes=\"(max-width: 808px) 100vw, 808px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Next, set PA0, PA1 and PA4 as GPIO Output and give them name of CS, DC and RST respectively as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1001\" height=\"1024\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-57-58-1001x1024.jpg\" alt=\"\" class=\"wp-image-3806\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-57-58-1001x1024.jpg 1001w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-57-58-293x300.jpg 293w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-57-58-768x786.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-57-58-1150x1177.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-57-58-750x768.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-57-58-400x409.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-57-58-250x256.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-25_14-57-58.jpg 1368w\" sizes=\"(max-width: 1001px) 100vw, 1001px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Save the project and this will generate the code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Firmware Modifications:<\/h2>\n\n\n\n<p>In\u00a0<strong>uint8_t<\/strong>\u00a0<strong>u8x8_gpio_and_delay<\/strong>\u00a0function, add the following switch condition:<\/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;C&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">\nuint8_t u8x8_gpio_and_delay(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr)\n{\n\tswitch(msg)\n\t{\n\t\tcase U8X8_MSG_DELAY_MILLI:\n\t\t\tHAL_Delay(arg_int);\n\t\t\tbreak;\n\t\tcase U8X8_MSG_GPIO_CS:\n\t\t\tHAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, arg_int);\n\t\t\tbreak;\n\t\tcase U8X8_MSG_GPIO_DC:\n\t\t\tHAL_GPIO_WritePin(DC_GPIO_Port, DC_Pin, arg_int);\n\t\t\tbreak;\n\t\tcase U8X8_MSG_GPIO_RESET:\n\t\t\tHAL_GPIO_WritePin(RST_GPIO_Port, RST_Pin, arg_int);\n\t\t\tbreak;\n\n\n\t}\n\treturn 1;\n}<\/pre><\/div>\n\n\n\n<p>In the user code begin 2 in the main function:<\/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;C&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">u8g2_Setup_pcd8544_84x48_f(&amp;myDisplay, U8G2_R0, u8x8_spi, u8x8_gpio_and_delay);<\/pre><\/div>\n\n\n\n<p>Since Nokia 5110 LCD uses PCD8544 driver, we shall use <strong>u8g2_Setup_pcd8544_84x48_f<\/strong> function.<\/p>\n\n\n\n<p>Next, initialize the display and wake it up as follows:<\/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;C&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">u8g2_InitDisplay(&amp;myDisplay); \/\/ send init sequence to the display, display is in sleep mode after this,\n\nu8g2_SetPowerSave(&amp;myDisplay, 0); \/\/ wake up display<\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Display string and shape:<\/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;C&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">  u8g2_ClearDisplay(&amp;myDisplay);\n  u8g2_SetFont(&amp;myDisplay, u8g2_font_helvR08_tf);\n  u8g2_DrawStr(&amp;myDisplay, 0,15,&quot;Hello world&quot;);\n  u8g2_DrawCircle(&amp;myDisplay, 60, 30, 10, U8G2_DRAW_ALL);\n  u8g2_SendBuffer(&amp;myDisplay);<\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Thats all for the firmware. Save the project and run it on your MCU as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"34\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-1024x34.jpg\" alt=\"\" class=\"wp-image-3598\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-1024x34.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-300x10.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-768x25.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-1536x51.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-2048x68.jpg 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-1150x38.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-750x25.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-400x13.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-250x8.jpg 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">5. Results:<\/h2>\n\n\n\n<p>You should get the following:<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/IMG_8149.heic\" alt=\"\" class=\"wp-image-3807\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Happy coding \ud83d\ude09<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This guide demonstrates how to interface a Nokia 5110 display based on the PCD8544 controller with an STM32 microcontroller using the U8G2 graphics library. We will cover hardware setup, library integration, and display initialization to build a solid foundation for graphical applications. In this guide, we shall cover the following: 1. Introduction: The&nbsp;Nokia 5110 LCD&nbsp;is [&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,19,11,12],"tags":[],"class_list":["post-3800","post","type-post","status-publish","format-standard","hentry","category-embedded-systems","category-lcd","category-peripheral-drivers","category-stm32"],"_links":{"self":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/3800"}],"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=3800"}],"version-history":[{"count":1,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/3800\/revisions"}],"predecessor-version":[{"id":3808,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/3800\/revisions\/3808"}],"wp:attachment":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3800"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3800"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}