GO’Cheap / R&D
GO’Cheap · Technical product blueprint · V1.0

AI Pager
Personal Edition

Thiết bị trợ lý AI cá nhân dạng wearable. Nhận thông báo, ghi âm khi nhấn nút, gửi yêu cầu lên AI Gateway và phát phản hồi bằng giọng nói — qua Wi-Fi hoặc 4G.

PERSONALWI-FI + 4GPUSH-TO-TALKSELF-HOSTED AI GATEWAY
Định hướng sản phẩm: “Less Screen. More Intelligence.” Không thay thế smartphone; tập trung vào nhận thông tin, hiểu thông tin, nhắc việc, giao tiếp với AI và kích hoạt hành động. Phong cách wearable nhỏ gọn, ít gây xao nhãng.
5–10M
Ngân sách prototype (VNĐ)
14 ngày
Mục tiêu tích hợp MVP đầu tiên
8 tuần
Khung hoàn thiện prototype V1
02 / Product definition

Thông số sản phẩm mục tiêu

Chưa phải thông số đo thực tế

Thiết kế vật lý

Kích thước mục tiêu65 × 42 × 15 mm
Trọng lượng mục tiêu45–65 g
Màn hìnhE-Ink 2.13", mono
Pin mục tiêuLi-Po 1.500 mAh
SạcUSB-C
ĐeoKẹp áo / dây đeo

Chức năng cốt lõi

  • Nhận thông báo và cảnh báo ưu tiên.
  • Push-to-Talk để hỏi AI.
  • AI trả lời bằng âm thanh và văn bản.
  • Hiển thị lịch, nhắc việc, inbox.
  • Rung khi có thông báo quan trọng.
  • Wi-Fi ưu tiên, LTE dự phòng/độc lập.
  • OTA firmware và quản lý thiết bị từ cloud.
Pin: 48 giờ là mục tiêu kiểm thử, không phải cam kết. LTE có dòng đỉnh cao; thời lượng thực tế phụ thuộc sóng, chu kỳ kết nối, số lần ghi âm, phát loa và refresh E-Ink.
03 / Bill of materials

Danh sách mua linh kiện

Ưu tiên module rời

Mua linh kiện theo hai đợt. Đợt 1 kiểm chứng MCU, màn hình, audio. Đợt 2 mới mua LTE và hệ nguồn sau khi xác nhận đúng SKU, băng tần và sơ đồ điện.

Hạng mụcThông số / lựa chọnSố lượngGhi chú mua hàng
MCUESP32-S3 DevKitC-1, N8R8 hoặc N16R81Ưu tiên PSRAM; kiểm tra đúng biến thể board.
Màn hìnhE-Ink 2.13", SPI, đen trắng, thường 250×1221Chọn module có tài liệu driver và pinout rõ.
4GQuectel EG915U Cat 1 bis hoặc dev board tương đương1Phải xác nhận SKU/băng tần Việt Nam, UART, nguồn và anten.
MicrophoneINMP441 I2S MEMS1Logic 3.3V; cần kiểm tra chân L/R.
Audio amplifierMAX98357A I2S1Loa đấu vào SPK+/SPK-, không nối một đầu loa xuống GND.
LoaMini speaker 4Ω/8Ω, công suất phù hợp board amp1Chọn theo khoang vỏ và công suất thực.
PinLi-Po 3.7V, khoảng 1.500mAh, có bảo vệ1Kiểm tra kích thước, dòng xả và chứng từ an toàn.
Power managementCharger có power-path + regulator phù hợp1 bộKhông dùng mạch sạc đơn giản nếu vừa sạc vừa chạy tải.
RungCoin vibration motor + MOSFET driver1Không cấp motor trực tiếp từ GPIO.
Phụ kiệnNút nhấn, tụ, điện trở, dây, breadboard, USB data1 bộChuẩn bị linh kiện thay thế.
Cơ khíVỏ in 3D, kẹp áo, vít, gioăng1 bộChỉ làm vỏ sau khi xác nhận kích thước board/pin/anten.

Ngân sách dự kiến

NhómDự toán (VNĐ)
ESP32-S3 và linh kiện điều khiển700.000–1.000.000
E-Ink và audio500.000–900.000
LTE module + anten + SIM1.200.000–2.000.000
Pin và power management400.000–700.000
PCB thử nghiệm, dây và phụ kiện500.000–800.000
Vỏ prototype300.000–500.000
Dự phòng linh kiện thay thế500.000–800.000
AI cloud và thử nghiệm500.000–1.000.000
Tổng dự kiến4.600.000–7.700.000

