<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Projects on Clayton Easley</title><link>https://claytoneasley.org/projects/</link><description>Recent content in Projects on Clayton Easley</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 29 Apr 2025 16:49:52 -0400</lastBuildDate><atom:link href="https://claytoneasley.org/projects/index.xml" rel="self" type="application/rss+xml"/><item><title>Eyes for a Swimming Robot</title><link>https://claytoneasley.org/projects/swimming-robot-camera/</link><pubDate>Sat, 08 Jun 2024 16:29:56 -0400</pubDate><guid>https://claytoneasley.org/projects/swimming-robot-camera/</guid><description>How my robotics team and I worked together to design waterproof PoE cameras using a Raspberry Pi Zero</description><content:encoded><![CDATA[<p><strong>Note:</strong> Writing in progress&hellip;.</p>
<h1 id="introduction">Introduction</h1>
<p>During my Freshman year (2023 to 2024), I joined my previous university&rsquo;s IEEE club, which hosts several student projects.
One of the most ambitious projects was the underwater robotics team, which participates each year in the <a href="https://materovcompetition.org/explorer">MATE ROVs Explorer Class</a>.
Although we all worked together, my task was to develop 3 waterproof networked camera modules for the pilot.
With the clock already ticking, I had to quickly get the subsystem working with the robot in time for the competition.
I will be sharing my design, along with the challenges I faced and how I overcame them using the resources I had available.</p>
<h2 id="about-the-compition">About the compition</h2>
<p>The best way I can describe <a href="https://materovcompetition.org/">the MATE ROV compition</a> is like <a href="https://firstroboticscanada.org/frc/">FRC</a> but&hellip; in a pool. Diffrent robotics teams work together to build a <a href="https://en.wikipedia.org/wiki/Remotely_operated_underwater_vehicle">remotely operated underwater vehicle</a>, <em>hence the name ROV</em>, and compleat a set of diffrent tasks for points.
Due to the fact that we are submerged at least 10 feet in a pool, waterproofing is a forefront challenge. On top of this, the ROV pilot can&rsquo;t directly look into the water without penality. This makes having a relable video stream with as little latency to the pilot critical. Without it you may as well be blindfolded.</p>
<h1 id="physical-design">Physical Design</h1>
<hr>
<blockquote>
<p>Because this post focuses on cameras, there are many missing details on how the entire robot was designed and implmented.</p>
</blockquote>
<p>Step one was coming up with a solid design for the camera module and its housing.
If any water leaks into the electronic enclosures it’s an immediate game over. Before the housing is constructed the electronics must be suited for the task at hand. The pilot needed several different camera angles mounted around the robot to help steer the ROV and manipulate
<a target="_blank" href="https://bluerobotics.com/store/thrusters/grippers/newton-gripper-asm-r2-rp/"> The Gripper </a></p>
<h3 id="the-brains">The Brains</h3>
<p>For the brains of the camera I chose the <a href="https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/">raspberry pi zero 2w</a> for its compact form factor and ARM Cortex-A53 clocked at 1GHz.</p>
<p>The pi zero also supports h.264 video compression which helps reduce the bandwidth.
<figure class="img-right">
    <img loading="lazy" src="/projects/swimming-robot-camera/imgs/pizero.webp"
         alt="raspberry-pi-zero-2-w" height="200"/> 
</figure>

The clock speed and added h.264 encoding would be more than enough for video streaming 24fps at SD to HD quality.</p>
<p>The second reason the pi zero was chosen was due to it&rsquo;s wide adoption and Linux support. There are many, probably faster, SBC in this formfactor our there. But, I didn&rsquo;t want run into problems with unsupported distributions with <a href="https://www.ros.org/">ROS</a> being a requirement. Regardless, <a href="#battling-ros">dead ends</a> were hit anyway.</p>
<h3 id="the-camera">The Camera</h3>
<p>For the cameras I used the <a href="https://www.raspberrypi.com/documentation/accessories/camera.html#hardware-specification">Raspberry Pi Zero Camera Rev 1.3</a> which makes use of a <a href="https://docs.arducam.com/Raspberry-Pi-Camera/Native-camera/5MP-OV5647/">5MP OV5647 image sensor</a>.
When I was was choosing a camera module I noticed that almots all the image senors on the Raspberry camera modules use <a href="https://en.wikipedia.org/wiki/Rolling_shutter">rolling shutter</a> which, at the time, made me a little nervous.</p>
<p><em>bottleneck forshadows</em></p>
<p>Cameras with a rolling shutter capture an image one row of pixels at a time.</p>
<p>which when acclerating can cause distortion, which might make it harder for the pilot to operate.</p>
<h3 id="data-and-power">Data and Power</h3>
<p>With a camera and computer now chosen I had to find a way to power and communicate with them and send a video stream back to the pilot. The ROV had an onboard router which briged the cameras to the pilot through <a href="https://bluerobotics.com/store/cables-connectors/cables/fathom-rov-tether-rov-ready/">The ROV&rsquo;s Tether</a>. The switch also routed data to the onboard computer as well as the cameras (not in image).</p>
<p>The first thing that comes to mind when I hear <em>power</em> and <em>data</em> is <a href="https://en.wikipedia.org/wiki/Power_over_Ethernet">Power over Ethernet</a> (PoE) which would allow us to power the cameras with the same power supply as the network switch they are attached to.</p>
<figure>
    <img loading="lazy" src="imgs/CameraNewtorkToplogy.webp"
         alt="ROV&#39;s Camera Network Toplogy"/> <figcaption>
            <p>ROV&rsquo;s camera network toplogy</p>
        </figcaption>
</figure>

