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?
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?
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@
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.