Version – 2
I’ve been learning how to use Eagle CAD to layout circuit boards and export gerber files. We have an Othermill CNC machine at work so I am beginning to prototype double sided boards for the buoy. This is the second version of my initial design – or what I am calling r2. *More info on my first design below…*
This copper board is essentially a larger “mother board” with headers for each of the smaller breakout boards to plug into. I used headers rather than soldering the breakout boards directly to the copper so that I can reuse the modules or replace them if needed. I expect I’ll go through several revisions and improvements as I learn more.
The following breakout boards are included on the copper board:
- Microcontroller (MCU) >>> Adafruit Pro Trinket 3V 12MHz
- Radio >>> Xbee Series 1 — sending data to second Xbee + FTDI cable + laptop
- Inertial measurement unit (IMU) > Adafruit BNO055 sensor; accelerometer, gyroscope, magnetometer
- GPS >>> GPS module for time and position information
- Data logging > SD card read/write + micro SD card
So far so good, my r2 board is working and all of the individual modules are wired up correctly. But there are still improvements that need to be made. For example, the board cannot function on battery power yet. I included a connection for adding a small lipo battery + charger, but it is not hooked up correctly – I need to update the traces so that the BAT pin on the microcontroller goes to all Vin pins on the breakout boards instead of the BUS pin. *Ooops*
Version – 1
Below are images of my first double sided circuit board. I finished this one evening in October and soldered all the headers onto the copper board using some liquid flux and a small soldering iron with a sharp tip. You can see that some of the 1/64″ holes did not get drill through all the way.
Unfortunately, I made the mistake of connecting the microcontroller BUS pin to all my breakout boards via their 3V3 pins. The BUS pin provides 5V and up to 500 mA of current when the microcontroller is powered by the micro USB. When I attempted to upload the firmware via the USB cable, I accidentally burnt the Xbee radio and had to order two new modules. Luckily I only had the Xbee + MCU plugged into the copper board at that time so the delicate Xbee was the only fatality.
Lesson learned. Send all power into the modules via their 5V or Vin pins; Adafruit typically includes a 3v3 compatible voltage regulator so their boards are 5V/3V safe (if you wire up the correct pin).
More updates will include:
- adding a Real Time Clock
- adding an RGB LED
- adding a temperature probe
- redesign the board to be a circle shape
- add a LoRa radio or other transmitter
- fix the lipo battery problem
- add a solar charger circuit
Version – 3
I’ve already started to incorporate updates to the design. Below is an example of the board with an added ground plane and the addition of an RGB LED and room for a digital temp sensor. Once I get the board to a more polished stage, I plan to share the source files and include a schematic drawing. But that has not been completed yet.
Stalled, but not forgotten!
Need to break this down into bite-size pieces.
I’ve decided to reevaluate the project scope and break it down into three distinct stages. Hopefully this will help to give me focus so I can make some progress. I’d like to get something in the water by the start of the new year!
Below are some scribbles from my note book:
Right now I’m still at Stage 1.
But I will focus on this new list of tasks and try to prevent myself from meandering too far from this list. Stage 1 is meant to be super simple/quick so that I can “fail early, and fail often”. Hope this helps…
Here is a quick youtube video to demonstrate the code that I have been using to stream accelerometer data to matlab. The basic structure of the code is all referenced from the MatlabArduino youtube videos. There are several videos that explain how it all works and is a great reference.
I recently built a smaller buoy design while I continue to work on the IMU code. The previous buoy was approximately 150mm in diameter and had room for lights, GPS, a large li-po battery and a considerably bigger microcontroller. This latest version is based on the electronics from a previous post and only needs to house a trinketpro, Xbee, and BNO005 IMU from Adafruit.
Old vs new design.
Project files for CAD and STL here.
update: link to source code for IMU to Matlab connection
The next steps for the wave buoy project involves collecting accelerometer and gyroscope data from the onboard IMU and filtering/processing the data with a laptop to determine orientation and position. The math needed to perform these computations is too much for an arduino alone, so for now I plan to transmit the IMU data to my laptop with an Xbee and let the laptop do all the heavy lifting. Later on, the laptop will be replaced by a Raspberry Pi or other Linux based computer board, but for now it easier for me to develop everything in Matlab and then convert the code to C/C++ or something else in the future. Just personal preference.
Schematic of arduino + Xbee + acceleroemter
Project update –
Progress has been slow over the last few months, school and work have been taking priority, but I am still thinking about the wave buoy. I’ve also been receiving emails and support from others who are interested in the project and want to say THANKS! I am looking forward to collaborating with others in the near future.
Recently, I fabricated a crude prototype of the buoy’s sensor circuit board using perfboard and soldering connections to wire the inertial measurement unit (IMU), GPS , RGB LEDs, and Xbee to the Ndogo microcontroller. All the connections have been tested and the individual modules all function correctly so the next step is to write code for the microcontroller that will pull data from each of sensors in a specific sequence and time interval before transmitting the data to a base station wirelessly. For preliminary testing the base station will be my laptop but the concept can easily be scaled for longer ranges.
Xbee Series 1 module for easy wireless communication over serial.
Picked up a new spool of clean PLA and am trying to reprint the upper portion of the hemisphere again. Last time I tried this print the Printrbot jammed after finishing 70% of the build.
update: link to CAD files
Finished printing the latest hull design This had to be printed in three sections due to issues with excessive overhang at the bottom portion of the hull, and is held together using M3 stainless steel cap screws. There is a hole in the center of the bottom section so an analog temperature sensor can be installed and potted.