# Flying Fish Rover (2024)

This was my science fair project for 2024

# Designing

This is a description of my thought process along the way, and the project coming together.

# Rubric

The CSCOE Big Bang science fair had this printed for all of the competitors, as a rubric and a guide. Unfortunately, there is no record of the original packet for 2023, I don't know why because there was a fair, but the only difference is the dates and the location.

[![Screenshot_2025-11-27_09-44-54.png](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/screenshot-2025-11-27-09-44-54.png)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/screenshot-2025-11-27-09-44-54.png)

[![Screenshot_2025-11-27_09-45-08.png](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/screenshot-2025-11-27-09-45-08.png)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/screenshot-2025-11-27-09-45-08.png)

[![Screenshot_2025-11-27_09-45-19.png](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/screenshot-2025-11-27-09-45-19.png)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/screenshot-2025-11-27-09-45-19.png)

[![Screenshot_2025-11-27_09-45-28.png](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/screenshot-2025-11-27-09-45-28.png)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/screenshot-2025-11-27-09-45-28.png)

[![Screenshot_2025-11-27_09-45-37.png](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/screenshot-2025-11-27-09-45-37.png)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/screenshot-2025-11-27-09-45-37.png)

[![Screenshot_2025-11-27_09-45-55.png](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/screenshot-2025-11-27-09-45-55.png)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/screenshot-2025-11-27-09-45-55.png)

[![Screenshot_2025-11-27_09-46-03.png](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/screenshot-2025-11-27-09-46-03.png)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/screenshot-2025-11-27-09-46-03.png)

[![Screenshot_2025-11-27_09-45-47.png](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/screenshot-2025-11-27-09-45-47.png)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/screenshot-2025-11-27-09-45-47.png)

# Brainstorming

My original idea was to make a rover that would be sent to unknown areas and take temperature and humidity readings, plus has a carbon monoxide detector. My pi would be connected to a screen that displays the information received. The idea was to use the Elegoo v4.0 smart robot kit as sort of a base for the following additions.

Actually, I was at first thinking of making a bird encyclopedia website but that never worked out.

The original component list:

- 4 dc motors
- 4 wheels
- 2 plastic scraps
- a wood platform
- arduino uno
- raspberry pi 4 model b+
- 5 inch display screen (part of the freenove kit)
- servo motor
- arduino uno extension hat (called the robot car shield)
- ultrasonic sensor
- camera module
- plastic stand
- IR remote
- various hardware pieces
- battery
- battery pack
- USB C to outlet cord
- line tracker module
- black tape
- breadboard
- gpio extension board
- gpio wire connection
- jumper wires
- brass standoffs
- carbon monoxide detector module

# Engineering Design Process

<span style="text-decoration: underline;">**Engineering Design Process**</span>

1. Define the problem
2. Do background research
3. Specify requirements
4. Brainstorm, Evaluate, and choose solution
5. Develop and prototype solution
6. Solution either partly or fully meets requirements (testing)
7. Communicate results

[![Untitled_design_3_600x600.webp](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/untitled-design-3-600x600.webp)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/untitled-design-3-600x600.webp)

<span style="text-decoration: underline;">**Defining the Problem/challenge**</span>

Building a rover that takes temperature and humidity readings, can avoid obstacles, detects carbon monoxide, and more. It can be used by firefighters, scientists, anybody who wants to be sure an area is safe.

<span style="text-decoration: underline;">**Do Background Research**</span>

Robot can be used to fight fires or just explore a cavern, like a mini mars rover. Mars rovers do almost the same thing as my rover: temperature readings, rock and soil samples, and pictures. With more developments, it could become a rover, checking if somewhere is suitable for human life. In this way, it is a lot like a Mars rover.

Rover picture: Base rover project:

[![mars-rover-sulfur-hero-940x529.jpg](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/mars-rover-sulfur-hero-940x529.jpg)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/mars-rover-sulfur-hero-940x529.jpg)[![Screenshot_2025-11-21_16-51-03.png](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/screenshot-2025-11-21-16-51-03.png)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/screenshot-2025-11-21-16-51-03.png)

