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

  • chikichita
    replied
    mạch rơle mình vẽ trực tiếp bằng layout luôn chứ không có vẽ mạch mạch nguyên lý, còn mạch giao tiếp internet thì mình lấy của anh huy cũng phải cắt dây đấu nối lại thì mới chạy được LCD và reset enc28j60. Click image for larger version

Name:	machrole.jpg
Views:	1
Size:	89.4 KB
ID:	1364093Click image for larger version

Name:	MACH ROLE2.jpg
Views:	1
Size:	59.5 KB
ID:	1364094
    điện trở thì dùng 2k2 nha
    còn cái nay là file pdf nếu bạn muốn in Free Cloud Storage - MediaFire
    Nguyên văn bởi nacdanh90 Xem bài viết
    Vâng! Em cảm ơn anh. anh có thể cho em xin mạch nguyên lý bằng file ảnh ko ạ? Em ko dùng orcad nên ko xem đc file max

    Leave a comment:


  • chikichita
    replied
    ôi vui quá thầy trở lại rồi. Dạ em cám ơn thầy nhiều, mấy bữa nay đang loay hoay không biết up thế nào, dạ em cám ơn thầy nhiều, !!!!!!!!!!

    Nguyên văn bởi nttam79 Xem bài viết
    Để cập nhật nút check và thực thi các điều khiển được submit trên web, phải viết thêm phần này vào trong hàm xử lý http request.

    Leave a comment:


  • gacon2012
    replied
    Thầy cho em hỏi tí, muốn làm cái web đó thì làm sao ạ, em là dân điện nên không rành cái này. nếu được thầy làm một hướng dẫn cụ thể về cách làm web và lập trình giao tiếp được không ạ.

    Leave a comment:


  • vuxuansyhut
    replied
    Chào thày Tâm và các bác. Lâu rồi không quay lại luồng này,giờ đọc thấy mấy chỗ khó hiểu quá. Xin thày và bác chỉ giúp.
    1 - Ở trong lưu đồ nói về phần giao thức TCP, nếu server đang ở trạng thái TCP_STATE_LISTEN, nếu nó nhận được SYN nó sẽ chuyển sang trạng thái TCP_STATE_SYN_RECEIVED và gửi trả ack=seq(client)+1, trong giai đoạn trao đổi dữ liệu TCP_STATE_ESTABLISHED thì ack=seq(client), các bác giúp em xem khi nào thì giá tri ack=seq(client)+1, khi nào thì ack=seq(client).
    2 -trên lưu đồ có chú thích "Receive ACK of FIN" làm sao xác đinh được ACK đó là cho FIN trong giai đoạn 1 bên kết thúc trao đổi dữ liệu còn bên kia vẫn còn
    3 -Tại sao tcpSessionTable[i].srcWin = 8192 mà không phải giá trị khác hay giá trị NETSTACK_BUFFERSIZE bằng bao nhiêu. Em vẫn chưa xác định được
    4 - Nếu có giá trị tcpSessionTable[i].srcWin = 8192 rồi thì có nghĩa là mỗi khi client nhận được 8192 byte thì mới reply xác nhận cho sever biết, em hiểu như vậy không biết có đúng không. Nếu như vậy thì việc kiểm tra sô byte nhận được và reply là do client tính toán và gửi, nhưng trong giao thức HTTP gói tin sẽ đực chia nhỏ thành các đoạn có độ dài MSS byte. Theo cách nghĩ của em thì MSS byte này nếu không là ước của srcWin thì khi client trả lời sẽ lệch thông số với sever gửi. Trên code của thày Tâm viết cho sever cũng không thấy có đoạn xử lý này.
    Mong mọi người giải thích giúp em.
    Click image for larger version

Name:	132059468668341955_574_0.jpg
Views:	1
Size:	33.5 KB
ID:	1364062
    Click image for larger version

Name:	13205946801524902164_574_0.jpg
Views:	1
Size:	45.8 KB
ID:	1364063
    Click image for larger version

Name:	13205946892141986815_574_0.jpg
Views:	1
Size:	25.3 KB
ID:	1364064
    Click image for larger version

