A DIY CanZE dongle, part 2. Geek talk.

We might have ironed out most issues with the DIY dongle. If there are people willing to build an ESP32 based dongle, especially if they own a Q90, R90, or R110 model, we would like to hear about it. Requirements would be:

  • Preferably drive one of the above models.
  • Willing and able to build a dongle, which requires ordering stuff through Aliexpress or ebay HK, basic soldering skills, and either some basic knowledge of using PlatformIO with Atom (or VSCode) with git, or the ability to upload binaries to an ESP32 development board from the command line.
  • Fool around with it, and be willing to cycle quickly though different updates of CanZE or the ESP32 code.

24 comments on “A DIY CanZE dongle, part 2. Geek talk.
  1. Ryanteck says:

    I’m up for it but have a Q210, I have the soldering skills and can upload binaries to an ESP no issue. I might even prefer to build a PCB with a OBD Socket on it rather than have it on a mix of bits.

    • Gordon mccrea says:

      R110 here and already ordered from your shopping list….

      • Gordon mccrea says:

        Up and running thanks do you want any testing done?

        • Jeroen Meijer says:

          Well, we have quite a few reports that the standard “Chinese ELMs” work lousy or not at all on the 90 and 110 models, probably since the bus overwhelms the dongle’s resources. I fully expect this dongle to work without any problem and will ie populate the consumption screen without a blink. So if you could simply give it a spin or two, that would be great.

          And should you get bored by that, the new TPMS part worked fine on a Q90 I could check it on, but who knows……

  2. Jeroen Meijer says:

    Great. Let me know when you have the parts, see previous post on this subject. By then I should have published the connections (just a few wires), and the code should be a bit more stable.

  3. Norbert Molnar says:

    I have the skills but -at the moment- I don’t have a Zoe. I already owned 2, and want to have the 3. soon…
    So I’m definitely interested.

  4. I prefer to buy an already build dongle. Experimenting is ok also but not for day to day use.

  5. Jeroen Meijer says:

    We think the code for the dongle is stable enough. The project is here https://gitlab.com/jeroenmeijer/cansee In the doc folder there is build description.

  6. rari says:

    I am up for it, and trying… I connected the circuit thus morning and now everything is reset. While connected, the car display went gooble de good, “check airback”, “check brake” … when disconnected and off/on, the airback message disappeared but the wrench and brake message remains, oh oh…

    • Bob Fisch says:

      So you probably messed up the connections on the ODB dongle. I had that once, shorting the CAN-bus, which resulted in some red lights, but everything went back to normal as soon as I disconnected the dongle again.

      My advice is to really check twice the connections to the car before connecting things!

    • rari says:

      I forgot: ZOE, R110, battery 41 kWh, registerd: end April 2019.

  7. rari says:

    Thanks Bob, I’m using a different CAN transiver than recommended in you built. I left the terminator resistor 120 Ohm in. Normally all the setups I know, use it.
    I’d like to test my setup off car. Since I have more arduinos laying around and one more CAN chip, I’d like to emulate the car before going back. Can you please advice or better, do you even have a sketch to write to CAN and check if CanSee/CanZE receives that properly. I use a LoLin32 with OLED and a 8 LED Neopixel. Pictures and more details follow as soon as I am back home.

    CAN: 3pcs CJMCU-1051 TJA1051 High-speed Low Power CAN Transceiver For Arduino Module Board For Arduino from Electronics on banggood.com
    https://m.banggood.com/3pcs-CJMCU-1051-TJA1051-High-speed-Low-power-CAN-Transceiver-For-Arduino-p-1105611.html

    Wemos: Wemos® ESP32 OLED Module For Arduino ESP32 OLED WiFi Modules + bluetooth Dual ESP-32 Module Board For Arduino from Electronics on banggood.com
    https://m.banggood.com/Wemos-ESP32-OLED-Module-For-Arduino-ESP32-OLED-WiFi-Modules-Bluetooth-Dual-ESP-32-p-1181297.html

  8. rari says:

    some really weird things happen after I took off the 120 ohm resistor and reconnected the circuit; “check brake”, “tire pressure”, “check SOS call”, “check ESC”, … it got so far, I had to disconnect the 12V battery (I could’n switch her off with the START button, remote key card didn’t work) to stop her being noisy (UFO sound) even I was stationary in the garage….
    At least, disconnecting the 12V battery and waiting for 30s helped. It now seems “normal” again and I can drive.
    This is all very strange….

    • Bob Fisch says:

      This still sounds to me like shorting the CAN bus 🙁
      Did you connect all the grounds together? The CAN-ground, the ESP32-ground as well as DC-DC converts grounds?

  9. rari says:

    Hi Bob, yes I tried with connected pins 4 and 5 and only using signal ground (I have not tried using vehicle ground only). More tries next weekend. I ordered an Konnwei 902, I give this a try (it should arrive tomorrow (Tuesday). Maybe I find some time late tomorrow, to check this out and get it connected to CanZE
    The other 2 ELM327 (which are working on my other cars) don’t work with Zoe and CanZE.

    The problems on the car display don’t happen right away, when the dongle is connected, but with the powering up of the program. I can see it by the LEDS going on/off with the black delay between. So I assume as soon as the
    CAN gets initialized and someting is sent, this something triggers it off. I will check the CanSee code to understand what causes the problem.
    I still want the DIY dongle to work, I’m not giving up. Maybe I use a different port of CAN first, before using the CanSee software. I just want to listen first – step by step.

    • Jeroen Meijer says:

      A few comments if I may.

      – Use the development branch. We have not been good maintaining a stable master Branch. Should work on that.

      – I agree with Bob, you really need to meticulously quadruple-check the wiring. CANBus is very resilient so the fact that it works when the software is not running is not telling the whole story. 4 and 5 are tied together, no worries there. Be aware that CANBus is a polarized bus. If you mix CAN+ an CAN- on the bus it will not work.

      – you should NOT terminate the bus. Triple termination degrades bus reliability.

      – You mentioned you used another transceiver. Note that almost all transceivers are 5 volt supplied, but that the ESP32 is not 5V tolerant. I would strongly advice for the part list stated in our document, also because some transceivers need additional control pins configured. Yes I know it sounds a bit like an a**, but you are really on your own moving away from what we designed. Believe me, we had issues getting the entire CANbus chain up and running.

      – If you are fully confident about your wiring, and that includes using the same pins for CAN data between the transceiver chip and the ESP32, and we exclude possible faulty components, and you didn’t change anything in the firmware, the next culprit is the power supply. Measure the 3.3 Volt rail. Add a 100 uF capacitor and a 100 nF.

      A KONNWEI is a decent baseline but once you have run this one you will never use it again. The ESP is at least 10 times faster and CanZE becomes a real-time dashboard add-on.

  10. rari says:

    thanks Jeroen for your reply, just to let you know, the Konnwei works, but indeed, its slow.
    I also received some 36 pin ESP32 today, the 30 pin boards are still in the post. Once I got them, I will revert the SW to the unmodified version as you suggest. bI had to use different pins for the r-link CAN since my borad I us3d so far doesn’t have them available.

    The 120 Ohm resistor is off the CAN board. Is the SW working when only one CAN (vehicke CAN) is populated? Or is this causing resets etc?
    I noticed some resets on CAN initialisation on the bench (where no CAN was connected) to see what’s coming out of the serial monitoring. I incuded some debug messages, but never saw the print out after caninit. BT was initialised.

    I will take it step by step first get CAN between two ESPs to work, making sure the wiring is correct and the communication works. I’d wish to have more time 😉

    I power the ESP as suggested in the documentation, using a 12V step down to 5V (I checked that). The CAN breakout has a regulatir on, so it should accept 5V, but I can check. CAN signal level with my MSDO.

    Hopefully, I find the time at the weekend…. off for now.

    • rari says:

      Hi Jeroen, Bob, now I’m in business :-). I have a system running to listen on the CAN and to transfer the data via BT to a terminal.
      here a snippet from my log (wrote my own quickly).

      MSG|DLC 0 1 2 3 4 5 6 7 ASCII
      —-+—————————————
      012E|8: c9 80 00 7f e0 ff ff 00 ‘……..’
      01F8|8: fa 04 ff ef fe 00 08 0d ‘……..’
      017A|8: ff ff ff aa 00 f0 31 a3 ‘……1.’
      017E|8: ff ff ff 00 ff 40 00 ff ‘…..@..’
      012E|8: c9 80 00 7f f0 ff ff 00 ‘……..’
      018A|6: ff f0 00 06 40 00 0d f2 ‘….@…’
      0212|6: fe 3d c0 68 00 00 0a 0d ‘.=.h….’
      0130|8: 00 08 6f fe 00 9f fe ed ‘..o…..’
      012E|8: c9 80 00 7f f0 ff ff 00 ‘……..’
      snip (only 5D7 for odo, speed)
      05D7|7: 00 c4 00 1b 39 90 c8 0a ‘….9…’
      05D7|7: 00 ae 00 1b 39 90 c2 77 ‘….9..w’
      05D7|7: 00 a5 00 1b 39 90 c8 93 ‘….9…’
      05D7|7: 00 c3 00 1b 39 90 e8 ec ‘….9…’
      05D7|7: 01 4f 00 1b 39 90 e0 3f ‘.O..9..?’
      05D7|7: 01 34 00 1b 39 90 e6 e0 ‘.4..9…’
      05D7|7: 01 0f 00 1b 39 90 dc 9d ‘….9…’
      05D7|7: 00 70 00 1b 39 90 f0 b9 ‘.p..9…’
      05D7|7: 00 00 00 1b 39 90 f8 34 ‘….9..4’
      05D7|7: 01 12 00 1b 39 90 d0 01 ‘….9…’
      05D7|7: 01 e1 00 1b 39 a0 ec ec ‘….9…’
      05D7|7: 05 15 00 1b 39 a0 d4 0c ‘….9…’
      05D7|7: 05 93 00 1b 39 a0 f8 9a ‘….9…’
      05D7|7: 06 75 00 1b 39 b0 c4 40 ‘.u..9..@’
      05D7|7: 06 9b 00 1b 39 c0 f6 86 ‘….9…’
      05D7|7: 06 02 00 1b 39 d0 ee ec ‘….9…’
      05D7|7: 03 b9 00 1b 39 e0 f2 a1 ‘….9…’
      05D7|7: 03 c0 00 1b 39 e0 ce 5d ‘….9..]’
      05D7|7: 04 09 00 1b 39 e0 cc 02 ‘….9…’
      05D7|7: 04 4e 00 1b 39 f0 d6 6c ‘.N..9..l’
      05D7|7: 03 eb 00 1b 39 f0 f8 74 ‘….9..t’
      05D7|7: 05 8e 00 1b 3a 00 d2 f7 ‘….:…’
      05D7|7: 06 54 00 1b 3a 10 c8 dc ‘.T..:…’
      05D7|7: 05 77 00 1b 3a 20 fa d7 ‘.w..:…’
      05D7|7: 03 d4 00 1b 3a 30 e4 1d ‘….:0..’
      05D7|7: 02 7a 00 1b 3a 30 ca 68 ‘.z..:0.h’
      05D7|7: 01 cc 00 1b 3a 30 ec 1e ‘….:0..’
      05D7|7: 01 8b 00 1b 3a 30 f6 15 ‘….:0..’
      05D7|7: 00 73 00 1b 3a 40 d6 c2 ‘.s..:@..’
      05D7|7: 00 82 00 1b 3a 40 e0 4e ‘….:@.N’
      05D7|7: 00 69 00 1b 3a 40 e8 ed ‘.i..:@..’
      05D7|7: 00 4f 00 1b 3a 40 ea 77 ‘.O..:@.w’
      05D7|7: 00 00 00 1b 3a 40 ec f3 ‘….:@..’
      05D7|7: 00 00 00 1b 3a 40 ee f1 ‘….:@..’

      Just now, I recompiled and loaded the CanSee and checked with the same terminal program. After I send a few commands, I got a reply of CanSee, started CanZE and – to my surprise, it no works.

Leave a Reply to Jeroen Meijer Cancel reply