<span style="text-decoration: underline;">**Specify Requirements**</span>

Carbon monoxide detector temperature and humidity sensor, mounted with the Arduino and breadboard, and jumper wires on top of the robots. The LCD will display the temperature and humidity readings. The Arduino will control and power the sensors. Another rechargeable battery powers the screen.

<span style="text-decoration: underline;">**Brainstorm, Evaluate, and Choose Solution**</span>

Using the Elegoo robot as a base, adding cool sensors and a screen to the top to complete the requirements.

<span style="color: rgb(132, 63, 161);">\#include</span> <span style="color: rgb(53, 152, 219);">&lt;DHTStable.h&gt;</span>

<span style="color: rgb(132, 63, 161);">\#define</span><span style="color: rgb(230, 126, 35);"> DHT11\_PIN 7</span>  
DHTStable dht;

<span style="color: rgb(53, 152, 219);">void</span> <span style="color: rgb(230, 126, 35);">setup</span>() {  
 Serial.begin(9600);  
}

<span style="color: rgb(53, 152, 219);">void</span><span style="color: rgb(230, 126, 35);"> loop</span>() {  
 int chk = dht.read11(DHT11\_PIN);

 <span style="color: rgb(230, 126, 35);">Serial.print</span>(<span style="color: rgb(53, 152, 219);">"Status: "</span>);  
 <span style="color: rgb(230, 126, 35);"> Serial.println</span>(chk);

 <span style="color: rgb(230, 126, 35);">Serial.print</span>("Temp: ");  
 <span style="color: rgb(230, 126, 35);">Serial.println</span>(<span style="color: rgb(230, 126, 35);">dht.getTemperature</span>());

 <span style="color: rgb(230, 126, 35);"> Serial.print</span>("Humidity: ");  
 <span style="color: rgb(230, 126, 35);">Serial.println</span>(<span style="color: rgb(230, 126, 35);">dht.getHumidity</span>());

 <span style="color: rgb(230, 126, 35);">delay</span>(1000);  
}

This is the code for the dht sensor, also a test code.

<span style="text-decoration: underline;">**Develop and Prototype Solution**</span>

Add a photoresistor module to detect light, program it to light an LED if there is light and red LED if no light. Another Battery, no Pi, only Arduino.

# Materials and Procedures

There were many variations of each, I will start with oldest to newest.

<span style="text-decoration: underline;">**The Original Materials List**</span>

- Elegoo smart robot car v4.0
- Photoresistor module
- Carbon monoxide module
- Temperature and Humidity sensor
- plastic platform
- Freenove 5 inch DSI screen
- GPIO extension board
- breadboard
- GPIO extension cable
- Raspberry pi 4 model b+
- jumper wires

<span style="text-decoration: underline;">**The Original Procedure**</span>

- Assemble the robot following the instructions in the kit
- add the plastic platform using the support pillars and screws
- attach the rpi and screen to the platform
- wire the sensors
- code the sensors
- attach the battery to the platform with screws
- test the robot by driving it in light and dark, cold and hot, and place a lit match near the carbon monoxide detector

 As you can see, these are a bit patchy.

<span style="text-decoration: underline;">**Materials (Updated version)**</span>

- Elegoo smart robot car v4.0 with camera module
- Photoresistor module
- carbon monoxide module (Flying fish module)
- Temperature and Humidity sensor module
- chalkboard platform
- breadboard
- Arduino UNO
- computer
- jumper wires hardware

<span style="text-decoration: underline;">**Procedure (Updated Version)**</span>

