Pallone sonda- sensori

Ciao a tutti, ho intenzione di fare un pallone sonda (dopo previa autorizzazione ENAC) e oltre alla fotocamera avrei intenzione di mettere un microprocessore (Arduino ) . Che tipo di arduino dovrei comprare per fare ciò? e che moduli (sensori) mi consigliate di prendere? Fate conto che vorrei che ogni tot secondi vengano registrati i dati su una scheda SD...

grazie mille

Ho trovato un codice già fatto open-source per codesti sensori : Arduino Mega microcontroller; Dallas DS18B20 temperature sensor; Adafruit DHT22 humidity and pressure sensor: Adafruit MPL115A2 atmospheric pressure and temperature sensor; Simcom SIM908 GSM/GPS module; Futura Elettronica SIM908 shield; Futura Elettronica SD shield: Radiometrix NTX2 Transmitter; Video Camera 2Mpx Energy: 8 x AA (single 1,5 2800 mAh) = total 12 V 2800 mAh; Piezo Siren 108db for the sound alarm;

Potreste adattare il codice , per favore, togliendo le parti relative a : Simcom SIM908 GSM/GPS module; Futura Elettronica SIM908 shield; Radiometrix NTX2 Transmitter;

il sorgente è : https://github.com/anerDev/ASSM1/blob/master/assm/assm.ino

Ho modifcato il codice facendo conto che avrò solo questi sensori :
Dallas DS18B20 temperature sensor;
Adafruit DHT22 humidity and pressure sensor:
Adafruit MPL115A2 atmospheric pressure and temperature sensor;
Futura Elettronica SD shield:
Energy: 8 x AA (single 1,5 2800 mAh) = total 12 V 2800 mAh;

Potete darci uno sguardo?

//General declaration
#include "Wire.h"
#include "OneWire.h"
#include "SoftwareSerial.h"
int timefixn;
int counter;

//Declaration DS18B20
#include "DallasTemperature.h"
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
float temperature;
int temperaturertty;

//Declaration DHT22
#include "DHT22.h"
#define DHT22_PIN 4
DHT22 sensoreDHT22(DHT22_PIN);
float humidity;
int humidityrtty;

//Declaration Led
#define led 5



//Declaration SD
#include "SD.h"
#define sdpin 9
File data;
File datasetup;
char datasd[70];

//Declaration MPL115A2
#include "MPL115A2.h"
float pressure;
int pressurertty;



void setup()
{
    //Setting PIN
   
    pinMode(sdpin, OUTPUT); //SD Shield
    pinMode(led, OUTPUT); //Led 
      digitalWrite(led, LOW);
   
        
    
    
    //Led
    digitalWrite(led, HIGH);
    sprintf(rtty,"Led: ON (watch)\n");	rtty_txstring (rtty);
    delay(3000);
    digitalWrite(led, LOW);
    
    //MPL115A2
    MPL115A2.begin();
    MPL115A2.ReadSensor();
    MPL115A2.shutdown();
    pressurertty = MPL115A2.GetPressure();
    if (pressurertty == 69)  {
      sprintf(rtty,"MPL115A2: ERROR\n");  rtty_txstring (rtty);
      while(1){
        digitalWrite(led, HIGH);
        delay(250);
        digitalWrite(led, LOW);
        delay(250);
      }
    }
    else {
      sprintf(rtty,"MPL115A2: OK\n");  rtty_txstring (rtty);
    }
    
    //DS18B20
    DS18B20.begin();
    DS18B20.requestTemperatures();
    temperaturertty = DS18B20.getTempCByIndex(0);
    if (temperaturertty == 0) {
        sprintf(rtty,"DS18B20: ERROR\n");  rtty_txstring (rtty);
        while(1){
          digitalWrite(led, HIGH);
          delay(250);
          digitalWrite(led, LOW);
          delay(250);
        }
    }
    else {
        sprintf(rtty,"DS18B20: OK\n");      rtty_txstring (rtty);
    }
    
    //DHT22
    DHT22_ERROR_t DHT22errorCode;
    delay(2000);
    DHT22errorCode = sensoreDHT22.readData();
    switch(DHT22errorCode)
    {       
        case DHT_ERROR_NONE:         sprintf(rtty,"DHT22: OK\n");               rtty_txstring (rtty);  break;
        case DHT_BUS_HUNG:           sprintf(rtty,"DHT22: BUS Hung\n");         rtty_txstring (rtty);  break;
        case DHT_ERROR_NOT_PRESENT:  sprintf(rtty,"DHT22: ERROR\n");            rtty_txstring (rtty);  while(1) { digitalWrite(led, HIGH); delay(250); digitalWrite(led, LOW); delay(250); } break;
        case DHT_ERROR_ACK_TOO_LONG: sprintf(rtty,"DHT22: ACK time out\n");     rtty_txstring (rtty);  break;
        case DHT_ERROR_SYNC_TIMEOUT: sprintf(rtty,"DHT22: Sync Timeout\n");     rtty_txstring (rtty);  break;
        case DHT_ERROR_DATA_TIMEOUT: sprintf(rtty,"DHT22: Data Timeout\n");     rtty_txstring (rtty);  break;
        case DHT_ERROR_TOOQUICK:     sprintf(rtty,"DHT22: Polled to quick\n");  rtty_txstring (rtty);  break;
    }
    
    //SD Shield
    if (!SD.begin(4)) {
        sprintf(rtty,"SD: ERROR\n"); rtty_txstring (rtty);
        while(1){
          digitalWrite(led, HIGH);
          delay(250);
          digitalWrite(led, LOW);
          delay(250);
        }
    }
    else {
    sprintf(rtty,"SD: OK\n"); rtty_txstring (rtty);
    }
    
   
             
    
   
    }
    
	   
	    
    
};

