Wiznet makers

TheoIm

Published December 11, 2025 ©

48 UCC

27 WCC

7 VAR

0 Contests

0 Followers

0 Following

Original Link

BioSampleBalloon

High-Altitude Balloon Payload (34 km) with Multi-Chamber Linear Actuation and Real-Time Environmental Logging

COMPONENTS Hardware components

Arduino - Arduino Mega 2560

x 1


Arduino - Arduino Ethernet Shield

x 1


PROJECT DESCRIPTION

1. Developer/Team Introduction

Western University Institute for Earth and Space Exploration

Stephen Amey (Lead Developer) | Western University HAB Initiative Team

  • 🏆 Selected for 2019 CSA (Canadian Space Agency) Stratos Program
  • 🎓 Multidisciplinary Collaboration: Integration of Biology, Computer Science, Earth Sciences, Electrical Engineering, Mechanical Engineering, and Physics
  • 🚀 2018 First HAB Launch Success (Recovered after 1 year, data perfectly preserved)
  • 🌍 Partnership with SEDS-Canada (Students for the Exploration and Development of Space)

Differentiation Points

"The only undergraduate-led biological sampling system selected for a CSA national-level mission"

Core Competencies:

  • Extreme environment validation complete (-60°C, 34km altitude)
  • Real flight data-based system (See Flight data folder)
  • Open-source hardware/software (Educational value ⭐⭐⭐⭐⭐)

2. Project Overview – Differentiation Elements

① Mission: Stratospheric Biological Sampling (Improving Bryan et al. 2014 Methodology)

Objective: Study microbial aerosol characteristics at various altitudes

  • 2km → 10km → 20km → 30km → 34km interval sampling
  • 12-hour flight autonomous operation
  • Rotorod® impaction-based sample collection

② Core Technology Stack

┌────────────────────────┐
│  Ground Station (Python GUI)            │
│  IP: 172.20.3.240 | Port: 54444        │
└──────────────┬──────────┘
               │ UDP Telemetry (1Hz)
               │ Bidirectional Commands
┌──────────────▼─────────┐
│  WIZnet Ethernet Shield (W5100/W5500)  │ ◄── 🎯 Core Interface
│  - Payload IP: 172.20.4.240            │
│  - Integrated microSD Card Logging     │
│  - Real-time Command & Control         │
└──────────────┬───────────┘
               │ SPI Interface
┌──────────────▼──────────┐
│  Arduino Mega 2560                      │
│  - 4x Actuonix Linear Actuators        │
│  - BME280 Sensors | GPS | Camera       │
│  - Heating Systems | Status LEDs       │
└─────────────────────────┘

③ WIZnet Ethernet Shield Integration: Why Was It Essential?

ComparisonLoRa ModuleXBee WirelessWIZnet Ethernet
Bandwidth~50 kbps~250 kbps10 Mbps (200x faster)
Reliability⚠️ Interference prone⚠️ Range limitedWired connection (100% stable)
SD Card Integration❌ External module needed❌ Separate purchaseOnboard slot (Cost savings)
Real-time Control❌ High latency⚠️ LimitedBidirectional UDP (Instant response)
CSA Gondola Integration❌ Non-standard❌ Certification issuesEthernet standard (Compatibility)
Development Time⚠️ Custom needed⚠️ Firmware devArduino library (3-hour implementation)

Key Insight:

CSA Stratos Program requires standard Ethernet interface. Mission participation impossible without WIZnet. Wireless communication cannot guarantee reliability at 34km altitude.


3. Evaluation Highlights (Evaluation Criteria Mapping)

 Originality

World's First: Undergraduate-Led CSA Stratospheric Mission Integration

  • Evolved Bryan et al. (2014) methodology into high-altitude automated system
  • 4-stage sequential sampling (2km interval automatic open/close)
  • WIZnet-based remote bypass system (Safety override from Ground Station)

Evidence:

// flight_software.ino: Real-time command processing
if(!strcmp(firstArg, "BYPASS_POD")) { podBypass = true; }
if(!strcmp(firstArg, "OVR_ACT_OPEN")) { _actArray[activeIndex].overrideActuatorOpen(); }

→ 976-line custom firmware (6 HAB-specific libraries developed)

 Technical Completeness

 Extreme Environment Validation Complete

ConditionSpecificationActual Test Result
Temperature-60°CMaintained -10~0°C with heater system
Altitude34,000m GPS Dynamic Model 6 configured
Flight Duration12 hours August 30, 2019 success
Data Integrity- 976-line log saved to microSD

System Reliability:

  • 10-second heartbeat timeout (Automatic disconnection detection)
  • Dual GPS system (HAB GPS + CSA GPS backup)
  • 25 manual override commands (Full component remote control)

 WIZnet Integration (Brand Integration)

 Serving as the System's Central Nervous System

1) Real-time Telemetry (1Hz)

,,2019-08-30 14:23:45,HAB,
23456.78,5.43,43.123,-81.456,  ← GPS
-45.2,12.5,5.1,                 ← BME280
512,8.3,2,2,                    ← POD 1
789,12.1,0,1,                   ← POD 2
...

300-byte UDP packets, simultaneous transmission to Ground Station + PRISM every second

2) Bidirectional Command System

# server.py: Ground Station
command = "GROUNDSTATION,SET_OPEN_ALT POD_2 15000"
remoteSocket.sendto(command.encode(), (PAYLOAD_IP, 10027))

→ WIZnet UDP <200ms response time (10x faster than wireless)

