BCD325P2/BCD996P2: RH96 on a BCD996P2? Yep!

Status
Not open for further replies.

N9JIG

Sheriff
Moderator
Joined
Dec 14, 2001
Messages
5,581
Location
Far NW Valley
Well, we thought it couldn't be done, and we were wrong. After a lot of discussion and work Ric Plummer, KV1W has made it happen. I had the pleasure of assisting him with testing and encouragement and it works great. I have this installed in my truck and used it all day today with no problems.

The basics are that he took an RS232 TTL converter and an Arduino processor to translate the headers from the BCD996P2 datastream and make it read as a BCD996XT. Since the rest of the command set is the same the converter works great. It connects to the rear GPS port of the BCD996P2 so there is no surgery required on the radio or the RH96. You get all the wholesome goodness of the 996P2 working on an RH96.

The complete plans, schematic and programming can be found at www.n9jig.com/radio/RH96_for_the_BCD996P2.pdf

Enjoy!
 

n9mxq

Member
Premium Subscriber
Joined
Dec 15, 2005
Messages
1,840
Location
Belvidere IL
Now if I could just find an RH-96, I could have my scanner in my new truck..
 

cg

Member
Premium Subscriber
Joined
Dec 13, 2000
Messages
4,578
Location
Connecticut
So it sounds like the only thing keeping the RH96 from working without the Arduino is a firmware change that adds the 996P2 model name to the list?
I wonder if the RH96 firmware is accessible to be modified like someone did a Radio Shack version scanner to allow the GRE firmware to be used.

chris
 

N9JIG

Sheriff
Moderator
Joined
Dec 14, 2001
Messages
5,581
Location
Far NW Valley
So it sounds like the only thing keeping the RH96 from working without the Arduino is a firmware change that adds the 996P2 model name to the list?
I wonder if the RH96 firmware is accessible to be modified like someone did a Radio Shack version scanner to allow the GRE firmware to be used.

chris

It would appear that is the case. I suppose it could go either way, alter the 996P2 firmware to report as a BCD996XT or alter the RH96 firmware to accept the BCD996P2 header. Of course this would require a custom cable, but I already did that a long time ago.
 

AKJohnny

Scanner Addict
Premium Subscriber
Joined
Jan 18, 2007
Messages
140
Location
Kendall County, IL
In the PDF, there are line breaks after some of the comments of the sketch that cause verification failure in Arduino IDE when pasting the code. Could the PDF be corrected so I know I'm entering the code properly? Thanks.
Also, curious what gauge wire is recommended for the build.
 

AKJohnny

Scanner Addict
Premium Subscriber
Joined
Jan 18, 2007
Messages
140
Location
Kendall County, IL
For what it's worth, if you want to copy & paste into Arduino, this might be the correct code (without the line breaks shown in the PDF (not yet uploaded & tested, but does pass verification))...

//Final version of the RH-96 sketch to use RH-96 with BCD996P2
// Note: the Nano must be loaded before connecting the RS-232 adapter as it will use the USB UART
//and will conflict with loading and testing of the Nano from the PC USB port.
//Once loaded and checked with Serial Monitor, you can connect the RS-232 hardware.
char Str1[200]; //allow storage space for array
char inChar; //for received character
int index = 0; //index into the array of stored characters
int lastindex;
bool bMsgReceived = false;
void setup() {
Serial.begin(9600);
}
// The loop below will send all <CR> terminated strings to the output as is,
//except changing the P2 to XT in the string MDL,BCD996P2
void loop() {
// Will Read characters one by one and place into the Array Str1 and terminate the array at \n
// starting at location 0 and going as high as required to hold the string
while (Serial.available() > 0) {
Str1[index] = Serial.read(); //Read a Character and store in array
lastindex = index;
if (Str1[index] == 13) { //Terminate on "New Line" aka <CR>,must be in stored string
bMsgReceived = true;
break;
} else {
index++; //Index to next array location
}
}
if (bMsgReceived) {
// Here we check if the response is an MDL and if P2 in Str1[10&11] then change to XT
if (Str1[0]=='M' && Str1[1]=='D' && Str1[2] == 'L' && Str1[10]=='P' &&
Str1[11]=='2') {
Str1[10]='X';
Str1[11]='T';
}
//Now output the string in the array Str1, terminated by a 13, then back to loop to do it again
index = 0;
while (index <= lastindex) {
Serial.print(Str1[index]);
index++;
}
index = 0;
bMsgReceived = false;
}
}
 

