Project tutorial
1Sheeld CanSat

1Sheeld CanSat © GPL3+

A successful attempt at making a fully functional Telemetry CanSat using 1Sheeld.

  • 4,468 views
  • 0 comments
  • 19 respects

Components and supplies

A000066 iso both
Arduino UNO & Genuino UNO
×1
Screen shot 2019 03 20 at 2 38 27 pm fqndazqcx1
1Sheeld
×1
Tens70
9V battery (generic)
×1
Smartphone with necessary sensors
Purple phones work best.
×1

About this project

Note the perfect landing.

What is a CanSat?

CanSats are great educational platforms for anyone wanting to get familiarized with miniaturized satellites and space technologies in general. They are devices the size of soda cans (hence the name) that are launched by the use of a sounding rocket/weather balloon, and then dropped. They collect data as they descend.

What is 1Sheeld?

1Sheeld is an Arduino compatible shield that interfaces with the sensors in your phone, so that you can use them for prototyping purposes without the need to buy several other shields and/or modules.

Attempt

I attempted to scrap all the sensors that would otherwise be used in a CanSat, such as temperature sensors, IMUs, GPS, etc. and replace them by 1Sheeld.

The 1Sheeld shields I used are:

  • Accelerometer
  • Data Logger
  • Gyroscope
  • GPS
  • Orientation Sensor
  • Push Button
  • Temperature Sensor
  • Pressure Sensor


Steps

  1. Please check 1Sheeld getting started tutorial to learn how to connect 1Sheeld to your Arduino. 
  2. Upload the code (in the code section) on your Arduino.
  3. 3D print the structure, but make sure that you change the dimensions to fit your smartphone. 
  4. Weigh your CanSat with your smartphone and electronics inside.
  5. Use the following formula to calculate parachute dimensions:
Drag Force (Fw) = Weight (Fz)
½ . cw . p . V2 . A = m . g 
cw : drag coefficient of the parachute Assume (cw ) is 0.75 
A : area of the parachute = 2mg/pv2cw 
p :density of the air Assume (p) is 1.225 kg/m2 
v : descent velocity of the cansat (Ideally 5 m/s, but I used 3 m/s for good measure)

  6. Construct the parachute. Here's a simple tutorial.

Data Output


CanSat Numbers

Weight= 350 g

