TM-02 · Rev FJ. O. Jackson · 2026-09-12
Technical Memorandum

PERRY: Design and Open-Water Verification of a LoRa-Activated Vertical Profiling Float

Pressure Equipped Robot for Research and Yield
J. O. JacksonCrush Depth float team, MATE ROV international competition

Abstract. PERRY is a vertical profiling float built for the non-ROV device task of the 2026 MATE competition. On a LoRa activation signal it runs two profiles to a set depth, logging pressure and depth on the way, and transmits the record when it resurfaces. It moves by a buoyancy engine: a stepper motor drives the plunger of a syringe to take in or push out water, which shifts the craft's weight against the water it displaces. The hull is acetone-vapor-smoothed ABS, closed by static o-rings in glands sized for 25% compression. Field testing showed marine grease admitting water at the seals, and the switch to silicone grease fixed it. Depth is held by a PID controller on Bar02 depth with hand-set gains. In open water it profiled to 4 m, resurfaced, and returned its data. On a team build, I did the programming, the electronics, and the buoyancy design.

1Pressure Sealing

The hull is a sealed pressure vessel in two pieces, a housing and a lid, and the seal between them is the core mechanical problem of the craft. Static o-rings close the joint. The gland was sized from the o-ring cross-section for 25% compression, with a rectangular groove 1.5 times the o-ring width to leave room for lateral expansion under load, and fillets in the groove corners so the seal does not cut on an edge. A PTFE gasket backs the o-ring stack. The pressure sensor is potted in epoxy where it passes through the hull. A 2.5 cm port in the lid takes a rubber stopper, so a pressure rise inside the hull pushes the stopper out instead of loading the joint.

The grease selection was decided by test. The first field tests were run with marine grease, and the hull took on water at the seals. Switching to silicone grease stopped the ingress, and the open-water mission was run on silicone.

The hull is FDM-printed in ABS on a Bambu Lab printer, at 100% infill for the housing and 75% for the internal supports and battery packs. A printed surface is layered and porous and unsuited to sealing, so the housing was acetone-vapor smoothed in a chamber, using the solvent pass as a conformal surface treatment to close the layer lines. The print was set up for the treatment: extra perimeter walls were added so the smoothing pass could not open the surface into the infill. Fasteners are stainless bolts into brass heat-set inserts. The finished hull is 27.84 cm tall and 15.00 cm in diameter.

PERRY float, assembled: blue printed hull, red cap, orange handle, yellow base. PERRY on a pool deck in front of other teams' profiling floats.
Figure 1. Left: PERRY as assembled for the open-water mission. Right: on the deck at the test site, other teams' floats behind.

2Buoyancy Engine

Depth is driven by a buoyancy engine rather than thrusters. The engine is a 500 mL plastic syringe whose plunger rides on a lead screw turned by a NEMA 17 stepper through a TMC2209 driver under UART control. Drawing water in makes the craft heavier than the water it displaces and it sinks. Pushing water out does the reverse. Between the two the craft can hover. Only about 50 mL of that capacity is needed to move it between the surface and the target depth. The 500 mL syringe was a large overestimate from early in the project, before the craft's mass of about 10 lb (4.5 kg) was known. The 50 mL figure was set by estimate against that mass and confirmed by trial rather than by a formal buoyancy calculation, and that is recorded as a limitation in Section 6.

Trim comes from lead fishing weights seated in cavities at the bottom of the housing, with the AA packs stacked above them, so the mass sits low and the float rides upright. Figure 2 shows the arrangement in section.

CAD section view of the float: syringe and lead screw on the centerline, battery packs either side, electronics under the lid, ballast cavities at the base.
Figure 2. Section through the CAD model. Syringe and lead screw on the centerline, batteries either side, electronics under the lid, ballast at the base. Model and render by Luke Salazar, from the team's submitted float document.

3Depth Control

Depth is closed-loop. The ESP32 reads depth from the Bar02 and runs a PID controller against the target depth, and the controller output sets how many steps the buoyancy engine takes and in which direction. The competition task set the target at 2.5 m. The gains were set by hand. The schedule did not leave time for a tuning campaign, so the loop was run with guessed gains adjusted by trial until the craft reached and held the 4 m test target well enough to complete the mission. Overshoot, settling time, and steady-state error were not recorded. This loop is the only feedback control on the craft. Profile sequencing and the transmit step run open-loop on mission logic.

4Electronics and Firmware

An ESP32, programmed in the Arduino IDE, runs the mission logic: arming over LoRa, profile sequencing, sensor logging, and data return. Power is eight AA cells in four two-cell packs, wired as two separate 6 V supplies on a common ground, behind a switch and a fuse, with a regulator dropping the logic supply to 3.3 V. Depth and pressure are read from a Blue Robotics Bar02 (MS5837-02BA) on the I²C bus. The radio is a REYAX RYLR896 LoRa module on the 915 MHz ISM band, configured with AT commands and driven over a 115200-baud hardware UART. The stepper driver is commanded over a second UART. All electronics were assembled and soldered on protoboard. I drew the circuit diagram in the team's submitted float document.

The mission sequence is short. The float powers on and waits for a go signal over LoRa. On the signal it steps the engine, reads and stores a pressure sample, and repeats until it reaches the target depth, then reverses to the surface, packages the log, and transmits it. It runs the descent-and-return cycle twice, once per profile, before shutting down.

Table 1. System summary.
SubsystemComponentInterface / process
ControllerESP32, Arduino IDEmission logic, logging, radio
Pressure and depthBlue Robotics Bar02 (MS5837-02BA)I²C, potted in epoxy
Buoyancy engine500 mL syringe, NEMA 17 stepper, TMC2209UART, about 50 mL of the 500 used
Depth controlPID on Bar02 depthgains set by hand, not tuned
RadioREYAX RYLR896 LoRa, 915 MHzUART, 115200 baud, AT commands
Powereight AA cells as two 6 V supplies, switch, fuse3.3 V regulator for logic
HullFDM ABS, Bambu Lab printerchamber vapor smoothed, static o-rings at 25% compression, silicone grease
Size and mass27.84 cm tall, 15.00 cm diameterabout 10 lb (4.5 kg)
Assemblyprotoboard, hand soldered—

5Open-Water Verification

The craft completed its mission profile in open water: it profiled to 4 m, resurfaced, and delivered its logged data over the radio link. Figure 3 shows the commanded mission profile.

0 2 4 Depth (m) Time from LoRa activation (durations not to scale) profile 1 profile 2 transmit
Figure 3. Commanded mission profile: two descents to the 4 m target and return, then data transmission at the surface. This is the commanded sequence, not a plot of logged data, and durations are schematic.

6Known Limitations

7Role, Attribution, and Team Document

Team project, Crush Depth float team. I did the programming, the electronics, and the physics and buoyancy side of the craft, and previously served as Float Team Technical Lead, taking the subteam through LoRa communications, ESP32 development, stepper motors and drivers, and board assembly. Of the three projects on this site, this is the one I had the most fun building.

PERRY was a late decision. The team's 2026 competition documents had already been submitted when we committed to building the float, so the document below describes the design as filed, and PERRY is the craft built to it. The document does not use the name.

  1. Non-ROV Device: Vertical Profiling Float, 2026 (PDF, 2 pages). Design summary, circuit diagram, and software flow chart. Figures by Luke Salazar, me, and Jake Dudley.