Remote Control

Status
Not open for further replies.

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Location
Virginia
Richk107(RR Memeber) and myself have come up with another great hardware design. It will fill the gap for a needed piece of hardware left out in all Uniden scanners.

We all know our past endeavor called "Uniden homebrew remote head" was a real success and without Rich it would not be possible.

This new addon will be totally open source just like the homebrew remotehead. The schematics, The code & all the needed hardware will all be posted here. This new addon will cost you no more then $15-$20 depending on how your source your parts which i will also list.

Hopefully Uniden will wake up and start adding this to all of its future radios


Here is an alpha version i have up and running.
https://www.youtube.com/watch?v=K421z66Etzs

You guys interested in this?
 
Last edited:

Voyager

Member
Joined
Nov 12, 2002
Messages
12,060
And the difference between that and Siren is what again?
(aside from Siren being Wifi rather than IR)
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Location
Virginia
If i had the latest uniden radio then yes what would be the point of this.I would also use siren but I made this for the previous line of uniden scanners 396 996 & 15 .

Siren does nothing for me on those radios. Would wifi be a better option for one of the older line of radios. If so let me know and i can whip something up with the esp8266 chip. Google it
 
Last edited:

Voyager

Member
Joined
Nov 12, 2002
Messages
12,060
Not sure if I can say WiFi would be better, but if it would mean you can use the Siren app on an older scanner, that would be interesting. I don't know if they would support the tags over the serial port if that's how you're communicating with the scanner.

Another possibility for a useful app - a WiFi adapter that lets you stream the audio on an older scanner without the PC requirement.
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Location
Virginia
I could do all of this via WiFi or bluetooth. I don't think i could use Siren but i could write a custom app for android to support all the major functions and the text tags. Keep in mind this is all via RS232

This IR project was made as a proof of concept. It does work. The code is stable. More features can be added. So i decided to released it here and gauge what the community would like to see added to it.

If the community does not find it useful then i have no reason to further develop it as a community project. I wanted this to be something we can all develop together. Most of us don't have the latest Uniden radios.
 

Voyager

Member
Joined
Nov 12, 2002
Messages
12,060
Here is a thought for you based on your current design.

If you are like me, you purchased one or more RTL (DVB-T) dongles. These come with very compact remote controls that get tossed in the drawer since few use them for the dongle. I have a dozen of them or more in the drawer. These could be used in your existing format to control the scanner.
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Location
Virginia
100% i could use them but i need to reverse the IR code each button transmits. This project does not use a proprietary remote. You can use any remote control you like. We all have a drawer full of remotes :) pick one you don't use and use it. Just like the dongle remotes you have...

Would you mind sending me 1 or 2 of your spares?
 

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Location
Virginia
Parts List
Nano v3 $3.59
Breadboard 400 Contacts $1.94
Remote Control Module Kits $2.04
Serial DB9P Pin RS232 $4.19
MAX3232 RS232 Serial Port To TTL $1.00
40PCS Jumper Wire Cable $1.34

Total Price $15.00

IMG_20150307_125836.jpg
The Empty wires are for the serial to ttl converter hookup
Uniden Ucontrol_bb.jpg

Alpha Version of the code is below.


// Uniden UControl
// Version 1.0
// Support for Arduino 1.6
//
//Copyright (c) 2015 Michael Ladd & Richard Kot
//
//Permission is hereby granted, free of charge, to any person obtaining a copy
//of this software and associated documentation files (the "Software"), to deal
//in the Software without restriction, including without limitation the rights
//to use, copy, modify, merge, publish, and/or distribute, sublicense
//copies of the Software, and to permit persons to whom the Software is
//furnished to do so, subject to the following conditions:
//
//The above copyright notice and this permission notice shall be included in
//all copies or substantial portions of the Software.
//
//Our name be included as original author within this notice.
//
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//THE SOFTWARE.


//Disclaimer: Richard Kot and Michael Ladd /or this site are not responsible for any damage
//(e.g. Personal, environmental, property...) that may occur from
//any circuits or their variations found on this site.

//===============================================================================
// This sketch has been tested on a Uniden 996T scanner but
// should work on other Uniden scanners that utilize the same
// remote commands. Please use this space to add other scanner that
// respond to these commands.
//
// Your milage may vary.

#include <IRremote.h> // Library call for IR
int RECV_PIN = 11; // the pin where you connect the output pin of TSOP4838

