8051 - REMOTE CHỤP ẢNH TỪ XA KẾT NỐI BLUETOOTH
1
Chào tất cả mọi người, nay nghỉ hè nên mình lại mang cái kit 8051 ra vọc. Học vi xử lí xong rồi lại không biết làm gì, cứ để một xó. Nay mình sẽ hướng dẫn các bạn làm chiếc remote chụp ảnh điện thoại từ xa nhé :))
Đầu tiên cần chuẩn bị những gì?
Đã chuẩn bị xong, các bạn kết nối theo sơ đồ sau:
Phần trong khung đen là những gì đã có sẵn trong kit, nếu các bạn đã mua kit thì chỉ cần kết nối module bluetooth là được.
Sau khi kết nối xong, các bạn tiến hành viết code trong Keil C và xuất file .hex!
Khi đã có file .hex, các bạn dùng phần mềm progisp để đẩy code assembly vào MCU 8051 (chỉ dùng với mạch nạp IPS USB)
Sau đây là chương trình assembly:
https://apkpure.com/vn/bluetooth-remote-toy/tw.blogspot.reneeciou.bluetooth.remote.toy
Các bạn mở phần mềm, chọn shutter, kết nối với module bluetooth và trải nghiệm nhé. Đừng quên chia sẻ bài viết cho mình, chúc các bạn thành công
Tham khảo bài viết từ renee's blog:
http://reneeciou.blogspot.com/2017/05/8051-bluetooth-remote-shutter.html
Đầu tiên cần chuẩn bị những gì?
- MCU 8051 chắc chắn phải có rồi, dòng 8051 này có 2 loại phổ biến là 89C và 89S, mình khuyên các bạn nên dùng 89S và cụ thể là 89S52 và kèm theo mạch nạp USB ISP, đơn giản vì nó rẻ, các bạn sẽ nạp qua cổng nối tiếp. Còn không các bạn sẽ phải mua mạch nạp giá khá cao.
- Module bluetooth HC-05 hoặc HC-06, cả hai loại này đều chỉ cần dùng 4 chân VCC, GND, TX và RX.
- Nút bấm, thạch anh và led, nếu các bạn sử dụng với mục đích học tập các bạn có thể mua luôn kit 8051 v2, kit được trang bị đầy đủ cho các bạn và các bạn không tốn công hàn linh kiện.
- Mạch nạp như mình đã nói ở trên và một cái laptop.
Đã chuẩn bị xong, các bạn kết nối theo sơ đồ sau:
Phần trong khung đen là những gì đã có sẵn trong kit, nếu các bạn đã mua kit thì chỉ cần kết nối module bluetooth là được.
Sau khi kết nối xong, các bạn tiến hành viết code trong Keil C và xuất file .hex!
Khi đã có file .hex, các bạn dùng phần mềm progisp để đẩy code assembly vào MCU 8051 (chỉ dùng với mạch nạp IPS USB)
Sau đây là chương trình assembly:
COUNT EQU 30H SNAP BIT 20H ORG 00H AJMP START ORG 03H ;Int0 địa chỉ ngắt 0 AJMP INT0_ROUTINE ORG 13H ;Int1 địa chỉ ngắt 1 AJMP INT1_ROUTINE ORG 23H ;địa chỉ Serial AJMP SERIAL_ROUTINE ORG 2BH ;Timer2 địa chỉ ngắt timer 2 AJMP TIMER2_ROUTINE START: ACALL INIT ACALL INIT_INT0 ACALL INIT_INT1 ACALL INIT_SERIAL ACALL INIT_TIMER2 LOOP: ACALL DELAY JNB SNAP, NO_FLASH JNB P1.0, LED_OFF CLR P1.0 AJMP LOOP LED_OFF: SETB P1.0 NO_FLASH: AJMP LOOP ;-------------------- ; Delay ;-------------------- DELAY: MOV R6, #255 DLY1: MOV R7, #255 DLY2: DJNZ R7, DLY2 DJNZ R6, DLY1 RET ;-------------------- ; Initialize variables ;-------------------- INIT: MOV SP, #60H MOV P1, #11111110B MOV R5, #15 MOV COUNT, #0 CLR SNAP RET ;-------------------- ; Initialize int0 ;-------------------- INIT_INT0: SETB IT0 ;edge triggered SETB EX0 ;Enable int0 interrupt SETB PX0 ;High interrupt priority RET ;-------------------- ; Initialize int1 ;-------------------- INIT_INT1: SETB IT1 ;kích cạnh SETB EX1 ;cho phép ngắt 1 SETB PX1 ;ưu tiên ngắt RET ;-------------------- ; Initialize serial ; ; TCON Register: ; 7 6 5 4 3 2 1 0 ; TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 ; ; TMOD Register: ; 7 6 5 4 3 2 1 0 ; GATE1 C/T1# M11 M01 GATE0 C/T0# M10 M00 ; ; SCON Register: ; 7 6 5 4 3 2 1 0 ; SM0 SM1 SM2 REN TB8 RB8 TI RI ;-------------------- INIT_SERIAL: MOV SCON, #50H ;Mode 1: 8-bit UART MOV TMOD, #20H ;Timer and reload mode MOV TH1, #0FDH ;Baud rate 9600bps MOV TL0, #0FDH ;Baud rate 9600bps SETB PS ;ưu tiên ngắt SETB ES ;cho phép ngắt Serial SETB TR1 ;Timer1 kích hoạt RET ;--------------------------------------------------- ; Initialize timer2 ; ; T2CON Register: ; 7 6 5 4 3 2 1 0 ; TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 ; ; 1 second = 11.0592MHZ / 12 = 921600 = 61440 * 15 ; TH2 = (65536-61440)/256 = 16 = 10H ; TL2 = (65536-61440)%256 = 0 = 00H ; ; IE Register: ; 7 6 5 4 3 2 1 0 ; EA - ET2 ES ET1 EX1 ET0 EX0 ;--------------------------------------------------- INIT_TIMER2: CLR EXF2 ;Reset cờ CLR TCLK ;Disable baud rate generator CLR RCLK ;Disable baud rate generator CLR EXEN2 ;Ignore events on T2EX MOV TH2, #10H MOV RCAP2H, #10H MOV TL2, #00H MOV RCAP2L, #00H CLR CT2 ;Timer mode CLR CPRL2 ;Auto-reload mode CLR PT2 ;ưu tiên ngắt mức thấp SETB ET2 ;cho phép ngắt timer 2 SETB EA ;cho phép mọi ngắt SETB TR2 ;Timer2 kích hoạt RET ;--------------------------------- ; Snap timeout ;--------------------------------- START_SNAP_TIMEOUT: JNB SNAP, NO_COUNT MOV A, COUNT INC A ;10 giây từ khi chụp MOV COUNT, A CJNE A, #10, NO_COUNT CLR SNAP MOV COUNT, #0 CLR P1.0 NO_COUNT: RET ;--------------------------------- ; Int0 interrupt service routine ;--------------------------------- INT0_ROUTINE: JB SNAP, IGNORE_SNAP SETB SNAP MOV COUNT, #0 MOV SBUF, #84 JNB TI, $ IGNORE_SNAP: RETI ;--------------------------------- ; Int1 interrupt service routine ;--------------------------------- INT1_ROUTINE: MOV SBUF, #77 JNB TI, $ RETI ;----------------------------------- ; Timer2 interrupt service routine ;----------------------------------- TIMER2_ROUTINE: PUSH ACC DJNZ R5, CONTINUE ACALL START_SNAP_TIMEOUT MOV R5, #15 CONTINUE: CLR TF2 POP ACC RETI ;---------------------------------------- ; Serial port interrupt service routine ;---------------------------------------- SERIAL_ROUTINE: PUSH ACC JB TI, IGNORE MOV A, SBUF CJNE A, #68, ID_CHK CLR SNAP MOV COUNT, #0 CLR P1.0 ID_CHK: CJNE A, #87, IGNORE MOV SBUF, #73 JNB TI, $ JMP NO_CLEAR_TI IGNORE: CLR TI NO_CLEAR_TI: CLR RI POP ACC RETI END
Sau khi nạp code xong, các bạn cần một phần mềm chụp ảnh qua bluetooth. Các bạn tải tại:
https://apkpure.com/vn/bluetooth-remote-toy/tw.blogspot.reneeciou.bluetooth.remote.toy
Các bạn mở phần mềm, chọn shutter, kết nối với module bluetooth và trải nghiệm nhé. Đừng quên chia sẻ bài viết cho mình, chúc các bạn thành công
Tham khảo bài viết từ renee's blog:
http://reneeciou.blogspot.com/2017/05/8051-bluetooth-remote-shutter.html