Giá kế hoạch, không phải báo giá/tồn kho đã xác nhận. Chưa gồm công phát triển, vận chuyển, thuế, kiểm định và chứng nhận thương mại. Giữ phần còn lại trong trần 5–10 triệu làm dự phòng.

04 / Hardware architecture

Kiến trúc phần cứng

E-Ink
SPI
↔
ESP32-S3
MCU
↔
LTE
UART
I2S Mic
↔
I2S Audio
Bus
↔
Amp + Speaker
PTT / Action
→
GPIO + Haptic
Wi-Fi 2.4GHz
↘
Network Manager
↗
LTE Cat 1 bis

Mainboard

ESP32-S3, NVS, GPIO, SPI, I2S, UART, quản lý nguồn và trạng thái thiết bị.

Communication

LTE module, SIM, anten LTE, UART AT command; Wi-Fi tích hợp trong ESP32-S3.

Peripheral

E-Ink, microphone, speaker, motor rung, nút bấm và USB-C.

Power

Pin Li-Po có bảo vệ, charger có power-path, rail nguồn riêng phù hợp modem và MCU.

Thiết kế nguồn LTE: Không cấp nguồn modem từ chân 3V3 của ESP32. Dùng rail theo datasheet module, tính dòng đỉnh, tụ low-ESR đặt gần modem, đường mạch đủ rộng và chung GND đúng thiết kế. Kiểm tra nhiệt và sụt áp khi modem phát.
05 / Pin assignment

GPIO pin map đề xuất

Cần đối chiếu board thực tế
GPIO ESP32-S3Thiết bịTín hiệuGhi chú
GPIO10E-InkCSSPI chip select
GPIO11E-InkMOSISPI data
GPIO12E-InkSCKSPI clock
GPIO9E-InkDCData / command
GPIO14E-InkRSTReset
GPIO15E-InkBUSYBusy status
GPIO4I2S mic + speakerBCLKClock dùng chung
GPIO5I2S mic + speakerWS/LRCLKClock dùng chung
GPIO6INMP441SD / DINMic data vào ESP32
GPIO7MAX98357ADIN / DOUTAudio data ra loa
GPIO17LTE UARTESP TX → modem RXUART1
GPIO18LTE UARTESP RX ← modem TXUART1
GPIO1PTT buttonInputActive low, pull-up
GPIO2Action buttonInputActive low, pull-up
GPIO8Vibration MOSFETOutputĐiều khiển qua transistor/MOSFET
I2S full-duplex: GPIO4/5 là BCLK/WS dùng chung cho cả microphone và speaker; GPIO6 là data vào, GPIO7 là data ra. Cần cấu hình chung clock trên cùng I2S controller theo khả năng ESP-IDF/target, kiểm thử sample rate và DMA. Không khởi tạo hai clock độc lập cho hai thiết bị.

Nguyên tắc đấu dây

  • INMP441: VDD 3.3V, GND chung; cấu hình chân L/R đúng theo module.
  • MAX98357A: cấp nguồn đúng thông số board; loa đấu SPK+ và SPK-.
  • E-Ink: kiểm tra VCC, mức logic và thứ tự chân theo đúng revision.
  • LTE: TX/RX đấu chéo; UART logic phải tương thích điện áp module.
  • Motor rung: dùng MOSFET và diode/bảo vệ phù hợp loại motor.
  • Không dùng GPIO strap/USB/UART mặc định nếu board cụ thể đang chiếm dụng các chân đó.
06 / Embedded software

Firmware ESP-IDF

C / C++

Cấu trúc thư mục

firmware/ ├── CMakeLists.txt ├── sdkconfig.defaults └── main/ ├── CMakeLists.txt ├── main.c ├── pager_config.h ├── button.c ├── audio.c ├── display.c ├── modem.c ├── network.c ├── mqtt_client.c └── ai_client.c

pager_config.h

#pragma once #define PIN_PTT 1 #define PIN_ACTION 2 #define PIN_VIBRATION 8 #define PIN_EPD_CS 10 #define PIN_EPD_MOSI 11 #define PIN_EPD_SCK 12 #define PIN_EPD_DC 9 #define PIN_EPD_RST 14 #define PIN_EPD_BUSY 15 #define PIN_I2S_BCLK 4 #define PIN_I2S_WS 5 #define PIN_I2S_MIC_DIN 6 #define PIN_I2S_SPK_DOUT 7 #define PIN_MODEM_TX 17 #define PIN_MODEM_RX 18 #define MODEM_BAUDRATE 115200 #define AUDIO_SAMPLE_RATE 16000 #define AUDIO_BITS 16 #define AUDIO_MAX_SECONDS 15

