乐鑫技术交流
直播中

恐龙之家

8年用户 842经验值
私信 关注
[问答]

如何在没有互联网的情况下从ESP8266获取数据到Pi?

我目前正在使用 ESP-NOW 在两个 ESP8266 模块(相距 500 米)之间发送温度数据,因为该地区没有可用的 WiFi。(参见随附的屏幕图像。)我希望接收 ESP 模块的传感器数据显示在 LED 矩阵上,我之前曾将其与 Raspberry Pi Zero 一起使用过。
找到了关于如何连接和配置 Pi 的有用信息,但作为相对初学者,我不清楚 Pi 需要什么代码才能从有线 ESP 获取温度变量。

回帖(1)

从未拥有

2024-1-17 15:57:47
在没有互联网的情况下从ESP8266获取数据到Pi的具体方法取决于您使用的传输协议和传输方式。根据您的描述,您正在使用ESP-NOW作为传输协议,该协议可以在两个ESP8266模块之间直接通信,而无需WiFi接入点。

要将ESP8266传输的数据显示在Raspberry Pi Zero的LED矩阵上,您需要编写Python代码,以接收从ESP8266发送的数据并将其转换为控制LED矩阵的指令。

以下是解决方案的基本步骤:

1.在Raspberry Pi Zero上安装Python库,以便您可以使用串口接收从ESP8266发送的数据。您可以使用PySerial库进行此操作。

2.在ESP8266上编写代码,以将传感器数据发送到Raspberry Pi Zero的串口。以下是一个简单的示例代码:

```
#include

// Replace with the MAC address of your Raspberry Pi Zero
uint8_t destAddress[] = {0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF};

// Define the structure for the message to be sent
struct Message {
  float temperature;
};

void setup() {
  // Initialize ESP-NOW
  if (esp_now_init() != 0) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }

  // Register the recipient of the message
  esp_now_peer_info_t peerInfo;
  memcpy(peerInfo.peer_addr, destAddress, 6);
  peerInfo.channel = 0;
  peerInfo.encrypt = false;

  if (esp_now_add_peer(&peerInfo) != 0) {
    Serial.println("Error adding ESP-NOW peer");
    return;
  }
}

void loop() {
  // Read the temperature
  float temperature = readTemperature();

  // Create a message with the temperature
  Message message;
  message.temperature = temperature;

  // Send the message to the Raspberry Pi Zero
  esp_now_send(destAddress, (uint8_t *)&message, sizeof(Message));
}
```

3.使用PySerial库在Raspberry Pi Zero上打开串口并接收ESP8266发送的消息。以下是一个简单的示例代码:

```
import serial
import struct

# Open the serial port
ser = serial.Serial('/dev/ttyUSB0', 9600)

while True:
    # Read a message from the ESP8266
    message = ser.read(8)

    # Unpack the message into a float
    temperature = struct.unpack('f', message)[0]

    # TODO: Convert the temperature to LED matrix control commands
```

4.将接收到的传感器数据转换为控制LED矩阵的指令。这是非常具体的,并取决于您使用的LED矩阵和控制协议。您可以根据您的需求使用各种Python库和工具进行此操作。

请注意,以上代码仅为示例,可能需要进行适当调整以适合您的需求。此外,您可能还需要处理错误和排除故障。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分