0

0

如何搭建服务器接收 Arduino 传感器数据并集成到 Java 应用中

聖光之護

聖光之護

发布时间:2025-12-29 15:32:40

|

880人浏览过

|

来源于php中文网

原创

如何搭建服务器接收 Arduino 传感器数据并集成到 Java 应用中

本文介绍从零开始搭建轻量级服务器,接收 arduino 通过 http 或 mqtt 上报的传感器数据,并将其持久化至 sqlite 数据库,供 java 应用实时读取与分析的完整实践路径。

构建一个可靠的数据通道,将 Arduino 采集的温湿度、光照、加速度等传感器数据上传至服务器,并被 Java 后端应用安全、高效地消费,是物联网项目中的典型需求。整个链路可分为三部分:Arduino 端数据上报 → 服务端接收与存储 → Java 应用查询使用。以下为可落地的技术方案:

一、服务端选型与部署(低成本起步)

你已注册域名(如 yourdomain.com),接下来需一台可公网访问的服务器。推荐选择:

  • 入门级云服务:DigitalOcean Droplet($5/月,1GB RAM)、AWS EC2 t2.micro(免费层12个月)或 Google Cloud e2-micro(始终免费);
  • 操作系统:Ubuntu 22.04 LTS(稳定、社区支持强);
  • 基础服务栈:Nginx(反向代理 + HTTPS 终结) + Flask/FastAPI(Python 轻量 Web 框架) + SQLite3(嵌入式数据库,零配置、适合中小吞吐)。
✅ 示例:在 Ubuntu 上快速启动一个接收端(使用 Flask): # server.py from flask import Flask, request, jsonify import sqlite3 import time

app = Flask(name)

Quinvio AI
Quinvio AI

AI辅助下快速创建视频,虚拟代言人

下载

def init_db(): conn = sqlite3.connect('sensors.db') conn.execute('''CREATE TABLE IF NOT EXISTS readings ( id INTEGER PRIMARY KEY AUTOINCREMENT, device_id TEXT NOT NULL, temperature REAL, humidity REAL, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP )''') conn.commit() conn.close()

@app.route('/api/sensor', methods=['POST']) def receive_sensor(): try: data = request.get_json() conn = sqlite3.connect('sensors.db') conn.execute( "INSERT INTO readings (device_id, temperature, humidity) VALUES (?, ?, ?)", (data['device_id'], data['temp'], data['humi']) ) conn.commit() conn.close() return jsonify({"status": "success"}), 200 except Exception as e: return jsonify({"error": str(e)}), 400

if name == 'main': init_db() app.run(host='0.0.0.0:5000') # 生产环境请用 Gunicorn + Nginx

运行后,Arduino 可通过 HTTP POST 发送 JSON 数据:
```cpp
// Arduino ESP32 示例(使用 WiFiClientSecure)
const char* server = "yourdomain.com";
http.begin(client, "https://" + String(server) + "/api/sensor");
http.addHeader("Content-Type", "application/json");
String json = "{\"device_id\":\"esp32-01\",\"temp\":24.5,\"humi\":62.3}";
int httpCode = http.POST(json);

二、通信协议选型建议

  • HTTP(S) GET/POST:简单直接,适合低频(≤1次/秒)、单向上报;需注意 HTTPS 证书(用 Certbot 免费申请 Let's Encrypt 证书);
  • MQTT(推荐进阶):若需双向交互(如远程校准、开关控制),选用 Mosquitto 服务器 + Arduino PubSubClient 库,Java 端用 Eclipse Paho 客户端订阅主题,实时性更高、资源占用更低。

三、Java 应用对接 SQLite

Java 侧无需额外服务,直接通过 JDBC 访问同步到本地或远程 SQLite 文件(注意:SQLite 不支持多进程高并发写入,生产中建议服务端提供 REST API 供 Java 调用):

立即学习Java免费学习笔记(深入)”;

// Java 查询示例(使用 sqlite-jdbc)
String url = "jdbc:sqlite:sensors.db";
try (Connection conn = DriverManager.getConnection(url);
     Statement stmt = conn.createStatement();
     ResultSet rs = stmt.executeQuery("SELECT * FROM readings ORDER BY timestamp DESC LIMIT 10")) {
    while (rs.next()) {
        System.out.printf("Device: %s | Temp: %.1f°C | Time: %s%n",
            rs.getString("device_id"),
            rs.getDouble("temperature"),
            rs.getString("timestamp"));
    }
}

注意事项

  • ? 域名需在云服务器上配置 A 记录指向公网 IP,并启用 HTTPS(Nginx + Certbot);
  • ? 避免 Arduino 直连 SQLite(驱动缺失、文件锁问题),务必通过服务端中间层收发;
  • ? 单机 SQLite 在日均万级写入下仍表现良好;超量建议平滑迁移至 PostgreSQL;
  • ? 开发阶段可用 ngrok http 5000 快速暴露本地服务测试 Arduino 连接。

整套方案兼顾成本、可控性与可扩展性——从 GoDaddy 域名出发,仅需 1 小时即可完成端到端验证。后续可按需加入用户认证、数据可视化(如 Grafana)、告警推送等功能。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

246

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

522

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

610

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

244

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

693

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3618

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

54

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

71

2026.01.13

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

4

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 4.9万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号