{"id":95529,"date":"2020-09-30T19:42:39","date_gmt":"2020-09-30T17:42:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-podklyuchit-aczp-hx711-k-nrf52832"},"modified":"2020-09-30T19:42:39","modified_gmt":"2020-09-30T17:42:39","slug":"kak-podklyuchit-aczp-hx711-k-nrf52832","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-podklyuchit-aczp-hx711-k-nrf52832","title":{"rendered":"Come collegare l'ADC HX711 al NRF52832","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>1. Introduzione<\/h3>\n<p>\n Era necessario sviluppare un protocollo di comunicazione tra il microcontrollore nrf52832 e due sensori di peso cinesi a ponte parziale. <\/p>\n<p>La task si \u00e8 rivelata complessa a causa della mancanza di informazioni chiare. \u00c8 probabile che il problema risieda nel SDK di Nordic Semiconductor \u2014 gli aggiornamenti costanti delle versioni, alcune ridondanze e la confusione nelle funzionalit\u00e0 hanno complicato il tutto. Ho dovuto riscrivere tutto da zero. <\/p>\n<p><\/p>\n<p>Penso che questo argomento sia piuttosto attuale, considerando che questo chip dispone di uno stack BLE e un intero insieme di funzionalit\u00e0 avanzate per la modalit\u00e0 di risparmio energetico. Tuttavia, non mi addentrer\u00f2 troppo nella parte tecnica, poich\u00e9 sono gi\u00e0 stati scritti molti articoli su questo tema. <\/p>\n<p><\/p>\n<h3>2. Descrizione del progetto<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Come collegare l&#039;ADC HX711 al NRF52832\" src=\"\/wp-content\/uploads\/2020\/09\/f187e56e29b4f2e57ce0de3a5f2a0eab.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p><b>Hardware:<\/b><\/p>\n<p><\/p>\n<ul>\n<li>Adafruit Feather nRF52 Bluefruit LE (ci\u00f2 che avevo a disposizione) <\/li>\n<li>ADC HX711 <\/li>\n<li>Sensori di peso cinesi 2 pezzi (50x2 kg) <\/li>\n<li>Programmatore ST-LINK V2 <\/li>\n<\/ul>\n<p><\/p>\n<p><b>Software:<\/b><\/p>\n<p><\/p>\n<ul>\n<li>IDE VSCODE<\/li>\n<li>NRF SDK 16<\/li>\n<li>OpenOCD<\/li>\n<li>Programmatore ST-LINK V2 <\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Tutto \u00e8 contenuto in un unico progetto, dovr\u00f2 solo sistemare il Makefile (specificare la posizione del proprio SDK). <\/p>\n<p><\/p>\n<h3>3. Descrizione del codice<\/h3>\n<p><\/p>\n<p>Utilizzeremo il modulo GPIOTE per interagire con le periferiche in base all'associazione di compiti ed eventi, e il modulo PPI per trasferire dati da una periferica all'altra senza coinvolgere il processore.<\/p>\n<pre><code class=\"cpp\">ret_code_t err_code;\n   err_code = nrf_drv_gpiote_out_init(PD_SCK, &amp;config); \/\/ configurazione in uscita\n   nrf_drv_gpiote_out_config_t config = GPIOTE_CONFIG_OUT_TASK_TOGGLE(false); \/\/ commutiamo il pin per un impulso\n   err_code = nrf_drv_gpiote_out_init(PD_SCK, &amp;config); \/\/ configurazione in uscita\n<\/code><\/pre>\n<p>\nConfiguriamo la linea di sincronizzazione PD_SCL come uscita per generare impulsi della durata di 10 \u00b5s.<\/p>\n<pre><code class=\"cpp\">   nrf_drv_gpiote_in_config_t gpiote_config = GPIOTE_CONFIG_IN_SENSE_HITOLO(false); \/\/ transizione del livello da alto a basso\n   nrf_gpio_cfg_input(DOUT, NRF_GPIO_PIN_NOPULL); \/\/ ingresso senza pull-up\n   err_code = nrf_drv_gpiote_in_init(DOUT, &amp;gpiote_config, gpiote_evt_handler); <\/code><\/pre>\n<p><\/p>\n<pre><code class=\"cpp\">static void gpiote_evt_handler(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action)\n{\n    nrf_drv_gpiote_in_event_disable(DOUT); \/\/ disabilitiamo l'interruzione\n    nrf_drv_timer_enable(&amp;m_timer0); \/\/ attiviamo il timer\n}\n <\/code><\/pre>\n<p><\/p>\n<p>Configuriamo la linea dati DOUT per leggere lo stato di prontezza dell'HX711; quando \u00e8 presente un livello basso, si attiva il gestore che disattiva l'interruzione e avvia il timer per generare impulsi di sincronizzazione in uscita su PD_SCL.<\/p>\n<p><\/p>\n<pre><code class=\"cpp\"> err_code = nrf_drv_ppi_channel_alloc(&amp;m_ppi_channel1);\n   APP_ERROR_CHECK(err_code);\n   err_code = nrf_drv_ppi_channel_assign(m_ppi_channel1,                                         nrf_drv_timer_event_address_get(&amp;m_timer0, NRF_TIMER_EVENT_COMPARE0),                                           nrf_drv_gpiote_out_task_addr_get(PD_SCK)); \/\/ colleghiamo il timer all'output\n   APP_ERROR_CHECK(err_code);\n   err_code = nrf_drv_ppi_channel_enable(m_ppi_channel1); \/\/ attiviamo il canale\n   APP_ERROR_CHECK(err_code);\n   nrf_drv_gpiote_out_task_enable(PD_SCK); <\/code><\/pre>\n<p>\/\/ \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c gpiote<\/p>\n<p>Dopo di che inizializziamo il modulo PPI e commutiamo il nostro timer all'uscita PD_SCL, per generare impulsi di durata 10\u00b5s all'attivarsi dell'evento di confronto, e attiviamo anche il modulo GPIOTE.<\/p>\n<p><\/p>\n<pre><code class=\"cpp\">\nnrf_drv_timer_config_t timer_cfg = NRF_DRV_TIMER_DEFAULT_CONFIG; \/\/ di default\n   timer_cfg.frequency = NRF_TIMER_FREQ_1MHz; \/\/ impostiamo la frequenza a 1MHz\n   ret_code_t err_code = nrf_drv_timer_init(&amp;m_timer0, &amp;timer_cfg, timer0_event_handler);\n   APP_ERROR_CHECK(err_code);\n   nrf_drv_timer_extended_compare(&amp;m_timer0,\n                                  NRF_TIMER_CC_CHANNEL0,\n                                  nrf_drv_timer_us_to_ticks(&amp;m_timer0,\n                                                            10),\n                                  NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK,\n                                  true); \/\/ attivazione al confronto<\/code><\/pre>\n<p><\/p>\n<p> Inizializziamo il timer zero e il suo gestore. <\/p>\n<pre><code class=\"cpp\">  if(m_counter%2 != 0 &amp;&amp; m_counter &lt;= 48){\n       buffer &lt;&lt;= 1; \/\/ variabile dei dati letti\n        c_counter++; \/\/ contatore degli impulsi positivi\n           if(nrf_gpio_pin_read(DOUT)) buffer++; \/\/ leggiamo lo stato dell&#039;ingresso\n   }\n<\/code><\/pre>\n<p><\/p>\n<p> Le cose pi\u00f9 interessanti succedono nell'handler del timer. Il periodo degli impulsi \u00e8 di 20 \u00b5s. Siamo interessati agli impulsi dispari (sul fronte ascendente) e a condizione che il loro numero non superi 24, e gli eventi 48. Ad ogni evento dispari si legge DOUT. <\/p>\n<p><\/p>\n<p> Dal datasheet si evince che il numero di impulsi deve essere almeno 25, corrispondente a un guadagno di 128 (nel codice ho usato 25 impulsi), equivalente a 50 eventi del timer, il che indica la fine del frame di dati. <\/p>\n<p><\/p>\n<pre><code class=\"cpp\"> ++m_counter; \/\/ contatore degli eventi\nif(m_counter==50){\n      nrf_drv_timer_disable(&amp;m_timer0); \/\/ disabilitiamo il timer\n       m_simple_timer_state = SIMPLE_TIMER_STATE_STOPPED; \/\/\n       buffer = buffer ^ 0x800000;\n       hx711_stop(); \/\/ disattiviamo hx711\n       }\n   <\/code><\/pre>\n<p><\/p>\n<p> Dopo di che, disattiviamo il timer e elaboriamo i dati (secondo il datasheet) e mettiamo HX711 in modalit\u00e0 a basso consumo energetico. <\/p>\n<p><\/p>\n<pre><code class=\"cpp\">\nstatic void repeated_timer_handler(void * p_context)\n{\n   nrf_drv_gpiote_out_toggle(LED_2);\n   if(m_simple_timer_state == SIMPLE_TIMER_STATE_STOPPED){\n      hx711_start(); \/\/ attiviamo hx711\n       nrf_drv_gpiote_out_toggle(LED_1);\n       m_simple_timer_state = SIMPLE_TIMER_STATE_STARTED;\n   }\n  \n}\n\/**@brief Crea timer.\n*\/\nstatic void create_timers()\n{\n   ret_code_t err_code;\n \n   \/\/ Creazione dei timer\n   err_code = app_timer_create(&amp;m_repeated_timer_id,\n                               APP_TIMER_MODE_REPEATED,\n                               repeated_timer_handler);\n   APP_ERROR_CHECK(err_code);\n}\n<\/code><\/pre>\n<p><\/p>\n<p> Aspettiamo un evento dal timer RTC con un intervallo di 10 secondi (questo \u00e8 a vostra discrezione) e nell'handler avviamo l'HX711, attivando l'interruzione sulla linea DOUT.<\/p>\n<p>C'\u00e8 un altro punto, i log vengono emessi tramite UART (baud rate 115200, TX \u2014 pin 6, RX \u2014 pin 8) tutte le impostazioni si trovano in sdk_config.h.<\/p>\n<p><img decoding=\"async\" alt=\"Come collegare l&#039;ADC HX711 al NRF52832\" src=\"\/wp-content\/uploads\/2020\/09\/95a8f333227fe26cb8e9827b39bb6350.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3> Conclusioni<\/h3>\n<p><\/p>\n<p>Grazie a tutti per l'attenzione, spero che questo articolo sar\u00e0 utile e ridurr\u00e0 il tempo prezioso nella ricerca di soluzioni per gli sviluppatori. Voglio dire che l'approccio tecnico utilizzato da Nordic nelle proprie piattaforme \u00e8 piuttosto interessante dal punto di vista dell'efficienza energetica.<\/p>\n<p><\/p>\n<h3>P.S. <\/h3>\n<p><\/p>\n<p>Il progetto \u00e8 ancora in fase di sviluppo, quindi se questo argomento vi interessa, nel prossimo articolo cercher\u00f2 di descrivere l'algoritmo di calibrazione dei sensori di peso, nonch\u00e9 il collegamento dello stack BLE.<\/p>\n<p><\/p>\n<h3> Materiali <\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/CiochinaVitalie\/nrf52832-HX711\">Codice del progetto<\/a><\/noindex> <\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/cdn.sparkfun.com\/datasheets\/Sensors\/ForceFlex\/hx711_english.pdf\">Datasheet per l'HX711 in inglese.<\/a><\/noindex><\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.iarduino.ru\/page\/hx_711_with_tenzo\/\">Descrizione del funzionamento dei sensori di carico.<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/521244\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>1. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u041d\u0430 \u043f\u043e\u0432\u0435\u0441\u0442\u043a\u0435 \u0434\u043d\u044f \u0441\u0442\u043e\u044f\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u0430 nrf52832 \u0441 \u0434\u0432\u0443\u043c\u044f \u043f\u043e\u043b\u0443\u043c\u043e\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u043c\u0438 \u0442\u0435\u043d\u0437\u043e\u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c\u0438. \u0417\u0430\u0434\u0430\u0447\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u043a\u0430\u043a\u043e\u0439 \u2014 \u043b\u0438\u0431\u043e \u0432\u043d\u044f\u0442\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u0435\u0435, \u0447\u0442\u043e \u00ab\u043a\u043e\u0440\u0435\u043d\u044c \u0437\u043b\u0430\u00bb \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c SDK \u043e\u0442 Nordic Semiconductor \u2014 \u044d\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95530,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95529","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"1. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u041d\u0430 \u043f\u043e\u0432\u0435\u0441\u0442\u043a\u0435 \u0434\u043d\u044f \u0441\u0442\u043e\u044f\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u0430 nrf52832 \u0441 \u0434\u0432\u0443\u043c\u044f \u043f\u043e\u043b\u0443\u043c\u043e\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u043c\u0438 \u0442\u0435\u043d\u0437\u043e\u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-podklyuchit-aczp-hx711-k-nrf52832\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0410\u0426\u041f HX711 \u043a NRF52832 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"1. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u041d\u0430 \u043f\u043e\u0432\u0435\u0441\u0442\u043a\u0435 \u0434\u043d\u044f \u0441\u0442\u043e\u044f\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u0430 nrf52832 \u0441 \u0434\u0432\u0443\u043c\u044f \u043f\u043e\u043b\u0443\u043c\u043e\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u043c\u0438 \u0442\u0435\u043d\u0437\u043e\u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-podklyuchit-aczp-hx711-k-nrf52832\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-30T17:42:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-30T17:42:39+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Come collegare l'ADC HX711 al NRF52832 | ProHoster","description":"1. Introduzione All'ordine del giorno c'era la necessit\u00e0 di sviluppare un protocollo di comunicazione tra il microcontrollore nrf52832 e due sensori di peso cinesi a mezzo ponte.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-podklyuchit-aczp-hx711-k-nrf52832","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0410\u0426\u041f HX711 \u043a NRF52832 | ProHoster","og:description":"1. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u041d\u0430 \u043f\u043e\u0432\u0435\u0441\u0442\u043a\u0435 \u0434\u043d\u044f \u0441\u0442\u043e\u044f\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u0430 nrf52832 \u0441 \u0434\u0432\u0443\u043c\u044f \u043f\u043e\u043b\u0443\u043c\u043e\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u043c\u0438 \u0442\u0435\u043d\u0437\u043e\u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c\u0438.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-podklyuchit-aczp-hx711-k-nrf52832","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-30T17:42:39+00:00","article:modified_time":"2020-09-30T17:42:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95529","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:03:23","updated":"2022-09-28 01:57:03","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/95529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=95529"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/95529\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/95530"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=95529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=95529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=95529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}