chả là đang muốn làm mạch thu phát dùng avr điều khiển modul thu phát mua sẵn,nhưng phần mã hóa bằng vi điều khiển khó nhai quá,có ai giúp em phần này với ạ:mã hóa như thế nào,rồi lập trình ra sao
Thông báo
Collapse
No announcement yet.
mã hóa bằng VĐK trong RF
Collapse
X
-
Nguyên văn bởi vietran2708 Xem bài viếtchả là đang muốn làm mạch thu phát dùng avr điều khiển modul thu phát mua sẵn,nhưng phần mã hóa bằng vi điều khiển khó nhai quá,có ai giúp em phần này với ạ:mã hóa như thế nào,rồi lập trình ra sao
( Bạn nghiên cứu dựa trên mã module TX13 - RX13 của Quế Dương xem) ( Hàng ở ngoài không biết có chạy được không !) ( cái này thì mình chịu ) và không có giải thích.
Transmitter CODE :
Code:////////////////// Transmitter TX13 : ATmega8 - 8Mhz . Man + SYNC + ID + checksum /////////// #include <mega8.h> #include <delay.h> #define button_on PINB.0 #define button_off PINB.1 #define TX PORTD.4 // out RF-TX module #define ID 0x25 unsigned char TX_packet[3],TX_data; unsigned char i,j; unsigned int checksum; void Transmitter_Mode(); void main() { DDRB=0b00100100; // PB2-PB5 output DDRC=0b00000000; // All input DDRD=0b00010010; // PD1-PD4 output TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; TIMSK=0x00; ACSR=0x80; SFIOR=0x00; TX=0; // Low-TX pin WDTCR=0x1E; // Watchdog time out 1 sec WDTCR=0x0E; #asm("wdr") while(1) { #asm("wdr") if(button_on) // Transmitter Mode ( button ON pressed ! ) { do { TX_data =0x01; // 0x01 send to Receiver module ON LED #asm("wdr") Transmitter_Mode();// Do Transmitter_Mode } while(button_on); delay_ms(200); // button debouncer } else if(button_off) // Transmitter Mode ( button OFF pressed ! ) { do { TX_data =0x02; // 0x02 send to Receiver module OFF LED #asm("wdr") Transmitter_Mode();// Do Transmitter_Mode } while(button_off); delay_ms(200); // button debouncer } } // End while(1) } // END MAIN //////////////////////////// Functions //////////////////////////// void Transmitter_Mode() { checksum=0; TX_packet[0]=ID; checksum+= TX_packet[0]; TX_packet[1]=TX_data; checksum+= TX_packet[1]; TX_packet[2]=checksum; for (i=0;i<35;i++) // send preamble { #asm("wdr") TX=0; delay_us(416); // Delay 416 uS TX=1; delay_us(416); // } delay_us(1248); // Delay 1248 uS or 3Te for syn bit #asm("wdr") //----------------- TX=0; // start bit delay_us(416); TX=1; delay_us(416); //----------------- for (j=0;j<3;j++) // Extract and Send 3 byte in TX_packet[3] to Receiver Module { #asm("wdr") for(i=0;i<8;i++) { #asm("wdr") if ((TX_packet[j] & 0x80) == 0x80) { TX=0; delay_us(416); TX=1; delay_us(416); } else { TX=1; delay_us(416); TX=0; delay_us(416); } TX_packet[j]=TX_packet[j]<<1; } } //------ send stop bit ------- TX=0; delay_us(416); TX=1; delay_us(416); delay_ms(2); // delay gaurd TX =0; #asm("wdr") }
Code:///// RX13 receiver : 8 MHz , ID + checksum////// #include <mega8.h> #include <delay.h> #define LED PORTB.2 // Yellow Led #define RX PIND.3 // in RF-RX module #define ID 0x25 unsigned char RX_packet[3]; bit rx_bit; unsigned char i,j,k; unsigned int checksum; char Receiver_packet(unsigned char *buff); void main() { DDRB=0b00100100; // PB2-PB5 output DDRC=0b00000000; // All input DDRD=0b00010010; // PD1-PD4 output TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; TIMSK=0x00; ACSR=0x80; SFIOR=0x00; WDTCR=0x1E; // Watchdog time out 1 sec WDTCR=0x0E; LED=0; // Led off #asm("wdr") while(1) { #asm("wdr") // Do Receiver_Mode checksum=0; while(Receiver_packet(RX_packet)); for(k=0;k<2; k++) checksum+= RX_packet[k]; checksum&= 0x0FF; if(checksum==RX_packet[2]) { #asm("wdr") if (RX_packet[0]==ID)// check ID { if (RX_packet[1]==0x01) {LED=1;} // Turn ON LED else if (RX_packet[1]==0x02) {LED=0;} // Turn OFF LED } } } // End while(1) } // END MAIN //////////////////////////// Functions //////////////////////////// char Receiver_packet(unsigned char *buff) { unsigned char T0,count; #asm("wdr") i=35; count=0; TCCR0=0x03; // 125 Khz step=8us while(--i) // wait preamble { #asm("wdr") #asm{ NOP NOP NOP } #endasm while(RX); TCNT0=0; #asm("wdr") #asm{ NOP NOP NOP } #endasm while(!RX); T0=TCNT0; if (T0==0xFF) {return 1;} // error if ((T0>=49) && (T0<=55)) // 49x8 =392----> 55x8 =440 uS it OK. +-24us { count++; if ((count>=1)|| (i==0)) break; } } if ((count==0)&&(i==0)) {return 1;} // error TCCR0=0x03; // step 8us T0=0; while (!((T0>=188) && (T0<=228))) // 1504 - 1824 uS it OK. syn bit for 3Te + start or 1664 uS { #asm("wdr") #asm{ NOP NOP NOP } #endasm while(RX); // wait syn TCNT0=0; #asm("wdr") #asm{ NOP NOP NOP } #endasm while(!RX); T0=TCNT0; } #asm("wdr") while(RX); //wait start bit go low delay_us(580); // delay before sampling (1.5Te) #asm("wdr") for (j=0;j<3;j++) { i=8; buff[j]=0; while(i--) { buff[j]=buff[j]<<1; rx_bit=RX; // sampling buff[j]=buff[j] | rx_bit; if (rx_bit==0) while(!RX); else while(RX); delay_us(580); // delay for 1,5Te #asm("wdr") } #asm("wdr") } if (rx_bit==0) if (!RX) return 1; // error (no stop bit found) else if (!RX) return 1; // error (no stop bit found) return 0; }
Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
-
Vấn đề này em cũng đang quan tâm vì dạo này nghe tin bọn trộm có thể dò được mã cửa cuốn. Nhà em cũng dùng cửa cuốn nên muốn lắp thêm 1 bộ khóa điện RF được mã hóa bằng MCU để cắt nguồn cửa cuốn. Khóa cũ chỉ dùng nâng hạ thôi. Vậy các bác cho em hỏi mã hóa bằng MCU thế này bọn trộm có thể dò được nữa không ạ?
@ queduong: Em xem sản phẩm trên trang web của bác nhưng không thấy có modul TX-13 và RX-13 đã tích hợp MCU. Vậy bác đã có sản phẩm tích hợp chưa hay đặt hàng bác mới làm? Thanks!Mưu sự tại nhân, thành sự tại thiên,
Comment
-
Nguyên văn bởi thwcs Xem bài viếtVấn đề này em cũng đang quan tâm vì dạo này nghe tin bọn trộm có thể dò được mã cửa cuốn. Nhà em cũng dùng cửa cuốn nên muốn lắp thêm 1 bộ khóa điện RF được mã hóa bằng MCU để cắt nguồn cửa cuốn. Khóa cũ chỉ dùng nâng hạ thôi. Vậy các bác cho em hỏi mã hóa bằng MCU thế này bọn trộm có thể dò được nữa không ạ?
@ queduong: Em xem sản phẩm trên trang web của bác nhưng không thấy có modul TX-13 và RX-13 đã tích hợp MCU. Vậy bác đã có sản phẩm tích hợp chưa hay đặt hàng bác mới làm? Thanks!
Bạn hỏi là trộm nó có dò được không ? thế thì tôi cũng chịu không biết nói là thế nào ... Tốt nhất là phải đi hỏi thằng trộm thôi.Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Comment
-
Nguyên văn bởi queduong Xem bài viết
Thường thì mua ở chỗ nào kêu người ta hướng dẫn cách dùng chứ !!! ? Mỗi loại sản phẩm đều có các thông số khác nhau nên chưa chắc đã hoạt động giống nhau với cùng 1 mã code .
( Bạn nghiên cứu dựa trên mã module TX13 - RX13 của Quế Dương xem) ( Hàng ở ngoài không biết có chạy được không !) ( cái này thì mình chịu ) và không có giải thích.
Transmitter CODE :
Code:////////////////// Transmitter TX13 : ATmega8 - 8Mhz . Man + SYNC + ID + checksum /////////// #include <mega8.h> #include <delay.h> #define button_on PINB.0 #define button_off PINB.1 #define TX PORTD.4 // out RF-TX module #define ID 0x25 unsigned char TX_packet[3],TX_data; unsigned char i,j; unsigned int checksum; void Transmitter_Mode(); void main() { DDRB=0b00100100; // PB2-PB5 output DDRC=0b00000000; // All input DDRD=0b00010010; // PD1-PD4 output TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; TIMSK=0x00; ACSR=0x80; SFIOR=0x00; TX=0; // Low-TX pin WDTCR=0x1E; // Watchdog time out 1 sec WDTCR=0x0E; #asm("wdr") while(1) { #asm("wdr") if(button_on) // Transmitter Mode ( button ON pressed ! ) { do { TX_data =0x01; // 0x01 send to Receiver module ON LED #asm("wdr") Transmitter_Mode();// Do Transmitter_Mode } while(button_on); delay_ms(200); // button debouncer } else if(button_off) // Transmitter Mode ( button OFF pressed ! ) { do { TX_data =0x02; // 0x02 send to Receiver module OFF LED #asm("wdr") Transmitter_Mode();// Do Transmitter_Mode } while(button_off); delay_ms(200); // button debouncer } } // End while(1) } // END MAIN //////////////////////////// Functions //////////////////////////// void Transmitter_Mode() { checksum=0; TX_packet[0]=ID; checksum+= TX_packet[0]; TX_packet[1]=TX_data; checksum+= TX_packet[1]; TX_packet[2]=checksum; for (i=0;i<35;i++) // send preamble { #asm("wdr") TX=0; delay_us(416); // Delay 416 uS TX=1; delay_us(416); // } delay_us(1248); // Delay 1248 uS or 3Te for syn bit #asm("wdr") //----------------- TX=0; // start bit delay_us(416); TX=1; delay_us(416); //----------------- for (j=0;j<3;j++) // Extract and Send 3 byte in TX_packet[3] to Receiver Module { #asm("wdr") for(i=0;i<8;i++) { #asm("wdr") if ((TX_packet[j] & 0x80) == 0x80) { TX=0; delay_us(416); TX=1; delay_us(416); } else { TX=1; delay_us(416); TX=0; delay_us(416); } TX_packet[j]=TX_packet[j]<<1; } } //------ send stop bit ------- TX=0; delay_us(416); TX=1; delay_us(416); delay_ms(2); // delay gaurd TX =0; #asm("wdr") }
Code:///// RX13 receiver : 8 MHz , ID + checksum////// #include <mega8.h> #include <delay.h> #define LED PORTB.2 // Yellow Led #define RX PIND.3 // in RF-RX module #define ID 0x25 unsigned char RX_packet[3]; bit rx_bit; unsigned char i,j,k; unsigned int checksum; char Receiver_packet(unsigned char *buff); void main() { DDRB=0b00100100; // PB2-PB5 output DDRC=0b00000000; // All input DDRD=0b00010010; // PD1-PD4 output TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; TIMSK=0x00; ACSR=0x80; SFIOR=0x00; WDTCR=0x1E; // Watchdog time out 1 sec WDTCR=0x0E; LED=0; // Led off #asm("wdr") while(1) { #asm("wdr") // Do Receiver_Mode checksum=0; while(Receiver_packet(RX_packet)); for(k=0;k<2; k++) checksum+= RX_packet[k]; checksum&= 0x0FF; if(checksum==RX_packet[2]) { #asm("wdr") if (RX_packet[0]==ID)// check ID { if (RX_packet[1]==0x01) {LED=1;} // Turn ON LED else if (RX_packet[1]==0x02) {LED=0;} // Turn OFF LED } } } // End while(1) } // END MAIN //////////////////////////// Functions //////////////////////////// char Receiver_packet(unsigned char *buff) { unsigned char T0,count; #asm("wdr") i=35; count=0; TCCR0=0x03; // 125 Khz step=8us while(--i) // wait preamble { #asm("wdr") #asm{ NOP NOP NOP } #endasm while(RX); TCNT0=0; #asm("wdr") #asm{ NOP NOP NOP } #endasm while(!RX); T0=TCNT0; if (T0==0xFF) {return 1;} // error if ((T0>=49) && (T0<=55)) // 49x8 =392----> 55x8 =440 uS it OK. +-24us { count++; if ((count>=1)|| (i==0)) break; } } if ((count==0)&&(i==0)) {return 1;} // error TCCR0=0x03; // step 8us T0=0; while (!((T0>=188) && (T0<=228))) // 1504 - 1824 uS it OK. syn bit for 3Te + start or 1664 uS { #asm("wdr") #asm{ NOP NOP NOP } #endasm while(RX); // wait syn TCNT0=0; #asm("wdr") #asm{ NOP NOP NOP } #endasm while(!RX); T0=TCNT0; } #asm("wdr") while(RX); //wait start bit go low delay_us(580); // delay before sampling (1.5Te) #asm("wdr") for (j=0;j<3;j++) { i=8; buff[j]=0; while(i--) { buff[j]=buff[j]<<1; rx_bit=RX; // sampling buff[j]=buff[j] | rx_bit; if (rx_bit==0) while(!RX); else while(RX); delay_us(580); // delay for 1,5Te #asm("wdr") } #asm("wdr") } if (rx_bit==0) if (!RX) return 1; // error (no stop bit found) else if (!RX) return 1; // error (no stop bit found) return 0; }
Comment
Bài viết mới nhất
Collapse
-
bởi appongthoMã lỗi H-29 tủ lạnh Panasonic là gì? Nguyên nhân và cách tự khắc phục
https://appongtho.com/tu-xoa-loi-h-2...anh-panasonic/
Tại sao tủ lạnh panasonic báo lỗi H-29? Nguyên nhân, hướng dẫn cách tự khắc phục lỗi H-29 trên tủ lạnh Panasonic đúng quy...-
Channel: Điện tử gia dụng
hôm nay, 10:31 -
-
bởi vi van pham1- 6 người chưa chắc mang 6 kg hàng trong 1 phút vì sức khỏe khác nhau.
2- Tương tự 3 cánh quạt to, độ nghiêng và diện tích 3 cánh chiếm hết 360 độ không gian cánh quạt, nếu 6 cánh thì dôi ra 3 cánh sẽ xếp nó vào nơi nào? kiến thức...-
Channel: Điện tử gia dụng
hôm nay, 10:26 -
-
bởi dinhthuong80Đến giờ thì Đình Thường tôi thật sự cảm thấy tiền mình bỏ ra mua quạt và thiết bị đo, thời gian và công sức mình thí nghiệm đo kiểm và đưa lên đây giới thiệu cho mọi người thật là uổng phí!. Nói gì, đưa ra bằng chứng gì cũng...
-
Channel: Điện tử gia dụng
hôm nay, 09:35 -
-
bởi tuyennhanTôi vào trang cafef xem thì không có số liệu gì vào tiếp trang nơi bán ở sin thì có số liệu thì thấy quạt 3 cánh lưu lượng gió kém hơn 5 cánh nhưng cstt nhỏ hơn và là quạt trần dc cánh nhỏ không có quạt bàn cánh to .
Vào trang của hãng...-
Channel: Điện tử gia dụng
hôm nay, 07:35 -
-
bởi vi van phamMẹ từ đồng ruộng về, mồ hôi ướt đẩm mặt mẹ.
Mẹ ko còn sức vẩy cái nón nữa. Mẹ như cái motor hết pin.
Thằng quạt nhỏ cười toe toét quạt lấy , quạt để khoe chân lý quạt nhỏ mát hơn quạt to....
-
Channel: Điện tử gia dụng
hôm nay, 07:19 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi ngtuhanCòn thiếu con trở 330 ohm/10W nối song song CE của transitor công suất. Mạch này có từ cái thời VN dùng tivi nội địa Nhật, thay thế cho phần ổn áp 110v (nếu bị hỏng). Giờ chỉ là dĩ vãng.
-
Channel: Hướng dẫn tìm thông tin linh kiện
hôm nay, 02:27 -
-
bởi dinhthuong80[QUOTE=nhathung1101;n1735558]
Thế theo bác thì thằng rung đùi kia sẽ nói thằng cánh to hay thằng cánh nhỏ quay nhanh hơn? Thằng thuốc rượu nói thằng nhỏ hay thằng to mạnh hơn??...-
Channel: Điện tử gia dụng
hôm nay, 00:50 -
-
bởi nhathung1101Ngày xửa ngày xưa còn dùng quạt 1 cánh, dù vẩy hết tốc độ cho cái mo cau chóng mặt mà chả ăn thua.
Mẹ vẩy nhẹ cái nón mà mát lịm cả người. Thế nên phải hiểu chiều sâu mới được.
Cái nón sâu hơn cái mo cau là...-
Channel: Điện tử gia dụng
Hôm qua, 23:34 -
-
bởi nhathung1101[QUOTE=vi van pham;n1735550]
Có 2 thằng mang quạt ra giữa đường hứng gió để xem thằng cánh to hay thằng cánh nhỏ quay nhanh hơn.
Thằng thứ ba ngồi hút thuốc, uống rượu, rung đùi ngồi xem......-
Channel: Điện tử gia dụng
Hôm qua, 23:25 -
-
Trả lời cho Xin hỏi về chiết ápbởi nhathung1101Xét theo lý thuyết là vậy, còn thực tế thì không biết.
Đang nghe nhạc Vô Thường mà vợ cứ càm ràm bên cạnh thì còn lút đít luôn......-
Channel: Điện thanh
Hôm qua, 23:18 -
Comment