Простые способы записи данных датчика BME280 на SD-карту

Привет! Сегодня мы погружаемся в мир датчиков и SD-карт BME280, изучая различные методы записи данных датчиков на SD-карту. Независимо от того, работаете ли вы с Arduino или Raspberry Pi, мы предоставим вам несколько простых примеров кода. Итак, начнём!

Метод 1: Arduino с модулем SD-карты

Если вы используете Arduino, вы можете легко записать данные датчика BME280 на SD-карту, добавив модуль SD-карты в вашу настройку. Вот простой фрагмент кода, иллюстрирующий, как это работает:

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <SD.h>
#define SD_CS_PIN 10
Adafruit_BME280 bme;
File dataFile;
void setup() {
  // Initialize BME280 sensor
  if (!bme.begin(0x76)) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }
// Initialize SD card
  if (!SD.begin(SD_CS_PIN)) {
    Serial.println("SD card initialization failed!");
    while (1);
  }
// Open a new file for data logging
  dataFile = SD.open("data.txt", FILE_WRITE);
}
void loop() {
  // Read sensor data
  float temperature = bme.readTemperature();
  float humidity = bme.readHumidity();
  float pressure = bme.readPressure() / 100.0;
  // Log data to SD card
  dataFile.print("Temperature: ");
  dataFile.print(temperature);
  dataFile.print(" °C, Humidity: ");
  dataFile.print(humidity);
  dataFile.print(" %, Pressure: ");
  dataFile.print(pressure);
  dataFile.println(" hPa");
  // Wait for a second before logging the next data point
  delay(1000);
}

Метод 2: Raspberry Pi с Python

Если вы работаете с Raspberry Pi, вы можете использовать Python для записи данных датчика BME280 на SD-карту. Вот пример использования библиотек smbusи csv:

import smbus
import csv
import time
bus = smbus.SMBus(1)
address = 0x76
filename = "data.csv"
def initialize_bme280():
    bus.write_byte_data(address, 0xF2, 0x01)
    bus.write_byte_data(address, 0xF4, 0x27)
    bus.write_byte_data(address, 0xF5, 0xA0)
def read_bme280_data():
    data = bus.read_i2c_block_data(address, 0x88, 24)
    temp = ((data[3] * 65536) + (data[4] * 256) + (data[5] & 0xF0)) / 16
    humidity = ((data[6] * 256) + (data[7] & 0xF0)) / 16
    pressure = ((data[8] * 256) + (data[9] * 16) + (data[10] & 0xF0)) / 16
    return temp / 16.0, humidity / 16.0, pressure / 16.0
def log_data_to_csv(data):
    with open(filename, 'a') as file:
        writer = csv.writer(file)
        writer.writerow(data)
def main():
    initialize_bme280()
    while True:
        temp, humidity, pressure = read_bme280_data()
        log_data_to_csv([temp, humidity, pressure])
        time.sleep(1)
if __name__ == '__main__':
    main()

Это всего лишь несколько примеров для начала. В зависимости от ваших конкретных требований и платформы, которую вы используете, вы можете изучить другие библиотеки и методы для записи данных датчика BME280 на SD-карту.

Итак, попробуйте! Начните записывать данные датчиков на SD-карту с помощью этих простых методов. Приятного творчества!