{"id":1140,"date":"2021-06-11T22:50:54","date_gmt":"2021-06-12T02:50:54","guid":{"rendered":"https:\/\/dc540.org\/xxx\/?p=1140"},"modified":"2021-06-12T08:35:07","modified_gmt":"2021-06-12T12:35:07","slug":"raspberry-pi-pico-wireless-communication","status":"publish","type":"post","link":"https:\/\/dc540.org\/xxx\/2021\/06\/raspberry-pi-pico-wireless-communication\/","title":{"rendered":"Raspberry Pi Pico wireless communication"},"content":{"rendered":"\n<p>So this thing we&#8217;re working on, you know. This is the second or third iteration of an idea, and it finally got enough momentum to, you know, be something. Or become something.<\/p>\n\n\n\n<p>Originally, we were going to do it on maybe an ESP8266. Then maybe an ESP32. Then the Pico came out, and we&#8217;re like, fuck it, let&#8217;s ride the wave of momentum of this new awesome microcontroller and see what we can do with it.<\/p>\n\n\n\n<p>Well, it&#8217;s amazing, and awesome, and wonderful, BUT it lacks wireless communication.<\/p>\n\n\n\n<p>And we started looking into what it would take.<\/p>\n\n\n\n<p>And found a couple of articles that piggyback an ESP32 to handle the comms.<\/p>\n\n\n\n<p>Meh. Nah. Number 1, if we wanted an ESP32, we&#8217;d just use an ESP32. Number 2, we don&#8217;t need, or even want, full wifi. We just want communication between units. For this thing of ours.<\/p>\n\n\n\n<p>Then I saw that I can get this model of the NRF24L01+ for just a buck a piece.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"763\" src=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-11-at-10.21.09-PM-1024x763.png\" alt=\"\" class=\"wp-image-1141\" srcset=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-11-at-10.21.09-PM-1024x763.png 1024w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-11-at-10.21.09-PM-350x261.png 350w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-11-at-10.21.09-PM-300x224.png 300w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-11-at-10.21.09-PM-768x572.png 768w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-11-at-10.21.09-PM-1536x1144.png 1536w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-11-at-10.21.09-PM.png 1600w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Like the Pico, it has those glorious edges that can either be thru-hole (albeit half pitch) or surface-mount. I love that, you all know I love that. I love that you can mount it on a board and the other side of the board can be virtually unmolested.<\/p>\n\n\n\n<p>So I picked up a few for testing.<\/p>\n\n\n\n<p>And dang, they&#8217;re small. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223548083-768x1024.jpg\" alt=\"\" class=\"wp-image-1142\" srcset=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223548083-768x1024.jpg 768w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223548083-scaled-350x467.jpg 350w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223548083-225x300.jpg 225w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223548083-1152x1536.jpg 1152w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223548083-1536x2048.jpg 1536w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223548083-scaled.jpg 1920w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>And this half-pitch bullshit presents a problem for traditional breadboarding.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223908431-768x1024.jpg\" alt=\"\" class=\"wp-image-1143\" srcset=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223908431-768x1024.jpg 768w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223908431-scaled-350x467.jpg 350w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223908431-225x300.jpg 225w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223908431-1152x1536.jpg 1152w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223908431-1536x2048.jpg 1536w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210609_223908431-scaled.jpg 1920w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Fortunately, I have some SMD breakout boards that fit this perfectly. Let&#8217;s put a couple together for testing.<\/p>\n\n\n\n<div class=\"wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular\"><div class=\"tiled-gallery__gallery\"><div class=\"tiled-gallery__row\"><div class=\"tiled-gallery__col\" style=\"flex-basis:25.00000%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" srcset=\"https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172258670-scaled.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172258670-scaled.jpg?strip=info&#038;w=900&#038;ssl=1 900w,https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172258670-scaled.jpg?strip=info&#038;w=1200&#038;ssl=1 1200w,https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172258670-scaled.jpg?strip=info&#038;w=1500&#038;ssl=1 1500w,https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172258670-scaled.jpg?strip=info&#038;w=1800&#038;ssl=1 1800w,https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172258670-scaled.jpg?strip=info&#038;w=1920&#038;ssl=1 1920w\" alt=\"\" data-height=\"2560\" data-id=\"1144\" data-link=\"https:\/\/dc540.org\/xxx\/?attachment_id=1144\" data-url=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172258670-scaled.jpg\" data-width=\"1920\" src=\"https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172258670-scaled.jpg?ssl=1\" data-amp-layout=\"responsive\"\/><\/figure><\/div><div class=\"tiled-gallery__col\" style=\"flex-basis:25.00000%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" srcset=\"https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172328937-scaled.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172328937-scaled.jpg?strip=info&#038;w=900&#038;ssl=1 900w,https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172328937-scaled.jpg?strip=info&#038;w=1200&#038;ssl=1 1200w,https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172328937-scaled.jpg?strip=info&#038;w=1500&#038;ssl=1 1500w,https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172328937-scaled.jpg?strip=info&#038;w=1800&#038;ssl=1 1800w,https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172328937-scaled.jpg?strip=info&#038;w=1920&#038;ssl=1 1920w\" alt=\"\" data-height=\"2560\" data-id=\"1145\" data-link=\"https:\/\/dc540.org\/xxx\/?attachment_id=1145\" data-url=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172328937-scaled.jpg\" data-width=\"1920\" src=\"https:\/\/i1.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172328937-scaled.jpg?ssl=1\" data-amp-layout=\"responsive\"\/><\/figure><\/div><div class=\"tiled-gallery__col\" style=\"flex-basis:25.00000%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" srcset=\"https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172624838-scaled.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172624838-scaled.jpg?strip=info&#038;w=900&#038;ssl=1 900w,https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172624838-scaled.jpg?strip=info&#038;w=1200&#038;ssl=1 1200w,https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172624838-scaled.jpg?strip=info&#038;w=1500&#038;ssl=1 1500w,https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172624838-scaled.jpg?strip=info&#038;w=1800&#038;ssl=1 1800w,https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172624838-scaled.jpg?strip=info&#038;w=1920&#038;ssl=1 1920w\" alt=\"\" data-height=\"2560\" data-id=\"1146\" data-link=\"https:\/\/dc540.org\/xxx\/?attachment_id=1146\" data-url=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172624838-scaled.jpg\" data-width=\"1920\" src=\"https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_172624838-scaled.jpg?ssl=1\" data-amp-layout=\"responsive\"\/><\/figure><\/div><div class=\"tiled-gallery__col\" style=\"flex-basis:25.00000%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" srcset=\"https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_173022608-scaled.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_173022608-scaled.jpg?strip=info&#038;w=900&#038;ssl=1 900w,https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_173022608-scaled.jpg?strip=info&#038;w=1200&#038;ssl=1 1200w,https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_173022608-scaled.jpg?strip=info&#038;w=1500&#038;ssl=1 1500w,https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_173022608-scaled.jpg?strip=info&#038;w=1800&#038;ssl=1 1800w,https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_173022608-scaled.jpg?strip=info&#038;w=1920&#038;ssl=1 1920w\" alt=\"\" data-height=\"2560\" data-id=\"1147\" data-link=\"https:\/\/dc540.org\/xxx\/?attachment_id=1147\" data-url=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_173022608-scaled.jpg\" data-width=\"1920\" src=\"https:\/\/i2.wp.com\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_173022608-scaled.jpg?ssl=1\" data-amp-layout=\"responsive\"\/><\/figure><\/div><\/div><\/div><\/div>\n\n\n\n<p>OK, now that I can breadboard this, let&#8217;s find some software for it.<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/micropython\/micropython\/tree\/master\/drivers\/nrf24l01\" data-type=\"URL\" data-id=\"https:\/\/github.com\/micropython\/micropython\/tree\/master\/drivers\/nrf24l01\">NRF24L01 drivers for Micropython<\/a><\/p>\n\n\n\n<p>These drivers won&#8217;t recognize the Raspberry Pi Pico without modification. You need to add a configuration line in nrf24l01test.py:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if usys.platform == \"pyboard\":\n    cfg = {\"spi\": 2, \"miso\": \"Y7\", \"mosi\": \"Y8\", \"sck\": \"Y6\", \"csn\": \"Y5\", \"ce\": \"Y4\"}\nelif usys.platform == \"esp8266\":  # Hardware SPI\n    cfg = {\"spi\": 1, \"miso\": 12, \"mosi\": 13, \"sck\": 14, \"csn\": 4, \"ce\": 5}\nelif usys.platform == \"esp32\":  # Software SPI\n    cfg = {\"spi\": -1, \"miso\": 32, \"mosi\": 33, \"sck\": 25, \"csn\": 26, \"ce\": 27} \nelse:\n    raise ValueError(\"Unsupported platform {}\".format(usys.platform))<\/code><\/pre>\n\n\n\n<p>Just add another elif stanza: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>elif usys.platform == \"rp2\": #Pico\n    cfg = {\"spi\": 0, \"miso\": 4, \"mosi\": 7, \"sck\": 6, \"csn\": 14, \"ce\": 17} <\/code><\/pre>\n\n\n\n<p>and connect the appropriate pins on your Pico to the correct pins on the NRF24L01+:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"640\" src=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/nrf24l01pinout.jpeg\" alt=\"\" class=\"wp-image-1149\" srcset=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/nrf24l01pinout.jpeg 640w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/nrf24l01pinout-250x250.jpeg 250w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/nrf24l01pinout-100x100.jpeg 100w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/nrf24l01pinout-350x350.jpeg 350w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/nrf24l01pinout-300x300.jpeg 300w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/nrf24l01pinout-150x150.jpeg 150w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>So I did all this, and fixed the connections so that I wasn&#8217;t getting hardware failures. I did it twice, because the example code has a master function and a slave function. Yes, I know, these are now outdated terms. Maybe someone should tell them to update it. <\/p>\n\n\n\n<p>Anyhow, nrf24l01test.master() broadcasts a packet with the milliseconds, and wait 250ms for a response. nrf24l01test.slave() will listen for those packets, and if one is received, send a response.  I ran it, excitedly &#8212; one pico\/nrf24l01 assembly running nrf24l01test.slave() and another running nrf24l01test.master()&#8230; and&#8230;<\/p>\n\n\n\n<p>Nothing. Response timeout. Consistently. So I googled a bit, and found that with some devices, a capacitor is needed &#8220;to smooth the current.&#8221; Some docs say 10uf, others say 100uf. I found that 10uf cut the failures to about half, and 100uf eliminated the failures. With a 100uf capacitor between VDD and GND on the transceiver, responses come back steadily, even if I take the sender into another room, 30 feet away, even to a different floor of the house, with walls in between. I&#8217;m impressed.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sending: 2802292 2\ngot response: 2802292 (delay 40 ms)\nsending: 2802591 4\ngot response: 2802591 (delay 34 ms)\nsending: 2802886 8\ngot response: 2802886 (delay 35 ms)\nsending: 2803177 1\ngot response: 2803177 (delay 39 ms)\nsending: 2803475 2\ngot response: 2803475 (delay 35 ms)\nsending: 2803770 4\ngot response: 2803770 (delay 35 ms)\nsending: 2804065 8\ngot response: 2804065 (delay 35 ms)\nsending: 2804360 1\ngot response: 2804360 (delay 35 ms)\nsending: 2804656 2\ngot response: 2804656 (delay 40 ms)\nsending: 2804957 4\ngot response: 2804957 (delay 45 ms)\nsending: 2805260 8\ngot response: 2805260 (delay 37 ms)\nsending: 2805558 1\ngot response: 2805558 (delay 38 ms)\nsending: 2805853 2\ngot response: 2805853 (delay 42 ms)\nsending: 2806153 4\ngot response: 2806153 (delay 35 ms)\nsending: 2806449 8\ngot response: 2806449 (delay 37 ms)\nmaster finished sending; successes=16, failures=0<\/code><\/pre>\n\n\n\n<p>Interesting info: I had so much trouble finding a KiCad symbol and footprint for this device that I started to build my own. But then I found one by accident in the <a href=\"https:\/\/github.com\/mysensors-kicad\">mysensors<\/a> repo. Important note: Pay attention to the symbol on this one. The symbol as provided in mysensors has VCC on pin 2 and GND on pin 1, but the units I received have VCC on pin 1 and GND on pin 2. I suspect that&#8217;s the reason for one review of the unit I ordered stating that the pinout was nonstandard. I don&#8217;t know what&#8217;s official and standard, but the pinout on the units I received match the photo above, so maybe mysensors is wrong, or maybe there is no standard. Just be aware so that you don&#8217;t smoke your transceivers.<\/p>\n\n\n\n<p>Update: LOL. I take it back about the pin 1 vs 2 confusion. Look what they did in the footprint!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"662\" height=\"954\" src=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-12-at-8.34.16-AM.png\" alt=\"\" class=\"wp-image-1155\" srcset=\"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-12-at-8.34.16-AM.png 662w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-12-at-8.34.16-AM-350x504.png 350w, https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-12-at-8.34.16-AM-208x300.png 208w\" sizes=\"auto, (max-width: 662px) 100vw, 662px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>So this thing we&#8217;re working on, you know. This is the second or third iteration of an idea, and it finally got enough momentum to, you know, be something. Or &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/dc540.org\/xxx\/2021\/06\/raspberry-pi-pico-wireless-communication\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Raspberry Pi Pico wireless communication&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1148,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3,5],"tags":[],"class_list":["post-1140","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-badges","category-hardware"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/dc540.org\/xxx\/wp-content\/uploads\/2021\/06\/PXL_20210611_235511040-scaled.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dc540.org\/xxx\/wp-json\/wp\/v2\/posts\/1140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dc540.org\/xxx\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dc540.org\/xxx\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dc540.org\/xxx\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dc540.org\/xxx\/wp-json\/wp\/v2\/comments?post=1140"}],"version-history":[{"count":4,"href":"https:\/\/dc540.org\/xxx\/wp-json\/wp\/v2\/posts\/1140\/revisions"}],"predecessor-version":[{"id":1156,"href":"https:\/\/dc540.org\/xxx\/wp-json\/wp\/v2\/posts\/1140\/revisions\/1156"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dc540.org\/xxx\/wp-json\/wp\/v2\/media\/1148"}],"wp:attachment":[{"href":"https:\/\/dc540.org\/xxx\/wp-json\/wp\/v2\/media?parent=1140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dc540.org\/xxx\/wp-json\/wp\/v2\/categories?post=1140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dc540.org\/xxx\/wp-json\/wp\/v2\/tags?post=1140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}