当前位置:首页 > 云服务器

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

游戏科技网2026年09月15日 01:38云服务器10
描述:本文指导你从零搭建轻量级 http 服务器,接收 arduino 通过 http post/get 发送的传感器数据,持久化到 sqlite,并在 java 桌面或服务端应用中安全读取与使用。全程无需复杂运维,兼顾可行性与教学性。要实现 Arduino → 服务器 → SQLite → Java 应…

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

本文指导你从零搭建轻量级 http 服务器,接收 arduino 通过 http post/get 发送的传感器数据,持久化到 sqlite,并在 java 桌面或服务端应用中安全读取与使用。全程无需复杂运维,兼顾可行性与教学性。

要实现 Arduino → 服务器 → SQLite → Java 应用的数据链路,关键在于构建一个稳定、可扩展且易于维护的后端接口层。你已拥有域名(如 yourdomain.com),接下来需完成三步核心建设:部署轻量服务器、开发数据接收接口、打通 Java 应用访问通道

✅ 第一步:选择并配置服务器

推荐使用 DigitalOcean Droplet(Ubuntu 22.04 LTS)AWS EC2 t2.micro(免费层首年可用) —— 成本低、控制台友好、SSH 管理成熟。以 DigitalOcean 为例:

  • 创建 Droplet,选择最低配(1GB RAM / 1 CPU / 25GB SSD);
  • 在创建时启用「IPv4 + IPv6」并绑定你的 GoDaddy 域名(通过 DNS 设置 A 记录指向 Droplet 的公网 IP);
  • 登录后安装必要组件:

    1

    sudo apt update && sudo apt install -y openjdk-17-jre python3-pip nginx

    ⚠️ 注意:不要直接在服务器上运行 Java Web 服务处理 Arduino 请求(资源占用高)。推荐用 Python Flask(轻量、易调试)或 Node.js 快速构建 API 接口。

✅ 第二步:编写服务器端接收接口(Python + Flask 示例)

在服务器上新建 /var/www/sensor-api/app.py:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

from flask import Flask, request, jsonify

import sqlite3

import os

 

app = Flask(__name__)

DB_PATH = "/var/www/sensor-api/sensors.db"

 

def init_db():

    conn = sqlite3.connect(DB_PATH)

    conn.execute("""

        CREATE TABLE IF NOT EXISTS readings (

            id INTEGER PRIMARY KEY AUTOINCREMENT,

            timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,

            temperature REAL,

            humidity REAL,

            light INT

        )

    """)

    conn.close()

 

init_db()

 

@app.route(/api/post, methods=[POST])

def receive_data():

    try:

        data = request.get_json()

        temp = float(data.get("temperature", 0))

        humi = float(data.get("humidity", 0))

        light = int(data.get("light", 0))

 

        conn = sqlite3.connect(DB_PATH)

        conn.execute(

            "INSERT INTO readings (temperature, humidity, light) VALUES (?, ?, ?)",

            (temp, humi, light)

        )

        conn.commit()

        conn.close()

        return jsonify({"status": "success", "received": True}), 200

    except Exception as e:

        return jsonify({"error": str(e)}), 400

 

if __name__ == __main__:

    app.run(host=0.0.0.0:5000)

启动服务并用 Nginx 反向代理(暴露为 https://yourdomain.com/api/post):

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

如何搭建服务器接收 Arduino 传感器数据并集成至 Java 应用
Flatnotes + Tasks.md GitHub Audit

全面审计 Tasks.md 和 Flatnotes 的一致性与准确性;以 GitHub (gh CLI) 为事实来源检测过时笔记/卡片及缺失链接,并生成报告及可选修复计划。

下载

1

2

pip3 install flask

nohup python3 /var/www/sensor-api/app.py > /var/log/sensor-api.log 2>&1 &

再配置 /etc/nginx/sites-available/sensor-api 实现 HTTPS 代理(建议用 Certbot 免费签发 SSL 证书)。

✅ 第三步:Arduino 端发送数据(HTTP POST 示例)

使用 ESP32(带 WiFi)更可靠(比 Uno + ESP-01 更易开发):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

#include <WiFi.h>

#include <HTTPClient.h>

 

const char* ssid = "YOUR_WIFI_SSID";

const char* password = "YOUR_WIFI_PASS";

const char* serverUrl = "https://yourdomain.com/api/post";

 

void setup() {

  Serial.begin(115200);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) delay(1000);

}

 

