JJY transmitter project

The 6 watches in the middle are: Citizen Attesa (ATD53-2611, H410-T003788), Citizen Exceed (CB1110-61A, H149-T023533), Citizen Exceed (EBG74-T2251, H410-T007716), Seiko SBTM339 (7B72-0AG0), Citizen Exceed (EBG74-2404, H110-T009417), Citizen Collection (AS7050-55A, H110-T018360)

Recently I went a bit mad and bought a batch of Japanese Domestic Market (JDM) watches to play around with. These are watches made by the major Japanese companies like Seiko and Citizen but only for the Japanese market and they are not released elsewhere. Quite a lot were radio-controlled so they correct their time every night by listening to a time signal broadcast in many world regions. Each region uses a different signal and, while some “of the”world time” watches listen for a variety of signals, most JDM watches will only listen for the Japanese “JJY” signals.

The watches that need JJY radio signals still work fine, in that they fall back to being quartz watches and you can manually set the time just fine. But you can also use smartphone apps like ClockWave which mimics the radio signal and broadcasts it out of the phone’s speaker. You just have to wind up the volume and sit the watch right next to the phone for 3-5 minutes while it updates. This is fine if you just have one watch and you don’t mind doing the updates in an ad-hoc way, whenever you notice that the time has drifted, but it would be much nicer if you could actually have a local JJY broadcasting antenna in your house, which would update all your JDM watches automatically when they check the time at night … and this is where my project comes in. 

After a bit of work with Gemini AI (planning and coding) and some eBay purchases, I managed to get a very simple transmitter that seems to have at least a 10-15cm range, which is perfect for the watches in my watch case. You just buy

  • an ESP32 DevKit v1 board (£6.25)
  • some Dupont Jumper Cable Wires 20cm (£2.25/10)
  • a 10MH inductor (£8.25/20)
  • and I used an old USB-C cable to power it
  • the source code came from GitHub (ClockWaveXmitter)
  • and the code changes and uploading were all done in the free Arduino IDE

The code did need some modding to get it to work but Gemini walked me through the changes:

  • The “showstopper” problem seemed to be interference / delays in the ESP32 board which meant that the watches could detect a signal but they never quite got enough data to update their times. Gemini cleverly sorted that out by reformatting the data signal and splitting some of the work off to the second CPU. 
  • I also wanted to simplify the list of options for which timezones to allow – it was very oriented to Asia but I wanted to just have the 2 UK times (GMT & BST) and Japanese time itself as a control/test
  • the original script used Japanese NTP servers so I changed those to the common world servers, starting with Apple’s as I tend to check the watch times against my Mac
  • I noticed that after half a day the time on the ESP32 board had drifted a bit so I got the code to resync to NTP every 10 minutes.

You can download the code if you want to try it – no warranty or guarantees implied and credit goes to the authors of ClockWaveXmitter for doing all the hard work. The file is a docx but that was just the format WordPress insisted on – copy and paste it into a unicode text file with an INO suffix for Arduino IDE to read.

Now I have it regularly updating all my JDM watches – an individual watch might fail to sync every now and then but it’s good enough for me to know that 90% are syncing every night and I can just pick up any watch and know it is telling perfect time. [The lower middle watch in my photos is actually dead and I’m waiting for a new cell!]

Next step will be to reduce the transmitter from 24hr operation to just the 3 windows that the watches will listen for a signal, at 2am, 3am & 4am. Then I’d like to test the range thoroughly – I know it works to 10-15cm but the watches still report “High” signal so I’m guessing it will be fine for up to 30cm.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.