EEVblog Electronics Community Forum

Electronics => Projects, Designs, and Technical Stuff => Topic started by: mauroh on November 26, 2018, 02:36:41 pm

Title: ESP32 Oscilloscope Clock
Post by: mauroh on November 26, 2018, 02:36:41 pm
Hi, just for fun I made my own version of the famous Oscilloscope Clock and shared it so everyone can play and improve the code.

https://github.com/maurohh/ESP32_OscilloscopeClock (https://github.com/maurohh/ESP32_OscilloscopeClock)

I've used an ESP32 under the Arduino IDE and since it is just a matter of providing to the Oscilloscope the X Y coordinates, you can display whatever you want.
My target was to keep everything as simple as possible, avoiding any additional hardware, so no external RTC, no external DACs.

Since the ESP32 has 2 internal 8 bit DACs and it can connect to an ntp server to gather the exact time, it was pretty straight forward  :)

I already shared it on twitter and I was really surprised for the iterest for such a toy
https://twitter.com/PintusMauro/status/1065563496421703680 (https://twitter.com/PintusMauro/status/1065563496421703680)

Enjoy  :-+ and don't forget to share your results or suggestions.

Mauro

PS:
Thank you to http://www.dutchtronix.com/ScopeClock.htm (http://www.dutchtronix.com/ScopeClock.htm) for sharing the project I used as reference, also the XY tables are straight from this project.
Thank you to Andreas Spiess fot the Arduino NTP Library NTPtimeESP https://github.com/SensorsIot/NTPtimeESP (https://github.com/SensorsIot/NTPtimeESP)
Thank you to everyone else who shared some piece of advise, code... that contributed to this fun project.



Title: Re: ESP32 Oscilloscope Clock
Post by: mark03 on November 27, 2018, 02:19:33 am
Maybe a dumb question, but how do you get separate, disconnected line and curve segments with only X and Y?  Don't you need a blanking signal too, to hide the trace as it moves between graphic elements?  Or can you just "move it really fast" when you don't want it to show up?  And would that work on a real CRT?

I have a mostly gutted Tek 2465 that I want to turn into a clock / generic vector display one of these days...
Title: Re: ESP32 Oscilloscope Clock
Post by: mauroh on November 27, 2018, 10:00:11 am
Hi Mark,
   this is not a dumb question and it is actually the all challenge of this drawings on an oscilloscope.
There are several factors that will impact the final results and are specific on how you generate the image (R2R dac, PWM with rc filter, fast DAC...) and also specific of the type of oscilloscope (analog vs digital), in some case not obvious like selected memory depth or intensity grading capability.

I see this was already discussed here https://www.eevblog.com/forum/testgear/analog-vs-digital-x-y-mode/ (https://www.eevblog.com/forum/testgear/analog-vs-digital-x-y-mode/)

On my project the trick is to spend more time drawing the segments I want, moving one bit at a time along two end points and jumping to the next segment as fast as possible.
The last one is hardware dependent and the internal DACs of the ESP32 are fast enouth.

With the ESP32 I was not able to assign the values of the 2 DACs simultaneously (as you can do with an external DACs like the MCP4802), but I had to write the 2 values one at a time.
This will generate several unwanted points that will appear on the drawing.
See the attached picture where you can see all the points generated by the code displayed using an Excel chart.
This was really useful during debbugging :)

Mauro
Title: Re: ESP32 Oscilloscope Clock and Christmas tree
Post by: mauroh on December 20, 2018, 10:17:03 am
Merry Christmas from the bottom of my Oscilloscope  :)

ESP32 Oscilloscope Christmas tree

Mauro
Title: Re: ESP32 Oscilloscope Clock
Post by: packetbob on January 09, 2019, 07:28:42 am
Thanks for posting this great project..
I built mine on a small perfboard and used BNC jacks..

I ran into two small issues with the NTP library that I'll mention to perhaps save others time.

1) Compile Error - The code would get a compile error complaining that it could not find "ESP8266WiFi.h". This line located in the NTPtimeESP.h file as "#include <ESP8266WiFi.h>". Looking around the code it appears it was perhaps based on some previous ESP8266 code. The ESP32 code I looked at seemed to reference "WiFi.h" instead. So if you have the same issue, open up the "NTPtimeESP.h" inside the library and replace the "#include <ESP8266WiFi.h>" with "#include <WiFi.h>".

2) TimeZone Change - I couldn't find any great info on the timezone setting for the NTP library (in the 5 minutes I spent looking) but did eventually determine that you needed to modify the "NTPch.getNTPtime(1.0, 1);" request. Simply change the first argument with your required GMT offset. So for me in the Pacific Coastal Zone (GMT -8), I changed "NTPch.getNTPtime(1.0, 1);"  to "NTPch.getNTPtime(-8.0, 1);" . This solved the timezone issue.

Anyways again thanks for posting your project.

Title: Re: ESP32 Oscilloscope Clock
Post by: mauroh on January 09, 2019, 10:32:22 am
Thank you for the feedback and notes!!! Really appreciated :-+

I've got the same issue with the NTPlibrary but forgot to point it out.
I'll add your notes to GitHub/Readme....

To make up for it I attached couple of pictures of some company logos on the Oscilloscope  :)

Mauro
Title: Re: ESP32 Oscilloscope Clock
Post by: Ironballs on February 08, 2019, 10:01:19 pm
Mauro,

I had a similar idea to you, that is take an ESP32 and turn in into an ocilloscope clock using the DACs and a NTP Server.  My sofware, although worked, isn't as polished as yours.  I put your code on my scope clock and here are the results

Hope you don't mind me posting!

Garry
Title: Re: ESP32 Oscilloscope Clock
Post by: mauroh on February 10, 2019, 07:39:56 pm
Wow that is a nice clock!!!  :-+
Thank you Garry for sharing this piece of electronic art.

Mauro