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 bqvietĐấy gọi là cái "điểm gãy" trong đồ thị điện áp - dung lượng còn lại. Dùng điện áp hở cực để xác định sắp hết hoặc gần đầy thì vẫn tạm ổn. Dùng để đo SOC/DOD thì đừng. Ngay cả số km đã đi cũng chả xác định được...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 21:36 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Vâng, em cũng nghĩ thế khi search được hãng ấy là SRNE, nên em test luôn những cái còn lại, và kết quả đều như nhau.
Nhận thấy kết quả khó chấp nhận, em cũng phân vân có nên mail cho họ để họ thử kiểm tra mã đó không; giữa...-
Channel: Điện tử công suất
Hôm qua, 11:33 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Xin cảm ơn bác bqviet luônnhiệt tình cho biết nhiều thông tin quí báu, cảm ơn bạn mèomướp có ví dụ đơn giản và dễ hiểu, cảm ơn tất cả đã bớt chút thời gian quí báu vào đây đọc bài.
Cảm ơn bác nhathung1101 cho thông tin và chúc mừng bác mua được những tấm pin NLMT cực tốt theo...-
Channel: Điện tử công suất
Hôm qua, 11:22 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi mèomướpDạ chú nhat... cứ coi pin mặt trời như 1 cái ắc qui nhìu ngăn mắc nối tiếp ấy ạ. Khi 1 ngăn yếu thì cả cái ắc qui yếu luôn ạ. Nó có nhìu bộ nối tiếp mắc song song nên bị che 1 khoảng nhỏ ảnh hưởng nhìu nhưng chắc ko đến nỗi mất 50% đâu ạ...
-
Channel: Điện tử công suất
Hôm qua, 06:36 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Nếu nói bị cái lá che sáng mà giảm 50% thì tôi càng không tin, bởi trên vườn tôi mặc kệ ông trời làm vệ sinh.
Tức là lá tự rụng, gió tự dọn. Ai hơi đâu mà leo lên dọn. Nếu phải như thế thì tôi dek thèm lắp làm gì.-
Channel: Điện tử công suất
16-01-2025, 21:44 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Chả hiểu ý cậu nói gì. Cái diode bypass quan trọng thế ư???
Cái giàn của tôi chả thấy cái diode nào mà vẫn hoạt động hơn 3 năm rồi.
Nhưng nó không có kiểu nối dây với bấm cốt như của cậu.
Tóm lại là tiền nào của nấy, đừng hoang tưởng kỹ thuật hóa. Kẻo ô tô điện đua nhau lắp diode.-
Channel: Điện tử công suất
16-01-2025, 21:31 -
-
Trả lời cho Dùng biến áp tự ngẫu 110V có tốn điện không?bởi nhathung1101Tôi dùng 4 cái điều hòa Fujitsu hàng bãi Nhật, nên phải dùng 4 cục đổi nguồn 220 xuống 100V. Để bật quanh năm, chả thấy bằng bữa bia. Chứ tắt đi là mất mấy bữa luôn.
-
Channel: Điện tử gia dụng
16-01-2025, 21:24 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi bqvietViệc che khuất một phần dẫn tới giảm hiệu suất, thế giới bàn rất nhiều. Đôi khi chỉ cần một chiếc lá nhỏ thôi cũng dẫn tới giảm hiệu suất tệ hại
https://www.motorhomefun.co.uk/forum...-shade.295187/
https://www.solarchoice.net.au/learn/design-g...-
Channel: Điện tử công suất
16-01-2025, 19:52 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi bqvietNhà thơ & nhạc sỹ lâu không bàn chuyện kỹ thuật mà hổm rày chia xẻ dài phết. J/K
Về vụ đo nhiệt độ sai, chắc lô hàng bị sao đó chứ khó có khả năng nhà sản xuất chế tạo chất lượng thấp đến vậy. Bất kể là hàng...-
Channel: Điện tử công suất
16-01-2025, 19:48 -
-
bởi since0501Cảm ơn bác đã chia sẻ, nhưng mình thấy điện áp lúc có tải từ 3.1v nó xuống dưới 3.0 rất nhanh, giai đoạn ~3.2 nó cầm khá lâu, vậy có cách nào để mình phỏng đoán là pin sắp cạn không hay chỉ có thể dựa vào số km đa đi đc sau 1 lần xạc?...
-
Channel: Điện tử dành cho người mới bắt đầu
16-01-2025, 09:03 -
Comment