{"id":3881,"date":"2021-12-06T12:20:42","date_gmt":"2021-12-06T11:20:42","guid":{"rendered":"https:\/\/www.pschatzmann.ch\/home\/?p=3881"},"modified":"2023-02-19T16:13:40","modified_gmt":"2023-02-19T15:13:40","slug":"the-ai-thinker-audio-kit-experience-or-nothing-is-right","status":"publish","type":"post","link":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/","title":{"rendered":"The &#8216;AI Thinker Audio Kit&#8217; Arduino Challenge"},"content":{"rendered":"<p>I found some cheap <a href=\"https:\/\/docs.ai-thinker.com\/en\/esp32-audio-kit\">AI Thinker ESP32 Audio Kit V2.2<\/a> on AliExpress and because I was tired of all the wires I had to connect to implement my different scenarios that are possible with my <a href=\"https:\/\/github.com\/pschatzmann\/arduino-audio-tools\">Arduino Audio Tools Library<\/a>, I thought it to be a good idea to buy this board.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/pschatzmann.github.io\/Resources\/img\/audio-toolkit.png\" alt=\"Audio Kit\" \/><\/p>\n<p>I am aware that this board, like the corresponding <a href=\"https:\/\/docs.espressif.com\/projects\/esp-adf\/en\/latest\/get-started\/get-started-esp32-lyrat.html\">LyraT<\/a> alternatives from Espressif are mainly used with the <a href=\"https:\/\/docs.espressif.com\/projects\/esp-adf\/en\/latest\/get-started\/index.html\">IDF\/ADF<\/a> framework, but I wanted to use it <strong>with Arduino<\/strong>, and that&#8217;s where the problems started: First I was so naive to just deploy one of my <a href=\"https:\/\/github.com\/pschatzmann\/ESP32-A2DP\">Bluetooth A2DP Audio<\/a> sketches. It was running somehow &#8211; but <strong>there was no sound<\/strong>! Next I tried out the SD drive &#8211; and here again &#8211; <strong>the SD drive was not available<\/strong>.<\/p>\n<p>I am documenting here the solutions to make things work for my V2.2 3478 Board:<\/p>\n<h2>The SD Card<\/h2>\n<p>The AI board like the LyraT boards are using some unusual  pin assignments and you need to <strong>initialize SPI by indicating the correct pins<\/strong>.<br \/>\nIn addition you need to make sure that the <strong>DATA3 and CMD on-board switches are in the on position<\/strong>:<\/p>\n<pre><code>#define PIN_AUDIO_KIT_SD_CARD_CS 13\n#define PIN_AUDIO_KIT_SD_CARD_MISO 2\n#define PIN_AUDIO_KIT_SD_CARD_MOSI 15\n#define PIN_AUDIO_KIT_SD_CARD_CLK  14\n\nSPI.begin(PIN_AUDIO_KIT_SD_CARD_CLK, PIN_AUDIO_KIT_SD_CARD_MISO, PIN_AUDIO_KIT_SD_CARD_MOSI, PIN_AUDIO_KIT_SD_CARD_CS);\n\n<\/code><\/pre>\n<p>Then when you set up the SD library you need to indicate the PIN_AUDIO_KIT_SD_CARD_CS as CS pin. That was the easy one &#8211; no let&#8217;s move to the major challenge:<\/p>\n<h2>Output to the Speakers<\/h2>\n<p>The board uses a <a href=\"https:\/\/datasheet.lcsc.com\/lcsc\/1912111437_Everest-semi-Everest-Semiconductor-ES8388_C365736.pdf\">ES8388 audio chip<\/a> that is connected via <strong>I2S<\/strong>, so we need to use the correct  I2S pin assignments. Note that these are different from the LyraT ones!<\/p>\n<pre><code>#define PIN_I2S_AUDIO_KIT_MCLK 0\n#define PIN_I2S_AUDIO_KIT_BCK 27\n#define PIN_I2S_AUDIO_KIT_WS 25\n#define PIN_I2S_AUDIO_KIT_DATA_OUT 26\n#define PIN_I2S_AUDIO_KIT_DATA_IN 35\n<\/code><\/pre>\n<p>The audio chip is responsible for routing the output or input to the correct final device and controlling the volume. The <strong>ES8388<\/strong> must be programmed via <strong>I2C<\/strong>! In order to do this I found <a href=\"https:\/\/github.com\/thaaraak\/ESP32-ES8388\/\">this solution<\/a> from thaaraak which inspired me to try to convert the <a href=\"https:\/\/github.com\/espressif\/esp-adf\/tree\/master\/components\/audio_hal\/driver\/es8388\">original ADF driver<\/a> from Espressif, so that it can be used in Arduino.<br \/>\nHere is the necessary information for the I2C connection:<\/p>\n<pre><code>#define I2C_MASTER_NUM I2C_NUM_0 \/*!&lt; I2C port number for master dev *\/\n#define I2C_MASTER_SCL_IO 32     \n#define I2C_MASTER_SDA_IO 33    \n#define ES8388_ADDR 0x10\n\n<\/code><\/pre>\n<p>Finally, here is a <a href=\"https:\/\/dl.radxa.com\/rock2\/docs\/hw\/ds\/ES8388%20user%20Guide.pdf\">link to the ES8388 user guide<\/a>.<\/p>\n<h2>Headphone Detection<\/h2>\n<p>I was testing the headphone detection with the following logic:<\/p>\n<pre><code>#define HEADPHONE_DETECT 39 \n\nbool headphoneStatus() {\n  return !gpio_get_level((gpio_num_t)HEADPHONE_DETECT);\n}\n\n<\/code><\/pre>\n<p>If no headphone is connected the gpio_get_level() returns 1 &#8211; with a headphone the output changes to 0 &#8211; so I confirm that on this board we need to use GPIO 39.<\/p>\n<p>Please note that the pin must be <strong>set up to be pulled high<\/strong>.<\/p>\n<h2>Enable Power Amplifier<\/h2>\n<p>The power activate pin for the speakers is identical to the LyraT boards:<\/p>\n<pre><code>#define PA_ENABLE_GPIO 21\n<\/code><\/pre>\n<p>We can use this pin together with the headphone detection pin to activate\/deactivate the speaker<\/p>\n<pre><code>  void processKeys() {\n    LOGI(LOG_METHOD);\n    static unsigned long keys_timeout = 0;\n    if (keys_timeout &lt; millis()) {\n      if (cfg.is_headphone_detection) {\n        LOGI(\"process headphone detection\");\n        bool isConnected = headphoneStatus();\n        bool powerActive = !isConnected;\n        if (powerActive != actualPower) {\n          LOGW(\"Headphone jack has been %s\",\n                   isConnected ? \"inserted\" : \"removed\");\n          setPAPower(powerActive);\n        }\n      }\n      keys_timeout = millis() + KEY_RESPONSE_TIME_MS;\n    }\n  }\n<\/code><\/pre>\n<h2>Conclusions<\/h2>\n<p>I have the solution working now and I can share my Audio Player Sketch that I used for my tests. It is based on my <a href=\"https:\/\/github.com\/pschatzmann\/arduino-audio-tools\">arduino-audio-tools project<\/a>:<\/p>\n<h2>The Arduino Audio Player Sketch<\/h2>\n<pre><code>#define USE_SDFAT\n#define USE_HELIX\n#include \"AudioTools.h\"\n#include \"AudioLibs\/AudioKit.h\"\n\nconst char *startFilePath=\"\/\";\nconst char* ext=\"mp3\";\nAudioSourceSdFat source(startFilePath, ext, PIN_AUDIO_KIT_SD_CARD_CS);\nAudioKitStream kit;\nMP3DecoderHelix decoder;\nAudioPlayer player(source, kit, decoder);\n\n\nvoid setup() {\n  Serial.begin(115200);\n  AudioLogger::instance().begin(Serial, AudioLogger::Info);\n\n  \/\/ setup output\n  auto cfg = kit.defaultConfig(TX_MODE);\n  kit.begin(cfg);\n\n  \/\/ setup player\n  player.begin();\n}\n\nvoid loop() {\n  player.copy();\n  kit.processActions();\n}\n\n<\/code><\/pre>\n<p>Yes &#8211; I just needed to replace the <strong>I2SStream<\/strong> with the <strong>AudioKitStream<\/strong> and that&#8217;s pretty cool!<br \/>\nIf you add the kit.processActions() in the loop you get the automatic headphone detection and volume control working.<\/p>\n<p>Unfortunately the output is quite distored mainly for the loud parts. We can take care of this by reducing the signal strength (volume) that we send to the kit by adjusting the volume of the player with <code>player.setVolume(0.7);<\/code><\/p>\n<p>The <a href=\"https:\/\/github.com\/pschatzmann\/arduino-audio-tools\/tree\/main\/examples\/examples-audiokit\/player-sd-audiokit\">full example can be found on Github<\/a><\/p>\n<h2>Dependencies<\/h2>\n<ul>\n<li><a href=\"https:\/\/github.com\/pschatzmann\/arduino-audiokit\">arduino-audiokit<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/pschatzmann\/arduino-audio-tools\">arduino-audio-tools project<\/a><\/li>\n<\/ul>\n<h2>Disclaimer<\/h2>\n<p>Please note that the sketches that I am posting on this site are working at the point of time of the posting. It might be that things have changed when you read this. So please use the corresponding updated <a href=\"https:\/\/github.com\/pschatzmann\/arduino-audio-tools\/tree\/main\/examples\">example in the Audio Tools Project<\/a> if you want to try it out yourself.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I found some cheap AI Thinker ESP32 Audio Kit V2.2 on AliExpress and because I was tired of all the wires I had to connect to implement my different scenarios that are possible with my Arduino Audio Tools Library, I thought it to be a good idea to buy this [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3882,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[20,22],"tags":[28],"class_list":["post-3881","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-machine-sound","tag-esp32audiokit"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The &#039;AI Thinker Audio Kit&#039; Arduino Challenge - Phil Schatzmann<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The &#039;AI Thinker Audio Kit&#039; Arduino Challenge - Phil Schatzmann\" \/>\n<meta property=\"og:description\" content=\"I found some cheap AI Thinker ESP32 Audio Kit V2.2 on AliExpress and because I was tired of all the wires I had to connect to implement my different scenarios that are possible with my Arduino Audio Tools Library, I thought it to be a good idea to buy this [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/\" \/>\n<meta property=\"og:site_name\" content=\"Phil Schatzmann\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-06T11:20:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-19T15:13:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/12\/audio-toolkit.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"pschatzmann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"pschatzmann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/\"},\"author\":{\"name\":\"pschatzmann\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\"},\"headline\":\"The &#8216;AI Thinker Audio Kit&#8217; Arduino Challenge\",\"datePublished\":\"2021-12-06T11:20:42+00:00\",\"dateModified\":\"2023-02-19T15:13:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/\"},\"wordCount\":612,\"commentCount\":20,\"publisher\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/audio-toolkit.png\",\"keywords\":[\"ESP32AudioKit\"],\"articleSection\":[\"Arduino\",\"Machine Sound\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/\",\"name\":\"The 'AI Thinker Audio Kit' Arduino Challenge - Phil Schatzmann\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/audio-toolkit.png\",\"datePublished\":\"2021-12-06T11:20:42+00:00\",\"dateModified\":\"2023-02-19T15:13:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/audio-toolkit.png\",\"contentUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/audio-toolkit.png\",\"width\":800,\"height\":500},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/12\\\/06\\\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The &#8216;AI Thinker Audio Kit&#8217; Arduino Challenge\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#website\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/\",\"name\":\"Phil Schatzmann Consulting\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\",\"name\":\"pschatzmann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/pschatzmann.png\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/pschatzmann.png\",\"contentUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/pschatzmann.png\",\"width\":305,\"height\":305,\"caption\":\"pschatzmann\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/pschatzmann.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The 'AI Thinker Audio Kit' Arduino Challenge - Phil Schatzmann","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/","og_locale":"en_US","og_type":"article","og_title":"The 'AI Thinker Audio Kit' Arduino Challenge - Phil Schatzmann","og_description":"I found some cheap AI Thinker ESP32 Audio Kit V2.2 on AliExpress and because I was tired of all the wires I had to connect to implement my different scenarios that are possible with my Arduino Audio Tools Library, I thought it to be a good idea to buy this [&hellip;]","og_url":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/","og_site_name":"Phil Schatzmann","article_published_time":"2021-12-06T11:20:42+00:00","article_modified_time":"2023-02-19T15:13:40+00:00","og_image":[{"width":800,"height":500,"url":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/12\/audio-toolkit.png","type":"image\/png"}],"author":"pschatzmann","twitter_card":"summary_large_image","twitter_misc":{"Written by":"pschatzmann","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/#article","isPartOf":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/"},"author":{"name":"pschatzmann","@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1"},"headline":"The &#8216;AI Thinker Audio Kit&#8217; Arduino Challenge","datePublished":"2021-12-06T11:20:42+00:00","dateModified":"2023-02-19T15:13:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/"},"wordCount":612,"commentCount":20,"publisher":{"@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1"},"image":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/#primaryimage"},"thumbnailUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/12\/audio-toolkit.png","keywords":["ESP32AudioKit"],"articleSection":["Arduino","Machine Sound"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/","url":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/","name":"The 'AI Thinker Audio Kit' Arduino Challenge - Phil Schatzmann","isPartOf":{"@id":"https:\/\/www.pschatzmann.ch\/home\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/#primaryimage"},"image":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/#primaryimage"},"thumbnailUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/12\/audio-toolkit.png","datePublished":"2021-12-06T11:20:42+00:00","dateModified":"2023-02-19T15:13:40+00:00","breadcrumb":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/#primaryimage","url":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/12\/audio-toolkit.png","contentUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/12\/audio-toolkit.png","width":800,"height":500},{"@type":"BreadcrumbList","@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/12\/06\/the-ai-thinker-audio-kit-experience-or-nothing-is-right\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pschatzmann.ch\/home\/"},{"@type":"ListItem","position":2,"name":"The &#8216;AI Thinker Audio Kit&#8217; Arduino Challenge"}]},{"@type":"WebSite","@id":"https:\/\/www.pschatzmann.ch\/home\/#website","url":"https:\/\/www.pschatzmann.ch\/home\/","name":"Phil Schatzmann Consulting","description":"","publisher":{"@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pschatzmann.ch\/home\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1","name":"pschatzmann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2022\/08\/pschatzmann.png","url":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2022\/08\/pschatzmann.png","contentUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2022\/08\/pschatzmann.png","width":305,"height":305,"caption":"pschatzmann"},"logo":{"@id":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2022\/08\/pschatzmann.png"}}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts\/3881","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/comments?post=3881"}],"version-history":[{"count":58,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts\/3881\/revisions"}],"predecessor-version":[{"id":3887,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts\/3881\/revisions\/3887"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/media\/3882"}],"wp:attachment":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/media?parent=3881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/categories?post=3881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/tags?post=3881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}