main.c – skeleton điều khiển PTT

#include <stdio.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/gpio.h" #include "esp_log.h" #include "pager_config.h" static const char *TAG = "AI_PAGER"; static void init_buttons(void) { gpio_config_t cfg = { .pin_bit_mask = (1ULL << PIN_PTT) | (1ULL << PIN_ACTION), .mode = GPIO_MODE_INPUT, .pull_up_en = GPIO_PULLUP_ENABLE, .pull_down_en = GPIO_PULLDOWN_DISABLE, .intr_type = GPIO_INTR_DISABLE }; ESP_ERROR_CHECK(gpio_config(&cfg)); } static void init_vibration(void) { gpio_config_t cfg = { .pin_bit_mask = 1ULL << PIN_VIBRATION, .mode = GPIO_MODE_OUTPUT, .intr_type = GPIO_INTR_DISABLE }; ESP_ERROR_CHECK(gpio_config(&cfg)); gpio_set_level(PIN_VIBRATION, 0); } static void pager_task(void *arg) { bool recording = false; while (1) { bool pressed = gpio_get_level(PIN_PTT) == 0; if (pressed && !recording) { recording = true; ESP_LOGI(TAG, "PTT START"); // TODO: start I2S capture, allocate PCM buffer } if (!pressed && recording) { recording = false; ESP_LOGI(TAG, "PTT STOP"); // TODO: stop capture, wrap WAV, HTTPS upload } vTaskDelay(pdMS_TO_TICKS(30)); } } void app_main(void) { ESP_LOGI(TAG, "AI Pager V1 booting"); init_buttons(); init_vibration(); // TODO: NVS, display, I2S, Wi-Fi, modem, // network manager, MQTT and HTTPS client. xTaskCreate(pager_task, "pager_task", 4096, NULL, 5, NULL); }

Component cần triển khai

ComponentTrách nhiệm
Device ManagerTrạng thái, boot, cấu hình, watchdog
Display ManagerRender E-Ink, partial/full refresh
Network ManagerWi-Fi, LTE, failover, reconnect
Audio ManagerI2S capture/playback, PCM/WAV, DMA
Button ManagerDebounce, PTT press/release, action
Notification EngineƯu tiên, rung, hiển thị, ACK
AI ClientHTTPS upload, nhận text/audio response
Power ManagerSleep, modem power, battery telemetry
OTA ManagerFirmware update có xác thực

Lệnh build và flash

idf.py create-project ai_pager cd ai_pager idf.py set-target esp32s3 idf.py menuconfig idf.py build idf.py -p PORT flash monitor

Skeleton trên chưa phải firmware hoàn chỉnh. Cần bổ sung I2S, E-Ink driver, UART AT command, Wi-Fi/LTE transport, MQTT, HTTPS, audio codec/packetization, retry và OTA.

07 / Cloud software

Backend & Self-hosted AI Gateway

Node.js / TypeScript
AI Pager
Wi-Fi / LTE
→
API Gateway
Fastify
→
AI Orchestrator
MongoDB
Memory
Redis
Queue / Cache
EMQX
MQTT
STT / LLM / TTS
Adapters

Self-hosted AI nghĩa là GO’Cheap tự vận hành gateway, agent orchestration, memory, device registry và quyền thực thi tool. Model có thể là cloud API hoặc model tự host; không cần tự huấn luyện LLM ở V1.

Backend stack

LayerTechnologyVai trò
APINode.js + TypeScript + FastifyHTTP API, validation, auth
DatabaseMongoDBUsers, devices, messages, memory
Cache/queueRedisSession, queue, retry, rate limit
Device messagingEMQX MQTTPush notification, heartbeat, ACK
AI orchestrationNode.js serviceIntent, tools, context, policy
STT/TTSProvider adaptersSpeech-to-text / text-to-speech
LLMProvider interfaceGPT, Claude, Gemini, Ollama/vLLM
DeployDocker ComposeDev / staging

Project structure

ai-pager-backend/ ├── src/ │ ├── index.ts │ ├── config.ts │ ├── routes/ │ │ ├── voice.ts │ │ ├── messages.ts │ │ └── devices.ts │ ├── services/ │ │ ├── ai.service.ts │ │ ├── stt.service.ts │ │ ├── tts.service.ts │ │ └── memory.service.ts │ ├── providers/ │ │ ├── llm.interface.ts │ │ ├── openai.provider.ts │ │ └── local.provider.ts │ ├── mqtt/broker.ts │ └── models/ │ ├── device.model.ts │ └── message.model.ts ├── Dockerfile ├── docker-compose.yml ├── package.json ├── tsconfig.json └── .env.example

