Troubleshooting:
We worked with various components on this project, therefore certain Wrong Circuit
Connections, Debugging problems, Run Time Errors, and so on were inevitable. The following
are some of the troubleshooting steps we took during this project.
Dino Game :
Problem 1:
No VGA signal was detected on the computer screen.
Debugging+Solution:
a. Use the oscilloscope to test signal→ signal is transmitted properly.
b. Change the DVI to VGA cable to the normal VGA cable.
Result: VGA signal detected
Problem 2:
VGA signal detected, nothing displayed.
Debugging and Solution:
a. Used 330 k ohm instead of 330 ohm.
b. Solution: Replace all the resistors to 330 ohm( 2*150 ohm,3*10 ohm, connected
in series)
Result:
The example code is working
Problem 3:
The push button is not working.
Debugging and Solution:
Wrong connecting way of push button—correct the
connection.
Problem 4:
There is some display issue.
Debugging and Solution:
Solved using the vga_graphics.c functions.
Problem 5:
How to create images of dinosaurs and cactus.
Debugging and Solution:
Use Bitmaps.
Problem 6:
Adding Sound Effects.
Debugging and Solution:
-Currently we are able to generate any mp3 audio to
speaker PWM output. But that is not working in dino games. So currently working on it.
Problem 7:
Adding Sound Effects to the game.
Debugging and Solution:
The problem we faced was because their were interrupts
already present in the game. Now the PWM sound code also is based on IRQ. Hence, it
caused the issue. Thus to solve the issue we had to create another separate pwm driver
c code “pwmsnd” to enable the synchronized functionality of game and sound.
Problem 8:
The Push button is too small and does not feel nice while playing.
Debugging and Solution:
We used a big “light enabled” push button and we designed
a 3-D printed model to hold the button.
Problem 9:
Wanted to make the game more interesting.
Debugging and Solution:
Created 3 different levels, with different high score buffers
to keep the game interesting and competitive.
Face Detecting Pan-Tilt Camera :
Problem 1:
In this step, we first considered using the Arducam on the Pico4ML board to
detect humans. However, this board's storage capacity was only 2MB. And after we installed
Circuitpython, this memory space was reduced to 0.9MB.
Debugging and Solution:
Then we decided to implement this part of the project using the
Raspberry Pi 4 board in order to get some functionality working before the demo day.
Problem 2:
Finding Proper Machine Learing Model to efficiently detect the person’s face using
the specifics of camera.
Debugging and Solution:
We found the the “haarcascade_frontalface_default.xml” to be
very efficient for our camera and a low size model.
Problem 3:
Issue while moving servos
Debugging and Solution:
Pimoroni Pan-Tilt hat: uses PIC 16F 1503 with custom hardware
and talks over I2C. However, the ArduCam Pan Tilt platform did not have any such servo-driver
boards. The PIC 16F 1503 has a wide range of libraries that has been already used by users in
face recognition pan tilt. However, the Arducam’s library is pretty limited. Hence, most of the
programs already presented on the internet do not work.
We found adafruit has a servo motor library named “adafruit_servokit”, which was a very
useful point of reference for designing our program which is related to controlling the Pan-Tilt.
We had to create our own functions to provide accurate shift angles related to the person’s
movement.
Problem 4:
Adjusting the proportional Movement and the default angle.
Debugging and Solution:
It was a time consuming process and required a lot of fine tuning. It
was a matter of experimenting with different values until we found the optimal values of
proportional turns, error compensations and default angles, to make our person tracking
feature flawless.
Human Interaction Interface:
Issue 1:
Display issue
1. There is blacklight in the LCD, which means it is functioning well, but no images
displayed as expected.
2. The ST7735 used in the example has a different Pin number, which means the jump wire
connection will be different.
Debugging and Solution:
we find the pin function distribution of the ST7735 used in the
video and the Pin value defined in the code to determine the wire connection.Then, we also
find the Pin distribution of the ST7735 we are going to use, connect it based on the wire
connection.
Issue 2:
input issue
1. The lCD is functioning, however, it could not display an input of more than two
characters. The solutions mentioned online have been tried but failed.
Debugging and Solution:
We used the circuit python instead.
Issue 3 - Storage Issue:
1. Previously, we intended to utilize "Mono class D audio amp with 8 1W speaker" while
working with the speaker for music playback. We had to save some mp3 files in the
Raspberry Pi Pico's circuit python library. However, the Pico's 2MB on-board QSPI
memory and 264KB on-chip RAM were insufficient for storage.
Debugging and Solution:
Because Mp3 files take up more memory, we had to compress
some of them, eliminate some unneeded program files from the CircuitPython Library, and then
store some highly compressed mp3 files in it.
Issue 4 - Noise Issue:
1. Despite the fact that we fix Issue 3 by reducing the music files and eliminating certain
unneeded files from the circuit python library. However, when playing the song, we
heard a lot of noise.
Debugging and Solution:
To address this, instead of a 1W speaker, we utilized a Mono
Enclosed Speaker - 3W 4 Ohm, which considerably enhanced audio quality. In addition, a 1nF
capacitor was shunted with the Data signal and ground.