Thông báo

Collapse
No announcement yet.

Giao thức TCP/IP và Web server với AVR

Collapse
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Nguyên văn bởi hieppro89 Xem bài viết
    Lâu lắm box ko có sự kiện gì mới, cơ bản là Thầy cũng bận,cuối kì rùi
    các bạn chắc cũng đang ôn thi
    mình cũng đang ôn thi, mà còn phải liên hệ tìm công ty thực tập
    năm cuối rùi mà, đang háo hức đi làm
    coi như project này của thầy là project cuối cùng về mảng AVR mình ngâm cứu 2 năm qua
    phía trc còn nhìu mảng hay lắm, còn nhìu dòng vi điều khiển đang chờ khai phá
    hôm nay,lên 4rum thấy Thầy trả lời câu hỏi của 1 bạn thấy vui vui rồi
    quyết định quay lại project,viết tiếp code LCD và code ADC cho Thầy và các bạn phấn khởi đầu năm mới
    anh Huy pro hứa là em làm xong 2 phần này, anh sẽ lo phần còn lại, gửi ADC lên Website
    mong Thầy và các bạn giúp đỡ mảng này

    Báo cáo kết quả đạt được sau 2 tháng: từ 1/11 tới 1/1/2012
    Báo cáo Thầy, sau 2 tháng ngâm cứu, em đã đạt được những kết quả sau:

    1.Nắm vững cách thức hoạt động của mô hình TCP/IP Ver4

    2.lập trình và mô phỏng mạch bằng proteus

    3. ping đến mạch, truy cập qua LAN

    4.có khả năng tự tìm IP thông qua internet

    5.thiết lập tên miền web miễn phí: duydt2.tk

    6.cấu hình cho Modem để có thể truy cập qua mạng internet

    7. truy cập qua WAN ok

    Ngay từ bây giờ, bất cứ khi nào online Thầy, và các bạn cũng có thể truy cập vô duy dt2 k3

    Server nằm ngay trên mạch Proteus Thầy ạ

    Nhưng cũng có cái chưa được, cần thêm thời gian:

    1. Chưa khắc phục được bệnh IP động của Modem nhà mình

    --->mỗi lần IP của Modem thay đổi lại phải thay đổi lại đường dẫn của domain: duydt2.tk

    quá trình như sau: user--->duydt2.tk---->IP public của Modem------->IP cục bộ của board mạch

    nhưng vì lý do IP public của Modem là động( mình ko thể cấu hình tĩnh vì lý do ADSL ko hỗ trợ, em đã thử và mất mạng cả xóm)

    nên mỗi khi thay đổi IP lại phải sửa lại khâu duydt2.tk---->IP public của Modem

    2..điều khiển đèn led qua internet(có mấy cái ô check điều khiển Relay,kích vô rồi nhấn Sumit là led sáng hoặc tắt)

    4.gửi dữ liệu lên web(gửi nhiệt độ tử Board mạch lên Website)


    Thưa Thầy, trên đây là những điều đã đạt được và những điều chưa được

    gửi Thầy và các bạn toàn bộ Project
    phần mô phỏng các bạn down WinPcap về cài
    phần mềm hỗ trợ NIC mạng ảo cho proteus
    kích đúp vô con ENC28J60 chọn Network Card No là 1
    và chạy thui
    đây là giao diện Web của mình, sửa lại ít của Thầy, he he

    không biết post file lên diễn đàn kiểu gì mà hok dc
    các bạn dùng tạm link này vậy!
    ntAVRnet.rar - 4shared.com - online file sharing and storage - download
    Best Regards!
    mọi người. ai đã down tài liệu của anh hieppro89 up ở trên thì cho em xin với. link trên không down được nữa rồi.
    Có ai có thể hướng dẫn em mô phỏng mạch của thầy nttam79 trong proteus, sau đó có thể test vào Server nằm ngay trên mạch Proteus (giống ý tưởng của anh hieppro89) không?. Vì điều kiện của em chưa có thể làm được mạch thật.
    Cảm ơn mọi người!

    Comment


    • Huhu, cầu cứu khẩn cấp: xin các thầy, các anh chỉnh hộ em cái code và mạch này với. Mục đích code này là giao tiếp với XRAM 62256 qua 74HC573. Theo như em nhận định (đã thử bằng nhiều cách) thì đọc ra từ XRAM đã OK nhưng ghi vào thì chưa được nên những ô nhớ em đọc (đáng ra là đã được ghi bằng chữ 'a') đều là 255 (chuỗi bit 1, hình như là mặc định của XRAM).
      Đây là code và mạch proteus của em: XRAM.7z
      Em cũng post luôn code lên, biết đâu, lỗi của em dễ dàng đc tìm ra
      (Nhưng mà file XRAM.7z cũng chỉ 28kbyte thui mà ) )
      (Vì hình vượt giới hạn cảu 4rum nên em không post được ạ)

      Code:
      #include <stdio.h>
      #include <avr/io.h>
      #include "usart.h"
      #include <stdlib.h>
      #include <string.h>
      
      void XRAM_init()
      {
      	MCUCR |= (1<<SRW10);
      	XMCRB |= (1<<XMBK) | (1<<XMM0);
      	MCUCR |= (1<<SRE);
      }
      
      int main()
      {
      	XRAM_init();
      	usart_init();
      	
      	unsigned char *p;
      	
      	__malloc_heap_start = (char*)0x8000;
      	__malloc_heap_end = (char*)0x80FF;
      
      	if((p = (unsigned char*)malloc(13)) == NULL)
      	{
      		usart_char_tx('e');
      		return 0;
      	}
      	
      	strcpy((char*)p, "Dao Huu Phuc");
      	/*
      	for(unsigned char i = 0; i < 13; i++)
      		p[i] = 'a';
      	*/
      	for(unsigned char i = 0; p[i] != '\0'; i++)
      		usart_char_tx(p[i]);
      	
      	free(p);
      	return 0;
      }
      Em cảm ơn các thầy và các anh nhiều lắm lắm

      Comment


      • Nguyên văn bởi shadow_084 Xem bài viết
        mọi người. ai đã down tài liệu của anh hieppro89 up ở trên thì cho em xin với. link trên không down được nữa rồi.
        Có ai có thể hướng dẫn em mô phỏng mạch của thầy nttam79 trong proteus, sau đó có thể test vào Server nằm ngay trên mạch Proteus (giống ý tưởng của anh hieppro89) không?. Vì điều kiện của em chưa có thể làm được mạch thật.
        Cảm ơn mọi người!
        Mình cũng là rân tập sự nên việc đầu tiên bao giờ cũng là mô phỏng, vì mô phỏng mà không OK thì thực tế không thể chạy được.
        Mình đã mô phỏng được project của thầy bằng ATmega32 và ATmega128 trên Proteus. Đơn giản lắm bạn ah, cứ vẽ mạch theo mạch của thầy, nhưng cái ENC28J60 thì không cần nối cổng RJ45 (càng đỡ sai ).

        Rồi đặt card mạng cho ENC28J60, nếu bạn nối máy tính với modem qua cổng Fast Ethernet thì đặt card mạng là 0, nếu nối qua cổng USB thì đặt là 1. Xong thì tận hưởng sự bá đạo của Proteus đê . Vô trình duyệt gõ cái IP hiện trên Virtual Terminal là thấy ngay con cún của thầy
        Là 1 tín đồ của Proteus, em xin quảng cáo chút: trong Sample của nó, trong ARM có 1 mạch mô phỏng việc cài Linux vào ARM, lúc chạy đợi nó load OS xong là gõ lệnh như thật luôn. Em trẻ người non dạ, choáng luôn @@

        Comment


        • hiện e đang có 1 project nho nhỏ, mong anh tâm và mọi người cho hướng phát triển:
          Hiện bài toán của e đang cần truyền dữ liệu với tốc độ lớn hơn 1Mbyte/s. cụ thể là e cần truyền khoảng 1024 byte( hoặc hơn) trong mỗi khoảng thời gian là 1ms, máy tính sẽ thu nhận và xử lý số byte đó trong vòng 1ms đó ( cviệc này do phần mềm máy tính làm). e đã từng ngcứu giao tiếp usb nhưng vẫn chưa thấy hiệu quả do host làm chủ bus trong những khoảng tgian xác định, ko phù hợp với bài toán này. e đang tíinh chuyển qua giao tiếp tcp.ip (lớp giao thức udp) để thực hiện truyền dữ liệu lên máy tính( e dùng fpga để truyền dữ liệu). A Tam và mọi người cho e ý kiến nhé!

          Comment


          • Nguyên văn bởi dhp11591 Xem bài viết
            Mình cũng là rân tập sự nên việc đầu tiên bao giờ cũng là mô phỏng, vì mô phỏng mà không OK thì thực tế không thể chạy được.
            Mình đã mô phỏng được project của thầy bằng ATmega32 và ATmega128 trên Proteus. Đơn giản lắm bạn ah, cứ vẽ mạch theo mạch của thầy, nhưng cái ENC28J60 thì không cần nối cổng RJ45 (càng đỡ sai ).

            Rồi đặt card mạng cho ENC28J60, nếu bạn nối máy tính với modem qua cổng Fast Ethernet thì đặt card mạng là 0, nếu nối qua cổng USB thì đặt là 1. Xong thì tận hưởng sự bá đạo của Proteus đê . Vô trình duyệt gõ cái IP hiện trên Virtual Terminal là thấy ngay con cún của thầy
            Là 1 tín đồ của Proteus, em xin quảng cáo chút: trong Sample của nó, trong ARM có 1 mạch mô phỏng việc cài Linux vào ARM, lúc chạy đợi nó load OS xong là gõ lệnh như thật luôn. Em trẻ người non dạ, choáng luôn @@
            Anh hướng dẫn em cụ thể hơn về phần "đặt card mạng cho ENC28J60, nếu bạn nối máy tính với modem qua cổng Fast Ethernet thì đặt card mạng là 0, nếu nối qua cổng USB thì đặt là 1" này với! Em click vào con ENC28j60 mà không thầy phần chọn đó. Hình em để ở dướiClick image for larger version

