“Pet-to-Pet”社交增强开源计划


🐾 Pet-to-Pet (P2P) Protocol

🌍 让每一个数字宠物都不再孤单 | Make Every Digital Pet Social

![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)
![Status: Beta](https://img.shields.io/badge/Status-Beta-orange)
![Hardware](https://img.shields.io/badge/Hardware-ESP32%20%7C%20M5Stack%20%7C%20RPI%20Pico-blue)

简介Pet-to-Pet 是一个去中心化的、基于 NFC 的开源协议与固件套件。它旨在赋予现有的桌面机器人、电子手办、DIY 智能硬件以“社交灵魂”。无需云端服务器,两个设备只需轻轻“碰一碰”,即可交换身份、计算性格匹配度,并触发独特的互动表情与动作。

愿景:打破硬件孤岛,构建一个万物互联的“数字宠物元宇宙”。

🚀 核心特性 (Features)

  • 🤝 离线社交 (Offline-First):所有交互基于本地 NFC 通信与边缘计算,无需联网,隐私安全,响应毫秒级。
  • 🧠 性格向量匹配 (Personality Vector Match):内置轻量级算法,通过对比双方存储的“喜好/性格向量”,实时计算匹配度(0-100%)。
  • 🎭 动态表情反馈 (Dynamic Expression):根据匹配结果,自动驱动屏幕显示开心、惊讶、生气等表情,或触发动作(如跳舞、震动)。
  • 🔌 硬件无关性 (Hardware Agnostic):支持 ESP32, M5Stack, Raspberry Pi Pico, Arduino 等多种主流开源硬件平台。
  • 🎨 可定制皮肤 (Customizable Skins):社区驱动的表盘与表情包库,支持 AI 生成的像素头像。

🛠️ 快速开始 (Quick Start)

1. 准备硬件 (Hardware Requirements)

你需要至少两套以下配置的设备来体验 P2P 社交:

表格

组件推荐型号备注
主控板ESP32-S3 / M5StickC Plus2 / RPI Pico W需带屏幕 (OLED/TFT)
NFC模块PN532 (推荐) / RC522支持读写与卡模拟模式
电源3.7V 锂电池或通过 USB 供电
外壳3D打印件 / 现有机器人外壳需将 NFC 天线贴近表面

💡 懒人方案:直接购买两个 M5StickC Plus2 + PN532 Hat,无需焊接,插上即用。

2. 烧录固件 (Flash Firmware)

我们提供预编译的固件 (.bin) 和完整的源代码。

bash

编辑

1# 克隆仓库
2git clone https://github.com/yourname/pet-to-pet.git
3cd pet-to-pet/firmware
4
5# 使用 PlatformIO 或 Arduino IDE 打开
6# 配置你的 WiFi (仅用于初始配网,后续交互无需WiFi)
7# 上传代码到设备

3. 初始化配置 (Initialization)

首次启动时,设备会进入“配网模式”:

  1. 手机连接设备热点 PetSetup_XXXX
  2. 访问 192.168.4.1 打开配置页。
  3. 设置性格:滑动滑块设置你的宠物属性(如:活泼度、内向度、喜爱颜色等),系统会自动生成 特征向量
  4. 上传头像:上传一张图片,系统会自动转换为适合屏幕显示的像素图。
  5. 数据写入 NFC 芯片,配置完成!

4. 开始社交 (Start Socializing)

  • 动作:将两个已配置好的设备背部(NFC 区域)贴近。
  • 现象
    • 🔵 蓝光闪烁:正在读取数据…
    • 🟢 绿灯常亮 + ❤️表情:匹配度 > 80% (灵魂伴侣!)
    • 🟡 黄灯呼吸 + 😐表情:匹配度 40%-80% (普通朋友)
    • 🔴 红灯快闪 + 😡表情:匹配度 < 40% (气场不合)
  • 日志:双方设备都会记录这次相遇的时间、对象 ID 和匹配度。

📡 技术原理 (How It Works)

协议架构

P2P 协议运行在 NFC Forum Type 4 Tag 标准之上,数据存储在 NDEF 记录中。

数据结构 (JSON Payload)

每个设备的 NFC 芯片中存储如下核心数据块(最大 1KB):

json

编辑

1{
2  "proto_ver": "1.0",
3  "device_id": "uuid-v4-string",
4  "owner_sig": "sha256_hash", 
5  "vector": [0.85, 0.12, 0.99, 0.45, 0.30], // 归一化后的5维性格向量
6  "skin_id": "pixel_cat_01",
7  "last_seen": 1709123456
8}

匹配算法 (Matching Logic)

为了适应微控制器 (MCU) 的低算力,我们采用简化的 余弦相似度 (Cosine Similarity) 算法:

Similarity=ABABSimilarity=∥A∥∥BAB

  • 计算耗时:< 10ms (ESP32 @ 240MHz)
  • 无需浮点单元 (FPU) 优化,纯整数运算版本可选。

状态机 (State Machine)

固件内部运行一个简单的状态机:
IDLE (休眠/待机) ➔ DETECT (检测到射频场) ➔ READ (读取对方数据) ➔ CALC (本地计算) ➔ REACT (驱动屏幕/LED/马达) ➔ LOG (记录日志) ➔ IDLE


📂 项目结构 (Project Structure)

text

编辑

1pet-to-pet/
2├── docs/                  # 详细文档与原理图
3├── firmware/              # 嵌入式固件源码
4│   ├── src/
5│   │   ├── nfc_driver/    # NFC 驱动层 (PN532/RC522)
6│   │   ├── match_engine/  # 向量匹配算法核心
7│   │   ├── ui_renderer/   # 屏幕渲染引擎 (支持多种分辨率)
8│   │   └── main.cpp       # 主逻辑
9│   ├── platforms/         # 不同硬件平台的配置文件
10│   │   ├── m5stickc/
11│   │   ├── esp32_devkit/
12│   │   └── pico_w/
13│   └── lib/               # 依赖库
14├── hardware/              # 硬件设计文件
15│   ├── pcb/               # KiCad 工程文件 (核心扩展板)
16│   ├── stl/               # 3D打印外壳模型
17│   └── bom.csv            # 元件清单
18├── app/                   # (可选) 手机配置 App 源码 (Flutter)
19├── tools/                 # 向量生成器、皮肤转换工具
20└── README.md

🤝 如何贡献 (Contributing)

我们要构建的是生态,不仅仅是一个项目!欢迎各种形式的贡献:

  1. 适配新硬件:让你的旧玩具支持 P2P 协议。
  2. 设计新皮肤:提交像素风表情包或 UI 主题。
  3. 优化算法:让匹配更精准,或引入更有趣的互动逻辑(如“石头剪刀布”游戏)。
  4. 翻译文档:帮助全球开发者理解项目。

请查看 CONTRIBUTING.md 了解详细指南。

📜 许可证 (License)

本项目采用 MIT License 开源。

  • 你可以自由地使用、修改、分发代码。
  • 你可以基于此协议制造并销售商业硬件(我们鼓励这样做!)。
  • 唯一的要求是:保留原作者署名,并开源你对核心协议的修改。

🌟 社区展示 (Showcase)

  • [视频] 两个 M5Stack 机器人的第一次约会 – by @MakerA
  • [教程] 如何给 Eilik 机器人加装 P2P 社交模块 – by @RobotLover
  • [设计] 赛博朋克风格 P2P 外壳分享 – by @DesignerX

(此处链接指向社区实际内容)

📬 联系方式

“Technology is best when it brings people together.”
但首先,它得让他们的宠物先聊起来。 🐶🤝🐱


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

探索未来出版

九录科技愿意通过最前沿的技术和深厚的行业理解,为您的数字业务提供架构简单但很灵活的从创作到发布的全方位支持。

本站内容部分由AI生成,仅供参考,具体业务可随时电话/微信咨询(18610359982)。