2021 HDP Dream Team: EJA

Learn more about Team EJA's intelligent buoy, and how their solution will help the global fight against ghost gear.

Similar projects worth following
The Challenge-

Reducing Ghost Gear:
Up to 10% of the world’s ocean plastic comes from lost or abandoned fishing gear. This poses a threat to large whales (the Red List estimates that 45% of all threatened marine mammals are impacted) and small crabs (NOAA estimates that there are 145,000 derelict crab pots still “fishing” in the Chesapeake Bay alone, killing over 3 million crabs a year).

This challenge seeks innovations that reduce “soak time” – the time that gear (pots or longlines) has to be left in the water unnecessarily, or deployment in undesirable locations, that increase the chances of snags, or loss.

The Team:

Erin "RobotGrrl" Kennedy
Robotics and Digital Fabrication
Canada, Ontario, Ottawa / Kingston

Oluwatobi Oyinlola
Embedded Systems Engineer and Inventor
Nigeria, Ibadan

Leonardo Ward
Electronics Engineer and Technology Developer
Venezuela, La Guaira, Catia La Mar


How might we decrease the occurrence of marine species entanglements with fishing gear and decrease ghost gear creation, while making the commercial fishing process more intelligent for fisheries?

Our main goal is the prevention of gear loss. A great solution not only benefits the environment but also benefits the fishers, they can avoid the income losses that ghost gear creates and also benefit from an intelligent gear that collaborates to improve their efficiency. 

To achieve our goal we define a concept of operations the includes an intelligent buoy that allows fishers to track the position of the traps, and a ropeless mechanism that prevents entanglements.


EJA robot is a ropeless fishing system - the buoy is launched to the surface only after certain sensor data


This project contains the design of 2 electronic devices (from left to right in the following image): the Intelligent Buoy and the Onboard Gateway.

Intelligent Buoy

To achieve the position marking of the traps we selected 5 main components

  1. ESP32-DEVKITC-32D
  2. RFM95W LoRa Radio
  4. Adafruit Ultimate GPS
  5. SIM7600CE-T 4G(LTE) Arduino Shield

From this main components we designed 2 PCBs: Buoy A V1.0 and Buoy B V1.0.

Buoy A V1.0 is a 141.73 mm x 54.86 mm PCB that integrates the 5 main components (ESP32, LoRa, GPS, Motor Driver and GSM/GPRS). Buoy B V1.0 is a 102.46 mm x 44.20 mm PCB that integrates 4 of the main components (ESP32, LoRa, GPS and Motor Driver). 

To describe the PCB designs we have prepared the following guides:

It is possible to adapt more modules/breakout boards to the current designs, there are dedicated connectors that allow it in each board, we have explored the following additions:

Onboard Gateway

Onboard Gateway is a 134.11 mm x 62.48 mm PCB that is used to communicate with the intelligent buoy and receive the GPS data. The design integrates 3 main components

  1. ESP32-DEVKITC-32D
  2. RFM95W LoRa Radio
  3. USB LiIon/LiPoly charger

From this main components we designed the PCB: Onboard Gateway V1.0 (134.11 mm x 62.48 mm).

To describe the PCB design we have prepared the following guides:


--- Version 2 ---

3D viewer:

See all of the files on the Github repository (including bill of materials (BOM), and production plan)

--- Version 1 ---

The Eja ropeless gear system consists of three parts: Release Mechanism, Intelligent Buoy, and Onboard Gateway. Here are the mechanical design specifications for each, also available as a pdf here.

Release Mechanism

3D viewer:

Intelligent Buoy

3D viewer:

Onboard Gateway

3D viewer:

For additional information relating to the Bill of Materials and the Parametric Design, please see this project log: Mechanical Design Specifications.

All of the 3D print files, .STEP assembly, and more can be found on Github here.

EJA v2 Final Presentation.pdf

Hackaday Dream Teams 2021 final presentation

Adobe Portable Document Format - 5.73 MB - 11/05/2021 at 20:05


EJA v2 Production [FINAL] - Production Planning.pdf

