Tôi đã tự hỏi nếu có thể tạo ra một bức tường ảo DIY cho iRobot roomba. Bất cứ ai có thể giải thích làm thế nào tôi đi tìm hiểu làm thế nào điều này hoạt động?
Tôi đã tự hỏi nếu có thể tạo ra một bức tường ảo DIY cho iRobot roomba. Bất cứ ai có thể giải thích làm thế nào tôi đi tìm hiểu làm thế nào điều này hoạt động?
Câu trả lời:
Tôi đã thực hiện cách đây nhiều năm chỉ bằng cách thu tín hiệu gốc từ Rumba Wall bằng máy hiện sóng kỹ thuật số của tôi (nhưng có thể được thực hiện miễn phí bằng thẻ âm thanh PC) và viết chương trình PIC thực sự đơn giản để phát lại tín hiệu tương tự với sóng mang 38Khz sử dụng NOP và một vài chu kỳ.
Sau đó, tôi đã xây dựng trên một bảng proto một mạch đơn giản với PIC12F675, một bóng bán dẫn, một đèn led IR hẹp và các tế bào NiMh 4xAA.
30 phút làm việc và một chiến thắng hoàn hảo :-)
Tôi vẫn có mã, nhưng tôi thực sự xấu hổ khi thể hiện nó, nó thực sự là một nỗi kinh hoàng mã hóa: D
EDIT: Bạn đã yêu cầu nó, bạn đã nhận nó. VÀ BẠN ĐÃ HỨA: Không có bình luận ... nó chỉ hoạt động. ;-)
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@
Điều đó nên được thực hiện. Bức tường ảo chỉ là đèn hiệu sử dụng bộ phát hồng ngoại. Chúng ta đang nói về điều này:
Vì vậy, nó chỉ là một đèn LED IR, một điện trở loạt và pin? Rất có thể là không, thật không may. Đèn hiệu có thể sẽ sử dụng tín hiệu được mã hóa, do đó Roomba có thể phân biệt nó với các nguồn IR khác. Bạn sẽ phải biết bước sóng IR nào nó sử dụng, mặc dù 950nm là một dự đoán tốt. Sau đó, bạn cần một Tường ảo hiện có để ghi lại tín hiệu của nó bằng điốt quang hồng ngoại và vi điều khiển. Khi bạn có tín hiệu, cùng một vi điều khiển có thể gửi nó qua đèn LED hồng ngoại.
Đó là trường hợp xấu nhất. Nếu họ chọn tín hiệu đơn giản hơn thì đó có thể là một chuỗi xung ổn định, như Fake Name gợi ý. Trong trường hợp đó, bạn có thể sử dụng máy hiện sóng hoặc vi điều khiển để đo tần số và chu kỳ nhiệm vụ. Cũng trong trường hợp đó, vi điều khiển là cách đơn giản nhất để tạo lại tín hiệu.
Không phải ai cũng bị thuyết phục về điều này. Tuy nhiên, vi điều khiển không cần một thành phần bên ngoài duy nhất và chương trình cần thiết có thể được viết bằng phút, về thời gian bạn cần tính toán các thành phần cho một điện áp 555 AMV. Độ chính xác: 1%. (tụ điện gốm 1% cho điện áp 555 AMV có giá gần bằng bộ vi điều khiển.) Và 555 không thể thực hiện chu kỳ nhiệm vụ dưới 50% mà không có thành phần nào khác. Các vi điều khiển có thể làm bất kỳ chu kỳ nhiệm vụ. Chào mừng đến với thế kỷ 21.
Bạn sẽ cần một số kiến thức về vi điều khiển lập trình. Phần còn lại chỉ là một vài thành phần quang điện tử, như đèn LED và photodiode. Và tất nhiên bạn sẽ phải mượn Tường ảo thương mại.
Also in that case the microcontroller is the simplest way to regenerate the signal.
Có gì ? Cách dễ nhất để tạo tín hiệu tần số cố định là bộ tạo dao động phần cứng, giống như thông thường 555. MCU là WAY quá mức và sẽ kéo theo các bó phức tạp phần mềm. Về cơ bản, nó cần một cái gì đó sẽ mất 20 phút để hàn lại với nhau trên một bảng hoàn hảo, và biến nó thành một công việc kéo dài nhiều giờ.
For someone who's acquainted with the microcontroller
. Mặt khác, đó là hàng giờ và hàng giờ để đi vào quirks của nền tảng, tìm kiếm errata và như vậy. Tất nhiên, có mạch hỗ trợ cần thiết và một lập trình viên. Một bộ định thời đơn giản có điện áp đầu vào rộng, trong khi một vi điều khiển thường sẽ yêu cầu đầu vào 5 V hoặc 3,3 V, điều này tự nó mang lại sự phức tạp hơn như bộ điều chỉnh điện áp, v.v.