<p>Each camera then only needs one cable for both power and data.
The raspberrypi zero dose not have native supprt for Ethernet or PoE, but this be sloved using the <a href="https://www.waveshare.com/poe-eth-usb-hub-hat.htm">waveshare PoE USB hat</a>.</p>
<p>After putting together the camera and Waveshare HAT I ended up with the brick of electronics you see below.</p>
<figure>
    <img loading="lazy" src="/projects/swimming-robot-camera/imgs/CameraModule.webp"
         alt="raspberry-pi-zero-2-w with whaveshare hat" height="200"/> <figcaption>
            <p>Raspberry pi camera module</p>
        </figcaption>
</figure>

<h2 id="waterproof-enclouser">Waterproof Enclouser</h2>
<br>
<p>If any water leeks into the electronic enclousers it&rsquo;s an immediate game over.
I had to come up with a design that would ensure water woulden&rsquo;t sneek its way in, and find a way to get power and data to the camera.</p>
<p>If this enclouser was a real product it would have an <a href="https://en.wikipedia.org/wiki/IP_code">Ingress Protection code</a> of at least <strong>IP68</strong>. The second digit in the code indicates how well the enclouser prevents the ingress of water, and at the level of <strong>8</strong> requires full submersion in water at a depth of 1 meater (~3.2ft).</p>
<!-- <div class="image-gallery"> 
   -->
<!-- <figure class="wfig fig-left" style="width: 300px;"><img src="https://claytoneasley.org/notes/audicty_wav_encoding_settings.webp" alt=""></figure>
 -->
<!---->
<!-- <figure class="wfig fig-right" style="width: 300px;"><img src="https://claytoneasley.org/notes/audicty_wav_encoding_settings.webp" alt=""></figure>
 -->
<!-- 
</div>
 -->
<p>Students from prevoius compitions used a waterproof project box with a clear lid that housed a Raspberry PI Camera setup. But, with a new ROV frame, and needing to mount the camera on <a href="https://bluerobotics.com/store/thrusters/grippers/newton-gripper-asm-r2-rp/">the gripper</a> we needed something more compact. <a href="https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/">The Raspberry Pi Zero 2 W</a> was the best contender, as it is far more compact and fit withen our budgett and timeline (more on this later).</p>
<p>The next task was getting power and data transfer to each of the three pi&rsquo;s.</p>
<p>Now, I do have to preface that this idea was inspired by another robotics teams design, but with major changes. I unforunatlly do not remember what team I had spoken to about there design, but I do remember that they were also using a PI zero in there design.</p>
<h1 id="software">Software</h1>
<p>Writing in progress&hellip;.</p>
<h2 id="battling-ros">Battling ROS</h2>
<p>Writing in progress&hellip;.</p>
<h2 id="ffmpeg">FFmpeg</h2>
<p>Writing in progress&hellip;.</p>
<h1 id="other-chalanges">Other Chalanges</h1>
<p>Writing in progress&hellip;.</p>
]]></content:encoded></item><item><title>Site Updates and Future Planing</title><link>https://claytoneasley.org/projects/updates/</link><pubDate>Tue, 29 Apr 2025 16:49:52 -0400</pubDate><guid>https://claytoneasley.org/projects/updates/</guid><description>&lt;h2 id="its-been-a-wile"&gt;Its been a wile&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s been three years in the making.
The last time I have put any content on this website was back when I was in highschool. I have been wanting to update things, write posts, and add new features but sometimes life gets in the way of these things. Now that I have more time on my hands I thought that my website needed some attention.&lt;/p&gt;
&lt;p&gt;I am in the works of changing how the backend of my site works as well as changing some things I don&amp;rsquo;t like about the current theme I am using. Until then stay posted.&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="its-been-a-wile">Its been a wile</h2>
<p>It&rsquo;s been three years in the making.
The last time I have put any content on this website was back when I was in highschool. I have been wanting to update things, write posts, and add new features but sometimes life gets in the way of these things. Now that I have more time on my hands I thought that my website needed some attention.</p>
<p>I am in the works of changing how the backend of my site works as well as changing some things I don&rsquo;t like about the current theme I am using. Until then stay posted.</p>
<h3 id="remark42">Remark42</h3>
<p><a href="https://remark42.com/">Remark 42</a> is a lightweight open source committing engine that I can embed into different posts. This can allow people to leave feedback and discuss whatever project I am currently working on. It also gives people the option to correct me, which I encourage,  without having to use git and or leave a pull request.</p>
<p>After I take care of some backend maintenance I hope to add remark 42 to my site.</p>
]]></content:encoded></item><item><title>Making a Valveless pulsejet</title><link>https://claytoneasley.org/projects/jet-project/</link><pubDate>Sat, 01 Oct 2022 17:33:07 -0400</pubDate><guid>https://claytoneasley.org/projects/jet-project/</guid><description>During my highschool Dual enrollment welding program I decided to start working on building a pulse jet! Here is how I did it.</description><content:encoded><![CDATA[<p>Haven&rsquo;t posted in a while and have been a bit busy with school.  I have decided to update you with one of my long and difficult projects. A project that might as well kill me if I am not careful enough. Yes, you read the title correctly, I am attempting to build a Valveless pulsejet. I have been working on this project for almost two years! Due to school and work finding the time to put this article together and post it took a significant amount of time, and well… and courage if i&rsquo;m being honest.</p>
<p>At this point I can&rsquo;t remember my exact motivations for wanting to make a jet engine. When people ask me what I want to make a jet engine I respond with, “Why wouldn&rsquo;t you want to make a jet engine”</p>
<p>Unfortunately this project will have to come to an end. When I was taking welding in high school it was a great project that allowed me to learn both metal fabrication and pipe welding.</p>
]]></content:encoded></item></channel></rss>