Pieces to make, material info, and fabrication method for v2

Adobe Portable Document Format - 106.79 kB - 11/04/2021 at 22:06


Adobe Portable Document Format - 105.70 kB - 11/04/2021 at 22:06



All other supporting pieces for v2

Adobe Portable Document Format - 57.86 kB - 11/04/2021 at 22:07


Eja Resources & Links.pdf

All of the links for our project

Adobe Portable Document Format - 29.27 kB - 10/01/2020 at 17:15


View all 16 files

  • 2 × ESP32 DEVKITC 32D Microcontroller | Onboard Gateway V1.0 | Buoy A V1.0 | Buoy B V1.0
  • 1 × Adafruit Ultimate GPS GPS | Buoy A and B V1.0
  • 1 × CONN HDR 6POS 0.1 TIN PCB Connector for the Battery Charger and the GSM/GPRS Module | Onboard Gateway V1.0 | Buoy A V1.0
  • 3 × CONN HDR 9POS 0.1 GOLD PCB Connector for the LoRa Module and the GPS | Onboard Gateway V1.0 | Buoy A V1.0 | Buoy B V1.0
  • 4 × CONN HDR 19POS 0.1 TIN PCB Connector for the ESP32 | Onboard Gateway V1.0 | Buoy A V1.0 | Buoy B V1.0