Cài đặt dependencies

npm init -y npm install fastify @fastify/cors mqtt mongoose redis dotenv zod openai npm install -D typescript tsx @types/node

LLM provider interface

export interface LLMMessage { role: "system" | "user" | "assistant"; content: string; } export interface LLMProvider { generate(messages: LLMMessage[]): Promise<string>; }

AI service – logic tối thiểu

export class AIService { constructor(private llm: LLMProvider) {} async ask(userId: string, question: string) { // TODO: Load user memory from MongoDB const answer = await this.llm.generate([ { role: "system", content: "You are AI Pager, a concise personal assistant. Reply in Vietnamese by default. Keep answers short for a wearable device. Never claim an action succeeded unless confirmed." }, { role: "user", content: question } ]); // TODO: Persist user and assistant messages return { userId, answer, timestamp: new Date() }; } }
Model endpoint: Adapter minh họa có thể gọi API tương thích OpenAI. Khi dùng Ollama/vLLM, tạo provider adapter mới. API key và credential chỉ lưu ở backend, tuyệt đối không nhúng trong firmware.
08 / Communication contract

API & MQTT protocol

HTTP endpoints

MethodEndpointMục đích
POST/api/v1/devices/registerĐăng ký / provisioning thiết bị
POST/api/v1/devices/heartbeatHeartbeat, battery, network
POST/api/v1/ai/voiceUpload WAV và nhận AI response
POST/api/v1/ai/chatText chat / test từ dashboard
GET/api/v1/messages/inboxĐồng bộ inbox
POST/api/v1/messages/sendGửi thông báo tới pager
POST/api/v1/notifications/readACK đã đọc
POST/api/v1/devices/otaĐiều phối cập nhật firmware

MQTT topics

pager/{device_id}/inbox pager/{device_id}/command pager/{device_id}/status pager/{device_id}/ack pager/{device_id}/config

Notification payload

{ "messageId": "msg_01J...", "deviceId": "pager_001", "type": "urgent", "title": "Cuộc họp", "body": "Cuộc họp bắt đầu sau 15 phút", "vibration": true, "createdAt": "2026-11-05T08:00:00+07:00", "ttlSeconds": 3600 }

Voice interaction flow

PTT down
→
Record PCM
→
WAV upload
→
STT
LLM + tools
→
TTS
→
Audio + text
→
Speaker / E-Ink

Audio V1: mono, 16kHz, 16-bit PCM, giới hạn 15 giây/lần; có thể đóng gói WAV để đơn giản hóa xử lý. Cần giới hạn kích thước upload và thời gian xử lý.

09 / Security & safety

Bảo mật, quyền riêng tư và an toàn nguồn

Device security

  • Device ID duy nhất.
  • Credential/chứng thư riêng từng thiết bị.
  • TLS cho HTTPS và MQTT.
  • Thu hồi thiết bị từ dashboard.
  • Không dùng password MQTT chung.

Data privacy

  • Chỉ ghi âm khi nhấn PTT.
  • Thông báo rõ khi microphone đang ghi.
  • Giới hạn thời gian lưu audio.
  • Mã hóa dữ liệu nhạy cảm.
  • Quản lý quyền truy cập memory.

AI action policy

  • Phân biệt trả lời và hành động.
  • Yêu cầu xác nhận trước khi gửi email/gọi điện.
  • Không tự ý chuyển tiền hoặc xóa dữ liệu.
  • Ghi log hành động và kết quả.

Electrical safety