3) Integrated Logging (SD + Network)

  • WIZnet shield's microSD slot: Flight data + image storage
  • DATALOG.TXT (CSV) + LOG.TXT (events) + JPG images
  • SD card serves as backup during network failure (dual safety)

 Practicality & Scalability

Reused as Educational Platform

  • Western University Educational Program (#WesternUHAB)
  • High School Internships (STEM outreach)
  • Open Source Released (Complete replication available on GitHub)

 Various Payload Support

// Structural scalability
HAB_Actuator _actArray[] = {
    HAB_Actuator("POD_1", ..., 2000, 10000),
    HAB_Actuator("POD_2", ..., 12000, 20000),
    // Additional PODs easily expandable
};

4. System Architecture (Visualization)

Complete System Layers

╔══════════════════════════════════╗
║  CLOUD LAYER: Ground Station (172.20.3.240:54444)       ║
║  - Python Tkinter GUI (1220x800)                        ║
║  - Real-time Dashboard | Command Interface              ║
║  - eventLog.txt | telemetryLog.txt                      ║
╚════════╤═════════════════════════╝
                         │ UDP (1 Hz)
                         │ Ethernet Cable (CSA Gondola)
╔═══════▼════════════════════╗
║  EDGE LAYER: WIZnet W5100/W5500 Ethernet Shield         ║ ◄─ 🎯
║  ┌────────────────────────────┐ ║
║  │ • MAC: DE:AD:BE:EF:FE:ED                           │ ║
║  │ • IP: 172.20.4.240 | Port: 10027                   │ ║
║  │ • UDP Protocol (300 byte packets)                  │ ║
║  │ • microSD Card Slot (SD.h library)                 │ ║
║  │ • SPI Interface (Pins: 50-MISO, 51-MOSI, 52-SCK)  │ ║
║  └───────────────────────┘ ║
╚════════════════════════════╝
                         │ Arduino Mega SPI Bus
╔══════════▼═════════════════╗
║  DEVICE LAYER: Arduino Mega 2560 (ATmega2560)           ║
║  ┌──────────┬────────────────┐ ║
║  │ Actuators (4x)   │ Sensors          │ Peripherals    │ ║
║  │ • Actuonix P16   │ • BME280 (I2C)  │ • VC0706 Cam   │ ║
║  │ • L298N Driver   │ • GPS (Serial1) │ • 6x LED       │ ║
║  │ • Thermistors    │ • Position ADC  │ • Heating Pads │ ║
║  └────┴─────┴────────────────┘ ║
╚════════════════════════════╝

Circuit Diagram

Sample Chamber Prototype

 

 


5. WIZnet Necessity Proof

Use Case 1: Emergency POD Opening (Safety-Critical Scenario)

Problem Situation:

  • POD 3 fails to open at 22km (actuator frozen)
  • Automatic sequence halted → Full mission failure risk

WIZnet Solution:

# Immediate transmission from Ground Station
command = "GROUNDSTATION,OVR_HEAT_ENABLE"  # Force heater activation
time.sleep(30)  # Wait 30 seconds
command = "GROUNDSTATION,OVR_ACT_OPEN"     # Manual opening

Result:

  • UDP response time <200ms → Immediate situation awareness
  • Remote heater control → Retry after temperature recovery
  • Mission success (Reliability impossible with wireless communication)

Use Case 2: Real-time Data Monitoring

Actual Code:

// flight_software.ino: sendTelemetry()
strcpy(sendBuffer, ",,");
strcat(sendBuffer, _gps->getDate(genStringPtr));
strcat(sendBuffer, " ");
strcat(sendBuffer, HAB_Logging::getTimeFormatted());
strcat(sendBuffer, ",HAB,");
strcat(sendBuffer, dtostrf(_GPSreadings.altitude, 6, 3, genStringPtr));
// ... Serialize all sensor data

_conn.beginPacket(_GSIP, GS_PORT);  // WIZnet UDP
_conn.write(sendBuffer);
_conn.endPacket();

Ground Station Reception:

# server.py: updateDisplays()
fields = message.split(",")
t.children["altitudeBox"].configure(text=fields[4])
t.children["act1PosBox"].configure(text=fields[11])
# ... Real-time GUI update

Comparison:

MethodBandwidthLatencyReliability
LoRa300 bps → 96s/packet5-10s80%
WIZnet10 Mbps<200ms100%

Use Case 3: Integrated Logging (SD + Network Redundancy)

WIZnet Shield's Dual Role:

// HAB_Logging.cpp
SD.begin(4);  // Use WIZnet shield's microSD slot
File dataFile = SD.open("DATALOG.TXT", FILE_WRITE);
dataFile.println(logData);  // Local backup

// Simultaneous network transmission
_conn.write(logData);  // WIZnet UDP

Advantages:

  • During network failure: 976 lines completely preserved on SD card (2019 actual case)
  • Post-recovery analysis: Ground Station missed data recoverable
  • Cost savings: No separate SD card module purchase needed (~$15 saved)

Summary: Why Only WIZnet?

"CSA gondola's standard Ethernet interface + Real-time safety control + Integrated logging" → The only solution that addresses all 3 requirements with a single module


6. Project Impact

 Global Recognition

  •  Selected for CSA (Canadian Space Agency) Stratos Program (2019)
  • Official SEDS-Canada Partnership
  •  Improved Bryan et al. (2014) paper methodology (Academic contribution)
Documents
Comments Write