INTRODUCTION
Hi, my name is Alex. I am a rising Junior at Manhasset High School and I hope you enjoy my projects! I am extremely appreciative of the six weeks that I have spent here at BlueStamp Engineering. I learned a tremendous amount here, in regards to expanding to my coding knowledge and helping me develop my problem solving skills, because I ran into a multitude of roadblocks that I overcame with the help of the instructors, and eventually I was able to do my own troubleshooting. Everyone here was amazing, and we had a ton of fun in the process of learning.
You can find my 3D model for my Smart Watch case here. I used OnShape.
This is my Bill of Materials that I used to make my project.
You can download the code I used for my watch here.
FINAL VIDEO
For my final video/milestone, I was able to get the time to update on its own using a real time clock. I sent the time that the real time clock starts with over bluetooth using the app “LightBlue”. The bluetooth module is essentially the “middle man” between my phone and the Arduino Pro Mini that is the main part of the project. The Arduino shares the time with the real time clock, and the real time clock then keeps time and keeps sending the updated time back to the Arduino. The OLED screen is then updated with the time by the Arduino, and is displayed as an analog and digital clock. Everything fit snuggly into the case, and I was even able to solder on a charger to the battery to be able to charge it without opening the case.
SCHEMATIC
SECOND MILESTONE
My second milestone focuses on sending the time from my phone to the Bluetooth device and displaying it on the screen as an analog and digital clock. To do this, I would connect my phone to the Bluetooth device using the app LightBlue and send strings serially via bluetooth. The Bluetooth device was connected to an Arduino Pro Mini. Using the Serial.readString() function, I was able to read the strings sent over Bluetooth. I assigned these values to variables, like minutes and hours, and based on the values for minutes and hours, it would display certain lines for the analog clock. I predetermined the pixel coordinates for the endpoints of these lines. Figuring out the position that I wanted each line at took a lot of guess and check. The minutes hand is about 10 pixels longer than the hour hand. I ran into a couple major issues that took a while to solve, like having the right Bluetooth module. The first module that I had wasn’t compatible with iOS, so I had to wait for an iOS compatible Bluetooth device to come in. Also, I had originally made the code on an Arduino Uno, which is a much bigger board. I did this because it was easier to use, and when I got the code working on the Uno, I had a couple issues transferring the code onto the Pro Mini. These issues were mainly due to weak connections that I didn’t recognize. For my next milestone, I am going to get the time to update on its own.
FIRST MILESTONE
My first milestone towards my smartwatch that will communicate with my iPhone focuses on the LCD screen and displaying my own information using Arduino code. “Functions” are commands in code that will tell the Arduino board, the brain of the circuit, to display certain information on the LCD screen. Some functions that I used include the user defined functions testdrawtext and testfillcircles, which would write a message on the screen and draw circles on the screen, respectively. User Defined functions are functions that are written by any coder that are only available to that one person, or anyone who has access to those lines of code creating that function. Other functions that I used were included in the Adafruit_ST7735 library that I downloaded from a website. Those functions included fillScreen, setTextSize, fillRoundRect, and invertDisplay, which are pretty self explanatory for the most part. I wired everything together using a breadboard, because it allows room for error and it is an easy way to test if the wiring is correct. The pins allow the Arduino board to communicate to the LCD display using SPI (Serial Peripheral Interface), which is a way to communicate between different devices by sending different data types. Some issues that I encountered when writing the code includes going through the graphicstest code, a sample sketch that I uploaded to the screen to see if it worked. I had to test all of the functions for myself to see how everything was printed onto the screen. It required a lot of trial and error, inputing different values into the parameters to see what each parameter would change when the function was executed. My next milestone will be the Bluetooth communication between my phone and the module.
STARTER PROJECT
I made the TV-B-Gone as my starter project during these first couple days at BlueStamp. The microcontroller uses a crystal oscillator as a clock to tell how much time has passed, because the oscillator emits AC signals that are frequent and stable, allowing the microcontroller to base time off of the amount of signals produced, and send out pulses at a certain time interval. From the microcontroller, electrical signals are sent to the transistors for the IR LEDs, and the transistors are used as switches to power the LEDs. The low wavelength light beams produced from the IR LEDs, which cannot be seen, are used to turn TV’s on and off. The LED pulses carry a code of 1’s and 0’s with them, short bursts being 1’s and no pulse being 0’s. Most TV’s use the same code of 1’s and 0’s to turn it off, which allows the TV-B-Gone to work with such a variety of TV’s. The two capacitors around the microcontroller are used to filter out battery noise, and keep a constant flow of energy. Resistors also regulate energy, by controlling the flow of electrons, not allowing too many electrons to flow through at once. Once the button is pressed, it tells the microcontroller to restart the program from the beginning. Some challenges that I faced include soldering, given that this was my first time soldering. At first, I couldn’t get solid connections, but towards the end I was pretty good at soldering, and was able to go back and fix my mistakes.
You can buy a kit for the TV-B-Gone here.