N9JIG

Sheriff
Moderator
Joined
Dec 14, 2001
Messages
5,581
Location
Far NW Valley
In the PDF, there are line breaks after some of the comments of the sketch that cause verification failure in Arduino IDE when pasting the code. Could the PDF be corrected so I know I'm entering the code properly? Thanks.
Also, curious what gauge wire is recommended for the build.

It seems you figured out the line spaces issue..

As for the wiring it is not critical, any common small hook-up wire would work.
 

scosgt

Member
Joined
Jul 22, 2004
Messages
1,295
Well OK then. Who wants to build me one for whatever you consider a reasonable price?
I have two RH units, not using either at the moment.
 

AKJohnny

Scanner Addict
Premium Subscriber
Joined
Jan 18, 2007
Messages
140
Location
Kendall County, IL
Well OK then. Who wants to build me one for whatever you consider a reasonable price?
I have two RH units, not using either at the moment.

You don’t want me building one for you. This was only my second time ever soldering. And finding time in my hectic schedule was hard. But anyone can do it. All the parts are listed from amazon in the pdf on opening post. Only thing not listed was recommended wiring gauge. I used 22 gauge solid wire.
Mine looks pretty on the outside, but ugly on the inside. But it works for now. :)
 

scosgt

Member
Joined
Jul 22, 2004
Messages
1,295
I don't think I could put that together. I did make a serial cable for the RH96 some time ago, but as stated, it does not work with the 996P2
 

AKJohnny

Scanner Addict
Premium Subscriber
Joined
Jan 18, 2007
Messages
140
Location
Kendall County, IL
I’ve had a couple people PM me asking how to get the script loaded onto the nano board. Here’s my down and dirty instructions while using my Windows pc…

These instructions are based on my experience using this particular nano board from Amazon https://www.amazon.com/gp/product/B0713XK923. Different boards may require slightly different steps.

If you purchased this same board, then you may need to download and install the proper driver from here before plugging it in https://www.elegoo.com/tutorial/Elegoo CH340 Driver 2018.11.27.zip

Download and install the Arduino IDE software Arduino - Software

Once Arduino IDE is installed, you’ll find a new subfolder in your Documents folder called Arduino. Open that folder and create a subfolder called 996p2.

Unzip the 992p2.zip (attached to this post) and put the 996p2.ino script file into that folder.

Plug in your nano board to a mini usb cable attached to your pc.

Look in Windows Device Manager to see what COM Port it is assigned to if needed.

Run the Arduino software and configure the settings by clicking-
> Tools / Board, and choose Arduino Nano
> Tools / Processor, and choose ATmega328P (Old Bootloader)
> Port, choose correct COM port

Now choose File / Open… and navigate to your Documents/Arduino/996p2/996p2.ino and Open the file.

Hit the check mark (Verify) in the toolbar of Arduino to make sure you get no errors.

Then click the right arrow (upload) in the toolbar of Arduino to write it to your nano board.

I think you’ll see an Upload Done message near the bottom and your nano board red led will bit lit solid if successful. Unmount the usb from the nano board and you should be all set.
 

Attachments

  • 996p2.zip
    922 bytes · Views: 95
Last edited:

mancow

Member
Database Admin
Joined
Feb 19, 2003
Messages
6,879
Location
N.E. Kansas
Nice work.

I tried finding a commercial radio that could be used as a donor for a similar project but nothing has enough knobs. The closest would be an MCS2000 but you would have to lose something. I though about maybe using a couple of the up and down arrows as second function vol/sql but of course you would still only get two lines of text.

I really wish there were more control panel "kit" products available for people to build this type of stuff upon.
 
Status
Not open for further replies.
Top