Jump to content

Search the Community

Showing results for tags 'remote'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • News
    • Announcements
    • Suggestions
    • New users say Hi!
  • Spotlight!
    • Sponsor Spotlight
    • Sponsor Giveaways
  • Energia
    • Energia - MSP
    • Energia - TivaC/CC3XXX
    • Energia - C2000
    • Energia Libraries
  • MSP Technical Forums
    • General
    • Compilers and IDEs
    • Development Kits
    • Programmers and Debuggers
    • Code vault
    • Projects
    • Booster Packs
    • Energia
  • Tiva-C, Hercules, CCXXXX ARM Technical Forums
    • General
    • SensorTag
    • Tiva-C, Hercules, CC3XXX Launchpad Booster Packs
    • Code Vault
    • Projects
    • Compilers and IDEs
    • Development Kits and Custom Boards
  • Beagle ARM Cortex A8 Technical Forums
    • General
    • Code Snippets and Scripts
    • Cases, Capes and Plugin Boards
    • Projects
  • General Electronics Forum
    • General Electronics
    • Other Microcontrollers
  • Connect
    • Embedded Systems/Test Equipment Deals
    • Buy, Trade and Sell
    • The 43oh Store
    • Community Projects
    • Fireside Chat
  • C2000 Technical Forums
    • General
    • Development Kits
    • Code Vault
    • Projects
    • BoosterPacks


There are no results to display.

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



Website URL