- assemble the robot
- ad the platform with screws and bolts
- wire the sensors
- code the sensors
- fix the UNO to the platform
- test the robot (driving in light and dark, cold and hot, place it by a lit match

Still quite patchy but it worked for a bit.

<span style="text-decoration: underline;">**Materials (take 3)**</span>

- 16-2 LCD (Liquid Crystal Display) screen
- m7 Photoresistor module
- Flying Fish carbon monoxide module
- DHT11 Temperature and Humidity sensor
- a green LED
- an active buzzer
- a potentiometer
- 220khm resistor (5 band)
- Arduino UNO
- Raspberry Pi case
- double sided tape
- jumper wires
- mini chalkboard
- hardware
- Elegoo v4.0 smart robot car kit
- a drill
- a computer
- Arduino cord
- battery pack
- 8 AA batteries

<span style="text-decoration: underline;">**Procedure (take 3)**</span>

- Assemble the Elegoo kit
- drill holes in the top platform and the chalkboard
- secure the chalkboard on top of the platform using 4 screws, 8 nuts, and 8 washers
- secure the breadboard onto the surface of the chalkboard with double sided tape
- put double sided tape on the bottom of the battery pack (with batteries in it) and fix it to the robot car
- secure the Arduino to the bottom of the Pi case using two small screws
- fix the Pi case and Arduino across from the breadboard with double sided tape
- wire the Photoresistor module and LED 
    - Photoresistor pin AO to analog zero (A0) on Arduino
    - pin DO to LED anode (positive) pin
    - pin GND to negative column on the breadboard (ground)
    - pin VCC to positive column on the breadboard (voltage, 5v)
    - LED cathode pin to negative column on breadboard
- Wire the DHT11 temperature/humidity sensor 
    - -pin to negative column
    - out pin to pin 7 on Arduino
    - + pin to positive column on breadboard
- Wire the CO module and active buzzer 
    - module pin DO to Arduino to digital pin 8
    - GND pin to negative column
    - VCC pin to positive column
    - buzzer positive pin to digital pin ~9 on Arduino
    - buzzer negative pin to negative column
- Wire the LCD, resistor, and potentiometer 
    - LCD pin 1 to negative
    - LCD pin 2 to positive
    - LCD pin 3 to middle of potentiometer
    - LCD pin 4 to digital pin 12
    - LCD pin 5 to negative
    - LCD pin 6 to digital pin ~11
    - LCD pins 7-10, nothing
    - LCD pin 11 to digital pin ~5
    - LCD pin 12 to digital pin 4
    - LCD pin 13 to digital pin ~3
    - LCD pin 14 to digital pin 2
    - LCD pin 15 to resistor to positive
    - LCD pin 16 to negative
    - Potentiometer left pin to positive
    - Potentiometer right pin to negative
    - Potentiometer middle pin to LCD pin 3
- Wire the Arduino to the breadboard 
    - Super simple, just 5v to positive and GND to negative
- Write the code
- Upload the code
- connect for testing
- test the robot
- record results

# The Code

There were a lot of draft codes, like a lot, which is why these are the finalized code. Who wants to see broken code?

int buzzer = 9;  
int co\_sensor = 8;  
int co\_detected;  
int msr = 0;  
int sensor = A0;  
int LED = 4;

  
\#include &lt;LiquidCrystal.h&gt;  
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

\#include &lt;dht.h&gt;  
dht DHT;  
\#define DHT11\_PIN 7

void setup() {  
 int ts = DHT.readTemperature  
 int hs = DHT.readHumidity  
 lcd.begin(16,2);  
 Serial.begin(9600);  
 pinMode(4, OUTPUT);  
 pinMode(buzzer, OUTPUT);  
 pinMode(co\_sensor, INPUT);  
}

void loop() {  
 int chk = DHT.read11(DHT11\_PIN);  
 lcd.setCursor(0,0);  
 lcd.print("Temp-");  
 lcd.print(ts);  
 lcd.print("c");  
 lcd.setCursor(0,1);  
 lcd.print("Humidity-");  
 lcd.print(hs);  
 lcd.print("%");  
 Serial.print  
 co\_detected = digitalRead(co\_sensor);  
 if(co\_detected == LOW) {  
 Serial.println("co detected... run for your life!");  
 digitalWrite(buzzer, HIGH);  
 }  
 else {  
 Serial.println("no co detected... go eat some pizza");  
 digitalWrite(buzzer, LOW);  
 }  
 msr = analogRead(sensor);  
 Serial.println(msr);  
 if (msr &gt; 100) {  
 Serial.println("soft light");  
 digitalWrite(4, LOW);  
 }  
 else {  
 Serial.println("hard light");  
 digitalWrite(4, HIGH);  
 }  
 delay(1000);  
}

The Finalized code

[![Screenshot_2025-11-27_08-14-22.png](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/screenshot-2025-11-27-08-14-22.png)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/screenshot-2025-11-27-08-14-22.png)

![Screenshot_2025-11-27_08-14-43.png](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/screenshot-2025-11-27-08-14-43.png)

# Wiring

Here is the wiring diagram that I used on the board for the presentation.

[![image7.jpeg](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/image7.jpeg)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/image7.jpeg)

Then, here is a better wiring diagram made with Tinkercad. There was a slight problem though, because Tinkercad doesn't have some of the components that I used, like the DHT11 temperature and humidity sensor, so I could only show what the LCD wiring looked like. As for the remaining sensors, I used digital pin 7 for the DHT11 sensor and pins ~9 and 8 for the CO module and buzzer.

[![Screenshot_2025-11-27_09-09-13.png](https://wiki.piflyer.net/uploads/images/gallery/2025-11/screenshot-2025-11-27-09-09-13.png)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/screenshot-2025-11-27-09-05-55.png)

# Presentation

This is a shorter section but it is about the overall presentation of my project

# Challenge

There was some conflict with this, because with all of my sensors and breadboard extension module, There was little to no space for the carbon monoxide sensor, so I had to cut that, also because the circuit was barely running, as there was only 5v supplied. I didn't realize I could use a power source.

The Challenge

Design an addition to a robot where the addition can take temperature and humidity readings, detect light, detect carbon monoxide, and display information on a screen, using the Arduino Uno as the controller.

# Abstract

Abstract

<span id="bkmrk-in-this-design-chall-1"><span id="bkmrk-in-this-design-chall-2">In this design challenge, there were no obstacles until my original rover controller, a Raspberry Pi, was fried because a voltage regulator is needed when you power the Pi with batteries. As a substitute for the Pi, the Arduino Uno was brought in. The Uno is a microcontroller good for beginners in coding and electronics. After assembling the robot and adding the top layer, there was no display/notification for the sensors and their readings so an LCD screen was added for the temperature and humidity sensor along with a buzzer for the CO sensor and a LED for the photoresistor module. The next problem was uploading the code to the Arduino. The computer used originally was not recognizing the Uno for what it was, meaning the code was not able to be uploaded. To take care of that, another Pi was brought into the equation. This time, the Pi was not fried and worked perfectly to upload the code. (Raspberry Pis are small computers) The robot was receiving code just fine. When I tried to upload the project code, I was getting an ‘avrdude: content does not match: verification error’ . Then, all I could do was to double check everything. I disconnected the LCD and tried to upload the code, same error. I disconnected the CO monitor next, uploading the code, and this time there was no error! I rewired everything I had taken off really carefully and there was no error, but the monitor was not doing its job monitoring. After more testing, I found that the CO monitor was not getting enough power because of the amount of things on the breadboard,so it only had enough power to turn on its LED that signifies it is on. At that point I decided adding more power would probably not be safe for the other components so I got rid of the CO monitor and buzzer to make sure the LCD and photoresistor were getting enough power. I uploaded the code again and it worked! The rover was not quite what I imagined it to be, but it still accomplished most of what I wanted it to do, which is a success to me, because after the first error in uploading , I thought it might never work at all, but after a bunch of rewiring, it</span></span><span id="bkmrk-did."><span id="bkmrk-did.-1"> did.</span></span><span id="bkmrk-"></span>

# FINAL VERSION Materials and Procedure

Materials

- lcd (Liquid Crystal Display) screen
- M7 photoresistor module
- DHT11 Temperature and humidity sensor
- Flying Fish CO detector module
- Green LED
- Potentiometer
- 220𝝮 resistor
- Active buzzer
- Arduino Uno
- Jumper wires
- Small chalkboard
- Various hardware
- Breadboard
- Battery pack
- 8 AA batteries
- Elegoo smart robot car v 4.0 kit
- Arduino cord
- A drill
- A computer

Procedure

1. Assemble the Elegoo kit
2. Drill holes in the top platform and the chalkboard
3. Secure the chalkboard on top of the platform using four screws, eight washers, and eight nuts
4. Secure the breadboard on to the surface of the chalkboard with double-sided tape
5. Put the batteries in the battery box
6. Put double-sided tape on the bottom of the battery box and fix it to the top of the robot car battery
7. Secure the Arduino to the bottom of the Raspberry Pi case using two small screws
8. Fix the Raspberry Pi case with the Arduino inside across from the breadboard using double-sided tape
9. Wire the photoresistor module and LED
- Photoresistor pin AO to analog zero (A0) on Arduino
- Pin DO to LED anode (positive/longer leg) pin
- Pin GND to negative column on the breadboard
- Pin VCC to positive column on the breadboard
- LED cathode (negative/shorter leg) to negative column on the breadboard

11. Wire the DHT11 temperature and humidity sensor
- (-) pin to negative column on breadboard
- OUT pin to digital pin 7 on Arduino
- (+) pin to positive column on breadboard

13. Wire the CO module and active buzzer
- Pin DO to Arduino digital pin 8
- GND pin to negative column on breadboard
- VCC pin to positive column on breadboard
- Buzzer positive pin (longer leg) to digital pin ~9 on Arduino
- Buzzer negative pin (shorter leg) to negative column on breadboard

15. Wire the LCD, resistor, and potentiometer
- LCD pin one to negative column on the breadboard
- LCD pin two to positive column on the breadboard
- LCD pin three to the center pin on the potentiometer
- LCD pin four to digital pin twelve on the Arduino
- LCD pin five to negative column on breadboard
- LCD pin six to digital pin ~11 on the Arduino
- LCD pins seven to ten; nothing
- LCD pin eleven to digital pin ~5 on the Arduino
- LCD pin twelve to digital pin 4 on the Arduino
- LCD pin thirteen to digital pin ~3 on the Arduino
- LCD pin fourteen to digital pin 2 on the Arduino
- LCD pin fifteen to resistor pin
- LCD pin sixteen to negative column on the breadboard
- Potentiometer right pin to negative column on the breadboard
- Potentiometer center pin to LCD pin three
- Potentiometer left pin to positive column on the breadboard
- Remaining resistor pin to the positive column on the breadboard

17. Connect power to the breadboard
- GND pin on Arduino to top of negative column on the breadboard
- 5V pin on Arduino to the top of the positive column on the breadboard

19. Code the sensors, LCD, LED, and buzzer
20. Upload the code to the Arduino
21. Connect the Arduino to the battery pack with the Arduino cord
22. Test the robot (drive it, light a match near the CO sensor, test the LED and photoresistor, and the LCD screen and DHT11 sensor)
23. Record results

# Result

The rover met three out of four standards for this challenge: temperature and humidity readings, detect light, and display information on a screen. There was not enough power to control all of the sensors, so I had to either add another power source or cut a sensor. I had to go with the latter because too much power could damage your components, a fact I learned all too well when the first Pi got fried. Overall, the project did better than I thought it would but it did not achieve what I wanted it to be.

I personally, looking back, don't like this conclusion, but oh well. That was for the deadline.

# Pictures

<span>What is a good science fair board without pictures? </span>

# Pictures

[![image0.jpeg](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/image0.jpeg)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/image0.jpeg)[![image1.jpeg](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/image1.jpeg)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/image1.jpeg)[![image3.jpeg](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/image3.jpeg)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/image3.jpeg)[![image4.jpeg](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/image4.jpeg)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/image4.jpeg)[![image5.jpeg](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/image5.jpeg)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/image5.jpeg)[![image6.jpeg](https://wiki.piflyer.net/uploads/images/gallery/2025-11/scaled-1680-/image6.jpeg)](https://wiki.piflyer.net/uploads/images/gallery/2025-11/image6.jpeg)