AK-Homberger/ESP32-Evo-Remote-Pilot-NMEA2000

EV-100 not found on ng network

thomasnisole opened this issue · 8 comments

Hello @AK-Homberger ,

I reproduced your remote system for my Pilot (ACU 200 / EV-100 / P70) on my boat, but i have some trouble with the search of the EV-100. When the ESP32 is connected on the bus, it don't find any EV-100 system.

To get as close as possible to the final assembly and avoid any disturbance, I do not use the USB output of the ESP32, I have installed different colored LEDs on the outputs of the ESP32 in order to know when the sketch has a problem.

Do you have any idea where it could be coming from. I take some picture of P70 diagnostic tool, here data from EV-100 :
1649925192065
1649925192055
1649925013296

Thank you for your reply.

Thomas.

Hi Thomas,

Is the ESP32 shown in the device list in the MFD? If not then there is a problem with your program or with the hardware.

Can you share your modified program. Then I will have a look.

Regards,
Andreas

Hi @AK-Homberger ,

Yes my code is in a github repository, i forked yours to save my remote buttons values :)

Et pour répondre à ta question, non mon ESP32 n'est pas visible dans la liste MFD du P70. For CAN interface, i use this shield.
I cut R2 to have 60ohms between L and H when device is connected to NG CAN. I can take a picture of my wiring if you want.

Thank you.

Hi Thomas,

That will not work. You can't use a delay() in the below function:

void messageSent() {
digitalWrite(MESSAGE_SENDET_PIN, HIGH);
delay(1000);
digitalWrite(MESSAGE_SENDET_PIN, LOW);
}

It will block the whole processing. First try without a dalay and the if ot is working do the delay with a millis() construction.

Regards,
Andreas

Hi @AK-Homberger ,

I removed usage of delay function in loop scope, but P70 does not found ESP32 in diagnostic tool.

Thank you.

Then it's probably a problem with the hardware. Did you check if the program is running ata all?
E.g. with additional Serial.print() statements in setup()?

Hi @AK-Homberger ,

Last night I added a log at the very beginning of the function getDeviceSourceAddress, and I never go through the for loop, I exit with the return -1.

Here is the stack trace :

rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6388
entry 0x400806b4
NodeAddress=34
NMEA2000 Open
getDeviceSourceAddress
getDeviceSourceAddress
...

getDeviceSourceAddress() has to exit with the address of the found device. Perhaps Raymarine changed the model string from "EV-1" to "EV-1 Course Computer".

Please add a Serial output to the getDeviceSourceAddress() function to get all found device names:
...
String modelVersion = device->GetModelVersion();
Serial.println(modelVersion);
...

Hello @AK-Homberger ,

I finally bought the same component which you used, and good news, it's working !! I can see the remote controller into p70 diagnostic tool !
Thank you so much for your work, i will go to update your Kicad files to add some screw hole to add a step down voltage like this one to fix it above your D24V10F5 (I can't find it in fast delivery from France).

Thank you for your help !

Thomas.