본문으로 건너뛰기
  1. Memo/

아두이노 GPS, 온습도계 데이터를 CSV로 내보내는 코드

·
Arduino GPS
작성자
hw5e
page.hw5e.cc

GPS와 기압계의 정보를 SD 카드에 CSV 파일로 저장하는 아두이노 코드이다

레오나르도같이 USB가 시리얼과 분리된 보드나 시리얼이 2개 이상인 보드가 필요하다 우노에서 활용하려면 소프트웨어 시리얼을 사용해야 한다

대충 BMP280을 I2C, SD카드를 SPI, GPS 모듈을 시리얼 단자에 연결하면 될 것이다.

#include "TinyGPS++.h"
#include <Adafruit_BMP280.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>

TinyGPSPlus gps;
Adafruit_BMP280 bmp;


void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  SD.begin(10);
  if (!SD.begin(10)) {
    Serial.println("SD card ERROR");}
  else
    Serial.println("SD card ");
  while(!Serial);
  bmp.begin(0x76);
  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,     /* Operating Mode. */
           Adafruit_BMP280::SAMPLING_X2,     /* Temp. oversampling */
           Adafruit_BMP280::SAMPLING_X16,    /* Pressure oversampling */
           Adafruit_BMP280::FILTER_X16,      /* Filtering. */
           Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
           File data =SD.open("data.csv", FILE_WRITE);
           data.println("hh,mm,ss,Latitude,Longitude,altitude,temp,pressure,paltitude,st,speed");
           data.close();
Serial.println("hh,mm,ss,Latitude,Longitude,altitude,temp,pressure,paltitude,st,speed");

}

void loop() {
  while (Serial1.available() > 0)
  gps.encode(Serial1.read());
  

  if (gps.altitude.isUpdated()){
    Serial.print(gps.time.hour()); // Hour (0-23) (u8)
    Serial.print(",");
    Serial.print(gps.time.minute()); // Minute (0-59) (u8)
    Serial.print(",");
    Serial.print(gps.time.second());
  
   Serial.print(",");  
      Serial.print(gps.location.lat(),6);
    
      Serial.print(","); 
      Serial.print(gps.location.lng(),6);
      
      Serial.print(",");  
      Serial.print(gps.altitude.meters(),6);
      Serial.print(","); 
       Serial.print(bmp.readTemperature());
    
    Serial.print(",");
    
   
   Serial.print(bmp.readPressure()/100,6);
   Serial.print(F(","));
    Serial.print(bmp.readAltitude(1027)); 
    Serial.print(",");
    Serial.print(gps.satellites.value());
    Serial.print(",");
    Serial.println(gps.speed.mps());
    File data =SD.open("data.csv", FILE_WRITE);
      data.print(gps.time.hour()); // Hour (0-23) (u8)
    data.print(",");
    data.print(gps.time.minute()); // Minute (0-59) (u8)
    data.print(",");
    data.print(gps.time.second());
  
   data.print(",");  
      data.print(gps.location.lat(),6);
    
      data.print(","); 
      data.print(gps.location.lng(),6);
      
      data.print(",");  
      data.print(gps.altitude.meters(),6);
      data.print(","); 
       data.print(bmp.readTemperature());
    
    data.print(",");
    
   
   data.print(bmp.readPressure()/100,6);
   data.print(F(","));
    data.print(bmp.readAltitude(1027)); 
    data.print(",");
    data.print(gps.satellites.value());
    data.print(",");
    data.println(gps.speed.mps());
    data.close();

      }
  
}
Reply by Email