Name:	untitled.PNG
Views:	1
Size:	21.1 KB
ID:	1367351.
            Cảm ơn anh nhiều!

            Comment


            • Hix, bị gọi là anh nghe già quá
              Cái dòng mà bạn điền IP đó, bạn thay bằng 0(nếu nối bằng dây USB) hoặc 1(nếu nối bằng dây ethernet), còn wifi thì mình hem có bik
              Thực ra ghi IP vào cũng được, bạn điền vào IP LAN của máy bạn (IP mà DHCP server của modem cấp cho NIC của bạn đó). Chắc bạn cũng làm đc rùi p k?

              Huhu, mình đang rối như gà mắc dây ni lông đây, con ATmega128 từ lúc mua về chạy không ổn định, dùng cái mạch nạp USB ISP mà lúc đọc đc signal, lúc thì không, lúc không thì thử UART cũng ra chữ Ai Cập @@

              Xin các pro ra tay cứu vớt

              Comment


              • Nguyên văn bởi dhp11591 Xem bài viết
                Hix, bị gọi là anh nghe già quá
                Cái dòng mà bạn điền IP đó, bạn thay bằng 0(nếu nối bằng dây USB) hoặc 1(nếu nối bằng dây ethernet), còn wifi thì mình hem có bik
                Thực ra ghi IP vào cũng được, bạn điền vào IP LAN của máy bạn (IP mà DHCP server của modem cấp cho NIC của bạn đó). Chắc bạn cũng làm đc rùi p k?

                Huhu, mình đang rối như gà mắc dây ni lông đây, con ATmega128 từ lúc mua về chạy không ổn định, dùng cái mạch nạp USB ISP mà lúc đọc đc signal, lúc thì không, lúc không thì thử UART cũng ra chữ Ai Cập @@

                Xin các pro ra tay cứu vớt
                Uây, mừng quá. Đúng phần em đang tìm hiểu. Trước hết muốn gửi lời Thank đến anh Tâm và các bạn thật nhiều nhé.
                Em đang theo dõi thớt này hơn 2 ngày nay rồi (lội từ page 1 đến page 52 luôn) - tất nhiên chỉ là cưỡi ngựa xem hoa thôi, chưa bắt tay vào làm chi tiết (chắc sáng mai sẽ bắt đầu với mạch mô phỏng ^^)

                Các bác thông cảm cho em làm phát comment này cho thớt nó ngoi lên cái, để những bạn nào bây giờ mới bắt đầu làm thấy đựoc còn vào làm cùng cho vui (debug cũng tiện ^^!) hoặc may mắn có các pro đi qua ngó vào thầy mấy câu hỏi gà gà lại ngứa tay cứu giúp thì tốt biết mấy

                Tiện đây em cũng xin hỏi tiếp câu hỏi của bạn shadow_084 ở trên là có bác nào down được tài liệu của bác hieppro89 không thì up lại lên cho em với ạ. Link kia die thật rồi

                Một lần nữa gửi lời thank đến các bác và chúc sức khỏe

                Comment


                • thread bữa nay sao ko có gì mới hết nhỉ,

                  Điện tử viễn thông - Hutech

                  Comment


                  • mạch dùng ATMEGA128 kích thước 5,5x10 cm Click image for larger version

Name:	2.jpg
Views:	1
Size:	310.5 KB
ID:	1368747

                    Điện tử viễn thông - Hutech

                    Comment


                    • Nguyên văn bởi chikichita Xem bài viết
                      mạch dùng ATMEGA128 kích thước 5,5x10 cm [ATTACH=CONFIG]54342[/ATTACH]
                      Mạch này làm chức năng gì ạ? Nếu em dùng chíp dán hết thì giá khoảng bao nhiêu ạ?

                      Hix, dạo này vừa bận lại vừa bệnh, nên h mới viết xong SIP cho UA, không biết có đúng không nên em muốn thử. Em nghe nói có thể cài cái X-Lite Asterisk trên máy ảo Linux để thử nhưng hem có bít down ở đâu, cài ntn?
                      Xin các cao thủ, đại cao thủ, tuyệt đại cao thủ, thiên ngoại cao thủ, ... phán vài câu thâm thúy để em luận dần
                      Em tks các thầy, các anh nhiều lắm lắm ...

                      Comment


                      • Trình duyệt không gửi bản tin HTTP !??!?

                        Hix, hu ... Các anh ơi, em đang gặp 1 vấn đề mà em nghĩ mãi không ra, xin các anh gợi ý:

                        Em làm mạch như của thầy với ATmega128, rồi viết thêm giao thức SIP cho nó nữa. Chạy mô phỏng vào thử web rất là OK. Nhưng vấn đề là khi cắm mạch thật vào thì nó cũng nhận IP, cũng ping bình thường nhưng lại không vào được web .
                        Em dùng wireshark để "khám", thấy thế này: khi dùng trình duyệt vào web của mạch mô phỏng thì có bản tin HTTP bình thường => vào được, nhưng khi vào web mạch thật thì trình duyệt chỉ gửi bản tin TCP thôi ạ @@!

                        Các anh giúp em với. Em cảm ơn các anh ạ.

                        Comment


                        • Em chào thầy, em có tham khảo project của thầy để làm webserver trên board DE2. Em không thể nào hoàn thành được 3 bước bắt tay cho giao thức TCP.
                          Dùng wireshark kiểm tra các gói tin thì cũng không biết lỗi ở chỗ nào, dưới đây là 2 gói SYN và SYN,ACK. Thầy xem giúp em có lỗi nào k ạ.

                          Code:
                          No.     Time        Source                Destination           Protocol Length Info
                                4 2.391813    192.168.1.3           192.168.1.2           TCP      74     39458 > http [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=3276993 TSecr=0 WS=16
                          
                          Frame 4: 74 bytes on wire (592 bits), 74 bytes captured (592 bits)
                          Ethernet II, Src: AsustekC_30:80:a2 (f4:6d:04:30:80:a2), Dst: DavicomS_11:02:0f (01:60:6e:11:02:0f)
                          Internet Protocol Version 4, Src: 192.168.1.3 (192.168.1.3), Dst: 192.168.1.2 (192.168.1.2)
                              Version: 4
                              Header length: 20 bytes
                              Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
                              Total Length: 60
                              Identification: 0xe8f7 (59639)
                              Flags: 0x02 (Don't Fragment)
                              Fragment offset: 0
                              Time to live: 64
                              Protocol: TCP (6)
                              Header checksum: 0xce6e [correct]
                              Source: 192.168.1.3 (192.168.1.3)
                              Destination: 192.168.1.2 (192.168.1.2)
                          Transmission Control Protocol, Src Port: 39458 (39458), Dst Port: http (80), Seq: 0, Len: 0
                              Source port: 39458 (39458)
                              Destination port: http (80)
                              [Stream index: 0]
                              Sequence number: 0    (relative sequence number)
                              Header length: 40 bytes
                              Flags: 0x02 (SYN)
                              Window size value: 14600
                              [Calculated window size: 14600]
                              Checksum: 0x8384 [validation disabled]
                              Options: (20 bytes)
                                  Maximum segment size: 1460 bytes
                                  TCP SACK Permitted Option: True
                                  Timestamps: TSval 3276993, TSecr 0
                                      Kind: Timestamp (8)
                                      Length: 10
                                      Timestamp value: 3276993
                                      Timestamp echo reply: 0
                                  No-Operation (NOP)
                                  Window scale: 4 (multiply by 16)
                          
                          0000   01 60 6e 11 02 0f f4 6d 04 30 80 a2 08 00 45 00  .`n....m.0....E.
                          0010   00 3c e8 f7 40 00 40 06 ce 6e c0 a8 01 03 c0 a8  .<..@.@..n......
                          0020   01 02 9a 22 00 50 d8 2c e8 36 00 00 00 00 a0 02  ...".P.,.6......
                          0030   39 08 83 84 00 00 02 04 05 b4 04 02 08 0a 00 32  9..............2
                          0040   00 c1 00 00 00 00 01 03 03 04                    ..........



                          Code:
                          No.     Time        Source                Destination           Protocol Length Info
                                5 2.395242    192.168.1.2           192.168.1.3           TCP      62     http > 39458 [SYN, ACK] Seq=0 Ack=1 Win=2800 Len=0 MSS=1400 WS=1
                          
                          Frame 5: 62 bytes on wire (496 bits), 62 bytes captured (496 bits)
                          Ethernet II, Src: DavicomS_11:02:0f (01:60:6e:11:02:0f), Dst: AsustekC_30:80:a2 (f4:6d:04:30:80:a2)
                          Internet Protocol Version 4, Src: 192.168.1.2 (192.168.1.2), Dst: 192.168.1.3 (192.168.1.3)
                              Version: 4
                              Header length: 20 bytes
                              Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
                              Total Length: 48
                              Identification: 0x0000 (0)
                              Flags: 0x00
                              Fragment offset: 0
                              Time to live: 128
                              Protocol: TCP (6)
                              Header checksum: 0xb772 [correct]
                              Source: 192.168.1.2 (192.168.1.2)
                              Destination: 192.168.1.3 (192.168.1.3)
                          Transmission Control Protocol, Src Port: http (80), Dst Port: 39458 (39458), Seq: 0, Ack: 1, Len: 0
                              Source port: http (80)
                              Destination port: 39458 (39458)
                              [Stream index: 0]
                              Sequence number: 0    (relative sequence number)
                              Acknowledgement number: 1    (relative ack number)
                              Header length: 28 bytes
                              Flags: 0x12 (SYN, ACK)
                              Window size value: 2800
                              [Calculated window size: 2800]
                              Checksum: 0x6e24 [validation disabled]
                              Options: (8 bytes)
                                  Maximum segment size: 1400 bytes
                                  No-Operation (NOP)
                                  Window scale: 0 (multiply by 1)
                              [SEQ/ACK analysis]
                                  [This is an ACK to the segment in frame: 4]
                                  [The RTT to ACK the segment was: 0.003429000 seconds]
                          
                          0000   f4 6d 04 30 80 a2 01 60 6e 11 02 0f 08 00 45 00  .m.0...`n.....E.
                          0010   00 30 00 00 00 00 80 06 b7 72 c0 a8 01 02 c0 a8  .0.......r......
                          0020   01 03 00 50 9a 22 12 34 00 00 d8 2c e8 37 70 12  ...P.".4...,.7p.
                          0030   0a f0 6e 24 00 00 02 04 05 78 01 03 03 00        ..n$.....x....

                          Comment


                          • em tìm ra lỗi rồi, do tcp checksum sai. quần hơn 1 ngày mới ra được.

                            Comment


                            • mới tìm dc modem hỗ trợ no-ip rồi các bác thích thì mua về làm điều khiển qua internet nha,
                              Làm sao để thiết lập DDNS (No-IP) trên Wireless Router của TP-LINK - Chào mừng đến với TP-LINK

                              Điện tử viễn thông - Hutech

                              Comment


                              • mới tìm dc modem hỗ trợ no-ip rồi các bác thích thì mua về làm điều khiển qua internet nha, loại này của TP-link cũng ko max đâu có 120k ah hehe
                                Làm sao để thiết lập DDNS (No-IP) trên Wireless Router của TP-LINK - Chào mừng đến với TP-LINK

                                Điện tử viễn thông - Hutech

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X