M4K3R_4_M4R5
Published

Altduino

An Arduino-based altimeter, mostly for model rocketry.

IntermediateWork in progress4,971
Altduino

Things used in this project

Hardware components

BMP180 for arduino
any generic will work
×1
micro SD shield module for arduino
any generic will work
×1
Arduino Mini 05
Arduino Mini 05
any generic will work
×1
Jumper wires (generic)
Jumper wires (generic)
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Solder wire (generic)

Story

Read more

Schematics

Altduino circuit

Code

Altduino

Arduino
/*
Pin configuration
BMP180
  VIN 3,3V
  GND GND
  SCL A5
  SDA A4
  
 SD Card
   CS 4
   SCK 13
   MOSI 11
   MISO 12
   VCC 5V
   GND GND
*/

#include <SD.h>           //Including SD library
#include <SPI.h>          //Including SPI library
#include <Wire.h>         //Including wire library
#include <SFE_BMP180.h>   //Including BMP180 library
SFE_BMP180 pressure;      //Creating an object for the BMP180
SFE_BMP180 bmp180;
Sd2Card card;             //Creating an object for the SD card
File myFile;              //Preparing the files
int pinCS = 4;            //Pin for the sd card
float Po = 1013.0;
char filename[] = "LOGGER00.CSV";

void setup() 
{
  pinMode(pinCS, OUTPUT);   //initialize digital pin pinCS as an output 
  pinMode(LED_BUILTIN, OUTPUT);  //initialize digital pin LED_BUILTIN as an output
 
   // create a new file
    for (uint8_t i = 0; i < 100; i++) {
      filename[6] = i/10 + '0';
      filename[7] = i%10 + '0';
      if (! SD.exists(filename)) {
        break;  // leave the loop!
      }
    }
}

void loop() 
{
   if ((!pressure.begin()) || (!card.init(SPI_HALF_SPEED, 4)) || (!myFile))    //If initialization failed, the built-in led blink:
    {
      digitalWrite(LED_BUILTIN, HIGH);  //turn the led on (High is the voltage level)
      delay(1000);
      digitalWrite(LED_BUILTIN, LOW);  //turn the led off (High is the voltage level)
      delay(1000);
    }
    
  char status;
  double T, P, p0, alt;       //Creating variables for temp, pressure and relative pressure
  status = pressure.startTemperature();
  if (status != 0) {
    delay(status);
    status = pressure.getTemperature(T);
    if (status != 0) {
    status = pressure.startPressure(3);
      if (status != 0) {
        delay(status);
        status = pressure.getPressure(P, T);
        if (status != 0) {
          alt = bmp180.altitude(P, Po);
          }}}}
  
  //SD Card setup
   myFile = SD.open(filename, FILE_WRITE);
   if (myFile) {
     
     myFile.print("Altuino : ");
     myFile.print("\t");    
     myFile.print(alt);
     myFile.print("\t");
     myFile.print(" Meters");
     myFile.close();
    }   
      
  delay(500);
}

Credits

M4K3R_4_M4R5
1 project • 0 followers
Thanks to AdrieSentosa, Adafruit , and Sparkfun .

Comments