High-Performance Arduino Weerballon Datalogger
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Maxim Integrated DS18B20 Programmeerbare 1-Wire Digitale Thermometer | 2 |
| DHT22 Temperatuursensor | 1 |
| SparkFun Triple Axis Accelerometer Breakout - ADXL335 | 1 |
| Male-Header 36 Posities 1 Rij - Lang (0.1") | 2 |
| Arduino Mega 2560 | 1 |
| 5050 SMD LED | 1 |
| Weerstand 4,75k ohm | 2 |
| Weerstand 100 ohm | 3 |
| Weerstand 10k ohm | 1 |
| MicroSD-kaart | 1 |
| MicroSD-kaartmodule | 1 |
Benodigde tools en machines
- Solderbout (standaard)
- Solderdraad, loodvrij
Apps en online diensten
- Arduino IDE
Over dit project
Hey iedereen!! Je denkt waarschijnlijk: wacht, je kunt een Arduino naar de ruimte sturen? Bijna. Met een weerballon kun je een Arduino, camera, knoflookbrood of wat je ook wilt, een derde van de weg naar de ruimte sturen! Hoewel het een derde van de weg is, is er bijna 99% van de atmosfeer niet aanwezig, daarom noemen we het "de rand van de ruimte." Deze gids is erg lang, maar tenzij je het project alleen bekijkt, lees alles tot aan Pad 1. Laten we beginnen met hoe jij dit kunt doen.
Er zijn drie paden die je kunt volgen, afhankelijk van wat je wilt en je vaardigheidsniveau. Alle drie de paden vereisen enkele soldeervaardigheden vanwege de ongelooflijke winden in de stratosfeer. Geen enkel pad is beter dan een ander; het hangt gewoon af van wat je interessant vindt. Laten we ze kort overlopen.
- Pad 1: Een eenvoudige datalogger maken met een protoprint, diverse sensoren, met weinig soldeervaardigheden.
- Pad 2: Een vooraf ontworpen PCB-shield (printplaat) gebruiken voor een schone, geweldige print, ontworpen en getest door ons.
- Pad 3: Je eigen PCB ontwerpen in een programma. Deze gids gaat niet diep in op hoe je je eigen PCB ontwerpt en maakt, maar geeft wel enkele richtlijnen waar je over kunt nadenken. Ik zal zeker linken naar geweldige gidsen om van te leren.
Hier zijn enkele tips om je te helpen kiezen:
- Pad 1 is het makkelijkst en biedt flexibiliteit. Je kunt de sensoren, print en functies zelf kiezen. Je hebt wel soldeervaardigheden nodig om ervoor te zorgen dat alles bij elkaar blijft tijdens de vlucht.
- Pad 2 is het meest restrictief: je moet een opgegeven set sensoren en een specifieke Arduino gebruiken, maar je krijgt een schone PCB, hoeft je geen zorgen te maken over solderen of programmeren, en het is een goede start om PCBs te leren kennen. We leveren het Gerber-bestand, exporteerinstellingen en code. PCBs zijn niet duur; we kregen 5 voor $2, maar de prijs kan verschillen per leverancier.
- Pad 3 is het moeilijkst en vereist veel vaardigheden. Je moet weten (of leren) hoe je een eigen PCB of Arduino-shield ontwerpt, hoe je de code schrijft en hoe je solderen. Als je al al deze dingen kunt, kun je dit project waarschijnlijk zelf doen, maar er zijn belangrijke beperkingen en details waar deze gids je mee kan helpen.
Geweldig! Je hebt nu gekozen welk pad je volgt! Maar voordat we beginnen, zijn er heel belangrijke regels om in gedachten te houden. Lees deze regels zorgvuldig, want het lanceren van een weerballon kan beperkt zijn, afhankelijk van waar je woont. Deze gids behandelt niet hoe je de juiste ballon kiest, de payload-bay bouwt en de ballon vult, maar er zijn VEEL gidsen voor; ik zal ze linken. Ik ga over de beperkingen voor je Arduino-datalogger en geef een link naar de volledige FAA-richtlijnen (voor VS-bewoners). Houd rekening met:
- Je payload-bay mag geen mobiele telefoonsignalen hebben. Als je een telefoon meeneemt, moet deze in vliegtuigmodus staan.
- Als je GPS gebruikt om je ballon te vinden, heb je een HAM-radio licentie nodig (die een examen en fee vereist).
- Als het gewicht-tot-oppervlakte-verhouding van je payload meer dan 3,0 oz/inch² is, mag het totale payload-gewicht minder dan 4 pond zijn.
- Elke individuele payload/pakket mag minder dan 6 pond wegen.
- Als je twee payloads hebt, mag het totale gewicht minder dan 12 pond zijn.
Link naar de volledige FAA-richtlijnen voor VS-bewoners.
Pad 1 - Protprint!
Voordat je begint met ontwerpen, zijn er een paar overwegingen. Ten eerste: wat wil je erop hebben? In het schema heb je een eenvoudige temperatuur- en vochtigheidssensor, een barometrische sensor, een IMU en een SD-kaartmodule. Voor de meeste projecten is dit voldoende, maar als je je payload wilt terugvinden met de Arduino, wil je een GPS-module toevoegen. Er zijn verschillende herstelopties:
1. SPOT GPS-module
Deze hebben voor- en nadelen. Ze zijn makkelijk te gebruiken, hebben onbegrensd bereik (ze gebruiken satellieten om coördinaten naar je telefoon te sturen), hebben een geweldige batterijduur en zijn gemakkelijk te verkrijgen. Nadelen: ze zijn duur, werken niet omgekeerd, en het signaal kan worden geblokkeerd door dikke objecten. Dit is de methode die wij gebruikten, maar we ontwierpen en 3D-printten een gimbal om het rechtop te houden. We raden de SPOT 3 Satellite Messenger aan (Amazon), maar het is aan jou, mits je onderzoekt wat het beste werkt.
2. APRS-radio
Dit is de betrouwbaarste methode en je kunt er veel mee. Je kunt een module aan een Arduino koppelen en de radio stuurt data, coördinaten, etc. terug. Dit stelt je ook in staat om nauwkeurige hoogtemeting te krijgen. Helaas is dit niet opgenomen in het bedradingsschema, dus je moet zelf leren hoe je dit aansluit. Bovendien heb je een HAM-radio licentie nodig (examen en fee). Deze licentie is super nuttig, dus het kan de moeite waard zijn. (VS - beperkingen kunnen verschillen per land).
3. Mobiele telefoon
Je zou deze methode echt niet moeten gebruiken. Niet alleen moet je uitvinden hoe je je telefoon na de vlucht uit vliegtuigmodus haalt, de telefoon zelf is waarschijnlijk duurder dan een gewone SPOT. De reden dat dit op de lijst staat, is omdat veel mensen een telefoon als backup gebruiken, maar het is echt niet iets wat je zou moeten gebruiken.
Nu je hebt besloten hoe je je payload gaat terugvinden, wil je bekijken hoe de vlucht eruit zal zien. Als je wilt dat de Arduino de valscherm op afstand uitklapt, moet je daar naar kijken. Je moet ook bepalen welke sensoren je gebruikt (de temperatuur kan tot -40°C dalen, dus reken daar mee). Je moet ook nadenken over hoe je de Arduino gaat voeden. Koude temperaturen verminderen de prestaties van veel batterijen, dus je wilt misschien een grote voeding, samen met een behuizing zoals een styropor-doos om dingen warm te houden, terwijl je onder de gewichtslimiet blijft.
Ik raad aan om een checklist te maken op basis van welke data je wilt verzamelen, of je een camera aan boord hebt, en wat je verder mee wilt nemen. Het kan ook een goed idee zijn om eerst de payload-bay te maken en daarna je datalogger te ontwerpen op basis van de payload. Er zijn veel dingen om over na te denken, dus neem je de tijd om alles zorgvuldig te overlopen.
Hier is het schema en bedradingsschema voor de sensoren als je onze route volgt:
De Mega is super overkill voor deze sensoren, maar als je onze code wilt gebruiken, moet je de Mega gebruiken. Als je een Nano wilt gebruiken, verander dan de MicroSD-kaartmodule pinouts naar de SPI-pinnen van je bord.
Onderdelenlijst:
- SparkFun ADXL337
- Header pinnen
- Micro SD-kaartmodule
- DHT22 Vochtigheidssensor
- DS18B20 Temperatuursensor
- Protprint
- Arduino Mega
Je kunt nog een DS18B20 toevoegen voor interne temperatuurmeting, en elke sensor die je wilt, maar als je de meegeleverde code wilt gebruiken, volg dan het bovenstaande bedradingsschema.
// DHT22 Setup
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// SD Kaart Setup
#include
#include
File sdcard_file;
int CS_pin = 10;
// DS18B20 Temperatuursensor
#include
#include
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int scale = 3; // 3 (±3g) voor ADXL337, 200 (±200g) voor ADXL377
boolean micro_is_5V = true; // true als je een 5V microcontroller gebruikt (Arduino Uno), false voor 3.3V
void setup() {
Serial.begin(9600);
sensors.begin();
dht.begin();
pinMode(CS_pin, OUTPUT);
if (SD.begin()){
Serial.print("SD Kaart gevonden!");
} else {
Serial.print("Fout bij vinden SD Kaart");
return;
}
sdcard_file = SD.open("data.csv", FILE_WRITE);
if (sdcard_file) {
// Bestand gevonden
} else {
Serial.print("fout initialiseren SD kaart");
}
// CSV headers schrijven
sdcard_file.print("DS18B20");
sdcard_file.print(",");
sdcard_file.print("DHT22 Temp");
sdcard_file.print(",");
sdcard_file.print("Hum");
sdcard_file.print(",");
sdcard_file.print("H.InX");
sdcard_file.print(",");
sdcard_file.print("rawX");
sdcard_file.print(",");
sdcard_file.print("rawY");
sdcard_file.print(",");
sdcard_file.print("rawZ");
sdcard_file.print(",");
sdcard_file.print("scaledX");
sdcard_file.print(",");
sdcard_file.print("scaledY");
sdcard_file.print(",");
sdcard_file.print("scaledZ");
sdcard_file.print(",");
sdcard_file.println(" ");
}
void loop() {
delay(222);
// Accelerometer
int rawX = analogRead(A0);
int rawY = analogRead(A1);
int rawZ = analogRead(A2);
float scaledX, scaledY, scaledZ;
if (micro_is_5V) {
scaledX = mapf(rawX, 0, 675, -scale, scale);
scaledY = mapf(rawY, 0, 675, -scale, scale);
scaledZ = mapf(rawZ, 0, 675, -scale, scale);
} else {
scaledX = mapf(rawX, 0, 1023, -scale, scale);
scaledY = mapf(rawY, 0, 1023, -scale, scale);
scaledZ = mapf(rawZ, 0, 1023, -scale, scale);
}
// DS18B20 Temperatuur
sensors.requestTemperatures();
int etemp = sensors.getTempCByIndex(0);
// DHT22 Vochtigheidssensor
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
return;
}
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
sdcard_file.print(etemp);
sdcard_file.print(",");
sdcard_file.print(t);
sdcard_file.print(",");
sdcard_file.print(h);
sdcard_file.print(",");
sdcard_file.print(hic);
sdcard_file.print(",");
sdcard_file.print(rawX);
sdcard_file.print(",");
sdcard_file.print(rawY);
sdcard_file.print(",");
sdcard_file.print(rawZ);
sdcard_file.print(",");
sdcard_file.print(scaledX);
sdcard_file.print(",");
sdcard_file.print(scaledY);
sdcard_file.print(",");
sdcard_file.print(scaledZ);
sdcard_file.print(",");
sdcard_file.print(" ");
sdcard_file.println(" ");
sdcard_file.close();
delay(223);
}
float mapf(float x, float in_min, float in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
Als er problemen zijn, check de bedrading en gebruik code voor elke afzonderlijke sensor om het probleem te isoleren. Zorg dat je SD- of MicroSD-kaart geformatteerd is naar FAT16 of FAT32, en 16GB of kleiner is.
Het is ook een goed idee om LEDs aan te sluiten voor statusindicaties van je datalogger. Je wilt niet dat de ballon omhoog gaat met een datalogger die niet draait, dus check alles driemaal.
Bovendien, als je blijft problemen hebben met de SD-kaartmodule, probeer dan de voeding te veranderen. Na veel testen vonden we dat sommige modules erg gevoelig zijn voor de voeding, dus zoek een betrouwbare bron.
Dat is het! Je datalogger is klaar. Het moet temperatuur, vochtigheid en versnellingsdata meten en loggen op een SD-kaart. Als je een hoogtemeting wilt, moet je GPS gebruiken. 90% van de barometrische sensoren werkt niet boven de 30.000 ft. Als je ballon hoger gaat (waarschijnlijk wel), kun je geen barometer gebruiken. Voor een geweldige gids voor de rest van de weg, check deze gids, en voel je vrij om contact met ons op te nemen via deze website als je HELEMAAL vragen hebt. We zijn geen professionals, maar we helpen graag waar we kunnen.
Pad 2 - Vooraf ontworpen PCB
Dus! Je gaat een vooraf ontworpen PCB gebruiken. Deze PCB stelt je in staat om interne temperatuur, externe temperatuur, vochtigheid en versnellingsmetingen te krijgen. Je hebt soldeervaardigheden nodig en deze componenten:
- 5050 SMD LED
- SparkFun ADXL337
- Veel header pinnen
- Micro SD-kaartmodule
- DHT22 Vochtigheidssensor
- 2x DS18B20 Temperatuursensor
- Arduino Mega
- De Eclipse PCB
Het Gerber-bestand voor de PCB zit in deze GitHub-repository. Als je wijzigingen wilt aanbrengen in de PCB/schema, ga naar deze webpagina en vul de details in (bestandstype, welk bestand je wilt, vragen, etc.). We gaan overlopen hoe deze PCB/Arduino-shield werkt, hoe je er correct een bestelt bij een PCB-service (voor zolang $2), en hoe je je eigen correct assembleert.
Gelukkig hebben we deze PCB op onze vlucht gebruikt, dus we hebben veel getest en verbeteringen doorgevoerd na de vlucht voor jou. Laten we erin duiken.
Ook hier zijn enkele video's van de assemblage en details van de PCB.
Laten we beginnen met het downloaden van het Gerber-bestand. Ga naar de GitHub-repository, download het ZIP-bestand, en kopieer en plak het Gerber Eclipse-bestand. Het is belangrijk dat je het ZIP-bestand gecomprimeerd houdt, want de online service accepteert ze als ZIPs.
Nu je het hebt, is het tijd om een PCB-service te vinden. Zoek in een zoekmachine op "PCB service". Er zijn veel te kiezen, allen met voor- en nadelen. Voor een goedkopere prijs kun je Chinese fabrieken overwegen zoals JLC PCB. Als je wat meer wilt betalen, kun je naar VS-gebaseerde bedrijven kijken. De service waar je koopt maakt NIET uit. Ze leveren allemaal een hoge kwaliteit PCB voor een goede prijs.
Nu je een service hebt gekozen, upload het gezippte Gerber-bestand en kies deze instellingen:
- Laat lagen en afmetingen zoals ze zijn
- Enkelvoudige PCB
- 1,6mm dikte
- Elke kleur die je wilt (groen wordt meestal sneller geproduceerd)
- HASL (met lood) voor oppervlakteafwerking. Verander dit als je loodvrij soldeer gebruikt
- 1oz kopergewicht
- Geen gouden vingers en bevestiging van productiebestand
- Volledig testen voor Flying Probe Test
- Geen gecastelleerde gaten
- Elke hoeveelheid die je wilt!
De meeste van deze instellingen staan al goed; je hoeft meestal alleen de kleur te veranderen. Bestel en je PCB gaat in productie! Dit is ook een goed moment om de bovengenoemde sensoren te bestellen.
Nu is het tijd om de PCB te assembleren. Omdat we sensoren met breakout-boards gebruiken en deze PCB als shield fungeert, is dit heel makkelijk. Hieronder is een soldergids voor je.
Solder ook alle header pinnen aan de zijkanten van de PCB. Deze passen direct op een Arduino Mega en regelen alle bedrading voor je.
Het is belangrijk te weten hoe deze PCB werkt, zodat je dingen kunt repareren als ze breken. In de PCB lopen heel kleine, 0,35mm draden. Deze lopen van elke sensor naar bepaalde header pinnen in de PCB, die vervolgens verbinden met de Arduino. Dit maakt een schone build, en het is sterker en betrouwbaarder dan traditionele protoprints en breadboards. Dit is een kort overzicht, maar als je meer wilt leren, hier is een geweldige video over hoe PCBs werken.
Ja! De PCB is gesoldeerd, plaats hem op de Arduino Mega, en steek hem in de computer. Open de Arduino IDE en open de 1.6 code die bij de GitHub-repository zit waar je je PCB-bestanden vandaan hebt.
Formateer je microSD-kaart naar FAT16 of FAT32. De microSD-kaartmodule moet 16GB of kleiner zijn, anders werkt het niet. Zelfs een 2GB microSD-kaart is meer dan genoeg opslag voor een twee-uurs vlucht.
Steek nu de SD-kaart in de module, en upload de 1.6 code. In de seriële monitor zou je een succesbericht moeten krijgen dat de SD-kaart werkt, en datalogging zou direct moeten starten.
Wacht tien seconden, haal de SD-kaart eruit en steek hem in een computer. Er zou een .csv-bestand moeten zijn met al je data!
Hier is de code voor het geval de GitHub-repository niet werkt:
// DHT22 Setup
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// SD Kaart Setup
#include
#include
File sdcard_file;
int CS_pin = 10;
// DS18B20 Temperatuursensor
#include
#include
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// MPL3115A2 Altimeter Setup
#include
#include
Adafruit_MPL3115A2 baro = Adafruit_MPL3115A2();
int scale = 3;
boolean micro_is_5V = true;
// LED
int Blue = 7;
int Red = 6;
int Green = 5;
void setup() {
pinMode(23, INPUT); // detecteert of een schakelaar aanstaat om SD-schrijven te stoppen en data op te slaan
sensors.begin();
pinMode(Blue, OUTPUT);
pinMode(Red, OUTPUT);
pinMode(Green, OUTPUT);
digitalWrite(Green, HIGH);
dht.begin();
pinMode(CS_pin, OUTPUT);
if (SD.begin()){
digitalWrite(Green, LOW);
digitalWrite(Green, HIGH);
digitalWrite(Green, LOW);
digitalWrite(Green, HIGH);
digitalWrite(Green, LOW);
digitalWrite(Green, HIGH);
} else {
digitalWrite(Green, LOW);
digitalWrite(Red, HIGH);
delay(5000);
return;
}
sdcard_file = SD.open("data.csv", FILE_WRITE);
if (sdcard_file) {
digitalWrite(Red, LOW);
digitalWrite(Blue, LOW);
digitalWrite(Green, HIGH);
} else {
digitalWrite(Green, LOW);
digitalWrite(Red, HIGH);
delay(1000);
digitalWrite(Red, LOW);
digitalWrite(Blue, HIGH);
delay(1000);
digitalWrite(Green, LOW);
digitalWrite(Red, HIGH);
delay(1000);
digitalWrite(Red, LOW);
digitalWrite(Blue, HIGH);
delay(1000);
digitalWrite(Red, HIGH);
digitalWrite(Blue, LOW);
}
// CSV headers
sdcard_file.print(",");
sdcard_file.print("DS18B20");
sdcard_file.print(",");
sdcard_file.print("DHT22 Temp");
sdcard_file.print(",");
sdcard_file.print("Hum");
sdcard_file.print(",");
sdcard_file.print("H.InX");
sdcard_file.print(",");
sdcard_file.print("Int. Temp");
sdcard_file.print(",");
sdcard_file.print("Pres. Pasc.");
sdcard_file.print(",");
sdcard_file.print("alt.");
sdcard_file.print(",");
sdcard_file.print("rawX");
sdcard_file.print(",");
sdcard_file.print("rawY");
sdcard_file.print(",");
sdcard_file.print("rawZ");
sdcard_file.print(",");
sdcard_file.print("scaledX");
sdcard_file.print(",");
sdcard_file.print("scaledY");
sdcard_file.print(",");
sdcard_file.print("scaledZ");
}
void loop() {
delay(222);
digitalWrite(Green, LOW);
digitalWrite(Blue, HIGH);
if(! baro.begin()) {
}
float pascals = baro.getPressure();
float altm = baro.getAltitude();
float tempC = baro.getTemperature();
// Accelerometer
int rawX = analogRead(A0);
int rawY = analogRead(A1);
int rawZ = analogRead(A2);
float scaledX, scaledY, scaledZ;
if (micro_is_5V) {
scaledX = mapf(rawX, 0, 675, -scale, scale);
scaledY = mapf(rawY, 0, 675, -scale, scale);
scaledZ = mapf(rawZ, 0, 675, -scale, scale);
} else {
scaledX = mapf(rawX, 0, 1023, -scale, scale);
scaledY = mapf(rawY, 0, 1023, -scale, scale);
scaledZ = mapf(rawZ, 0, 1023, -scale, scale);
}
// DS18B20 Temperatuur
sensors.requestTemperatures();
// DHT22 Vochtigheidssensor
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
return;
}
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
sdcard_file.println(sensors.getTempCByIndex(0));
sdcard_file.print(",");
sdcard_file.print(t);
sdcard_file.print(",");
sdcard_file.print(h);
sdcard_file.print(",");
sdcard_file.print(hic);
sdcard_file.print(",");
sdcard_file.print(tempC);
sdcard_file.print(",");
sdcard_file.print(pascals);
sdcard_file.print(",");
sdcard_file.print(altm);
sdcard_file.print(",");
sdcard_file.print(rawX);
sdcard_file.print(",");
sdcard_file.print(rawY);
sdcard_file.print(",");
sdcard_file.print(rawZ);
sdcard_file.print(",");
sdcard_file.print(scaledX);
sdcard_file.print(",");
sdcard_file.print(scaledY);
sdcard_file.print(",");
sdcard_file.print(scaledZ);
sdcard_file.print(",");
delay(223);
sdcard_file.close();
}
float mapf(float x, float in_min, float in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
Dat is het! Je datalogger is klaar. Het moet temperatuur, vochtigheid en versnellingsdata meten en loggen op een SD-kaart. Als je een hoogtemeting wilt, moet je GPS gebruiken. 90% van de barometrische sensoren werkt niet boven de 30.000 ft. Als je ballon hoger gaat (waarschijnlijk wel), kun je geen barometer gebruiken. Voor een geweldige gids voor de rest van de weg, check deze gids, en voel je vrij om contact met ons op te nemen via deze website als je HELEMAAL vragen hebt of als je een betere PCB wilt maken op basis van ons ontwerp. We zijn geen professionals, maar we helpen graag waar we kunnen.
Pad 3 - Je eigen PCB maken
Deze gids zal je NIET laten zien hoe je je eigen PCB maakt. Voordat je verdergaat, moet je weten hoe je een PCB maakt, of leren hoe dat zit. Dit deel gaat alleen over enkele basismogelijkheden om ervoor te zorgen dat je geen wetten overtreedt. De geposte richtlijnen zijn voor de VS!
Ten eerste moet je brainstormen en opschrijven wat je van deze vlucht wilt halen.
Hier zijn dingen die een standaardvlucht omvat:
- Temperatuur
- Vochtigheid
- Hoogte
- Luchtkwaliteit
- Straling
- GPS
Je kunt alles toevoegen wat je wilt, maar check alles goed. De temperatuursensor moet tot -50°C (-58°F) kunnen meten, en zo nauwkeurig mogelijk. Temperatuurmeting is onnauwkeurig bij zeer hoge temperaturen door zonnestraling, dus het lijkt wat warmer dan het is!
Je moet ook nadenken over hoe je dit ding gaat terugvinden. Hier is een kort overzicht van je opties. Je wilt misschien er meer over onderzoeken.
1. SPOT GPS-module
Deze hebben voor- en nadelen. Ze zijn makkelijk te gebruiken, hebben onbegrensd bereik (ze gebruiken satellieten om coördinaten naar je telefoon te sturen), hebben een geweldige batterijduur, en zijn gemakkelijk te verkrijgen. Nadelen: ze zijn duur, werken niet omgekeerd, en het signaal kan worden geblokkeerd door dikke objecten. Dit is de methode die wij gebruikten, maar we ontwierpen en 3D-printten een gimbal om het rechtop te houden. We raden de SPOT 3 Satellite Messenger aan (Amazon), maar het is aan jou, mits je onderzoekt wat het beste werkt.
2. APRS-radio
Dit is de betrouwbaarste methode en je kunt er veel mee. Je kunt een module aan een Arduino koppelen en de radio stuurt data, coördinaten, etc. terug. Dit stelt je ook in staat om nauwkeurige hoogtemeting te krijgen. Je hebt een HAM-radio licentie nodig (examen en fee). Deze licentie is super nuttig, dus het kan de moeite waard zijn. (VS - beperkingen kunnen verschillen per land).
3. Mobiele telefoon
Je zou deze methode echt niet moeten gebruiken. Niet alleen moet je uitvinden hoe je je telefoon na de vlucht uit vliegtuigmodus haalt, de telefoon zelf is waarschijnlijk duurder dan een gewone SPOT. De reden dat dit op de lijst staat, is omdat veel mensen een telefoon als backup gebruiken, maar het is echt niet iets wat je zou moeten gebruiken.
Deze instructable kan je helpen bij je ontwerp. Er zijn veel beperkingen en dingen om te overwegen, dus neem je tijd!
Een ander ontwerpoverweging is gewicht. Zoals gezegd in de intro, moet je payload onder de 12lb, 6lb of 4lb blijven, afhankelijk van het payload-type. Ook kun je geen barometer gebruiken voor hoogtemeting, omdat de meerderheid boven de 30.000ft faalt.
De laatste overweging is stroomvoorziening. Temperaturen worden super laag in de stratosfeer. Batterijen gaan falen, je Arduino heeft een grote kans om ook te falen. Je moet een oplossing vinden. Waarschijnlijk de beste strategie is je datalogger in een styropor-doos te steken. Dit houdt de temperatuur binnen zo hoog mogelijk als kamertemperatuur. Je kunt ook overwegen zonnepanelen of handwarmers.
Oké! Je hebt alles doorgecheckt, gedubbelcheckt welke sensoren je wilt, en alles opgeschreven. Het is tijd om het schema en de PCB te maken. Voor het schema en de PCB kun je een PCB-shield maken als eerder, of een volledige PCB. Ik laat het aan jou (aangezien je hiervoor enige ervaring moet hebben).
Na het bouwen van je PCB/shield, check ALLES nogmaals om te zien of het werkt, en of je de richtlijnen volgt.
Dat is het! Je datalogger is klaar. Het moet temperatuur, vochtigheid en versnellingsdata meten en loggen op een SD-kaart. Als je een hoogtemeting wilt, moet je GPS gebruiken. 90% van de barometrische sensoren werkt niet boven de 30.000 ft. Als je ballon hoger gaat (waarschijnlijk wel), kun je geen barometer gebruiken. Voor een geweldige gids voor de rest van de weg, check deze gids, en voel je vrij om contact met ons op te nemen via deze website als je HELEMAAL vragen hebt. We zijn geen professionals, maar we helpen graag waar we kunnen.
Conclusie
Weerballons zijn een echt coole en simpele manier om dingen naar de stratosfeer te sturen. Je kunt camera's (in ons geval een 360-camera) naar hoge altitudes sturen, geweldige beelden en data krijgen, zonder te veel regulaties. Maar één ding!
LEES DIT!!
Zorg ervoor dat je alle regels volgt, en voeg een radardemping toe en dien een NOTAM (Notice to Airmen) in voor je vlucht. Het is heel goed mogelijk dat je ballon-payload een vliegtuig raakt, en je wilt GEEN levens in gevaar brengen of schade veroorzaken. Doe alles wat je kunt om het risico op schade te minimaliseren, zorg dat alles stevig zit zodat je niets laat vallen. De FAA heeft niet veel beperkingen hiervoor. Zorg ervoor dat ze niet gedwongen worden alles te beperken en het voor anderen te verpesten, door gewoon de regels te volgen.
Ik hoop van harte dat deze gids geholpen heeft, en we genieten ervan om gidsen als deze te maken. Als je ons club wilt steunen, overweeg dan om in te schrijven op ons YouTube-kanaal, en laat zeker een reactie achter of neem contact op als je problemen of vragen hebt!
Veel plezier met Arduinoën! (Is dat wel een term?)
NM Rocketry Reviews
Aangepaste onderdelen en behuizingen
Dit is het .stl-bestand voor de gimbal die we maakten voor de Spot Personal Tracker om hem rechtop te houden tijdens de vlucht.
Schema's
Voor Pad 1
Voor referentie
GitHub Repository voor PCB-bestanden en Code
Gebruik dit om het Gerber-bestand voor de vooraf ontworpen PCB en de code ervoor te downloaden.
https://github.com/nmrocketryreviews/HADLdatalogger
Productieproces
- Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
- Meerpositie-temperatuursensorsysteem voor slimme thuisintegratie
- DIY Arduino USB Gaming Controller – Bouw Je Eigen High-Performance Gamepad
- MotionSense: Slimme inbraakdetectie met Arduino en ESP8266
- 3D-Printer Brandpreventie: Slimme Sensor Veiligheidssysteem
- Pixel Chaser: Interactieve één-tik LED-spel met Arduino Nano
- Web-IoT Meter Bouwen met Arduino, Yaler en IFTTT
- Arduino-gebaseerde Afstotende Magnetische Levitatie: Eenvoudige Schakeling & DIY Handleiding
- Arduino Flip Clock met 8×8 LED Matrix – DIY Real-Time Clock Project
- Bouw een $10 Draagbare Arduino Weerstation (AWS) – Eenvoudige DIY met Nano, DHT22, BMP180 & LCD
- CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie