Super Green Newbie Intro - Digital Watch Goal!
My name is Mark and I am totally new to microcontrollers. In fact, I don't know much about electronics, I can't solder, and know very little C++ so I have that going for me. Why the hell am I here? Well, I'm an aerospace engineer...grew up in the 70s and 80s. Back then, the digital watch was the Swiss army knife of personal electronic gadgets (no cell phones back then, child). I LOVED electronic gadgets and learned to write code in FORTRAN and Visual Basic. I then started to collect and restore digital watches, partially for the nostalgia and partially to learn more about them. Then I saw this video of a guy who created his own digital watch:
I was like "what the hell am I watching?...what can these microcontrollers do? or more accurately...what CAN'T they do?"
So I watched a ton of videos and Bill was in a bunch of them. I think he had the perfect approach in his videos to appeal to the newbie as well as you dorks...I mean more "seasoned" vets of microcontrollers.
This looks like a great hobby. A way for me to get into trying to actually make the gadgets I loved, get to learn more about coding, and get to catch up with Bill who I served with in 'Nam (he was a Huey pilot and I was his flight sergeant...but that is a story for another time..).
So my plan is to go step-by-step starting with "Hello World" and Blinking LED and work my way to a fully functioning digital watch with a stopwatch and alarm. It may take months or years...but I think I am here to stay.
Oh, and I guarantee...I'm gonna ask some STUPID questions. I am gonna be the village idiot when it comes to this hobby...but "God have mercy on the smartest soul for pride will take him" (gosh that got dark).
Anyway...let me run you by the master plan and ALL INPUT IS WELCOMED.
1. I want to use an ESP32 as the backbone of my project. I eventually would like the watch to be able to set itself with a Bluetooth device or via WiFi. And at my age, the difference between $6 and $12 is nada.
2. I want to use all dev boards. As I said, my soldering skills are crap.
3. The plan now is to use a dev board that supports Lipo charging. I also want to use a RTC board because of the button battery backup and the fact that many RTCs also support one or more alarms.
4. Given this, I have chosen the Lolin esp32-C3 pico and the Adafruit DS3231 RTC chip https://www.adafruit.com/product/3013
5. For breadboarding I will use an I2C oled 128x64. May go to something nicer down the road.
Like I said, my modus operandi is to say stupid stuff then to learn from my mistakes. Please let me know if I said anything waaay off. Other than that, it is nice meeting you fine people. Let's get to work!
Hi Fishbone! Welcome to the forum. I'm so glad someone with a great sense of humor like yours has found our community! I have some great advice for your project, but will post it shortly. Look forward to chatting with you more.
Thanks, Fishy! It always feels great when people like you welcome new members to the community. I think This is going to be an awesome place!
Sorry to see no one has said 'Hi' to you ... much of the 'regular' activity is down to a relatively small number of individuals, so that occasionally I guess they are all 'busy' in some way.
Of course, the small number also means you may be asking questions about specific units that no one has actually seen ... e.g. for my part I have had a play with an ESP32, but none of the other items you mention.
In addition, the "Introduce yourself" is really just that ... talking about your aims and achievements as an intro, but it is not the best place to ask questions ... I suggest you consider starting a new thread in the most appropriate section for that purpose.
Meanwhile, sorry, but as I am not really the best person to answer your question, the only comment that comes to mind is rather banal, and is probably just me being thick, so please don't take offence ...
Whilst the actual ESP32 chip is quite small (6-7mm square from memory), the ESP32s I have seen are on "comparatively" large development boards, and not really wrist sized. Given your limited soldering experience, I am not clear what you expecting to achieve. Perhaps a new thread with a clearer expectation would provoke better answers?
@fishbone Just reading your objective and relating that to your story of motivation I can see you will not be building a wrist watch but will be building a breadboard (no soldering) demo of the concept. You can use the internet to set the time but not Bluetooth as far as I know. Most if not all of the code is probably available here plus the examples. You will probably ask which of the 21 DS3121 libraries should you use. I wish I had an easy answer but I don't, it's part experience, part hard work and some amount of luck. If I have a long list as you do then starting with a well-established brand like Adafruit is generally safe.
Arduino says and I agree, in general, the const keyword is preferred for defining constants and should be used instead of #define
"Never wrestle with a pig....the pig loves it and you end up covered in mud..." anon
My experience hours are >75,000 and I stopped counting in 2004.
Major Languages - 360 Macro Assembler, Intel Assembler, PLI/1, Pascal, C plus numerous job control and scripting
Digital watches seem a bit light electric cars, full of range anxiety. I bought the early lilygo watch which has a fantastic spec, ESP32 based, TFT touch screen but the reality was battery life nearer minutes than hours. In the end I took off the strap and used it as neat little powered terminal.
Otherwise all the Arduino type boards are very easy for clock makers. Analogue or digital or both. All your aims are pretty easy using the Arduino platform and C. Sometimes not quite as easy if you go Python because Arduino has been developed for little micro controllers for so long, all the libraries are in place. I have a Heltec module here with on board TFT, ESP32 and battery charger, seems right up you street. Loads of examples on the Arduino platform, you can have a clock, time off the internet in minutes just by plugging in a USP lead to power/program it.
My latest project is a 120 year old mantle clock. I carefully removed and stored the working mechanism, photographed the clock face and found that the Raspberry Pi 7" display fitted the clock perfectly. Two little 5V solenoids hammer the chimes. I wonder if my version will last 120 years. At least it's more accurate, getting it's time of my WiFi. This was done in Python because it's an easy way to write a user interface on a Linux based computer.
Naturally I can't have an internet connected PC just showing a clock face but that is another story.
@zander Hi...thanks for the reply. Yeah, I will be building a breadboard prototype. As you point out...I will do a lot of learning for sure.
@hilldweller I looked at the Lilygo...watch and gave it fair consideration. That's too bad the battery life isn't up to par. I don't know if the Lilygo does this, but the plan is to keep it in deep sleep as much as possible. But you are 100% correct - battery life will be everything. If I can't get 7-10 days off medium usage, I'll consider it a bust. For your mantle clock...so is the original movement still in it? I'm having trouble from what you wrote figuring out what the Raspberry pi does. But I am very interested - especially if you combined WiFi with it!!! Can we post pics in this forum?
@hilldweller keep it in deep sleep as much as possible. .
For your mantle clock...so is the original movement still in it?
ESP32 deep sleep. I do have one success here, I have an M5 Stack with the extra battery module, at the moment it is running a program to read some DS18B20 sensors attached to ESP32s programmed as APs. I'll press ON once or twice a night to see how grim it is outside.
if(millis() > xit) M5.Power.powerOFF(); // auto shut down 2 mins
This works over a week with the occasional use and boots up in a few seconds. I also have an M5 Stick, the smaller version that comes with a watch strap. Lovely TFT screen. Terrible battery life. Horrible little buttons but still incredibly powerful inside.
The mantle clock. I removed the very heavy mechanism, but left the two separate "gongs" which are separate. I found some one inch long 5V solenoids on ebay and made a bracket so they strike them, two MOSFETs drive them. In place of the mechanism I placed a Rasberry Pi Official 7" Touch Screen with RPi 3 on it's back, that I had sitting on a shelf, It was an amazingly good fit and at a glance, because I used a photo of the original clock face, it's hard to tell it from original. Python pygame was an easy way of drawing the hands. The time comes from the WiFi.
On the subject of batteries, I have to smile when I think of the Casio analogue watch I have, about 6 years old with another 4 years life left in it's battery. It does have an LCD for day/date plus a motor to drive the hands.