{"id":226,"date":"2018-03-23T12:21:28","date_gmt":"2018-03-23T09:21:28","guid":{"rendered":"http:\/\/itay.mobi\/blog\/?p=226"},"modified":"2021-01-09T13:39:14","modified_gmt":"2021-01-09T10:39:14","slug":"diy-usb-media-dial","status":"publish","type":"post","link":"https:\/\/itay.cc\/?p=226","title":{"rendered":"Do It Yourself &#8211; a USB Media Dial"},"content":{"rendered":"<p>Recently some Media Dial project popped out to my Facebook feed.<\/p>\n<p>It seems pretty cool project to built, but I couldn&#8217;t fabricate the files needed in their instructions.<br \/>\nMoreover, they used some expansive microcontrollers and the total build was way above $5.<\/p>\n<p>I decided to challenge myself and build a cheap version which I could print in my 3D printer and the<br \/>\ntotal cost would be around $5.<\/p>\n<h2>The Components<\/h2>\n<p>These are the main components I used:<\/p>\n<table style=\"height: 115px; width: 436px;\">\n<tbody>\n<tr>\n<td style=\"width: 359px;\"><strong>Name<\/strong><\/td>\n<td style=\"width: 10px; text-align: center;\"><strong>Quantity<\/strong><\/td>\n<td style=\"width: 228px; text-align: center;\"><strong>Price (USD)<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 359px;\"><a href=\"http:\/\/s.click.aliexpress.com\/e\/mMVVjUV\">Digispark Clone<\/a><\/td>\n<td style=\"width: 10px; text-align: center;\">1<\/td>\n<td style=\"width: 228px; text-align: center;\">1.5<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 359px;\">\n<p class=\"product-name\" data-spm-anchor-id=\"2114.10010108.1000016.i0.216a10e2OJ36Lc\"><a href=\"http:\/\/s.click.aliexpress.com\/e\/VVjmAuj\">WS2812 Ring\u00a0(with 16 leds)<\/a><\/p>\n<\/td>\n<td style=\"width: 10px; text-align: center;\">1<\/td>\n<td style=\"width: 228px; text-align: center;\">2.79<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 359px;\">\n<p data-spm-anchor-id=\"2114.10010108.1000016.i0.3f69128dTye95M\"><a href=\"http:\/\/s.click.aliexpress.com\/e\/eEMVjqn\">Rotary encoder<\/a><\/p>\n<\/td>\n<td style=\"width: 10px; text-align: center;\">1<\/td>\n<td style=\"width: 228px; text-align: center;\">1.72<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a href=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5531.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-230 size-large\" src=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5531-1024x494.jpg\" alt=\"\" width=\"700\" height=\"338\" srcset=\"https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5531-1024x494.jpg 1024w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5531-300x145.jpg 300w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5531-768x370.jpg 768w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5531.jpg 2048w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\n<p>The microcontroller I choose is the ATtiny85. With few tweaks it fits perfectly with me needs.<br \/>\nI bought a Digispark clone board. It is very small and has a micro usb connector which connects to pins PB3 and PB4 of the ATtiny .<br \/>\nThis board is able to emulate HID device with the Digispark libraries.<\/p>\n<p>The LED ring is not a must, but it can add some nice effects when I turn the dial or press the button.<br \/>\nThe WS2812 is an addressable led, so we only need 1 gpio from the ATtiny to control all the 16 leds.<br \/>\nDigispark provides a version of the Adafruit Nexopixel library to the Digispark boards.<\/p>\n<p>The encoder is the obvious choice for detecting the direction of the wheel and also to counts steps.<br \/>\nIt also has a button and I can add more features with a button click or double clicks.<\/p>\n<h2>Modifying the Digispark<\/h2>\n<p>To use the Digispark board from the areduino IDE, I needed to add it with its libraries to the Arduino board manager.<br \/>\nHere is a quick guide from their website:<br \/>\n<a href=\"https:\/\/digistump.com\/wiki\/digispark\/tutorials\/connecting\">https:\/\/digistump.com\/wiki\/digispark\/tutorials\/connecting<\/a><\/p>\n<p><strong>TL;DR<\/strong> &#8211; <span style=\"text-decoration: underline;\">Board Manager URL:<\/span>\u00a0 \u00a0 http:\/\/digistump.com\/package_digistump_index.json<\/p>\n<p>I also need to make few tweaks to the board as I mentions earlier:<\/p>\n<ul style=\"list-style-type: disc;\">\n<li>\u00a0Change the fuses so PB5 won&#8217;t reset the board (this is the default state). I need all the IO of the ATtiny85<\/li>\n<li>Remove the LED from the board (it will interfere with the reset of the components)<\/li>\n<\/ul>\n<p>To change the fuse, I used USBASP V2.0 I had laying around.<br \/>\nThis is how I connected the IO to the USBASP:<\/p>\n<p>PB0 &#8211; MOSI<br \/>\nPB1 &#8211; MISO<br \/>\nPB2 &#8211; SCK<br \/>\nPB5 &#8211; RESET<br \/>\nVCC to 5V, and of course the grounds.<\/p>\n<p>Then I used &#8216;avrdude&#8217; to check if everything is connected and responding, and the current<br \/>\nfuse settings with the command: (the path might be different in other systems)<\/p>\n<pre class=\"theme:github lang:default decode:true\">C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\\bin&gt;avrdude.exe -C \"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\/etc\/avrdude.conf\" -c usbasp -p attiny85 -n\n<\/pre>\n<p>I got this respond:<\/p>\n<pre class=\"theme:github lang:default decode:true\">avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.\navrdude.exe: AVR device initialized and ready to accept instructions\n\nReading | ################################################## | 100% 0.03s\n\navrdude.exe: Device signature = 0x1e930b (probably t85)\n\navrdude.exe: safemode: Fuses OK (E:FE, H:DD, L:E1)\n\navrdude.exe done.  Thank you.<\/pre>\n<p>Everything is good.<\/p>\n<p>I entered the fuse values in this calculator:\u00a0 <a href=\"http:\/\/www.engbedded.com\/fusecalc\/\">http:\/\/www.engbedded.com\/fusecalc\/<\/a><br \/>\nand checked the &#8216;RSTDISBL&#8217; (external reset disabled) to get the new fuse values.<\/p>\n<p>Only the HIGH fuse changed, so I only change it with this command: (hfuse &#8211; HIGH, w &#8211; WRITE, 0x5F &#8211; Fuse Value, m Program )<\/p>\n<pre class=\"theme:github lang:default decode:true\">C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\\bin&gt;avrdude.exe -C \"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\/etc\/avrdude.conf\" -c usbasp -p attiny85  -U hfuse:w:0x5F:m<\/pre>\n<p>and this is the respond:<\/p>\n<pre class=\"theme:github lang:c decode:true crayon-selected\">avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.\navrdude.exe: AVR device initialized and ready to accept instructions\n\nReading | ################################################## | 100% 0.03s\n\navrdude.exe: Device signature = 0x1e930b (probably t85)\navrdude.exe: reading input file \"0x5F\"\navrdude.exe: writing hfuse (1 bytes):\n\nWriting | ################################################## | 100% 0.02s\n\navrdude.exe: 1 bytes of hfuse written\navrdude.exe: verifying hfuse memory against 0x5F:\navrdude.exe: load data hfuse data from input file 0x5F:\navrdude.exe: input file 0x5F contains 1 bytes\navrdude.exe: reading on-chip hfuse data:\n\nReading | ################################################## | 100% 0.01s\n\navrdude.exe: verifying ...\navrdude.exe: 1 bytes of hfuse verified\n\navrdude.exe: safemode: Fuses OK (E:FE, H:5F, L:E1)\n\navrdude.exe done.  Thank you.<\/pre>\n<p>Perfect.<\/p>\n<p>Now for the LED, I just remove the resistor connected to PB1.<br \/>\nIt&#8217;s the small resistor between the ATtiny85 and the voltage regulator.<br \/>\n<a href=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/digispark-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-228\" src=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/digispark-1.png\" alt=\"\" width=\"285\" height=\"330\" srcset=\"https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/digispark-1.png 403w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/digispark-1-259x300.png 259w\" sizes=\"auto, (max-width: 285px) 100vw, 285px\" \/><\/a><\/p>\n<h2>Designing and Printing<\/h2>\n<p>The design I made (using Fusion 360) contains 3 main parts:<\/p>\n<ul style=\"list-style-type: disc;\">\n<li>The bottom part where the Digispark sits<\/li>\n<li>The center part where the Encoder and the led ring sits<\/li>\n<li>The top part that will be turned to control the dial.\n<ul style=\"list-style-type: disc;\">\n<li>The top part is made from 3 pieces, because I wanted to have<br \/>\na transparent ring for viewing the leds.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><a href=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/MEDIA_DIAL.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-242 size-large\" src=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/MEDIA_DIAL-1024x957.png\" alt=\"\" width=\"700\" height=\"654\" srcset=\"https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/MEDIA_DIAL-1024x957.png 1024w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/MEDIA_DIAL-300x280.png 300w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/MEDIA_DIAL-768x718.png 768w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/MEDIA_DIAL.png 1161w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-241 size-large\" src=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/FULL_SIDE-1024x681.png\" alt=\"\" width=\"700\" height=\"466\" srcset=\"https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/FULL_SIDE-1024x681.png 1024w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/FULL_SIDE-300x199.png 300w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/FULL_SIDE-768x510.png 768w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/FULL_SIDE.png 1598w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/p>\n<p>I printed all the parts in a black PLA, and the top transparent ring in a clear PLA.<br \/>\nAfter few hours in my 3D printer (I used the CR-10 Mini), this is what came up:<\/p>\n<p><a href=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5549.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-232 size-large\" src=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5549-1024x942.jpg\" alt=\"\" width=\"700\" height=\"644\" srcset=\"https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5549-1024x942.jpg 1024w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5549-300x276.jpg 300w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5549-768x706.jpg 768w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5549.jpg 2048w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\n<h2>Assembling<\/h2>\n<p>First I assembled the top part. I inserted the transparent ring to the top part body (and added few drops of glue),<br \/>\nand then did the same thing with the center part.<\/p>\n<p><a href=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5575-1.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-265 size-medium\" src=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5575-1-300x254.jpg\" alt=\"\" width=\"300\" height=\"254\" srcset=\"https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5575-1-300x254.jpg 300w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5575-1-768x651.jpg 768w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5575-1-1024x868.jpg 1024w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5575-1.jpg 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-266 size-medium\" src=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5583-1-300x288.jpg\" alt=\"\" width=\"300\" height=\"288\" srcset=\"https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5583-1-300x288.jpg 300w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5583-1-768x737.jpg 768w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5583-1-1024x982.jpg 1024w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5583-1.jpg 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Then I solders 3 wires to the led ring where is says\u00a0 V+, IN and G,<br \/>\nand\u00a0I passed them through the holes in the middle parts.<\/p>\n<p>I also solders wires to all the encoders legs and fixed it to the center part as well.<\/p>\n<p><a href=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5591-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-269 size-large\" src=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5591-1-1024x850.jpg\" alt=\"\" width=\"700\" height=\"581\" srcset=\"https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5591-1-1024x850.jpg 1024w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5591-1-300x249.jpg 300w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5591-1-768x637.jpg 768w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5591-1.jpg 2048w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a>Now I solders the wires to the Digispark board as the following scheme:<a href=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/Scheme.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-273\" src=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/Scheme-1024x984.png\" alt=\"\" width=\"700\" height=\"673\" srcset=\"https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/Scheme-1024x984.png 1024w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/Scheme-300x288.png 300w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/Scheme-768x738.png 768w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/Scheme.png 1279w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\n<p>I used the ATtiny internal pullups for the encoder A and B, and also for the button so no external pullups resistors are needed.<\/p>\n<p>Now I connected the Digispark board to the bottom part with two 3mm M3 screws, and connected the middle part to the bottom part with two long M3 screw.<\/p>\n<p><a href=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5640.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-239 size-medium\" src=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5640-300x256.jpg\" alt=\"\" width=\"300\" height=\"256\" srcset=\"https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5640-300x256.jpg 300w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5640-768x656.jpg 768w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5640-1024x874.jpg 1024w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5640.jpg 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5623.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-238\" src=\"http:\/\/itay.mobi\/blog\/wp-content\/uploads\/2018\/03\/DSC_5623-300x268.jpg\" alt=\"\" width=\"300\" height=\"268\" srcset=\"https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5623-300x268.jpg 300w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5623-768x686.jpg 768w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5623-1024x915.jpg 1024w, https:\/\/itay.cc\/wp-content\/uploads\/2018\/03\/DSC_5623.jpg 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>At the bottom part, I room for 8mm anti-slip stickers, but it&#8217;s not a must.<\/p>\n<h2>Code<\/h2>\n<p>I used the <a href=\"https:\/\/github.com\/digistump\/DigisparkArduinoIntegration\/tree\/master\/libraries\/DigisparkKeyboard\">Digispark library<\/a> for the HID emulation of keyboard (or mouse, I used only keyboard) and the Adafruit library for the Neopixels to control the leds.<br \/>\nI wrote one function that handles the encoder (check for changes), and one function that handles the button pressings.<br \/>\nThose functions are called constantly (polling, no interrupts here) and if there is a change &#8211; it calls one of the assigned operation functions.<br \/>\nThere is function for button click, double click, scrolling the wheel &#8216;Down&#8217; or &#8216;Up&#8217;.<\/p>\n<p>This is a very fast draft I made, but it&#8217;s easy to continue of change it from here.<\/p>\n<p>Every encoder change will turn the next led in the ring (or the previews, depend on the direction) with Blue color.<br \/>\nOne click on the button will turn 4 leds to Green, and double click to Red.<\/p>\n<p>The first use I came up for this Media Dial is for Lightroom.<br \/>\nRotating the dial with increase of decrease the slider values.<br \/>\nOne button click will cycle through the next panel slider, and double click will cycle through the previous.<\/p>\n<p>You can see the final result here:<\/p>\n<p><iframe loading=\"lazy\" src=\"\/\/www.youtube.com\/embed\/78hvaO0usJ4\" width=\"560\" height=\"314\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>You can find the STL for the 3D files and the source code in my gitlab repository:<\/p>\n<p><a href=\"https:\/\/gitlab.com\/itaysp\/Media-Dial\">https:\/\/gitlab.com\/itaysp\/Media-Dial<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently some Media Dial project popped out to my Facebook feed. It seems pretty cool project to built, but I couldn&#8217;t fabricate the files needed in their instructions. Moreover, they used some expansive microcontrollers and the total build was way above $5. I decided to challenge myself and build a cheap version which I could &#8230;<br \/><a class=\"btn btn-primary btn-sm read-more\" href=\"https:\/\/itay.cc\/?p=226\" role=\"button\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[36,41,42,39,40,31,38,32,37,33,34,35,27],"class_list":["post-226","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-arduino","tag-avr","tag-avr-fuse","tag-digispark","tag-digispark-clone","tag-diy","tag-led-ring","tag-media-dial","tag-rotary-encoder","tag-usb-dial","tag-usb-hid","tag-ws2812","tag-ws2812b","row panel panel-primary"],"_links":{"self":[{"href":"https:\/\/itay.cc\/index.php?rest_route=\/wp\/v2\/posts\/226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itay.cc\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itay.cc\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itay.cc\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itay.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=226"}],"version-history":[{"count":37,"href":"https:\/\/itay.cc\/index.php?rest_route=\/wp\/v2\/posts\/226\/revisions"}],"predecessor-version":[{"id":400,"href":"https:\/\/itay.cc\/index.php?rest_route=\/wp\/v2\/posts\/226\/revisions\/400"}],"wp:attachment":[{"href":"https:\/\/itay.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itay.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itay.cc\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}