  • Pin có bảo vệ và nguồn đúng tải.
  • Không sạc pin hỏng/phồng.
  • Kiểm tra nhiệt khi sạc và phát LTE.
  • Không đeo prototype nóng hoặc chưa cách điện.
  • Chưa dùng thương mại trước kiểm định.
10 / Delivery plan

Lộ trình phát triển

14 ngày đầu – MVP integration sprint

Ngày 1–2 · Mua và xác minh linh kiện

Chốt ESP32-S3, E-Ink, I2S, LTE dev board, pin và power-path. Kiểm tra SKU/band LTE và tài liệu nguồn.

Ngày 3–4 · Hardware bring-up

Flash ESP-IDF; test GPIO, màn hình, microphone, speaker và nút PTT độc lập.

Ngày 5–7 · Backend foundation

Docker, Fastify API, MongoDB, Redis, EMQX, device authentication và test notification.

Ngày 8–10 · AI voice

Audio upload, STT, LLM adapter, TTS, memory tối thiểu và trả kết quả.

Ngày 11–14 · End-to-end integration

PTT, Wi-Fi, LTE, notification MQTT, ACK, đo pin và kiểm thử lỗi mạng.

Roadmap 8 tuần

Giai đoạnThời gianDeliverable
Hardware PoCTuần 1–2Thiết bị nhận tin nhắn, test audio, kết nối Wi-Fi/4G.
Firmware + BackendTuần 3–4Device registry, MQTT, API, offline queue, OTA.
AI IntegrationTuần 5–6PTT, STT, LLM, TTS, reminder, memory.
Wearable prototypeTuần 7–8PCB, vỏ 3D, anten, tối ưu pin, test thực địa.
11 / QA

Checklist nghiệm thu V1

Có thể tương tác
Tiến độ kiểm thử0/10 hoàn thành
MetricMục tiêu V1Cách xác minh
Notification delivery≥99% trong môi trường test có mạng ổn địnhMessage ID, ACK, retry log
Voice responseP95 dưới 8 giây cho câu hỏi ngắn (mục tiêu)Đo từ PTT release đến audio response
Battery48 giờ theo profile sử dụng mục tiêuTest chu kỳ thực tế, đo dòng
WeightDưới 65g (mục tiêu)Cân mẫu lắp hoàn chỉnh
Offline recoveryQueue và đồng bộ sau khi có mạngNgắt mạng có chủ đích
OTAUpdate có xác thực, rollback khi lỗiTest firmware staging

Các giá trị là mục tiêu thiết kế/kiểm thử, không phải kết quả đã đạt được.

12 / Engineering decisions

Rủi ro và quyết định còn mở

Rủi roẢnh hưởngHành động
SKU LTE không đúng bandKhông đăng ký mạng / hoạt động thiếu ổn địnhXin datasheet và xác nhận band với nhà bán và nhà mạng trước khi mua.
LTE sụt áp khi phátReset MCU, rớt mạngThiết kế rail nguồn riêng, đo dòng đỉnh và sụt áp.
I2S full-duplexMic/loa lỗi clock hoặc DMAKiểm thử cùng controller, shared BCLK/WS, sample rate.
Anten bị che bởi cơ thể/vỏSóng yếu khi đeoTest anten trong vỏ thật, nhiều tư thế đeo.
Pin không đạt 48hTrải nghiệm kémDuty-cycle LTE, modem sleep, Wi-Fi ưu tiên, đo dòng.
AI provider chậm / lỗiPhản hồi trễTimeout, retry có giới hạn, câu trả lời text fallback.
Thông báo trùng/mấtThiếu tin cậyMessage ID, QoS phù hợp, ACK, TTL, deduplication.

Quyết định cần chốt trước khi đặt hàng

  1. Chọn chính xác board ESP32-S3 và xác minh GPIO không bị board chiếm dụng.
  2. Chọn module LTE/development board đúng band Việt Nam và có tài liệu nguồn.
  3. Chọn loại E-Ink đúng revision, driver và kích thước.
  4. Chọn nguồn/power-path theo pin và dòng đỉnh LTE.
  5. Chốt nơi deploy AI Gateway và chính sách lưu audio/memory.
Không nên làm ngay: chưa thiết kế PCB custom, chưa tối ưu vỏ cuối, chưa đặt sản xuất số lượng lớn. Chỉ làm sau khi module rời đã chạy ổn định và các phép đo nguồn/RF được xác nhận.
13 / Appendix

Lệnh chạy và tài liệu tham khảo

Backend local quick start
mkdir ai-pager-backend && cd ai-pager-backend npm init -y npm install fastify @fastify/cors mqtt mongoose redis dotenv zod openai npm install -D typescript tsx @types/node # Tạo .env từ .env.example # Chạy MongoDB, Redis, EMQX bằng Docker Compose # Khởi chạy API theo script dev trong package.json
Docker Compose – dịch vụ dev tối thiểu
services: api: build: . restart: unless-stopped ports: ["3000:3000"] env_file: .env depends_on: [mongo, redis, mqtt] mongo: image: mongo:8 volumes: [mongo_data:/data/db] redis: image: redis:7-alpine mqtt: image: emqx/emqx:latest ports: ["1883:1883", "18083:18083"] volumes: mongo_data:

Chỉ dùng local/dev. Production cần TLS, secrets management, firewall, auth riêng, persistence/backup và không public MongoDB/Redis.

Tài liệu kỹ thuật