int itsON[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; //zero out everything


#define code1 8925 // Scan Up
#define code2 4845 // Scan Down
#define code3 24735 // Hold Resume
#define code4 36975 // GROUP 1
#define code5 41055 // GROUP 2
#define code6 32895 // GROUP 3
#define code7 53805 // GROUP 4
#define code8 57885 // GROUP 5
#define code9 49725 // GROUP 6
#define code10 21165// GROUP 7
#define code11 25245// GROUP 8
#define code12 17085// GROUP 9
#define code13 41565// GROUP 0

IRrecv irrecv(RECV_PIN); // Part of the IR Library
decode_results results; //Part of the IR Library

void setup()

{
Serial.begin(115200); // you can comment this line
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
unsigned int value = results.value;
switch (value) {


case code1:
if (itsON[1] == 1) { // if first led is on then
Serial.flush();
Serial.print("KEY,>,P");
itsON[1] = 0; // and set its state as off
} else { // else if first led is off
itsON[1] = 1; // and set its state as on
}
break;


case code2:
if (itsON[2] == 1) {
Serial.flush();
Serial.print("KEY,<,P");
itsON[2] = 0;
} else {
itsON[2] = 1;
}
break;


case code3:
if (itsON[3] == 1) {
Serial.flush();
Serial.print("KEY,H,P");
itsON[3] = 0;
} else {
itsON[3] = 1;
}
break;


case code4:
if (itsON[4] == 1) {

Serial.flush();
Serial.print("KEY,1,L");
itsON[4] = 0;
} else {
itsON[4] = 1;
}
break;


case code5:
if (itsON[5] == 1) {
Serial.flush();
Serial.print("KEY,2,L");
itsON[5] = 0;
} else {
itsON[5] = 1;
}
break;


case code6:
if (itsON[6] == 1) {
Serial.flush();
Serial.print("KEY,3,L");
itsON[6] = 0;
} else {
itsON[6] = 1;
}
break;


case code7:
if (itsON[7] == 1) {
Serial.flush();
Serial.print("KEY,4,L");
itsON[7] = 0;
} else {
itsON[7] = 1;
}
break;


case code8:
if (itsON[8] == 1) {
Serial.flush();
Serial.print("KEY,5,L");
itsON[8] = 0;
} else {
itsON[8] = 1;
}
break;


case code9:
if (itsON[9] == 1) {
Serial.flush();
Serial.print("KEY,6,L");
itsON[9] = 0;
} else {
itsON[9] = 1;
}
break;


case code10:
if (itsON[10] == 1) {
Serial.flush();
Serial.print("KEY,7,L");
itsON[10] = 0;
} else {
itsON[10] = 1;
}
break;


case code11:
if (itsON[11] == 1) {
Serial.flush();
Serial.print("KEY,8,L");
itsON[11] = 0;
} else {
itsON[11] = 1;
}
break;


case code12:
if (itsON[12] == 1) {
Serial.flush();
Serial.print("KEY,9,L");
itsON[12] = 0;
} else {
itsON[12] = 1;
}
break;


case code13:
if (itsON[13] == 1) {
Serial.flush();
Serial.print("KEY,0,L");
itsON[13] = 0;
} else {
itsON[13] = 1;
}
break;

}
Serial.println(value); // Needed for IR Codes
irrecv.resume(); // Receive the next value
}
}
 
Last edited:

SCPD

QRT
Joined
Feb 24, 2001
Messages
0
Location
Virginia
Just wanted to let anyone know who is following this that i rewrote everything and have it down to 40+ lines of code


#include "IRremote.h"//Library github.com/shirriff/Arduino-IRremote
int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver);
decode_results results;
void setup()
{
Serial.begin(9600);
Serial.println("IR Receiver Raw Data + Button Decode Test");
irrecv.enableIRIn();
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, DEC);
translateIR();
irrecv.resume();
}
}
void translateIR()
{
switch (results.value)
{

case 2499: Serial.print("KEY,S,P"); break;//SCAN
case 2502: Serial.print("KEY,>,P"); break;//SCAN UP
case 2508: Serial.print("KEY,<,P"); break;//SCAN DOWN
case 2501: Serial.print("KEY,H,P"); break;//HOLD & RESUME
case 2511: Serial.print("KEY,1,L"); break;//GROUP 1
case 2517: Serial.print("KEY,2,L"); break;//GROUP 2
case 2512: Serial.print("KEY,3,L"); break;//GROUP 3
case 2520: Serial.print("KEY,4,L"); break;//GROUP 4
case 2523: Serial.print("KEY,5,L"); break;//GROUP 5
case 2526: Serial.print("KEY,6,L"); break;//GROUP 6
case 2513: Serial.print("KEY,7,L"); break;//GROUP 7
case 2529: Serial.print("KEY,8,L"); break;//GROUP 8
case 2514: Serial.print("KEY,9,L"); break;//GROUP 9
case 2535: Serial.print("KEY,0,L"); break;//GROUP 0
default: Serial.println(" Unmapped Button");
Serial.flush();
}
delay(100);
}
 
Status
Not open for further replies.
Top