void loop() {

  // 模拟读取 DHT22 + 光敏电阻(此处简化为固定值)

  String payload = "{\"temperature\":24.5,\"humidity\":62.3,\"light\":482}";

 

  HTTPClient http;

  http.begin(serverUrl);

  http.addHeader("Content-Type", "application/json");

  int httpCode = http.POST(payload);

  if (httpCode > 0) Serial.printf("Success: %d\n", httpCode);

  else Serial.printf("Failed: %s\n", http.errorToString(httpCode).c_str());

  http.end();

 

  delay(5000); // 每 5 秒上报一次

}

✅ 第四步:Java 应用读取 SQLite 数据

在 Java 项目中引入 SQLite JDBC

1

2

3

4

5

<dependency>

  <groupId>org.xerial</groupId>

  <artifactId>sqlite-jdbc</artifactId>

  <version>3.45.1.0</version>

</dependency>

然后通过 JDBC 查询(注意:SQLite 文件需通过 SFTP 下载到本地,或部署 Java 应用在同服务器):

1

2

3

4

5

6

7

8

9

10

String dbPath = "/var/www/sensor-api/sensors.db"; // 或同步到本地路径

Connection conn = DriverManager.getConnection("jdbc:sqlite:" + dbPath);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT * FROM readings ORDER BY timestamp DESC LIMIT 10");

while (rs.next()) {

  System.out.printf("T=%.1f°C, H=%.1f%%, L=%d\n",

      rs.getDouble("temperature"),

      rs.getDouble("humidity"),

      rs.getInt("light"));

}

? 总结与建议

  • 优先用 HTTPS + JSON POST:比 GET 更安全、支持更大载荷、语义清晰;
  • 避免轮询数据库:Java 应用可定时拉取,或通过 WebSocket/Server-Sent Events 实现实时推送(进阶);
  • ⚠️ 生产环境务必加认证:为 /api/post 添加简单 API Key 校验(如 X-API-Key Header),防止恶意提交;
  • ? 域名 ≠ 服务器:GoDaddy 域名只是入口,真实服务必须部署在云服务器上——这是不可跳过的基础设施环节。

整套方案成本可控(首年常可免费)、技术栈主流(Python/SQLite/Java)、调试直观,适合学习、原型验证及中小规模物联网项目落地。

“如何搭建服务器接收 Arduino 传感器数据并集成至 Java 应用” 的相关文章

5元云服务器:入门级新手首选

5元云服务器:入门级新手首选 我是一名刚毕业的大学生,对编程充满了热情,但现实总是骨感一些。刚踏入职场,我梦想着能独立开发一个网站或应用,却苦于没有足够的资源。买一台实体服务器太贵,租个虚拟空间又觉得…

6元服务器租用,高性价比VPS主机推荐

6元服务器租用,高性价比VPS主机推荐 记得去年我刚开始创业,做了一个小型网站来展示我的产品。那时,我手头紧,预算有限,却急着需要一个可靠的服务器来托管网站。作为一个普通上班族,我对技术懂得不多,但我…

2021年云服务器优惠套餐推荐

2021年云服务器优惠套餐推荐 嗨,朋友们!你是否曾经在深夜里,面对一堆代码和服务器错误,感叹说:“为什么我的项目老是卡顿?”如果是这样的话,那你可能正在寻找2021年云服务器优惠套餐的解决方案。作为…

云服务器市场增长

云服务器市场增长 大家好,作为一个每天依赖云服务器的开发者,我亲身感受到市场的飞速膨胀。想象一下,几年前我还得在办公室的老旧电脑前苦苦挣扎,处理数据时总是卡顿不堪,但现在,只需轻轻一点,就能在云端获得…

1元买走一台云服务器,这种天上掉馅饼的事存在吗?

1元买走一台云服务器,这种天上掉馅饼的事存在吗? 那天,我在咖啡馆里刷手机,偶然看到一个广告:“只需1元,就能买走一台高性能云服务器!容量无限,稳定快速,适合创业和学习。”我的心跳突然加速了。作为一个…

云服务器10元月:经济型服务价格新记录

云服务器10元/月:经济型服务价格新记录 最近,云服务器的价格被推向了一个新低,10元一个月的方案让许多人惊喜不已。这不仅仅是数字上的变化,更是科技服务普惠化的一个标志。云服务器作为一种基于云计算的虚…