View all 21 components

  • Field Test Photos

    EK11/02/2021 at 03:13 0 comments

    The Field Test was a memorable moment - all of the work coming together at the deadline to test the robot. The sight of robots in the outdoors amongst nature is beautiful, knowing that these devices will help us better understand the environment around us. This is really the time of the project that’s very rewarding! Here are the top photos from the Field Test! Enjoy!!

  • Design Sketches

    EK11/02/2021 at 02:57 1 comment

    Along the way several concepts and areas for redesign were explored. This time, most of the sketches were done digitally. Here is a mosaic of all the sketches!

    There were different stages during sketching. Here’s a summary collecting some of the thoughts.

    A: The beginning, getting oriented (see the buoy with different antenna orientations). Different ideas.

    B: The somewhat finalized concept idea. This one had too many moving parts though. The commonality is the stacked stages.

    C: Wiper magnets being closer and with less friction with a thin delrin sheet. This idea was later scrapped since Giovanni came up with a great solution - two low-profile ‘rails’ that the wiper glides on - reducing scratches, minimizing contact area, and less materials!

    D: A lot of other ropeless fishing system designs use rope bags. What if there was a way to coil the rope? If it’s conical shaped, this would reduce tangling when coiling… however, if it is conical shaped, this means that the loading and landing orientation is 180 degrees flipped. This idea was scrapped because the centre of mass was at the top (for landing state, if it would even land like that).

    E: Here was another concept. It is a tube cut in half with latch clamps. This idea just didn’t work logistically, and it seems like it would be cumbersome to try to reload the spool afterwards.

    F: This is pretty well the final design, however the external enclosure (yellow lines) was excluded.

    G: At the top right is the concept for the external wiper sub-assembly. The sketch in the middle played with an idea where there would be “flappy wings” on the side to help protect the buoy from waves. This wasn’t needed…

    H: Does this look familiar?! It’s the concept for the stacks! Including some dampening foam (pink) on the threaded rods (yellow). This concept shows that the design is modular in terms of adding more stages to the stack

    I: In between this sketch and the last one, CAD had commenced. As well, top middle, showing an idea for inductive charging - where the coil would be located. The sketch that was extremely useful was the one in the bottom right - for figuring out the spacing of the mounting holes for the buoy holder.

    J: Electronics integration review with Leo! This was a great way to point out areas of concern on the integration side.

    K: Uhh… we need a power switch, right? This is slightly difficult when using a sealed enclosure. This was an idea using a magnet and ball bearing to make contact on an internal switch piece. It’s based on the FINDA probe on Prusa printers.

    L: These were sketches for the documentation of the physics model!

    M: We will end on a funny note. This doesn't fit in with any of the groupings because... what on earth is this sketch? No clue! Let’s call it abstract art. :)

    It was fun to look back on all the concepts and sketches through the project. Drawing is a very useful communication device! And hopefully this shows that it is not necessary to be a renowned artist to get started drawing.

  • Analysis of Field Test

    EK10/30/2021 at 19:08 0 comments

    There is a possible failure that could occur with the delrin pieces of the sleeve bearing. On landing, these pieces deformed quite a bit:

    Based on the observation above of the delrin deforming, knowing the force of the landing could better inform the parameters for simulation. To calculate this, the velocity of the descent needs to be determined.

    Descent Velocity

    Observations from the descent of the robot can approximate the descent velocity in the water. A clip of the descent where the camera was somewhat stationary was chosen. 

    Between these two frames that are 2 seconds apart, we can see that the distance of travel is approximately 1 stand-piece-height. Each stand piece is 47.70 mm.

    This means the robot travelled 4.77 cm in 2 s.

    v = Δd / Δt

    4.77 cm / 2 s

    = 0.02385 m/s

    The descent velocity is 0.02385 m/s.

    Force of Landing

    When landing the robot immediately stops to 0 m/s. For “immediately”, this will be approximated as 0.1 s.

    a = Δv / Δt

    0.02385 m/s / 0.1 s

    = 0.2385 m / s^2

    The acceleration is -0.2385 m/s^2. The mass is estimated to be 7.0 kg.

    F = m*a

    7.0 kg * -0.2385 m/s^2

    = -1.67 N

    Or, -4.44 lbf.

    It is important to notice that in the video there was a rock on the seafloor protruding higher than the others. This meant all of the force was on 1 of the 6 stands for landing. Usually, this force would be distributed over multiple stand pieces.

    An attempt was made to simulate the force using a FEA simulation in Fusion 360 with the hope of determining the amount of displacement of the delrin pieces. However, this was not able to be completed in a timely manner due to additional configuration that would be needed on the simulation.

    Ascent Velocity

    Although the ascent speed is not needed, it would be interesting to know while we’re at it.

    Using the same process as above, two frames from a video where the camera is almost stationary were extracted:

    Overlaying the two frames, using the height of the buoy, the distance can be calculated:

    Tracking from the bottom point of the buoy enclosure, the distance travelled is 4.3 buoy-body-lengths. Each buoy body length (aka diameter) is 92.64 mm. 

    Total distance travelled = 39.8 cm.

    v = Δd / Δt

    39.8 cm / 2 s

    = 0.199 m/s

    The buoy ascends at 0.2 m/s. To travel the full length of the spool (30 m), it would take 150 s, or 2.5 mins.


    To address the main issue at hand here about the delrin piece, two improvements are recommended:

    1. Add cushioning to the bottom of the stands (closed-cell foam)
    2. Increase material thickness of delrin pieces to 1/4"

    Apart from that, more testing is needed to see where other parts break!

  • EJA - Improvements in the Electronics Design

    Leonardo Ward10/20/2021 at 02:23 0 comments

    Since the beginning of this project we have designed and tested different electronic designs, this log compares them and highlights their features, cost and dimensions.

    We recently design EJA M v1.0 with the goal of replacing the previous designs, including some features (and removing the unused ones), reducing the cost and the size of the design. This log will show if the new design accomplishes those goals.

    The project contains 2 different products (the Intelligent Buoy and the Onboard Gateway), each one has a different application, this log will compare the PCB designs that have the same application.

    Intelligent Buoy

    This device provides communication, a GPS for localization and activates the Ropeless System. To create an Intelligent Buoy we have designed 3 different PCBs in the last 2 years, those are:


    Those designs include the following features:

    FeaturesBuoy A v1.0Buoy B v1.0EJA M v1.0
    Servo MotorXXX
    Real Time ClockXXX
    DC MotorXX
    4G (LTE)X
    Battery ChargerX
    Battery Level IndicatorX


    Buoy A v1.0Buoy B v1.0EJA M v1.0

    The following logs contain the detailed bill of materials of each design.


    Buoy A v1.0 Buoy B v1.0EJA M v1.0
    141.73 mm * 54.86 mm102.36 mm * 44.2 mm98 mm * 51 mm

    Notes: Buoy A v1.0 and Buoy B v1.0 require a 5V input, therefore they require a module or a PCB that provides 5V from the battery, this module will increase the required space for the design. EJA M v1.0 contains the power supply module inside the design, it can be connected directly to a 3.7V battery (or battery pack).

    Onboard Gateway

    This devices allows the user to communicate with the intelligent buoys. To create an Onboard Gateway we have designed 2 different PCBs in the last 2 years, those are:


    Those designs include the following features:

    FeaturesOnboard Gateway v1.0EJA M v1.0 (Reduced Version)
    Battery ChargerXX
    Real Time ClockX
    Battery Level IndicatorX

    The design EJA M v1.0 contains several features that are not present in the previous table, but they are not relevant for this application. In this comparison we are considering a reduce version of EJA M v1.0, it is basically the same PCB without the components that are not relevant in the application.


    Onboard Gateway v1.0EJA M v1.0  (Reduced Version)

    The following logs contain the detailed bill of materials of each design.


    Onboard Gateway v1.0EJA M v1.0 (Reduced Version)
    62.48 mm * 134.11 mm
    98mm * 51 mm


    For both applications, we can conclude that EJA M v1.0 is a better solution considering the metrics that have been presented in this log: features, cost and size.

  • FTDI Development Board - Testing the Auto Reset and the FT260S

    Leonardo Ward10/16/2021 at 16:13 0 comments

    This log includes the results of the tests made with the FTDI Development Board so far.

    Auto Reset Circuit for the ESP32

    The designed auto reset circuit requires the signals 3.3V, GND, TX, RX, RTS and DTR. 

    To test the circuit we used a commercial USB to Serial Converter that contains the FT232RL, and provides all the required signal.

    The following wiring diagram shows how to connect the commercial USB to Serial Converter and our FTDI Development Board

    Once the 2 boards were connected and the USB to Serial Converter was plugged, the PC (in Windows) recognized the device and it was ready to use. Check if you need to install drivers associated to the FTDI, that is often the case.

    Note: Before testing the following code, verify that the ESP-IDF is installed and the Arduino IDE can program ESP devices.

    The code used is very simple, the ESP32 sends a "Hello world" message through the serial communication every second.

    void setup() {
    void loop() {
       Serial.println("Hello World");

    To program the ESP32 we used the standard Arduino IDE, with the following configurations:

    And the test was successful, the following image shows the results in the serial monitor.


    The FT260S was originally selected to directly program the ESP32, and also provide serial communication. After careful consideration I found that the FT260 is a HID class device and as such it does not generate a Virtual COM Port (like the FT232R), to interface with the FT260 it can be used the official helper library, LibFT260.

    For that reason the FT260S will require more research before we can seamlessly program the ESP32. Sadly, this IC was selected for the newer design before realizing this information, so this topic will have to be addressed in the future.

  • Commencing Assembly!

    EK10/04/2021 at 14:24 0 comments

    Assembly is underway! Check out the videos showing the highlights so far from Day 1 & 2!

  • EJA M v1.0 - Bill of Materials

    Leonardo Ward09/24/2021 at 15:51 0 comments

    This log presents the bill of materials of our new PCB EJA M v1.0. This new PCB will replace our intelligent buoy (Buoy A v1.0 and Buoy B v1.0), and our Onboard Gateway v1.0.

    Full Version

    To create an intelligent buoy we need to solder the complete PCB EJA M v1.0. The following table contains all the components and their current price (obtained at the moment of writing this log, it might change in the future).

    PCB Components

    47 µF ±20% 6.3V Ceramic Capacitor 08051$0.35
    10 µF ±10% 6.3V Ceramic Capacitor 08054$0.12
    12 pF ±5% 50V Ceramic Capacitor 08051$0.10
    680 pF ±10% 25V Ceramic Capacitor 08051$0.10
    47 pF ±5% 16V Ceramic Capacitor 08053$0.10
    100 µF ±20% 6.3V Ceramic Capacitor 12101$0.96
    0.1 µF ±10% 50V Ceramic Capacitor 08053$0.10
    4.7 uF ±10% 6.3V Ceramic Capacitor 08051$0.12
    1 µF ±10% 16V Ceramic Capacitor 08054$0.16
    2.2 µF ±10% 10V Ceramic Capacitor 08051$0.12
    220 µF Tantalum Capacitors 10V 29171$0.99
    0.033 µF ±10% 50V Ceramic Capacitor 08051$0.10
    Orange 601nm LED - Discrete 2.1V 08051$0.30
    Green 520nm LED - Discrete 3.2V 08052$0.18
    TVS Diode 15V Clamp 5A (8/20µs) SOT-23-61$0.49
    Red 630nm LED - Discrete 1.9V 08051$0.18
    Yellow 590nm LED - Discrete 2V 08051$0.29
    1 Signal Line Ferrite Bead 0805 300mA 350mOhm2$0.11
    USB-C USB 3.2 Gen 2 Receptacle Connector1$2.44
    Battery Retainer Coin, 20.0mm 1 Cell PC Pin1$0.29
    U.FL (UMCC) Connector Receptacle2$1.22
    Battery Holder (Open) 18650 1 Cell PC Pin1$4.17
    2 Position Terminal Block Horizontal1$0.84
    2.2 µH Inductor 15 A 7mOhm Max1$0.95
    5.5 µH Inductor 10 A 10.3mOhm1$4.15
    Bipolar (BJT) Transistor NPN 30V 600mA SOT-23-33$0.18
    1 MOhms ±1% 0.125W Chip Resistor 08052$0.10
    90.9 kOhms ±1% 0.125W Chip Resistor 08051$0.10
    620 Ohms ±5% 0.125W Chip Resistor 08055$0.10
    5.1 KOhms ±1% 0.125W Chip Resistor 08053$0.10
    49.9 KOhms ±1% 0.125W Chip Resistor 08051$0.10
    825 kOhms ±0.5% 0.125W Chip Resistor 08051$0.11
    182 kOhms ±1% 0.25W Chip Resistor 08051$0.10
    1.2 kOhms ±5% 0.125W Chip Resistor 08051$0.10
    6.49 kOhms ±1% 0.125W Chip Resistor 08051$0.10
    27 Ohms ±1% 0.125W Chip Resistor 08052$0.10
    10 kOhms ±1% 0.125W Chip Resistor 080510$0.10
    1 kOhms ±1% 0.125W Chip Resistor 08051$0.10
    1.8 MOhms ±1% 0.125W Chip Resistor 08051$0.10
    390 kOhms ±1% 0.125W Chip Resistor 08051$0.10
    806 kOhms ±1% 0.125W Chip Resistor 08051$0.10
    2 MOhms ±1% 0.125W Chip Resistor 08051$0.10
    180 kOhms ±0.5% 0.1W Chip Resistor 08051$0.10
    0 Ohms Jumper 0.125W Chip Resistor 08052$0.10
    ATGM332D-5N31 GNSS Series GPS+BDS 12.2x16x2.4mm1$5.81
    Buck-Boost Switching Regulator 1.8V 1 Output 3A1$10.09
    TP4056 ESOP-8 Battery Management1$0.1595
    ESP32-WROOM-32D (4MB)1$4.08
    FTDI USB Bridge, USB to I²C/UART USB 2.0 I²C, UART Interface 28-TSSOP1$1.99
    TPS61030PWPR Boost Switching Regulator IC Positive Adjustable 1.8V 1 Output 3.6A (Switch)1$3.13
    RFM95W-915S2-ND LoRa Transceiver Module 915MHz1$13.44
    DS3231M+TRL Real Time Clock I²C, 2-Wire Serial1$8.23
    Power Supply On/Off Controller Push Button1$5.76
    Connector Header Through Hole 40 position (2.54mm)1$0.57

    External Components

    CR2032 Lithium Coin Cell Battery1$0.95
    18650 Lithium-Ion 3.7V Battery Rechargeable 3.4Ah1$11.99
    ADXL343 - Triple-Axis Accelerometer1$5.95

    The overall price of the full PCB is $108.39.

    Comparing the price to our previous PCB designs we have:

    DesignBuoy A v1.0Buoy B v1.0EJA M v1.0 (Full)
    Features- ESP32
    - LoRa
    - GPS
    - Servo Motor
    - Real Time Clock
    - DC Motor
    - 4G (LTE)
    - ESP32
    - LoRa
    - GPS
    - Servo Motor
    - Real Time Clock
    - DC Motor
    - ESP32
    - LoRa
    - GPS
    - Servo Motor
    - Real Time Clock
    - Battery Charger
    - Battery Level Indicator
    - Accelerometer

    Reduced Version

    To create an Onboard Gateway we can use the PCB EJA M v1.0 with less components than the full version. The following table contains the required components and...

    Read more »

  • Physics Model

    EK09/24/2021 at 15:49 0 comments

    To predict how our robot may perform in the real environment, a physics model would be useful to understand the forces at play. The calculated results serve as data points that can be verified experimentally to see how they differ in the real world.

    ---> EJA v2 Physics Model on Google Sheets <---


    Here's the key points from the calculations:

    • In order for the weight to buoyancy ratio to be > 1.0, the mass of the entire robot has to be at least ~6 kg (13.2 lbs)
    • Hydrostatic pressure at 30 m (100 ft) is 43.89 psi - roughly half of what we hypothesize as the limit for the Nalgene container
      • At 50 m (164 ft), it is 73.16 psi, which would be an excellent test
    • When the buoy reaches the surface, the tension on the line is 46.61 N, and the buoyancy-to-weight ratio is 1.25
    • Based on the robot's total mass of 6.0 kg, with an initial velocity of 0 m/s:
      • Terminal velocity is ~0.76 m/s, or 2.7 km/h (1.7 mph)
      • Landing force is ~-8.5 N, or almost 2 lbf
      • To reach 5 m, it takes 6.5 seconds
      • To reach 30 m, it takes 39.1 seconds
      • If freefalling for 1 min, the robot would descend 46 m
      • To reach 1000 m, it would take 21.7 minutes
        • (At that point, the pressure at 1000 m is 1468.95 psi though!)

    To improve the physics model calculations, we will verify experimentally: 

    • Mass
      • Buoy
      • Rope spool
      • Entire robot
      • Ballasts
    • Percentage of buoy submerged when at the surface
    • Descent time

    There are scenarios of what we want to calculate:

    1. Buoyancy
    2. Terminal velocity
    3. Drag force
    4. Freefall velocity - Descent time to target depth
    5. Hydrostatic pressure
    6. Tension of the rope

    Let's dive in to each scenario!

    1. Buoyancy

    The weight to buoyancy ratio is the key number to making sure the robot will sink.

    Buoyancy is all about the volume of liquid displaced by the robot. This is why a steel boat can still float, yet a steel ball will sink - because of the volume. The density of the material does not matter.

    The volume of the robot is estimated to be 4753 cm^3.

    The minimum mass must be 6.0 kg to get the weight-to-buoyancy ratio to be > 1 (meaning, it will sink). For a mass of 6.0 kg, the weight-to-buoyancy ratio is 1.169.

    The addition of ballasts was added in CAD to fine tune the position of the centre of mass. Further experimentation will need to be completed to ensure that it is the correct amount of ballasts to achieve 6.0 kg.

    In CAD, we see the estimation of the mass to be 12 kg. However, skeptical of that number based on the real world materials. Actual mass will need to be confirmed experimentally when the robot is entirely constructed.

    Thanks to Leo for the post from last year that breaks down the buoyancy topic very well!

    2. Terminal velocity

    A large terminal velocity could impact the robot by inducing vibrations when landing, having a risk of unseating the magnet wiper. As well, imprinting the seafloor. Minimizing this would reduce those impacts.

    Based on a mass of 6.0 kg and a target depth of 5 m,

    The terminal velocity for the robot is 0.766 m/s. For comparison, that is ~70% of the typical human walking speed (2.5 mph).

    Although there is no term for depth, the model does change as the density of water changes when going deeper. For seawater, the linear change in density was extrapolated from this table (Source: Encyclopedia Britannica). The scale of the change is very small: 0.01 m/s total difference from 0 m to 10,000 m depth.

    The drag coefficient was selected to be 1.55. This is based on the inverted triangle shape, which the robot somewhat looks like given the diameter of the handles on the upper stage are larger than the diameter of the lower stage. (Source: Sighard Hoerner, Fluid Dynamic Drag via Wikipedia)

    Another way of minimizing terminal velocity would be to streamline the design, thereby reducing the coefficient of drag and area.

    3. Drag force

    As the robot is descending through the water, there is a drag force pointing upwards against the robot. 

    What we expect to see is drag and weight balance out at some point....

    Read more »

  • RFM95W-915S2 Development Board - Testing

    Leonardo Ward09/21/2021 at 20:29 0 comments

    The RFM95W-915S2 Development board is a PCB that contains a RFM95W LoRa transceiver, a U.FL connector for the external antenna, a decoupling capacitor and a group of headers connected to the different pins of the transceiver. The transceiver can be used as a sender or a receiver.

    This log describes the initial tests that were performed using the RFM95W-915S2 Development board.

    Wiring for the Tests

    The webpage has an amazing tutorial named ESP32 with LoRa using Arduino IDE – Getting Started, that tutorial contains detailed information about how to use the RFM95 with an ESP32 (the same microcontroller that was selected for our designs). I used the same firmware and connections provided by the tutorial. 

    The test requires 2 transceivers, one of them will be used as a sender and the other as a receiver. In this case, one of the transceivers is the  RFM95W-915S2 Development board and the other one is the RFM95W transceiver from Adafruit.

    The connections are the following:

    ESP32RFM95W-915S2 Development Board
    GPIO 14RST
    GPIO 5CS
    GPIO 18SCK
    ESP32RFM95W Board from Adafruit
    GPIO 14RST
    GPIO 5CS
    GPIO 18SCK


    The firmware can be found in the following Github repository. The repository contains a folder named /Firmware/ that contains the project for the transceiver as a receiver and a sender.  

    Both of the RFM95W Boards were used as a sender and receiver, the result was successful in both cases. During the test, one of the transceivers sends the package "hello counter", where the counter is a number that goes from 0 to 32767. The other transceiver receives the package and prints the message through serial.


    1. ESP32 Add-on in Arduino IDE
    2. LoRa Library

    Results visualized in the serial monitor from the receiver circuit:

    For more information about the firmware visit the original tutorial for the RFM95W.

  • EJA M v1.0 - Schematic and PCB Design

    Leonardo Ward09/15/2021 at 16:43 0 comments

    We have a brand new PCB design, the EJA M v1.0 will replace our previous designs, it can be used as the Buoy or as the Onboard Gateway. The design includes the following features:

    • USB C Port with Electromagnetic Compatibility (EMC)
    • FTDI (FT260S-U) with an Auto Reset Circuit for the ESP32 
    • ESP32
    • GPS Module
    • LoRa Transceiver
    • Real-time Clock (RTC)
    • Connector for a Servo Motor
    • 5V 2A Stepup (for the Servo Motor)
    • 3.3V Battery Charging Circuit 
    • Connector for a 3 axis accelerometer
    • Circuit to measure the battery level
    • 3.3V 3A SEPIC Converter
    • On-OFF circuit for a Button
    • Access to unused pins in the ESP32

    The design can be found in the following Github repository.

    This log contains a more detailed description about the implementation of the different features in the design.

    USB C Port with Electromagnetic Compatibility (EMC)

    Everything starts with the USB C port, we have chosen this type of USB because it's size and because of the growing trend of using this port to charge and communicate with portable devices. 

    We have included Transient Voltage Suppression (TVS) diodes and Ferrite Beads to reduce the Electromagnetic Interference (EMI). These protections for the USB port will add compliance with the EMC regulations and standards from the  Federal Communications Commission (FCC) and the European Union.   

    FTDI (FT260S-U)

    The design includes the FT260S-U, a USB TO UART/I2C FTDI that will be used to program the ESP32.

    Auto Reset Circuit for the ESP32 

    The design includes an auto reset circuit that uses RTS and DTR to reset and put in bootloader mode the ESP32. For more information about this circuit, these blogs [1] [2] can be useful.


    The main microcontroller in the PCB is the ESP32, the following image shows the signals dedicated to the different pins. The ESP32 is connected to the FTDI, a GPS, a LoRa transceiver, a connector for a servo motor, a real-time clock, a circuit to measure the battery level, a connector for an accelerometer, and a few headers to provide access for the unused peripherals.


    The selected GPS is the ATGM332D-5N31, one the modules tested previously in our Development Board for GPS Modules. The schematic is very simple, it has a decoupling capacitors (C2), a U.FL connector for an external antenna (J4) and a Coin Cell Battery Holder (J2).


    The selected LoRa transceiver is the RFM95W-915S2, the same module tested in our Development Board for LoRa. The schematic contains a U.FL connector for an external antenna (J9).

    Real-time Clock (RTC)

    The design includes a dedicated RTC, the DS3231M.

    Servo Motor Connector

    There is a 1x3 header connector for a Servo Motor, the 5V for the servo is provided by a 5V 2A Stepup.

    5V 2A Stepup

    The design includes the TPS61030PWR, a boost converter with a 4A switch current, to provide the 5V for the Servo motor. The schematic contains the components for a 5V 2A output, following the design procedure that starts on the page 13 in the datasheet. 

    Accelerometer Connector

    There is a connector for the ADXL343 3 axis accelerometer, a 1x9 header was used even though it only manages the signals VDD, GND, SCL and SDA, in case we want to use more connections for the accelerometer in future versions.

    Battery Charging Circuit 

    To charge the 3.3V battery the design includes the TP4056, a 1A Standalone Linear Li-lon Battery Charger. The schematic includes a green led to show the user that the battery is charged and a red led to show the user that the battery is charging. There is a Battery Holder for a 18650 battery (J5) and an additional 1x2 header (J7) in case we want to use a different 3.3V battery.  There is also a 1x2 header (J3) to use a different type of connection for the charger (instead of the USB...

    Read more »

View all 79 project logs

View all 3 instructions

Enjoy this project?



Carlos Sanoja wrote 09/03/2020 at 11:32 point

Hi guys, what an incredible project, I understand you have been working for a couple of months now, hopefully you can share some progress. I'm an embedded developer and I would like to see how this project has been tackled, but I see that you haven't published anything about it yet, my notes include:

1. What tools are you using? FreeRTOS?
2. How do you manage the offline behavior? I checked some hardware descriptions and I don't see any RTC, do you have any different idea to address this issue maybe by software? If you are using it, how is the process of initializing the device to take the correct time reference in your code? Without a doubt being in the middle of the ocean without an internet connection is a big problem.

3. Will you publish your work opensource? with some repository?

I hope you can answer my questions and I wish you the best of success, waiting to see your results!

  Are you sure? yes | no

Oluwatobi Oyinlola wrote 09/05/2020 at 08:18 point

Thank you for your comment really appreciate it,

1. We are using ESP32 (NodeMCU) which is almost generally available everywhere if anyone need to prototype it, together with Arduino IDE

2. Well, RTC will be included-still contemplating if we should implement it in the firmware or just put the hardware RTC(Probably YES) and about the internet connection- yes we are saving a spiff data inside the microcontroller (About 50 or more data) which will be uploaded when the bouy is connected to the onboard gateway, and push the data when the bouy is on top of the water with Internet to AWS server.

3. Absolutely, its is completely opensource.

For team EJA.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates