Thông báo

Collapse
No announcement yet.

Module Wireless CYWM6935 và Vi điều khiển PIC 16F877A/886...

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Module Wireless CYWM6935 và Vi điều khiển PIC 16F877A/886...

    Mình đang làm truyền nhận dữ liệu giữa 2 bo mạch thu thập dữ liệu. Trên mỗi bo dùng PIC, truyền nhận dữ liệu bằng module CYWM6935. Theo datasheet của module CYWM6935 thì khoảng cách lên đến 100m, dùng sóng 2.4Ghz nên khả năng xuyên vật cản là rất tốt. Tuy nhiên mình làm nó chỉ được khoảng cách vài mét, cách 1 bức tường thì cũng ok, chứ không được vài chục mét. Anh em ai làm rồi hoặc có đam mê thì cùng chia sẻ nhé. Driver module CYWM6935 mình gửi kèm dưới đây, viết trong CCS-PIC nhé.

    Code:
    #include <stddef.h>
    /* dinh nghia nay dung cho PIC 16F877, 886
    //#define IRQ RB0
    #define nSS PIN_B3//RB2
    #define nPD PIN_B5//RB3
    #define nRESET PIN_B2//RB1
    #define SPI_OUT     PIN_C5//doi  tu C7 sang C5
    #define SPI_IN      PIN_B0
    #define SPI_CLK     PIN_B1
    */
    
    // dung cho PIC16F688
    #define nSS PIN_C1
    #define nRESET PIN_C2
    #define SPI_OUT     PIN_C3
    #define SPI_IN      PIN_C0
    #define SPI_CLK     PIN_C4
    
    
    //SPI_CLK     PIN_C3
    //SPI_IN      PIN_C4
    //SPI_OUT     PIN_C5
    
    #separate void reset_WM();
    #separate void init_WM();
    #separate void spi_output(dout);
    #separate byte spi_input();
    #separate void Write_WM(int reg,int data);
    #separate int Read_WM(int reg);
    #separate void Set_Tx_mode();
    #separate void Set_Rx_mode();
    #separate void transmit_WM(int data);
    #separate int receive_WM();
    #separate void set_channel(int channel);
    
    
    #separate void reset_WM()  // ham reset module wireless
    {
       output_low(nRESET);
       delay_ms(10);
       output_high(nRESET);
       delay_ms(10);
    }
    
    #separate void init_WM()
    {
       output_high(nSS);// khong chon truyen SPI, chi khi nao truyen moi clear bit nay
       reset_WM();
       Write_WM(REG_ANALOG_CTL,0x01);// Reset tat ca thanh ghi ve gia tri mac dinh
       delay_us(250);
       Write_WM(REG_CLOCK_MANUAL,0x41);// Ghi gia tri 0x41 vao thanh ghi Reg_Clock_Manual de module hoat dong dung
       delay_us(250);
       Write_WM(REG_CLOCK_ENABLE,0x41);// Ghi gia tri 0x41 vao thanh ghi Reg_Clock_Enable de module hoat dong dung
       delay_us(250);
       Write_WM(REG_CONTROL,0x14);// Bybass the PLL Lock
       delay_us(250);
       Write_WM(REG_SERDES_CTL,0x08);//EOF frame lenght
       delay_us(250);
       Write_WM(REG_VCO_CAL, 0xC0);
       delay_us(250);
       Write_WM(REG_CONFIG,0x01); //high level active interrupt
       delay_us(250);
       
       Write_WM(REG_PA,0x07); //max PA
       delay_us(250);
    
    }
    
    // SPI read - write routines
    // this was written because I could not get the CCS implementation using 18F2550 hardware to
    // work reliabily.  
    //
    // Data is clocked at approx 1MHz with 48MHz clock, time to write/read a byte is approx 8 uSec.
    
    
    // Output a byte to the SPI device
    #separate void spi_output(dout) {
        byte i;
        
        for(i = 0; i < 8; i++) {
            rotate_left(&dout, 1);              // place the MSB into bit 0 position
            if(dout & 1) output_high(SPI_OUT);  // and set output high if necessary (output is already low)
            output_high(SPI_CLK);               // strobe data on the low to high transition
            delay_cycles(2);
            output_low(SPI_CLK);                // reset the clock
            output_low(SPI_OUT);                // and set the data line low for the next bit
            }
    }
    
    
    // Input a byte from the SPI device
    #separate byte spi_input() {
        byte i, din = 0;
        
    for(i = 0; i < 8; i++) {
            rotate_left(&din, 1);               // prepare the input variable
            output_high(SPI_CLK);               // data should be available on the low to high transition
            if(input(SPI_IN)) bit_set(din, 0);  // if we have a high input set the bit (var is initilised to 0)
            output_low(SPI_CLK);                // and reset the clock
            }
        return din;
    }
    // Wireless Module (WM) registers read/write routines
    //
    
    // Write data to addr in the WM
    #separate void Write_WM(byte addr, byte data) {
        output_low(nSS);
        spi_output(addr | 0x80);
        spi_output(data);
        output_high(nSS);
    }
    
    // Read from addr in the WM
    #separate byte Read_WM(byte addr) {
        byte d;    
        output_low(nSS);
        spi_output(addr);
        d = spi_input();
        output_high(nSS);
        return d;
    }
    
    #separate void Set_Tx_mode()
    {
       int data;
       Write_WM(REG_TX_VALID,0xFF);//Chon so bit valid :8 bit
       delay_us(250);
       data=Read_WM(REG_TX_INT_STAT);//Doc de xoa thanh ghi trang thai
       delay_us(250);
       Write_WM(REG_CONTROL,0x54);//Chon che do truyen,PA_Enable
       delay_us(250);
       Write_WM(REG_PA,0x07);
       delay_us(250);
       Write_WM(REG_TX_INT_EN,0x01);// Cho phep ngat empty
       delay_ms(10);
    }
    
    #separate void Set_Rx_mode()
    {
       int data;
       data=Read_WM(REG_RX_INT_STAT);//Doc de xoa thanh ghi trang thai
       delay_us(250);
       Write_WM(REG_RX_INT_EN,0x03);// cho phep ngat nhan Full A
       delay_us(250);
       Write_WM(REG_CONTROL,0x90);  //set RX mode = 0x80
       delay_ms(10);
    }
    
    #separate void transmit_WM(int data)
    {
       Write_WM(REG_TX_DATA,data);
       delay_ms(10);
    }
    
    #separate int receive_WM()
    {
       int data;
       //delay_ms(1);
       //while(Read_WM(REG_RX_VALID_A)!=0xff);
       while(!(Read_WM(REG_RX_INT_STAT) &0x01));
       data=Read_WM(REG_RX_DATA_A);
       return data;
    }
    
    #separate void set_channel(int channel)
    {
       Write_WM(REG_CHANNEL,channel);
       delay_ms(10);
    }
    |

  • #2
    Module đó chạy ở dải tần wifi, nhà sản xuất thì UP TO 50m, anten thì trong mạch ... công suất thì 0dBm output ... độ nhạy thì có -95dBm dưới 2,3 chục mét không vật cản là tuyệt rồi ... chứ tuổi gì mà đòi ăn 100m !
    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


    • #3
      Mình làm nó chỉ đc có 3 mét thôi bạn à, ko biết trong code driver có sửa gì thêm ko?
      |

      Comment


      • #4
        Làm PIC thì nên dùng luôn giải pháp truyền tin không dây của Microchip. CYWM6935 chỉ nên dùng với PSoC của Cypress mới dễ được.
        Phần mềm tự do hoặc không dùng máy tính nữa !.

        Comment


        • #5
          Nguyên văn bởi bqviet Xem bài viết
          Làm PIC thì nên dùng luôn giải pháp truyền tin không dây của Microchip. CYWM6935 chỉ nên dùng với PSoC của Cypress mới dễ được.
          làm gì cũng vậy thôi , độ nhạy máy thu thấp ( có -95dBm ) còn kém xa cái module OOK ( RX11 ) của QD nữa , công suất thì 0dBm ( 1mW ) trong khi đó mấy cái cỏ cỏ bên QD cũng cỡ hang chục , vài chục mW ... để khách hàng đơn giản cắm cọng dây cũng được 100m.

          Môi trường VN " khắc nghiệt" hơn tây ... thôi đành thí nghiệm trực tiếp ... chứ gặp mấy CTy đặt hàng RF than vãn mấy cái vài trăm mét với 1000m của Hồ cẩm đào quá rồi !

          ( vừa rồi có mấy CTy đặt sp RF bên QD ... đơn giản là cứ test thực tế và yêu cầu ... đạt tiêu chuẩn ..===> hợp đồng ...===> thương lượng giá ( nếu số lượng ) ===>thành tiền ! ). Tùy từng loại giá mà có loại A , B , C ... khoảng cách có laọi D, E , F ....
          Có được Cty , người làm thử nghiệm hộ thì quý quá đi ... khác gì làm hộ cty đó 1 phần công việc !
          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


          • #6
            Nguyên văn bởi truongqt Xem bài viết
            Mình làm nó chỉ đc có 3 mét thôi bạn à, ko biết trong code driver có sửa gì thêm ko?
            Bạn phải kiểm tra ( khảo sát ) xem môi trường của bạn có nhiễu tần số của module không , có nhiều thiết bị , sóng trùng với dải tần module không ... việc thu phát thành công mà khoảng cách ngắn thì có rất nhiều nguyên nhân yếu tố .

            Thông thường các chip chuyên dụng đã đóng gói sẵn thì mình chỉ có giao tiếp + địa chỉ thanh ghi ... và nhận kết quả ... nên có thể nói không khác nhau nhiều về khoảng cách khi đã " làm cho nó chạy "

            những yếu tố sau đây có thể làm thay đổi ( tăng khoảng cách ) ( bạn có thể tìm hiểu chuyên sâu trong datasheet của sản phẩm xem nó có hỗ trợ các yếu tố này hay không ) !

            + Tốc độ baudrate : Khi bạn hạ thấp baudrate có thể khoảng cách sẽ cải thiện
            + Band Width : khi bạn thu hẹp băng thông , độ chọn lọc cao ... khoảng cách có thể cải thiện
            +Lắp đặt hợp lý : khi bạn lắp đặt hợp lý ... không rơi vào các chỗ có nhiều nhiễu điện ( VD gần thạch anh , gần bộ dao động .v.v ) cũng có thể cải thiện khoảng cách.
            + độ điều chỉnh AGC hoặc các bộ lọc delta sigma ... cũng có thể cải thiện khoảng cách

            .... Nhiều yếu tố khác . Tuy nhiên cũng làm các việc trên ( nếu module hỗ trợ) cũng khó vượt được xa được " năng lực " của một module thu phát có công suất quá thấp, độ nhạy kém lại nằm trong vùng tần số có rất nhiều nhiễu ! ( Bởi có thể nó chỉ được đến thế ) !

            --- Các nguyên tắc giao tiếp như I2C , SPI của các module thì đã đều là dạng chuẩn ( đa phần là như nhau cả ) ! ( nên không có việc cải thiện khoảng cách do giao thức giao tiếp ) !
            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


            • #7
              Mình dùng module dùng CYRF của bọn unigen việt nam sản xuất , test cũng chỉ tầm 10m thôi. khi khoảng cách xa hơn thì bị nhiễu + mất data rất nhiều.
              đặt 1 module sát 1 đầu thu wi-spy , test công suất sóng cũng chỉ tầm -30dB . chưa lần nào đạt quá -20dB. do vậy khoảng cách thu phát chỉ đến thế thôi . Nói chung nhà sản xuất họ test module trong điều kiện gần lí tưởng. với lại IC của hãng họ ứng dụng trong truyền data hoảng cách gần (keyboard, mouse không dây, remote...) , nên khoảng cách ko cần xa, chỉ cần tiết kiệm điện là dc.
              - Bảo trì, sửa chữa máy công nghiệp
              - Thiết kế, chế tạo board mạch điện tử
              - Mua bán, sửa chữa thiết bị test: Oscilloscope; Spectrum Analyzer...
              - Dt: 0985205886 -

              Comment


              • #8
                Xin hỏi module nRF24L01 thì có thể đạt được bao nhiêu m? Mình nghe nói Module SI432 có thể đạt được 1000m có đúng ko nhỉ? Mình chưa có điều kiện test mấy cái này, Pro nào dùng rồi thì trả lời giúp mình với.
                Thanks!
                Linh Kiện ĐIỆN TỬ 4U
                - Website: www.dientu4u.com
                - Đ/c: 59, Ngõ 120, Trần Cung, B.Từ Liêm, Hà Nội

                Comment


                • #9
                  Nguyên văn bởi dientu4u Xem bài viết
                  Xin hỏi module nRF24L01 thì có thể đạt được bao nhiêu m? Mình nghe nói Module SI432 có thể đạt được 1000m có đúng ko nhỉ? Mình chưa có điều kiện test mấy cái này, Pro nào dùng rồi thì trả lời giúp mình với.
                  Thanks!
                  nrf khoảng 80m - 120m... si khoảng 200 - 250m nếu config chuẩn ở 2400baud ... 9,6k khoảng ~120m.

                  nrf dùng strip line , si dùng anten 1/4 .
                  SI quảng cáo có độ nhạy khá tốt và công suất max +27dBm ... nhưng thực chất có nhiều phiên bản , lô sản xuất, nhiều nước sản xuất ... nhưng tổng kết lại thì không đạt các thông số như đã nêu trong datasheet. ( thạch anh khá hiếm )
                  Công suất thực tế chỉ đạt tới 50-60mW độ nhạy thu khiêm tốn.

                  --- dòng chip CC của Ti có độ nhạy khá tốt ... gần như chuẩn với thông số trong datasheet... được cái chip của bọn này hay chết bất đắc kỳ tử , Đang chạy lăn ra ... hoặc chết do quá nhiệt ( nếu không phải là máy chuyên hàn smd ) mà dùng khò thì ... cao thủ 10 ăn 8 ... đa phần chỉ 10 ăn 6 ... tay nghề mà không có thì 10 toi 9 ! (nói chung là không nên chơi )

                  --- Dòng ADF của phil thì khoai và khó nhằn ... phụ kiện chi chít , tính năng khiêm tốn ... kích thước vật vã !
                  --- Của maxim tốc độ thấp , cấu hình thanh ghi khó , mất nhiều lệnh cấu hình (không dùng được những mcu giao tiếp có bộ nhớ nhỏ vì thiếu bộ nhớ ), thạch anh độc

                  --- MRF của microchip thì có cả dạng chân ssop ... rất dễ hàn ( không sợ chết ) công suất thấp , độ nhạy chấp nhận, buffer ít và tốc độ thấp
                  --- Một số dòng MIC của micrel thì khả năng chịu nhiễu MCU khá kém nên thường bị giảm độ nhạy thu , thạch anh ở VN thì đừng mong có !


                  --- Mình liệt kê đa phần những dòng chip mình đã từng làm rồi đó ( còn một vài hãng nữa không cần kể thêm ) . Đa phần khoảng cách thường dưới 200m. (vì chẳng hãng nào nó dại mà đưa công suất vào ... vừa tốn điện , tốn diện tích ... lại cháy cái thì tèo cả đám luôn ) nên họ chỉ làm thế thôi . Công suất thường làm rời hoặc IC riêng.
                  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


                  • #10
                    Nguyên văn bởi dientu4u Xem bài viết
                    Xin hỏi module nRF24L01 thì có thể đạt được bao nhiêu m? Mình nghe nói Module SI432 có thể đạt được 1000m có đúng ko nhỉ? Mình chưa có điều kiện test mấy cái này, Pro nào dùng rồi thì trả lời giúp mình với.
                    Thanks!
                    nrf khoảng 80m - 120m... si khoảng 200 - 250m nếu config chuẩn ở 2400baud ... 9,6k khoảng ~120m.

                    nrf dùng strip line , si dùng anten 1/4 .
                    SI quảng cáo có độ nhạy khá tốt và công suất max +27dBm ... nhưng thực chất có nhiều phiên bản , lô sản xuất, nhiều nước sản xuất ... nhưng tổng kết lại thì không đạt các thông số như đã nêu trong datasheet. ( thạch anh khá hiếm )
                    Công suất thực tế chỉ đạt tới 50-60mW độ nhạy thu khiêm tốn.

                    --- dòng chip CC của Ti có độ nhạy khá tốt ... gần như chuẩn với thông số trong datasheet... được cái chip của bọn này hay chết bất đắc kỳ tử , Đang chạy lăn ra ... hoặc chết do quá nhiệt ( nếu không phải là máy chuyên hàn smd ) mà dùng khò thì ... cao thủ 10 ăn 8 ... đa phần chỉ 10 ăn 6 ... tay nghề mà không có thì 10 toi 9 ! (nói chung là không nên chơi )

                    --- Dòng ADF của phil thì khoai và khó nhằn ... phụ kiện chi chít , tính năng khiêm tốn ... kích thước vật vã !
                    --- Của maxim tốc độ thấp , cấu hình thanh ghi khó , mất nhiều lệnh cấu hình (không dùng được những mcu giao tiếp có bộ nhớ nhỏ vì thiếu bộ nhớ ), thạch anh độc

                    --- MRF của microchip thì có cả dạng chân ssop ... rất dễ hàn ( không sợ chết ) công suất thấp , độ nhạy chấp nhận, buffer ít và tốc độ thấp
                    --- Một số dòng MIC của micrel thì khả năng chịu nhiễu MCU khá kém nên thường bị giảm độ nhạy thu , thạch anh ở VN thì đừng mong có !


                    --- Mình liệt kê đa phần những dòng chip mình đã từng làm rồi đó ( còn một vài hãng nữa không cần kể thêm ) . Đa phần khoảng cách thường dưới 200m. (vì chẳng hãng nào nó dại mà đưa công suất vào ... vừa tốn điện , tốn diện tích ... lại cháy cái thì tèo cả đám luôn ) nên họ chỉ làm thế thôi . Công suất thường làm rời hoặc IC riêng.
                    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


                    • #11
                      Chào bác QD. theo em, con nrf không config baudrate được, chỉ chọn dc tốc độ 1Mbps, với 2 Mbps ở thanh ghi thôi. em cũng làm về con này rồi, truyền data cũng chỉ tầm 10-20m. Bác có cách nào nâng tầm lên xa như vậy cho em xin chỉ giáo nhé.
                      - Bảo trì, sửa chữa máy công nghiệp
                      - Thiết kế, chế tạo board mạch điện tử
                      - Mua bán, sửa chữa thiết bị test: Oscilloscope; Spectrum Analyzer...
                      - Dt: 0985205886 -

                      Comment


                      • #12
                        Nguyên văn bởi voicoi365 Xem bài viết
                        Chào bác QD. theo em, con nrf không config baudrate được, chỉ chọn dc tốc độ 1Mbps, với 2 Mbps ở thanh ghi thôi. em cũng làm về con này rồi, truyền data cũng chỉ tầm 10-20m. Bác có cách nào nâng tầm lên xa như vậy cho em xin chỉ giáo nhé.
                        con này không config thấp được ... những dòng như SI , MRF đều config được.

                        Tầm xa thì do tính chất môi trường mỗi chỗ mỗi khác ( bởi sóng ở tầm 2,4GHz dày lắm ( rất nhiều thiết bị dùng tần này )) ... bác có thể dùng anten ngoài anten của các bộ phát wifi ( dipole ) ... sẽ phát tốt hơn hẳn cái anten chip hoặc strip line !
                        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


                        • #13
                          Mô-đun MRF24J40MA bqv đã thử ở công viên Bách Thảo, kết quả được trên 100 m theo khá đúng mô tả của nhà sản xuất (400 feet tức 120 m). Dùng cái này với PIC khá dễ, chỉ cần hàn vài cái dây là xong, phần đặt cấu hình phần mềm mất công hơn một chút, nhưng cũng chỉ là đặt cấu hình, phần truyền tin nhà sản xuất đã làm hết cả rồi. Có 2 chế độ 256 Kbit/s (thường) và 625 Kbit/s (turbo).

                          Còn phải đi tìm ở đâu nữa ?
                          Phần mềm tự do hoặc không dùng máy tính nữa !.

                          Comment


                          • #14
                            Mình có ý thế này: anh em mình ai đã làm với module wireless nào mà thấy khoảng cách truyền và chất lượng như mong đợi, thì tham mưu cho anh em cùng làm với. Như mình dùng CYWM6935 mà giờ chỉ đc có 3m, chắc phải chuyển sang module khác xem thế nào, đang tìm kiếm đây.. haiza
                            |

                            Comment


                            • #15
                              Mà khổ cái mình ở Đà Nẵng nên mấy cái thứ này cũng ko có sẵn, cứ phải đặt hàng TPHCM /HN, mà mua có ít hàng quá thì cũng khó. Haiza
                              |

                              Comment

                              Về tác giả

                              Collapse

                              truongqt Tìm hiểu thêm về truongqt

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X