{"id":38684,"date":"2026-05-14T10:58:11","date_gmt":"2026-05-14T10:58:11","guid":{"rendered":"https:\/\/www.europesays.com\/ai\/38684\/"},"modified":"2026-05-14T10:58:11","modified_gmt":"2026-05-14T10:58:11","slug":"clawdmeter-a-diy-esp32-s3-desk-dashboard-for-claude-code-token-usage-monitoring","status":"publish","type":"post","link":"https:\/\/www.europesays.com\/ai\/38684\/","title":{"rendered":"Clawdmeter &#8211; A DIY ESP32-S3 desk dashboard for Claude Code token usage monitoring"},"content":{"rendered":"<p>Clawdmeter is a DIY ESP32-S3-powered desk dashboard that displays Claude Code token usage on a 2.16-inch AMOLED screen so you know when you\u2019re about to reach the limits in real time.<\/p>\n<p>It\u2019s mostly a firmware project since it relies on off-the-shelf hardware (Waveshare ESP32-S3-Touch-AMOLED-2.16). It leverages the LVGL library for its graphics user interface, the NimBLE stack for Bluetooth LE (BLE) communication, and also functions as a HID keyboard for shortcuts using the buttons from the unit.<\/p>\n<p><a href=\"https:\/\/www.cnx-software.com\/wp-content\/uploads\/2026\/05\/Clawdmeter.jpg\" rel=\"nofollow noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-170449\" title=\"Clawdmeter\" src=\"https:\/\/www.europesays.com\/ai\/wp-content\/uploads\/2026\/05\/Clawdmeter-720x600.jpg\" alt=\"Clawdmeter\" width=\"720\" height=\"600\"   data-eio=\"p\"\/><\/a><\/p>\n<p>We previously covered <a href=\"https:\/\/www.cnx-software.com\/2025\/01\/13\/fully-enclosed-esp32-s3-board-features-1-8-inch-amoled-microphone-speaker-for-ai-audio-applications\/\" rel=\"nofollow noopener\" target=\"_blank\">Waveshare ESP32-S3-Touch-AMOLED-1.8<\/a> with a 1.8-inch display, but never the 2.16-inch variant, so let\u2019s have a quick look at the hardware first.<\/p>\n<p>ESP32-S3-Touch-AMOLED-2.16 specifications:<\/p>\n<p>Wireless MCU \u2013 Espressif Systems\u00a0<a href=\"https:\/\/www.cnx-software.com\/2021\/01\/02\/esp32-s3-dual-core-wifi-and-bluetooth-le-5-soc-supports-ai-acceleration-for-aiot-applications\/\" rel=\"nofollow noopener\" target=\"_blank\">ESP32-S3R8<\/a><\/p>\n<p>CPU \u2013 Dual-core Tensilica LX7 @ up to 240 MHz with vector instructions for AI acceleration.<br \/>\nMemory \u2013 512KB RAM, 8MB PSRAM<br \/>\nROM \u2013 384KB<br \/>\nConnectivity \u2013 2.4 GHz WiFi 4 and Bluetooth 5.0 LE<\/p>\n<p>Storage<\/p>\n<p>16MB NOR flash<br \/>\nMicroSD card slot<\/p>\n<p>Display<\/p>\n<p>2.16-inch AMOLED display<br \/>\n480 x 480 resolution, 16.7M colors<br \/>\n100,000:1 contrast ratio, 600 cd\/m2 brughtness, 178\u00b0 viewing angle<br \/>\nCO5300 QSPI display driver<br \/>\nCST9220 capacitive touch I2C controller<\/p>\n<p>Audio<\/p>\n<p>ES8311 low-power mono audio codec<br \/>\nES7210 audio ADC<br \/>\n2x microphones with echo cancellation circuitry<br \/>\nSpeaker pads<\/p>\n<p>USB \u2013 1x USB Type-C port for power and programming<br \/>\nSensors \u2013 QMI8658 6-axis IMU (3-axis accelerometer + 3-axis gyroscope)<br \/>\nExpansion \u2013 9 pads with GPIOs, UART, VBUS, 3.3V, and GND<br \/>\nMisc<\/p>\n<p>Power, Boot, and User (GPIO18) buttons<br \/>\nPCF85063 RTC chip<br \/>\nOn-board chip antenna and IPEX antenna connector<\/p>\n<p>Power<\/p>\n<p>5V via USB-C port<br \/>\n2-pin MX1.25 connector for optional 3.7V Lithium battery<br \/>\nAXP2101 PMIC for USB-C and battery power management<\/p>\n<p>Dimensions \u2013 46 x 46 x 22.5 mm<\/p>\n<p><a href=\"https:\/\/www.cnx-software.com\/wp-content\/uploads\/2026\/05\/Waveshare-ESP32-S3-Touch-AMOLED-2.16.webp\" rel=\"nofollow noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-170460 lazyload\" title=\"Waveshare ESP32-S3-Touch-AMOLED-2.16\" alt=\"Waveshare ESP32-S3-Touch-AMOLED-2.16\" width=\"720\" height=\"540\" src=\"https:\/\/www.europesays.com\/ai\/wp-content\/uploads\/2026\/05\/Waveshare-ESP32-S3-Touch-AMOLED-2.16-720x540.webp\"  data- data-eio-rwidth=\"720\" data-eio-rheight=\"540\"\/><\/a> <a href=\"https:\/\/www.cnx-software.com\/wp-content\/uploads\/2026\/05\/ESP32-S3-Touch-AMOLED-2.16-board.webp\" rel=\"nofollow noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-170461 lazyload\" title=\"ESP32 S3 Touch AMOLED 2.16 board\" alt=\"ESP32 S3 Touch AMOLED 2.16 board\" width=\"720\" height=\"392\" src=\"https:\/\/www.europesays.com\/ai\/wp-content\/uploads\/2026\/05\/ESP32-S3-Touch-AMOLED-2.16-board-720x392.webp\"  data- data-eio-rwidth=\"720\" data-eio-rheight=\"392\"\/><\/a><\/p>\n<p>Waveshare provides support for the ESP-IDF framework and the Arduino IDE, and offers various code samples for each, including the ESP-Brookesia firmware. They also published tutorials to use XiaoZhi AI, OpenClaw, and ESP-Claw with the device. You\u2019ll find all the resources to get started on <a href=\"https:\/\/docs.waveshare.com\/ESP32-S3-Touch-AMOLED-2.16\" rel=\"nofollow noopener\" target=\"_blank\">the documentation website<\/a>.<\/p>\n<p>Back to the ClawdMeter project. It pairs with your laptop over Bluetooth, displays pixel-art Clawd animations that speed up as Claude Code usage rate climbs, shows stats, and the two side buttons send Space and Shift+Tab over BLE HID for Claude Code\u2019s voice mode and mode-toggle shortcuts.<\/p>\n<p><a href=\"https:\/\/www.cnx-software.com\/wp-content\/uploads\/2026\/05\/ClawdMeter-user-interface.webp\" rel=\"nofollow noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-170463 lazyload\" title=\"ClawdMeter user interface\" alt=\"ClawdMeter user interface\" width=\"720\" height=\"240\" src=\"https:\/\/www.europesays.com\/ai\/wp-content\/uploads\/2026\/05\/ClawdMeter-user-interface-720x240.webp\"  data- data-eio-rwidth=\"720\" data-eio-rheight=\"240\"\/><\/a>ClawdMeter UI from left to right: Animation, Usage, and Bluetooth configuration<\/p>\n<p>The firmware is written in C using Platform IDE with the help of Claude. The code looks decent and uses constants instead of <a href=\"https:\/\/www.cnx-software.com\/2026\/03\/30\/diy-esp32-s3-internet-radio-features-winamp-styled-user-interface\/\" rel=\"nofollow noopener\" target=\"_blank\">hard-coded coordinates, as recently seen in some other projects<\/a>. That means you can probably port it fairly easily to other ESP32 platforms with different display resolutions.<\/p>\n<p>If you\u2019d like to reproduce the exact same setup, you can purchase the ESP32-S3-Touch-AMOLED-2.16 controller for <a href=\"https:\/\/s.click.aliexpress.com\/e\/_c3x5IVjv\" rel=\"nofollow noopener\" target=\"_blank\">about $30 on AliExpress<\/a>, <a href=\"https:\/\/amzn.to\/3R8epxo\" rel=\"nofollow noopener\" target=\"_blank\">Amazon ($40.99)<\/a>, or <a href=\"https:\/\/www.waveshare.com\/esp32-s3-touch-amoled-2.16.htm?aff_id=cnxsoft\" rel=\"nofollow noopener\" target=\"_blank\">the Waveshare store<\/a> with or without a battery (saves about $2). However, as noted <a href=\"https:\/\/x.com\/om_patel5\/status\/2054027527585145339\" rel=\"nofollow\">by various X users<\/a>, there are various ways to implement such a Claude Code meter, for instance, a taskbar app or other widget running on the host, or an app to show the usage on a <a href=\"https:\/\/www.cnx-software.com\/2022\/04\/29\/turing-smart-screen-a-low-cost-3-5-inch-usb-type-c-information-display\/\" rel=\"nofollow noopener\" target=\"_blank\">USB information display<\/a>. More details about the ClawdMeter can also be found on <a href=\"https:\/\/osrtos.com\/projects\/clawdmeter\/\" rel=\"nofollow noopener\" target=\"_blank\">the project\u2019s website<\/a>.<\/p>\n<p><a href=\"https:\/\/www.europesays.com\/ai\/wp-content\/uploads\/2026\/05\/ClawdMeter-Animation.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-170466 lazyload\" title=\"ClawdMeter Animation\" alt=\"ClawdMeter Animation\" width=\"500\" height=\"444\" src=\"https:\/\/www.europesays.com\/ai\/wp-content\/uploads\/2026\/05\/ClawdMeter-Animation.webp\"  data- data-eio-rwidth=\"500\" data-eio-rheight=\"444\"\/><\/a>ClawdMeter animation<\/p>\n<p>Via <a href=\"https:\/\/blog.adafruit.com\/2026\/05\/12\/making-a-claude-usage-display-with-clawdmeter\/\" rel=\"nofollow noopener\" target=\"_blank\">Adafruit<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"100\" height=\"100\" alt=\"Jean Luc Aufranc\" itemprop=\"image\" src=\"https:\/\/www.europesays.com\/ai\/wp-content\/uploads\/2026\/05\/Jean-Luc-Aufranc.webp\" class=\"lazyload\" data-eio-rwidth=\"180\" data-eio-rheight=\"180\"\/><\/p>\n<p>Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.<\/p>\n<p>Support CNX Software! Donate via <a href=\"https:\/\/www.cnx-software.com\/donate-cryptocurrencies\/\" rel=\"nofollow noopener\" target=\"_blank\">cryptocurrencies<\/a>, <a href=\"https:\/\/www.patreon.com\/cnxsoft\" target=\"_blank\" rel=\"nofollow noopener\">become a Patron<\/a> on Patreon, or purchase goods on <a href=\"https:\/\/amzn.to\/3SXubZ0\" rel=\"nofollow noopener\" target=\"_blank\">Amazon<\/a> or <a href=\"https:\/\/s.click.aliexpress.com\/e\/_DmGIIRT\" rel=\"nofollow noopener\" target=\"_blank\">Aliexpress<\/a>. We also use affiliate links in articles to earn commissions if you make a purchase after clicking on those links.<\/p>\n","protected":false},"excerpt":{"rendered":"Clawdmeter is a DIY ESP32-S3-powered desk dashboard that displays Claude Code token usage on a 2.16-inch AMOLED screen&hellip;\n","protected":false},"author":2,"featured_media":38685,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[53,3154,23915,111,23916,18107,182,23917,23918,23919,335,1757,23920,23921],"class_list":["post-38684","post","type-post","status-publish","format-standard","has-post-thumbnail","category-anthropic","tag-anthropic","tag-anthropic-claude","tag-arduino","tag-artificial-intelligence-ai","tag-ble","tag-bluetooth","tag-claude","tag-display","tag-diy","tag-esp32","tag-open-source","tag-tools","tag-touchscreen","tag-waveshare"],"_links":{"self":[{"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/posts\/38684","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/comments?post=38684"}],"version-history":[{"count":0,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/posts\/38684\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/media\/38685"}],"wp:attachment":[{"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/media?parent=38684"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/categories?post=38684"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/tags?post=38684"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}