Circuit board – MEGA

Needed more program memory for all the breakout board libraries to run. Redesigned the circuit board to stack on top of an Arduino MEGA 2560 using all the same sensor components. Added a color changing RGB LED on/off switch. The LED acts as an indicator light to show the status of the buoy.

Front view:

Wave Buoy - MEGA - r2 - 1

Wave Buoy - MEGA - r2 - 5.JPG

Rear view:

Wave Buoy - MEGA - r2 - 4

Still working on the firmware to read all the sensors for the buoy. Close, but needs more work. This update demonstrates the framework I’ve created for having the buoy communicate with the base station and is based loosely on the BLE concept (from what I have read thus far). The base station will act as the central device while the buoy will act as a peripheral device. The central device (base station) is responsible for establishing a communication link with the peripheral device (buoy), then the central device determines back-and-forth communication speed.

The base station is seen below. This is one of the previous prototype circuit boards for the Arduino UNO. The UNO has enough program memory to run the base station code.

Base station - r2.JPG

Here is a quick example video showing the basic communication protocol for the buoy and base station:


Schematic design:

IMAGE - Wave Buoy - MEGA - R2_4

Circuit board design:


Download source files > sorry no github yet, coming soon!

Example running firmware on buoy (left) and base station (right).

Screen Shot 2018-05-13 at 2.55.24 PM

Base station successfully established communication link with the buoy,  and then the base station issues each of the different commands to the buoy to verify the response.

Screen Shot 2018-05-13 at 2.55.38 PM

Next up, need to get all the sensors working and sending real data back to the base station.

3 thoughts on “Circuit board – MEGA

  1. hi, this is a great project. Currently i also worked on wave buoy. I have a few questions for you:
    1. what is your sampling rate of BNo055 you are going to use?
    2. From which i know, Lora is great for long range communication but lt has llimitation that cant send long data. How do you send BNo055 datas to base? let’s say you are sampling each second, so in a minute you has 60 datas have to be sent. that would be too long to be sent by lora

    • Hi Satria,

      Yes – the data processing will be a critical part for getting the buoy to measure wave height and direction.

      1. what is your sampling rate of BNo055 you are going to use?

      >>> The BNO has its own internal sample rate and changes depending on which sensor mode you choose. I have not looked at the data sheet in a while, but I believe the fusion mode that combines accel and gyro measurements reduces the sample rate considerably, but was still OK for our application.

      >>>I am planning to sample the BNO at 2.5 Hz, pulling data from the magnetometer to get heading data, and pull corrected acceleration data that has the gravity acceleration component already removed based on the fused gyrom/accel coodriante transformations. The onboard MCU in the BNO takes care of all the coordinate transformations (assuming it was calibrated OK) so I an not planning to pull quaternion or Euler angle outputs to save memory and energy.

      >>>The reason for the 2.5 sample Hz… I want to measure ordinary ocean waves with a typical period of 1 – 30 seconds.
      Ocean Wave Period 1 sec ~ 1 Hz
      Ocean Wave Period 30 sec ~ 0.033 Hz

      >>>So the Nyquist sampling rate of the proposed sensor sample rate would be 2.5Hz/2 = 1.25 Hz

      >>>This Nyquist sampling rate is greater that the fastest wave freq. that I am trying to measure, so it should be OK. Granted, it would be better if our sampling rate was 5 or 10 times greater than the fastest event we want to capture, but seems to be a suitable place to start for me and I believe this is same sample rate used by other research projects using IMUs to quantify ocean waves. This does NOT address sensor sensitivity however, and from some “back of the napkin calculations” I did a while back (sorry – couldn’t find my notes) I think that the accelerations you could expect to see from a wave with a 20 second period is at least 10 times smaller that the rated sensitivity of the BNO. So I’m curious to see just how accurate the BNO would be at measuring these slower waves since their signal processing is hidden in a black box. But this is a different issue for another day, and using GPS fused with the IMU data may be the optimal solution.

      2. From which i know, Lora is great for long range communication but lt has llimitation that cant send long data. How do you send BNo055 datas to base? let’s say you are sampling each second, so in a minute you has 60 datas have to be sent. that would be too long to be sent by lora

      >>> I am planning to minimize the amount of data that is sent over the radio for two reasons. As you mention, the LoRa data transfer rate is limited compared to other technology. From memory, it may be as little as 180 characters per broadcast – but I need to consult the data sheet for more details. Second, sending information over the radio requires a relatively large amount of power as compared with other functions on the buoy. More data transfer leads to needing larger solar panels and bigger batteries, something I am trying to avoid with my smaller buoy hull size.

      >>> So, my current thought is to sample the IMU at 2.5 Hz and save this locally onto an SD card. I’ll continue to save data for 30 minutes, a bucket of data – if you will, and then process wave statistics on that 30 minute bucket of data locally onboard buoy. The outputs will be the dominant wave height, period, and direction spectra and maybe a few other statistics that can be efficiently bundled into a payload and sent over radio to the base station. I’m not trying to see wave displacement in real time, just wave statistics.

      >>> If the user did want to see a time series plot of the estimated wave heights, they would need to extract the raw data (sampled at 2.5Hz) by either getting the SD card and downloading a CSV file OR boating next to the buoy in the water and then downloading the CSV file via a bluetooth link. Thats the idea at least, and is based more on my application and use case. If you need the raw data to be transmitted to shore at 1Hz then LoRa may not be the best solution. Not sure of their range, but Xbee pro modules might be a suitable solution and offer mesh capabilities.

      >>> Big disclaimer – I have not really started to work on this feature of the project yet so my plans may need to change if I discover the LoRa cannot reliably transmit data packets over the water. Radio signals attenuate drastically over water and the signal strength then becomes directly proportional to the height of the antenna on the buoy and the radio power output. One alternative would be a satellite link, but this is financially expensive and consumes a good deal of power.

      >>> please let me know if you see any errors in my logic or thought process.

      What if the application for your buoy? And where would it be deployed?

      • Sorry Nick, been busy lately, havent read your reply

        This is for my school project, i’m going to deploy itu on the shore. It’ll come with temperature and conductivity sensor too to calculates sea salinity.

        My target for now is able to derive displacement by using accelero.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s