Roomba - LEDs IR

7

Me preguntaba si era posible crear un muro virtual de bricolaje para el iRobot roomba. ¿Alguien puede explicar cómo me gustaría averiguar cómo funciona esto?

    
pregunta ElectroNoob

2 respuestas

2

He hecho eso hace años, solo capturando la señal original de Rumba Wall con mi osciloscopio digital (pero se puede hacer de forma gratuita con la tarjeta de audio de la PC) y escribir un programa PIC realmente simple para reproducir la misma señal con una El transportista de 38Khz solo usa NOPs y algunos ciclos.

Luego construí en una placa proto un circuito simple con un PIC12F675, un transistor, un haz IR de haz estrecho y celdas NiMh 4xAA.

30 minutos de trabajo y una victoria impecable :-)

Todavía tengo el código, pero estoy realmente avergonzado de mostrarlo, realmente fue un horror de codificación: D

EDITAR: Lo pediste, lo tienes. Y USTED PROMETIÓ: Sin comentarios ... simplemente funciona. ;-)

list    p=12F629
    radix   dec
    include "p12f629.inc"
    __CONFIG    _MCLRE_OFF & _CP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT  ;Internal osc.
d1      equ     20h 
d2      equ     21h
d3      equ     22h
d4      equ     23h
d5      equ     24h
d6      equ 25h
fileA       equ 26h ;delay fileA
fileB       equ 27h ;delay fileB
filec       equ 28h ;delay fileC
pin7        equ 0   ;GP0  
pin6        equ 1   ;GP1
pin5        equ 2   ;GP2
pin4        equ 3   ;GP3 
pin3        equ 4   ;GP4 
pin2        equ 5   ;GP5 

Start   org 0x0000
    nop
    nop
    nop
    nop         
    nop
    nop
SetUp   bsf STATUS, RP0     ;Bank 1
    movlw   b'10000110' 
    movwf   OPTION_REG
    movlw   b'00000000' 
    movwf   TRISIO
    call    0x3ff       
    movwf   OSCCAL  
    bcf STATUS, RP0 ;bank 0
    clrf    GPIO        
    goto    Main        
delay_1s
    movlw    0x07
    movwf    d1
    movlw    0x2F   
    movwf    d2
    movlw    0x01
    movwf    d3
Delay_0
    decfsz   d1, f
    goto     $+2
    decfsz   d2, f
    goto     $+2
    decfsz   d3, f
    goto    Delay_0
    goto    $+1
    goto    $+1
    goto    $+1
    return
do_pulse
    movlw   b'11111111' 
    movwf   GPIO
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    movlw   b'00000000' 
    movwf   GPIO
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    return
do_not_pulse
    movlw   b'00000000' 
    movwf   GPIO
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    movlw   b'00000000' 
    movwf   GPIO
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    nop 
    return
Do_1
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    call do_pulse
    return
Do_0
    call do_not_pulse
    call do_not_pulse   
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    call do_not_pulse
    return
Main
    call Do_1
    call Do_1   
    call Do_1
    call Do_0
    call Do_1
    call Do_0
    call Do_0
    call Do_0

    call Do_1
    call Do_1   
    call Do_1
    call Do_0
    call Do_1
    call Do_0
    call Do_0
    call Do_0

    call Do_1
    call Do_0
    call Do_0
    call Do_0

    call Do_1
    call Do_0
    call Do_0
    call Do_0

    call Do_1
    call Do_1   
    call Do_1
    call Do_0
    call Do_1
    call Do_0
    call Do_0
    call Do_0

    call delay_1s

    goto Main

    end@
    
respondido por el Axeman
10

Eso debería ser factible. La pared virtual es solo una baliza que usa un emisor IR. Estamos hablando de esto:

¿EntoncesessolounLEDIR,unaresistenciaenserieyunabatería?Lomásprobableesqueno,pordesgracia.Labalizaprobablementeusaráunaseñalcodificada,porloqueelRoombapuededistinguirladeotrasfuentesdeIR.TendríaquesaberquélongituddeondaIRutiliza,aunque950nmesunabuenasuposición.EntoncesnecesitaunmurovirtualexistenteparagrabarsuseñalconunfotodiodoIRyunmicrocontrolador.Unavezquetengalaseñal,esemismomicrocontroladorpuedeenviarlaatravésdeunLEDIR.
Eseeselpeordeloscasos.Sieligieranunaseñalmássimple,probablementeseríauntrendepulsoconstante,comosugiereNombrefalso.Enesecaso,puedeutilizarunosciloscopiooelmicrocontroladorparamedirlafrecuenciayelciclodetrabajo.Tambiénenesecaso,elmicrocontroladoreslaformamássencilladeregenerarlaseñal.

  

Notodosestánconvencidosdeesto.Sinembargo,el microcontrolador no necesita un único componente externo y los requisitos El programa se puede escribir en minutos, aproximadamente el tiempo que necesita para calcular los componentes para un 555 AMV. Precisión: 1%. (El condensador cerámico del 1% para un 555 AMV cuesta casi tanto como el microcontrolador). Y el 555 no puede realizar ciclos de trabajo de menos del 50% sin otro componente. El microcontrolador puede hacer cualquier ciclo de trabajo. Bienvenido al siglo XXI.

Necesitarás algunos conocimientos de programación de microcontroladores. El resto es solo un par de componentes optoelectrónicos, como el LED y el fotodiodo. Y, por supuesto, tendrás que pedir prestado un Muro Virtual comercial.

    
respondido por el stevenvh

Lea otras preguntas en las etiquetas