So I am back at it again... the future Ms. is out shopping for wedding dresses... so I figured it was as good a day as any to blow the dust off this never ending project and see if I can make some progress! There has been some other day projects here and there since my last post. So i will first start with a quick update.
1. I've designed a skeleton base for my ROV. I will be mounting my 4" WTC and 6 BR thrusters to this.

- ROV Frame
- 20160220_173901-1 (Custom).jpg (60.93 KiB) Viewed 22005 times
2. I've designed a basic chassis to mount electronics to inside my 4" WTC and started populating it with components. This really helped clean up the work space and condense the Subside electronics.

- wtc electronics chassis
- 20160220_174213 (Custom).jpg (170.04 KiB) Viewed 22005 times
3. I've mocked up a TopSide control station, containing the topside Arduino and Qty 8 7-seg displays for monitoring things while diving. Currently, displays Thruster values, raw data from PS2 controller and LED brightness and state. Also cleaned up work space a bit more!

- TopSide Control Box
- topside.jpg (672.69 KiB) Viewed 22005 times
4. I put together some distribution PCBs for the Thruster Power and coms... not sure I will go with this design in the final ROV, but i think it will work... hoping to test soon!

- PCBs
- 20160220_175647 (Custom).jpg (127.18 KiB) Viewed 22005 times
I have run into what may be a bigger problem later on as I add in my Subside sensor packages. It seems between the EasyTransfer library and OSD refresh/print lag, it loose about 50ms per scan on the arduino... not sure this is an issue yet... but I am afraid it might be... even Bindo noticed this.
Bindo wrote:you must have a small-ish set of delays in your code? (approx 100ms?) looking at the way it counts?
To overcome this for the moment, I have added a toggle that turns the OSD on and OFF... but I am hoping to find a more efficient fix without loosing functionality.
Anyone who has played with the EasyTransfer Library... have you found a good and STABLE way to eliminate the 10ms delay in the loop on the data receive function?
Code: Select all
//--------------------------------------------------------------------------------------------
// Receive Data via EasyTransfer
//--------------------------------------------------------------------------------------------
//there's a loop here so that we run the receive function more often then the
//transmit function. This is important due to the slight differences in
//the clock speed of different Arduinos. If we didn't do this, messages
//would build up in the buffer and appear to cause a delay.
for(ETloop = 0; ETloop < 5; ETloop++){
//remember, you could use an if() here to check for new data, this time it's not needed.
ETin.receiveData();
delay(10);
}
if(ETin.receiveData()){
lastMessage = millis();
goodComs();
}
else{
if(millis() - lastMessage >= timeout) {
badComs();
}
}
Alternatively, anyone have any suggestions on how to speed up the OCD refreshing?
Code: Select all
// OSD Display Update
if(currentTime >= (cloopTime + 1000))
{
cloopTime = currentTime; // Updates cloopTime
hours = Tcounter / 3600;
mins = (Tcounter % 3600) / 60;
secs = Tcounter % 60;
char diveTime[8];
sprintf(diveTime,"%2d:%02d:%02d",hours,mins,secs);
if(rxdata.ET_osdState == true){
OSD.setCursor(17,0); OSD.print(" "); OSD.setCursor(17,0); OSD.print(diveTime);
}
Tcounter++;
}
//OSD.setCursor(17,1); OSD.print(" "); OSD.setCursor(17,1); OSD.print(currentTime);
//OSD.setCursor(0,8); OSD.print("012345678901234567890123456789");
if((currentTime >= (ocdLoopTime + ocdRefresh)) && (rxdata.ET_osdState == true)){
ocdLoopTime = currentTime; //update ocdLoopTime
OSD.setCursor(0,9); OSD.print(" "); OSD.setCursor(0,9); OSD.print(rxdata.ET_FORPORT);
OSD.setCursor(23,9); OSD.print(" "); OSD.setCursor(23,9); OSD.print(rxdata.ET_FORSTBD);
OSD.setCursor(4,10); OSD.print(" "); OSD.setCursor(4,10); OSD.print(rxdata.ET_VERT_LF);
OSD.setCursor(19,10); OSD.print(" "); OSD.setCursor(19,10); OSD.print(rxdata.ET_VERT_RT);
OSD.setCursor(0,11); OSD.print(" "); OSD.setCursor(0,11); OSD.print(rxdata.ET_AFTPORT);
OSD.setCursor(23,11); OSD.print(" "); OSD.setCursor(23,11); OSD.print(rxdata.ET_AFTSTBD);
}
Here is what the display looks like IRL at the moment.

- OSD In Real Life
- 20160220_174617-1 (Custom).jpg (108.07 KiB) Viewed 22005 times
Anyway... thats the progress I've made here over the last few months...
Happy Diving!
Ryan
"
KR2_DIVING"