Name:	1320595248352789218_574_0.jpg
Views:	1
Size:	69.2 KB
ID:	1364066
    Last edited by vuxuansyhut; 19-07-2012, 18:39.

    Leave a comment:


  • nttam79
    replied
    Nguyên văn bởi chikichita Xem bài viết
    mọi người giúp mình với
    MOV01484 - YouTube
    sao làm sao để cập nhật nút check vào checkbox đây, bạn xem video rùi cho mình cách sửa với, làm sao cập nhật wed về vào RAm để trang khác truy cập vào cũng có thể biết được nút đó đã check hay chưa vậy.
    MOV01487 - YouTube
    Để cập nhật nút check và thực thi các điều khiển được submit trên web, phải viết thêm phần này vào trong hàm xử lý http request.

    Leave a comment:


  • nacdanh90
    replied
    Nguyên văn bởi chikichita Xem bài viết
    gửi bạn nacdanh90 mình có làm mạch role và test chạy tren bo minh rồi ổn định lắm, nếu bạn còn bị vấn đề role thì dùng thử nha

    mach role
    MACH ROLE.MAX
    chuong trinh
    ntAVRnet.rar
    Vâng! Em cảm ơn anh. anh có thể cho em xin mạch nguyên lý bằng file ảnh ko ạ? Em ko dùng orcad nên ko xem đc file max

    Leave a comment:


  • chikichita
    replied
    mọi người giúp mình với
    MOV01484 - YouTube
    sao làm sao để cập nhật nút check vào checkbox đây, bạn xem video rùi cho mình cách sửa với, làm sao cập nhật wed về vào RAm để trang khác truy cập vào cũng có thể biết được nút đó đã check hay chưa vậy.
    MOV01487 - YouTube

    Leave a comment:


  • chikichita
    replied
    gửi bạn nacdanh90 mình có làm mạch role và test chạy tren bo minh rồi ổn định lắm, nếu bạn còn bị vấn đề role thì dùng thử nha

    mach role
    MACH ROLE.MAX
    chuong trinh
    ntAVRnet.rar

    Nguyên văn bởi nacdanh90 Xem bài viết
    Role em nối dây từ mạch ra chứ ko hàn vào mạch. Cách nối giống sơ đồ của a cho em xem đó. Chỉ khác là e thay c1815 bằng ULN2803.

    Leave a comment:


  • dhp11591
    replied
    Oh, em xin lỗi, em khai báo eth_got_frame vào enc28j60 nhưng quên k xóa giá trị khởi tạo của nó

    Leave a comment:


  • dhp11591
    replied
    Các anh ơi, em dùng AVRstudio làm project y như thầy Tâm post, em làm xong ICMP rồi, nhưng khi build project thì trình dịch báo lỗi multiple definition of 'eth_got_frame' trong 2 file là enc28j60.c và ethernet.c.
    Trong bài thầy hướng dẫn declare 'eth_got_frame' trong enc28j60.c, em đã khai báo extern biến này trong tất cả các file cần đến nó.
    Các anh chỉ cho em lỗi sai với
    Attached Files

    Leave a comment:


  • chikichita
    replied
    làm thế nào để cập nhật wed mới nhận được lên đây và lưu trong RAM luôn, hixhix mọi người giúp em với

    else if(httpSessionTable[i].rqst.method == HTTP_REQUEST_POST)
    {
    //Update POST data
    if(findstr(PSTR("CTRL=Submit"),buffer,bufferLen) != -1) //SUB
    {
    //Send HTTP data
    HTTPSend(http_pageheader_ok,sizeof(http_pageheader _ok)-1,pSession,0);
    //them vao
    if(findstr(PSTR("RELAY1=ON"),buffer,bufferLen) != -1) sbi(PORTC,2);
    else cbi(PORTC,2);
    if(findstr(PSTR("RELAY2=ON"),buffer,bufferLen) != -1) sbi(PORTC,3);
    else cbi(PORTC,3);
    if(findstr(PSTR("RELAY3=ON"),buffer,bufferLen) != -1) sbi(PORTC,4);
    else cbi(PORTC,4);
    if(findstr(PSTR("RELAY4=ON"),buffer,bufferLen) != -1) sbi(PORTC,5);
    else cbi(PORTC,5);
    if(findstr(PSTR("RELAY5=ON"),buffer,bufferLen) != -1) sbi(PORTC,5);
    else cbi(PORTC,6);
    if(findstr(PSTR("RELAY6=ON"),buffer,bufferLen) != -1) sbi(PORTC,7);
    else cbi(PORTC,7);
    //het them
    HTTPSend(Page1,sizeof(Page1)-1,pSession,1);
    httpSessionTable[i].status = HTTP_STATUS_IDLE;

    return;
    }
    else if(findstr(PSTR("APPLY=Apply"),buffer,bufferLen) != -1)
    {
    HTTPSend(http_pageheader_ok,sizeof(http_pageheader _ok)-1,pSession,0);
    HTTPSend(Page1,sizeof(Page1)-1,pSession,1);
    httpSessionTable[i].status = HTTP_STATUS_IDLE;
    }
    else
    {
    HTTPSend("",0,pSession,0);
    }
    }

    Leave a comment:


  • chikichita
    replied
    có ai giải thích giúp mình đoạn sizeof(Page1) - 1 được không sao lâu ko thấy ai commend nữa nhỉ,chán thiệt.
    HTTPSend(Page1,sizeof(Page1)-1,pSession,1);

    không biết làm thế nào để điền dấu check vào để hiện thị lên wed nữa.

    Leave a comment:


  • chikichita
    replied
    bạn nào hiểu đoạn này không giải thích dùm mình với

    Nguyên văn bởi nttam79 Xem bài viết
    Lâu nay bận công việc gia đình và cơ quan nhiều quá nên bỏ rơi Thread, nay rảnh rỗi chút lại trả lời mọi người tiếp nhé:
    1-Được, cách thực hiện còn tùy bạn điều xung bằng Timer hay vòng lặp,...
    2-Thuật toán điều khiển relay hay led gì đó như sau:
    Khi máy tính tải nội dung trang web về trình duyệt, trên trang web đó sẽ có 1 đoạn code HTML mô tả một nút bấm hoặc 1 nút check, ví dụ:

    Code:
    <form method="post" action="">
      <p align="left"><input type="checkbox" name="OUT" value="C" checked>Aqua Lamp</p>
      <p align="left"><input type="checkbox" name="OUT" value="B">Filter</p>
      <p align="left"><input type="checkbox" name="OUT" value="A">Chiller</p>
      <p align="left"><input type="checkbox" name="OUT" value="D">Cooler Fan</p>
      <p align="left"><input type="submit" value="Submit" name="SUB"></p>
    </form>
    Đoạn code trên sẽ tạo ra 1 form gồm có 4 nút check (type="checkbox") và text hiển thị bên cạnh tương ứng là:Aqua Lamp,Filter,Chiller,Cooler Fan. Dòng nào có từ khóa checked là check box đó đang được chọn.

    Đoạn code trên cũng qui định các input mà người dùng nhập vào (giá trị ô check) sẽ được gửi trả lại cho webserver bằng phương thức http post (method="post").
    Sau khi ta đánh dấu vào các ô và nhấn nút Submit, máy tính sẽ gửi đến webserver 1 bản tin http post với giá trị của các ô check được chứa trong phần body của bản tin post (xem lại cấu trúc bản tin http post ở phần trước.
    Như vậy trong chương trinh trên AVR, ở đoạn code xử lý bản tin http nhận được (hàm httpDataIn ta cần xử lý bản tin này. Cụ thể trong đoạn code cho trường hợp bản tin là http post (else if(httpSessionTable[i].rqst.method == HTTP_REQUEST_POST)), ta cần đọc nội dung bản tin, tìm kiếm các giá trị: OUT=A (Relay 1); OUT=B (Relay 2); OUT=C (Relay 3); OUT=D (Relay 4); (OUT là trường name của code HTML của ô check, A,B,C,D là trường value). Khi thấy giá trị tương ứng thì ta đóng ngắt re lay tương ứng thôi.

    Leave a comment:


  • chikichita
    replied
    hichic dang tính hỏi, với lại chương trình kiểm tra mã sao mình nhập mã mà nó không vào dc vậy ta
    Nguyên văn bởi wind-gon Xem bài viết
    có ai đưa trạng thái ON-OFF của thiết bị hiện thị lên web page được không?

    Leave a comment:


  • wind-gon
    replied
    có ai đưa trạng thái ON-OFF của thiết bị hiện thị lên web page được không?

    Leave a 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