Do you ever feel like waking-up in the morning is super hard?
Everytime you wake up in the morning you know exactly how to shut your mobile's alarm clock?
If your answer is yes then this IoTClock is designed just for you
All you need to know is that for shutting down this alarm clock, you must think

The Whole Clock

Final result screen

How does it work?

Once the alarm clock is set, time and date will change every minute (as needed)
When the time comes, the buzzer will starts beeping and there's only one way to turn it off (well you can also break it but..)
In order to turn off the clock you need to enter a 5 digits binary code which represents the day of the month
You will see what you type while typing it
If you were wrong, a red light will turn on and what you entered will be erased
If you were right, a green light will turn on and the beeping will finally stop

P.S: right button represents 0, left button represents 1


TI launnchpad 1350-4

The SimpleLink™ CC1350 wireless microcontroller (MCU) LaunchPad™ development kit combines a Sub-1 GHz with a Bluetooth® low energy radio for the ultimate combination of easy mobile phone integration with long- range connectivity including a 32-bit ARM® Cortex®-M3 processor on a single chip.

The CC1350 device is a wireless MCU targeting low power, long range wireless applications with Bluetooth low energy implementations. The CC1350 wireless MCU contains a 32-bit ARM® Cortex®-M3 processor that runs at 48 MHz as the main processor and a rich peripheral feature set that includes a unique ultra-low power sensor controller. This sensor controller is ideal for interfacing external sensors and for collecting analog and digital data autonomously while the rest of the system is in sleep mode.

LCD 16X2

This is a basic 16 character by 2 line display with a Yellow background and a Black backlight, utilizing the extremely common HD44780 parallel interface chipset.
It is mainly used for Arduino and Raspberry Pi


The buzzer is used to produce sound


The dimmer is used to change the screen's contrast

LCD way of use

In order to pass the data to the screen I chose a 8bit connection, you can choose between 4bit and 8bit. The 8 bit is much simpler to use since you only need to send the data once
If you would like to use the 4bit connectivity, you need to send first the upper bits and then the lower bits and then the busy and read flags.
After connecting the LCD screen to the board, there's a table showing how to initialize the screen, write to the first line or second line
Here you can also choose if you want one or two lines, I chose two so I could use the upper line for the clock and the bottom line to print a binary code the user enters.
At the end you will find how to write each and every char you'd like.
LCD connectivity

writing and initializing

what to write

User Interface

The user will connect to the Launchpad using an android phone, over there he will set the clock and set the IoTClock

connect to launchpad

Set the alarm clock

Difficulties & Summary

In order to do this project I had to split it into few parts. when one worked I could have moved to the other
First I had to realize how to use the I/O pins, once I know I control the pins (didn't took too long) I had to learn how to use the LCD. since the LCD is usually used with Arduino and Raspberry Pi there was nothing on the web. I had to read the manual, study how to reset the board, write what I want, how long each command takes etc.. that part wasn't easy and took a while but at the end its achievable.

The next step was setting up the time, I think the main issue is that there's not many people asking questions on the forum and so, after I finally discovered how to set the board's time, it didn't compile. apparently I had to change the .cfg file to compile my project. That part took few days just to get an answers at the forum

the final step was building a BLE android app and communicating with the board and that one was a big obstacle, I had to learn how fast I can write to the board and to write the android app itself which was a big issue. There's a google template all can use but it's not for writing so I took it as a template and continues from there.

The project usec the cc1350 Launchpad we studied the course on
It was about learning how to use the LCD screen with the Launchpad while using the BLE protocol and also, making something useful
My base example was the simple_peripheral we used in the BLE HW. even though the HW had nothing to do with what I've done, knowing where things can be found in the code was a big help
All in all, I'm glad I took this course, I think it was very interesting and it was a great and fun experience.
Code can be found on gitHub