{"product_id":"cardkb2-keyboard-unit-esp32-c61","title":"CardKB2 Keyboard Unit (ESP32-C61)","description":"\u003cvideo id=\"video\" playsinline muted controls class=\"video-container\" width=\"100%\" style=\"border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.08);\"\u003e\n  \u003csource type=\"video\/mp4\" src=\"https:\/\/m5stack-doc.oss-cn-shenzhen.aliyuncs.com\/1225\/U215-UnitCardKB2_video_EN.mp4\"\u003e\u003c\/video\u003e\n\u003cstyle\u003e\n\/* ===== Scoped Description Style ===== *\/\n.product-description.rte {\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n  color: #2c2c2c;\n  line-height: 1.65;\n  font-size: 16px;\n}\n\n\/* ===== Headings ===== *\/\n.product-description.rte h2 {\n  font-size: 1.8em;\n  color: #0D47A1;\n  border-left: 4px solid #1f6fe5;\n  padding-left: 12px;\n  margin-top: 32px;\n  margin-bottom: 16px;\n}\n\n\/* ===== H3 Titles Optimization ===== *\/\n.product-description.rte h3 {\n  font-size: 1.4em;\n  color: #0D47A1;\n  margin-top: 24px;\n  margin-bottom: 12px;\n  font-weight: 500;\n  padding-bottom: 6px;\n  border-bottom: 2px solid #e6e6e6;\n}\n\n\/* ===== Paragraphs ===== *\/\n.product-description.rte p {\n  margin-bottom: 20px;\n  line-height: 1.8;\n  color: #4a4f57;\n  font-size: 16px;\n}\n\n\/* ===== Paragraph Images (only in description) ===== *\/\n.product-description.rte img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n  margin: 24px auto;\n  border-radius: 12px;\n  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06);\n}\n\n\/* ===== Lists ===== *\/\n.product-description.rte ul {\n  padding-left: 20px;\n  margin-bottom: 16px;\n  list-style-type: disc;\n}\n.product-description.rte li {\n  margin-bottom: 6px;\n}\n\n\/* ===== Links ===== *\/\n.product-description.rte a {\n  color: #0288D1;\n  text-decoration: none;\n  transition: color 0.3s ease;\n}\n.product-description.rte a:hover {\n  color: #01579B;\n}\n\n\/* ===== M5Stack-style Spec Table ===== *\/\n.product-description.rte .table-container {\n  width: 100%;\n  margin: 24px 0;\n  overflow-x: auto;\n}\n.product-description.rte .table-container table {\n  width: 100%;\n  border-collapse: collapse;\n  font-family: inherit;\n  font-size: 14px;\n  color: #2c2f36;\n  background-color: #ffffff;\n  border-radius: 10px;\n  overflow: hidden;\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04);\n}\n.product-description.rte .table-container thead th {\n  background: #1f6fe5;\n  color: #ffffff;\n  padding: 14px 16px;\n  text-align: center;\n  font-weight: 600;\n  border: none;\n  vertical-align: middle;\n}\n.product-description.rte .table-container td {\n  padding: 14px 16px;\n  border-bottom: 1px solid #e6ebf2;\n  vertical-align: middle;\n}\n.product-description.rte .table-container tbody td:first-child {\n  width: 36%;\n  text-align: center;\n  font-weight: 500;\n  color: #4a4f57;\n  background-color: rgba(31, 111, 229, 0.02);\n}\n.product-description.rte .table-container tbody tr:nth-child(even) {\n  background-color: #f7f9fc;\n}\n@media (hover: hover) {\n  .product-description.rte .table-container tbody tr:hover {\n    background-color: #eef3ff;\n  }\n}\n\n\/* ===== Learn \u0026 Documents Button ===== *\/\n.product-description.rte #learn-and-documents-btn {\n  display: inline-flex;\n  align-items: center;\n  padding: 6px 14px;\n  background-color: #1f6fe5;\n  color: #ffffff;\n  font-weight: 600;\n  border-radius: 6px;\n  margin-top: 8px;\n  text-decoration: none;\n  transition: background 0.3s ease;\n}\n.product-description.rte #learn-and-documents-btn:hover {\n  background-color: #1661c1;\n}\n\n\/* ===== Responsive Design for Smaller Screens (with table adjustments) ===== *\/\n@media screen and (max-width: 768px) {\n  .product-description.rte .table-container table,\n  .product-description.rte .table-container thead,\n  .product-description.rte .table-container tbody,\n  .product-description.rte .table-container th,\n  .product-description.rte .table-container td,\n  .product-description.rte .table-container tr {\n    display: block;\n    width: 100%;\n  }\n  .product-description.rte .table-container thead {\n    display: none;\n  }\n  .product-description.rte .table-container tbody tr {\n    padding: 12px 0;\n    border-bottom: 1px solid #e6ebf2;\n  }\n  .product-description.rte .table-container tbody td {\n    padding: 8px 16px;\n    border: none;\n    text-align: left;\n  }\n  .product-description.rte .table-container tbody td:first-child {\n    width: 100%;\n    background: none;\n    color: #1f6fe5;\n    font-weight: 600;\n    padding-top: 16px;\n  }\n  .product-description.rte .table-container tbody td:last-child {\n    padding-bottom: 16px;\n    color: #2c2f36;\n    line-height: 1.6;\n  }\n\n  \/* Ensure button appears correctly on mobile *\/\n  .product-description.rte #learn-and-documents-btn {\n    font-size: 14px;\n    padding: 8px 16px;\n  }\n}\n\u003c\/style\u003e\n\u003ch2 data-id=\"Description\" id=\"description\"\u003eDescription\u003c\/h2\u003e\n\u003cp\u003eUnit CardKB2 is a card-sized 42-key portable keyboard input unit. Its compact and lightweight form factor makes it ideal for on-the-go use and embedded integration. Powered by an ESP32-C61HF4 MCU with built-in 2.4 GHz Wi-Fi 6 support, the pre-installed firmware allows flexible configuration across four communication modes: I2C, UART, BLE HID, and ESP-NOW. The unit features an onboard HY2.0-4P expansion interface and a USB Type-C port for power supply and firmware flashing. Additional hardware includes an RGB LED status indicator, a reset button, and a Boot button. Input power overvoltage protection is also integrated, making this unit well-suited for wireless input, interactive control, and a wide range of portable application scenarios.\u003c\/p\u003e\n\u003ch2 data-id=\"Features\" id=\"features\"\u003eFeatures\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePowered by ESP32-C61HF4 with Wi-Fi 6 \/ BLE wireless communication support\u003c\/li\u003e\n\u003cli\u003eFull keyboard input with support for multiple key combinations (single press, Sym, Fn)\u003c\/li\u003e\n\u003cli\u003eOnboard RGB LED (XL-1615RGBC-RF) for keyboard status indication\u003c\/li\u003e\n\u003cli\u003ePower Supply:\n\u003cul\u003e\n\u003cli\u003eUSB Type-C\u003c\/li\u003e\n\u003cli\u003eDC 5V\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2 data-id=\"Includes\" id=\"includes\"\u003eIncludes\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e1 x Unit CardKB2\u003c\/li\u003e\n\u003cli\u003e1 x HY2.0-4P Grove Cable (20cm)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2 data-id=\"Applications\" id=\"applications\"\u003eApplications\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eText input for portable devices\u003c\/li\u003e\n\u003cli\u003eHuman-machine interaction in embedded systems\u003c\/li\u003e\n\u003cli\u003eWireless control terminal for IoT devices\u003c\/li\u003e\n\u003cli\u003eEducational programming and maker projects\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2 data-id=\"Specifications\" id=\"specifications\"\u003eSpecifications\u003c\/h2\u003e\n\u003cdiv class=\"table-container\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSpecification\u003c\/th\u003e\n\u003cth\u003eParameter\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eSoC\u003c\/td\u003e\n\u003ctd\u003eESP32-C61HF4 @ RISC-V 32-bit single-core, 120 MHz\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFlash\u003c\/td\u003e\n\u003ctd\u003e4MB\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eWi-Fi\u003c\/td\u003e\n\u003ctd\u003e2.4 GHz Wi-Fi 6\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eKeys\u003c\/td\u003e\n\u003ctd\u003e42-key keyboard, 1x Reset button, 1x Boot button\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eUSB Type-C\u003c\/td\u003e\n\u003ctd\u003ePower supply \/ firmware flashing, default firmware log output: 115200bps @ 8N1\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eRGB LED\u003c\/td\u003e\n\u003ctd\u003e1x RGB LED\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eExpansion Interface\u003c\/td\u003e\n\u003ctd\u003e1x HY2.0-4P\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eStandby Power\u003c\/td\u003e\n\u003ctd\u003e5V@19.31mA (under Grove interface power supply conditions)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eProduct Size\u003c\/td\u003e\n\u003ctd\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003cspan\u003e84.7 x 54.3 x 1.0mm\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eProduct Weight\u003c\/td\u003e\n\u003ctd\u003e22.4g\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePackage Size\u003c\/td\u003e\n\u003ctd\u003e170.0 x 120.0 x 8.0mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eGross Weight\u003c\/td\u003e\n\u003ctd\u003e28.9g\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003ch2\u003eLearn and Documents\u003c\/h2\u003e\n\u003ca href=\"https:\/\/docs.m5stack.com\/en\/products\/sku\/U215\" id=\"learn-and-documents-btn\" target=\"_blank\"\u003e → DOCUMENTS \u003c\/a\u003e\n\u003c\/div\u003e","brand":"m5stack-store","offers":[{"title":"Default Title","offer_id":48363919048961,"sku":"U215","price":9.95,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0056\/7689\/2250\/files\/1_b80833d5-1c93-417e-b1e8-fb0a6c8f4a2f.webp?v=1775182532","url":"https:\/\/shop.m5stack.com\/products\/cardkb2-keyboard-unit-esp32-c61","provider":"m5stack-store","version":"1.0","type":"link"}