Speed= 4 m/s

    Code

    Untitled fileArduino
    #include <OneSheeld.h>
    
    int counter = 0;
    
    void setup()
    {
      //initialize 1Sheeld
    	OneSheeld.begin();
    //Save previous data
    	Logger.stop();
    	
    }
    
    void loop()
    {
    	/* Always check if the push button is pressed. */
      if(PushButton.isPressed())
      {
      	Logger.start("Telemetry");
      for(counter=0; counter<4; counter++){
        //log accelartion 
      		Logger.add("Xacc", AccelerometerSensor.getX());
      		Logger.add("Yacc", AccelerometerSensor.getY());
      		Logger.add("Zacc", AccelerometerSensor.getZ());
      		//Insert empty column
      		Logger.add(" ", " " );
    		
    		//log angular velocity
      		Logger.add("Xrate", GyroscopeSensor.getX() );
      		Logger.add("Yrate", GyroscopeSensor.getY() );
      		Logger.add("Zrate", GyroscopeSensor.getZ() );
    		//Insert empty column
    		Logger.add(" ", " " );
    	
    		//log euler angles
    	  	Logger.add("Pitch", OrientationSensor.getX() );
    	  	Logger.add("Yaw", OrientationSensor.getY() );
      		Logger.add("Roll", OrientationSensor.getZ() );
    		//Insert empty column
    		Logger.add(" ", " " );
    		
    		//log GPS coordinates
          	        Logger.add("Latitude", GPS.getLatitude());
                    Logger.add("Longitude", GPS.getLongitude());
                    //Insert empty column
    		Logger.add(" ", " " );
    		
    		//log pressure
    		Logger.add("Pressure", PressureSensor.getValue());
    		//Insert empty column
    		Logger.add(" ", " " );
                    OneSheeld.delay(500);
    		
    		//log temperature
    		Logger.add("temp", TemperatureSensor.getValue());
                    OneSheeld.delay(500);
                   //Insert empty column
    		Logger.add(" ", " " );
                   
    		//Log the row
    		Logger.log();
                  OneSheeld.delay(1000);
      }
      Logger.stop();
      }
      counter=0;
    }
    
    Untitled fileArduino
    #include <OneSheeld.h>
    
    int counter = 0;
    
    void setup()
    {
      //initialize 1Sheeld
    	OneSheeld.begin();
    //Save previous data
    	Logger.stop();
    	
    }
    
    void loop()
    {
    	/* Always check if the push button is pressed. */
      if(PushButton.isPressed())
      {
      	Logger.start("Telemetry");
      for(counter=0; counter<4; counter++){
        //log accelartion 
      		Logger.add("Xacc", AccelerometerSensor.getX());
      		Logger.add("Yacc", AccelerometerSensor.getY());
      		Logger.add("Zacc", AccelerometerSensor.getZ());
      		//Insert empty column
      		Logger.add(" ", " " );
    		
    		//log angular velocity
      		Logger.add("Xrate", GyroscopeSensor.getX() );
      		Logger.add("Yrate", GyroscopeSensor.getY() );
      		Logger.add("Zrate", GyroscopeSensor.getZ() );
    		//Insert empty column
    		Logger.add(" ", " " );
    	
    		//log euler angles
    	  	Logger.add("Pitch", OrientationSensor.getX() );
    	  	Logger.add("Yaw", OrientationSensor.getY() );
      		Logger.add("Roll", OrientationSensor.getZ() );
    		//Insert empty column
    		Logger.add(" ", " " );
    		
    		//log GPS coordinates
          	        Logger.add("Latitude", GPS.getLatitude());
                    Logger.add("Longitude", GPS.getLongitude());
                    //Insert empty column
    		Logger.add(" ", " " );
    		
    		//log pressure
    		Logger.add("Pressure", PressureSensor.getValue());
    		//Insert empty column
    		Logger.add(" ", " " );
                    OneSheeld.delay(500);
    		
    		//log temperature
    		Logger.add("temp", TemperatureSensor.getValue());
                    OneSheeld.delay(500);
                   //Insert empty column
    		Logger.add(" ", " " );
                   
    		//Log the row
    		Logger.log();
                  OneSheeld.delay(1000);
      }
      Logger.stop();
      }
      counter=0;
    }
    
    1Sheeld CanSat

    Custom parts and enclosures

    Material: PLA
    Resolution: 0.4mm
    Infill: 25%
    Circular cutouts are used for ventilation, so that the sensors record the most accurate readings.
    Upper Cover
    Material: PLA
    Resolution: 0.4mm
    Infill: 25%
    Ridges in the top and lower cover are used to anchor the smartphone.
    Adjust the size to fit your smartphone
    Material: PLA
    Resolution: 0.4mm
    Infill: 25%
    Ridges in the top and lower cover are used to anchor the smartphone.
    Adjust the size to fit your smartphone

    Schematics

    1Sheeld Arduino Assembly
    Use the proper battery connector to connect the 9V battery to the Arduino.
    1sheeld arduino assembly
    Fritzing File
    cansat.fzz

    Comments

    Similar projects you might like

    4x4x4 LED cube with Arduino Uno and 1sheeld

    Project tutorial by Hassan Ibrahim

    • 29,722 views
    • 6 comments
    • 60 respects

    Bluetooth Steering wheel for a robot using 1Sheeld

    Project tutorial by Kristian Blåsol

    • 2,732 views
    • 1 comment
    • 13 respects

    Analog Clock using 1Sheeld Graphical LCD

    Project tutorial by Ahmed El-Hinidy

    • 2,069 views
    • 0 comments
    • 7 respects

    Automated Photo Booth using Arduino and 1Sheeld

    Project in progress by Ashraf Nabil

    • 3,462 views
    • 0 comments
    • 11 respects

    Voice Assistant Using A Smart Phone And 1Sheeld

    Project tutorial by Oguz Salar

    • 1,284 views
    • 0 comments
    • 5 respects

    Led fading using 1Sheeld

    Project tutorial by Nado Hollow

    • 839 views
    • 1 comment
    • 2 respects
    Add projectSign up / Login