+
29
-

回答

普通手机内置BLE蓝牙,点对点直连极限视距大约80~120米,无法直接达到1公里。两种路线实现「1公里点对点离线蓝牙聊天」:

方案A(手机APP纯软件,无外接硬件):蓝牙Mesh多跳中继依靠多部手机接力转发消息,单跳距离有限,开阔环境多跳叠加接近1km;两台手机直连永远达不到1km。

方案B(嵌入式硬件方案,真正点对点直达1km)ESP32 / nRF 外接远距离BLE-LongRange模块、或者LoRa射频,手机通过普通蓝牙连接硬件终端,硬件射频完成1km远距离通信(最稳定、可实现两台终端直接通信)。

下面分类整理可直接上手的开源项目

一、手机端|纯BLE离线点对点/Mesh聊天开源项目(APP方案)

1. BitChat(最知名,蓝牙Mesh去中心化聊天)

仓库:iOS:https://github.com/permissionlesstech/bitchatAndroid:https://github.com/offlineapps/bitchat-android 

特性

BLE Mesh、无服务器、无需手机号、端到端加密

设备自动发现,消息多跳转发扩大覆盖范围

支持文字消息;开阔区域多跳组网最大可接近1km 

限制:两台手机直连仍然只有百米级;必须多台设备做中继才能拉长距离 

系统限制:Android/iOS蓝牙后台扫描策略严格,穿墙衰减严重

2. ble_peer_session(Flutter BLE 一对一P2P通信框架)

https://github.com/Viweld/ble_peer_session 

轻量框架,仅实现1对1 BLE点对点会话,适合从零开发简易聊天Demo 

跨平台Flutter,可快速搭建聊天界面 

原生手机BLE,距离上限≈100米,无法直达1km

3. Berty

https://github.com/berty/berty 

支持BLE/WiFi多种离线传输、跨平台、完整加密协议栈 

偏重大型去中心化网络,学习成本偏高

4. Walkie-Talkie BLE语音文字对讲

https://github.com/denizetkar/walkie-talkie-appBLE Mesh离线对讲机,支持文字+语音,适合户外应急通信

二、嵌入式硬件方案|真正实现【两台终端点对点直达1km】(推荐满足你1km需求)

原理:手机蓝牙连接ESP32开发板,开发板搭载远距离射频模块(LoRa / BLE LongRange)完成1km通信。手机只负责界面,远距离无线交给硬件。

1. Meshtastic(行业标杆,强烈推荐)

https://github.com/meshtastic/firmware

硬件:ESP32 + SX1262 LoRa模块

开阔视距3~8km远大于1km,点对点+Mesh组网双支持

配套官方Android/iOS APP,手机蓝牙连接硬件终端收发消息

开源固件、端到端加密、支持文字、GPS位置、离线消息 

最佳选择:直接买到成品硬件,不需要从零写底层射频代码

2. 3NCRYP2P_2|ESP32 LoRa加密点对点文本终端

https://github.com/sdebby/3NCRYP2P_2ESP32+433MHz LoRa,实测城区视距1.5km点对点加密聊天,自带OLED屏幕、迷你键盘;也可增加BLE模块对接手机。

3. ESP-NOW-LoRa Messenger

https://github.com/Marusko/ESP-NOW-LoRa-Messenger融合ESP-NOW高速短距 + LoRa远距离骨干链路,可自定义1km点对点文本通信

三、两种实现路线对比

纯手机蓝牙Mesh(BitChat)手机内置BLE,多跳中继❌单对手机不行,需要多台中继低,直接编译APP多人聚集场景、大型活动应急
ESP32+LoRa(Meshtastic)手机蓝牙 ↔ 硬件终端 ↔ LoRa远距离射频✅两台终端直达1km以上中等,可直接使用现成固件野外、点对点远距离离线通信【匹配你的需求】

四、如果你目标:仅两台设备、点对点直达1公里聊天

不要指望手机原生蓝牙直连,最优路线:采用 Meshtastic

采购2套 Meshtastic硬件(ESP32 + LoRa射频)

手机安装官方App,蓝牙分别连接两台硬件

硬件之间LoRa射频完成1km远距离点对点通信

五、从零自研开发简易流程(参考)

通信层:ESP32 SX1262 LoRa 点对点收发文本

ESP32开启BLE服务,手机APP通过BLE收发聊天文字

手机APP(Flutter ble_peer_session / Android BLE GATT)构建聊天UI

增加CRC校验、消息重传、简单加密

网友回复

我知道答案,我要回答