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.      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 Engineering Design Process Define the problem Do background research Specify requirements Brainstorm, Evaluate, and choose solution Develop and prototype solution Solution either partly or fully meets requirements (testing) Communicate results Defining the Problem/challenge 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. Do Background Research 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: Specify Requirements 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. Brainstorm, Evaluate, and Choose Solution Using the Elegoo robot as a base, adding cool sensors and a screen to the top to complete the requirements. #include #define DHT11_PIN 7 DHTStable dht; void setup () {   Serial.begin(9600); } void loop () {   int chk = dht.read11(DHT11_PIN);   Serial.print ( "Status: " );   Serial.println (chk);   Serial.print ("Temp: ");   Serial.println ( dht.getTemperature ());   Serial.print ("Humidity: ");   Serial.println ( dht.getHumidity ());   delay (1000); } This is the code for the dht sensor, also a test code. Develop and Prototype Solution 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. The Original Materials List 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 The Original Procedure 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. Materials (Updated version) 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 Procedure (Updated Version) 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. Materials (take 3) 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 Procedure (take 3) 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 LiquidCrystal lcd (12, 11, 5, 4, 3, 2); #include 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 > 100) {     Serial.println("soft light");     digitalWrite(4, LOW);   }   else {     Serial.println("hard light");     digitalWrite(4, HIGH);   }   delay(1000); } The Finalized code Wiring Here is the wiring diagram that I used on the board for the presentation. 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. 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 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 did. 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 Assemble the Elegoo kit Drill holes in the top platform and the chalkboard Secure the chalkboard on top of the platform using four screws, eight washers, and eight nuts Secure the breadboard on to the surface of the chalkboard with double-sided tape Put the batteries in the battery box Put double-sided tape on the bottom of the battery box and fix it to the top of the robot car battery Secure the Arduino to the bottom of the Raspberry Pi case using two small screws Fix the Raspberry Pi case with the Arduino inside across from the breadboard using double-sided tape 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 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 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 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 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 Code the sensors, LCD, LED, and buzzer Upload the code to the Arduino Connect the Arduino to the battery pack with the Arduino cord Test the robot (drive it, light a match near the CO sensor, test the LED and photoresistor, and the LCD screen and DHT11 sensor) 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 What is a good science fair board without pictures? Pictures