void loop() {
  
  	
    
    //Var DS18B20
    DS18B20.requestTemperatures();
    temperaturertty = DS18B20.getTempCByIndex(0);
    temperature = DS18B20.getTempCByIndex(0);
    
    //Var DHT22
    DHT22_ERROR_t DHT22errorCode;
    DHT22errorCode = sensoreDHT22.readData();
    switch(DHT22errorCode)
    {
        case DHT_ERROR_NONE: 
        humidityrtty = sensoreDHT22.getHumidity(); 
        humidity = sensoreDHT22.getHumidity(); 
        break;
    }
  
    //Var MPL115A2
    MPL115A2.ReadSensor(); 
    MPL115A2.shutdown();
    pressurertty = MPL115A2.GetPressure();
    pressure = MPL115A2.GetPressure();
              
   
 
    //Record data
    data = SD.open("data.csv", FILE_WRITE);
    
    if (data) {
       
        data.print(counter);      data.print(";");
        data.print(temperature);  data.print(";");
        data.print(humidity);     data.print(";");
        data.print(pressure);     data.print(";");
        data.print("OK");         data.println(";");
        
        //Creating string data - Example output: $ASSM, 1, 4444.8888, 1111.88888, 88.11111, 88, 88, 88 for radio transmission
        snprintf(rtty, 70, "$ASSM,%d,%s,%s,%s,%d,%d,%d,SD:OK", counter, temperaturertty, humidityrtty, pressurertty);
        unsigned int CHECKSUM = gps_CRC16_checksum(rtty);
        char checksum_str[6];
        sprintf(checksum_str, "*%04X\n", CHECKSUM);
        strcat(rtty,checksum_str);
        rtty_txstring (rtty);
        
        data.close();
        
    } 
    else { //if SD failed open
        snprintf(rtty, 70, "$ASSM,%d,%s,%s,%s,%d,%d,%d,SD: ERROR", counter, temperaturertty, humidityrtty, pressurertty);
        unsigned int CHECKSUM = gps_CRC16_checksum(rtty);
        char checksum_str[6];
        sprintf(checksum_str, "\t*%04X\n", CHECKSUM);
        strcat(rtty,checksum_str);
        rtty_txstring (rtty);
        digitalWrite(led, HIGH);
        delay(3000);
    }
    
    counter++;
    
};

guarda... se cambi il titolo e ci scrivi "pallone sonda", sta' tranquillo che se passa @anerDev ( l'Autore del progetto ) gli ci casca l'occhio e ti risponde. Altrimenti mandagli un messaggio in PM

una domanda: Ma se tu riesci a lanciare codesto pallone sonda... come fai poi a ritrovarlo ?

Prima di tutto si fa una previsione di caduta tramite vari siti che analizzano le correnti d'aria in quota... poi nel payload ci metti un modulo gsm che ti invia le cordinate e un moodulo gps (con relativo abbonamento) che ti da le cordinate collegandosi al satellite quindi anche in luoghi non coperti da segnale gsm

@manu24 Ti invitiamo a presentarti qui: http://forum.arduino.cc/index.php?topic=113640.0 e a leggere il regolamento: http://forum.arduino.cc/index.php?topic=149082.0 - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: http://forum.arduino.cc/index.php?topic=146152.0 - qui le pinout delle varie schede by xxxPighi: http://forum.arduino.cc/index.php?topic=151646.0 - qui una serie di link utili: http://forum.arduino.cc/index.php?topic=126861.0