Found 4 results

  1. Hey there, it has been a while since my last project - and i didn't finish it till now. Since i got employed there is only a little time left for projects like these :shifty: Cause it is getting cold here and i don't want to sit in a cold car every morning when driving to work i had the idea for this small project. Spontaneously i ordered an Siemens TC35i - GSM - Module on ebay for 25
  2. Hello, I am very frustrated am i'm still on the project to decode the IR remote of my toy Heli. Unfortunately I'm stuck and I need your help in the conversion of the code below. Thanks for this great article! http://trandi.wordpress.com/2010/06/19/ir-remote-syma-s026-dedicated-board-v2/ Sending the Data through serial is a secondary problem, it 's more important for me how to decode the IR Signals //#define F_CPU 8000000UL #include <avr/io.h> #include <avr/interrupt.h> #define LED_PIN PB0 2 #define SERIAL_PIN PB3 4 #define IR_PIN PB4 11 //tsop31238 DataPin #define PORT PORTB #define DDRD DRB #define PIN PINB #define TIMER_COUNT TCNT0 // How does it work with the MSP? // SERIAL SIGNALS #define BYTE_SIZE = 8 const unsigned long T0 = 500; // in microseconds const unsigned long T1 = T0 * 3; const unsigned long START = T0 * 8; const unsigned long BETWEEN_BITS = T0; // IR SIGNALS #define SIGNAL_SIZE 26 // MAX is 29 #define SIGNAL_SPEED 7//from 0 to here #define SIGNAL_DIR 13//from end of SignalSpeed to here #define SIGNAL_BUTTONS 17//from end of SignalDir to here #define SIGNAL_VERTICAL 21//from end of SignalButtons to here #define SIGNAL_TRIMMER 26//from end of SignalVertical to here #define PULSE_START_MIN 1500 // in Micro Seconds #define PULSE_START_MAX 2000 #define PULSE_0_MIN 300 #define PULSE_0_MAX 750 #define PULSE_1_MIN 750 #define PULSE_1_MAX 1200 #define VALUE_LEFT_BUTTON 22 #define VALUE_RIGHT_BUTTON 26 void ledON(){ PORT |= _BV(LED_PIN); // turn on the LED } void ledOFF(){ PORT &= ~_BV(LED_PIN); // turn off the LED } /* TIMING STUFF */ // How do i set up the correct TimerA0/A1 for MSP430G2533? void timerConf(){ TCCR0A = 0x00; TCCR0B = 1 << CS01; // prescaler 8. IF F_CPU is 8MHz then counting directly in uSecs TIMSK = 1 << TOIE0; //Overflow Interrupt Enabled //Enable Global Interrupts sei(); } // don't forget the VOLATILE, otherwise it will be seen as 0 from the outside !!! volatile unsigned long _timerOverflow; ISR(TIMER0_OVF_vect){ _timerOverflow++; } void resetTimer(){ TIMER_COUNT = 0; // How to reset Timer on MSP430?? _timerOverflow = 0; } unsigned long getTimer(){ return _timerOverflow * 256 + TIMER_COUNT; } void delay_us(unsigned long microSecs){ resetTimer(); while(getTimer() < microSecs) {}; } /* TIMING STUFF - END */ void serialSendStart(){ PORT |= _BV(SERIAL_PIN); // high delay_us(START); PORT &= ~_BV(SERIAL_PIN); // low delay_us(BETWEEN_BITS); } void serialSendBits(unsigned char data){ for(unsigned char i = 0; i < 8; i++){ PORT |= _BV(SERIAL_PIN); // high // _BV(xxx) same as: (1 << SERIAL_PIN)) if(data & 0x01) delay_us(T1); else delay_us(T0); PORT &= ~_BV(SERIAL_PIN); // low delay_us(BETWEEN_BITS); data >>= 1; // get the next most significant bit } } unsigned char irState(){ return PIN & _BV(IR_PIN); // get the value of the IR PIN, 0 or 1 } static unsigned char getBit(int pulse){ if(pulse > PULSE_0_MIN && pulse < PULSE_0_MAX) return 0; if(pulse > PULSE_1_MIN && pulse < PULSE_1_MAX) return 1; return 111; // BAAAD } unsigned long _currTimer; int getIRLowPulse(unsigned int timeoutMicroSecs){ resetTimer(); // wait until it gets LOW or timesout _currTimer = getTimer(); while(irState() && _currTimer < timeoutMicroSecs) { _currTimer = getTimer(); } // time out if(_currTimer >= timeoutMicroSecs) return -1; // start conting the pulse resetTimer(); _currTimer = getTimer(); while(! irState() && _currTimer < timeoutMicroSecs) { _currTimer = getTimer(); } // pulse too long if(_currTimer >= timeoutMicroSecs) return -2; return _currTimer; } int _pulseCount = -1; unsigned char _bit = 0; unsigned char _bits[SIGNAL_SIZE]; int _pulse; unsigned char i = 0; unsigned char _speed, _dir, _buttons, _vertical, _trimmer; unsigned char _speedPrev, _dirPrev, _buttonsPrev, _verticalPrev, _trimmerPrev; void send(){ ledON(); _speed = 0; _dir = 0; _buttons = 0; _vertical = 0; _trimmer = 0; for(i=0; i<SIGNAL_SIZE; i++){ if (_bits[i] == 1){ if (i < SIGNAL_SPEED) _speed += (1 << (SIGNAL_SPEED - i)); else if (i < SIGNAL_DIR) _dir += (1 << (SIGNAL_DIR - i)); else if (i < SIGNAL_BUTTONS) _buttons += (1 << (SIGNAL_BUTTONS - i)); else if (i < SIGNAL_VERTICAL) _vertical += (1 << (SIGNAL_VERTICAL - i)); else if (i < SIGNAL_TRIMMER) _trimmer += (1 << (SIGNAL_TRIMMER - i)); } } if(_buttons == VALUE_LEFT_BUTTON) _buttons = 1; else if (_buttons == VALUE_RIGHT_BUTTON) _buttons = 2; else _buttons = 0; if(_speed != _speedPrev || _dir != _dirPrev || _buttons != _buttonsPrev || _vertical != _verticalPrev || _trimmer != _trimmerPrev){ _speedPrev = _speed; _dirPrev = _dir; _buttonsPrev = _buttons; _verticalPrev = _vertical; _trimmerPrev = _trimmer; serialSendStart(); serialSendBits(_speed); serialSendBits(_dir); serialSendBits(_vertical); serialSendBits(_trimmer); serialSendBits(_buttons); } ledOFF(); } void init(){ timerConf(); // make both LED and SERIAL pins outputs DDR |= _BV(LED_PIN) | _BV(SERIAL_PIN); // IR_LED is an input DDR &= ~_BV(IR_PIN); // SERIAL PORT start LOW PORT &= ~_BV(SERIAL_PIN); } int main(void){ init(); while(1){ _pulse = getIRLowPulse(10000); if (_pulse > PULSE_START_MIN && _pulse < PULSE_START_MAX){ //start counting pulses _pulseCount = 0; }else if (_pulseCount >= 0){ //continue counting pulses _bit = getBit(_pulse); // if invalid bit, stop here if(_bit > 1){ _pulseCount = -1; }else{ _bits[_pulseCount] = _bit; // good, wait for next bit _pulseCount++; // FINAL, we've read what we wanted let our caller know ! if (_pulseCount == SIGNAL_SIZE) { send(); // end of this command, so reInit so that we wait for another start _pulseCount = -1; } } } } return 0; }
  3. Hi Gents, I've modified the SpaceLen driver to receive commands from '433mhz remotes' to drive ledStrips. These controllers + remote cost a whoping 5$, and drive upto 2A a led (so 6A in total, so rather cheap for the capabilities. Using this library, you mimic the remote. Unfortunately sending custom commands, other than replayed remote commands seems impossible, without flashing the original uC in the receiver. edit: both sending and receiving works. The code can be found on: https://github.com/vinietje/LedProtocol the controllers look like: https://github.com/vinietje/LedProtocol/blob/master/docs/Controller.jpg the timing of the signals: https://github.com/vinietje/LedProtocol/blob/master/docs/Timing%20signal.png I which I could be more specific regarding type-numbers and, such, but the Chinese are very limited regarding these unfortunately, eq, the chips inside the remotes don't bear any markings :-( and prints like '433mhz' and 'paired 1-on-1' aren't gonna cut it... please keep in mind that due to the lack of a 'change event' i have used a workaround, although in the latest commits on Energia this issue is resolved. So when using them, you will need to alter the interupt routine.
  4. In this day and age, we should not need to use any keys or buttons. I have done away with the key remote in my car using this simple setup. I came to the same conclusion as this gentlemen in using the apple nike+ sensor to provide a proximity sensor to the car. https://www.sparkfun.com/tutorials/135 His code lacks a couple things that I was looking for. 1) decoding of the apple serial protocol so that i can use any NRF module 2) detection of when to stop strobing the remote (when the key is inserted) 3) ability to open the trunk and since I can detect when the key is inserted, I can do other things when the car is on like strobing the garage door opener, To accomplish 1, I found that some genius went about decoding the modules to be decoded with NRF modules http://dmitry.gr/index.php?r=05.Projects&proj=05.%20Nike%20plus%20iPod Also helping this along was energia and the already written NRF24 library. notes about my design and things I learned: - my design is based all on a repeating 10ms timer which is a good base for modifying this code to work for different scenarios - i am a fpga designer and some of the code is not as efficient as a c++ programmer would make it - one could optimize the interrupt routine to use less time by using a global counter and variables to store offsets rather than individual counters - my mazda remote is active low so the signals had to be inverted - i tapped into my car through the mazda keyless module. 12v and gnd is provided. an additional signal which pullses low at a 1khz rate when there is no key inserted, it is high when a key is inserted, this powers "car timeout" - i originally had everything on one board, but it seemed there was too much interference for the NRF to pick up the sensor properly - since there were a lot of rf devices decoupling capacitors was very necessary. - there is a 24 second timeout before my car relocks if there is no door opened, i kludged a single button press keep alive every 20 seconds using delays :-( i dont like using delays they seems so unclean.... an upgrade would be to use the -64dbm to detect that you are actually in the car and stop the strobing, ymmv and i have not implemented this (RPD register 0x09 bit 0) UPDATE: IMPLEMENTED IN NEWEST CODE - whenever the key is in the car, the car will cycle every ~2.5 seconds through the two parkade doors. the remote will auto shutdown if it detects a constant press so i have added a remote_pause to prevent this - the trunk has another msp430 performing capsense on the key hole and will activate another nike+ sensor to open the trunk. i am in the process of upgrading the sensitivity of this using swept frequency capacitive touch which i will share once i get the kinks out - a cheap chinese buck module was used to reducethe voltage from 12v to 3.3v - replace the *_sn vectors with whatever your nike+ sensor serial number is - avoid RF like the plague, even with one side guaranteed to be working, along with some issues with SPI, it was a PITA to get working the first time nikerf.ino printf.h
  • Create New...