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

Collapse
This is a sticky topic.
X
X
 
  • Giờ
  • Show
Clear All
new posts
  • stevenboy
    Thành viên chính thức
    • Oct 2011
    • 41

    #571
    đăng nhập được nhưng chỉ đăng nhập 1 lần thôi mấy lần sau vô nó không bắt đang nhập nữa.

    cám ơn bạn mình cũng đưa dữ liệu lên được rồi. Đề tài mình người làm bạn mình thì nó làm về cảm biến hiển thị lên ra giá trị luôn nó gửi ủat wa nên mình chỉ cần xử lí số gửi wa thôi h thì ok rồi nhẹ cả người hehe.

    h còn xem địa chỉ WAN nữa. chỉ mới dk được ở mạng LAN chưa dk được trên internet. bạn làm được phần đó chưa
    Last edited by stevenboy; 20-03-2013, 18:49.

    Comment

    • yamailuk
      Thành viên tích cực
      • Nov 2010
      • 105

      #572
      Nguyên văn bởi stevenboy Xem bài viết
      đăng nhập được nhưng chỉ đăng nhập 1 lần thôi mấy lần sau vô nó không bắt đang nhập nữa.

      cám ơn bạn mình cũng đưa dữ liệu lên được rồi. Đề tài mình người làm bạn mình thì nó làm về cảm biến hiển thị lên ra giá trị luôn nó gửi ủat wa nên mình chỉ cần xử lí số gửi wa thôi h thì ok rồi nhẹ cả người hehe.

      h còn xem địa chỉ WAN nữa. chỉ mới dk được ở mạng LAN chưa dk được trên internet. bạn làm được phần đó chưa
      Thì config NAT cho modem là sử dụng được thôi

      Comment

      • lu_lu
        Thành viên mới
        • Mar 2013
        • 19

        #573
        Bác stevenboy ở đâu vậy? Có thể gặp nhau để hướng dẫn mình không? Bế tắc quá! để cái hàm httpInit() zô rồi! Mà vẫn đăng nhập không được!
        Bác có thể cho mình tham khảo cái Project của bác không?

        Comment

        • stevenboy
          Thành viên chính thức
          • Oct 2011
          • 41

          #574
          mình vào tới đây rồi mà ko biết cấu hình nó sao. Click image for larger version

Name:	wan.jpg
Views:	1
Size:	72.1 KB
ID:	1375876
          Click image for larger version

Name:	ip wan.jpg
Views:	1
Size:	61.6 KB
ID:	1375877

          Ai biết giúp mình với hix hix. từ internet vẫn chưa truy cập dc vào mạch.
          Last edited by stevenboy; 22-03-2013, 18:22.

          Comment

          • stevenboy
            Thành viên chính thức
            • Oct 2011
            • 41

            #575
            cái phần đăng nhập mình làm vẫn chưa dc nek

            Comment

            • lu_lu
              Thành viên mới
              • Mar 2013
              • 19

              #576
              Các bác xem dùm cái ds1307 này, mô phỏng ok,nhưng nạp thật không chạy! Có file proteus luôn!
              ds1307new.rar

              Comment

              • lu_lu
                Thành viên mới
                • Mar 2013
                • 19

                #577
                Trong hàm httpSend() có đoạn như sau:

                while(srcDataIdx < dataLen)
                {
                i = 0;
                while(i<MAX_SEGMENT_SIZE)
                {
                tmpChr = pgm_read_byte(progdata + srcDataIdx++);
                if(tmpChr == '%')
                {
                if( (i + 9) > MAX_SEGMENT_SIZE)
                {
                srcDataIdx--;
                break;
                }
                tmpVar = pgm_read_byte(progdata + srcDataIdx + 2) - 0x30;
                if((pgm_read_byte(progdata + srcDataIdx) == 'L') && (pgm_read_byte(progdata + srcDataIdx + 1) == 'D'))
                {
                if(LED1==1)
                {
                dataBuffer[i++] = ' ';dataBuffer[i++] = 'c';dataBuffer[i++] = 'h';dataBuffer[i++] = 'e';
                dataBuffer[i++] = 'c';dataBuffer[i++] = 'k';dataBuffer[i++] = 'e';dataBuffer[i++] = 'd';
                }
                srcDataIdx += 3;
                }
                }
                else
                {
                dataBuffer[i++] = tmpChr;
                }
                if(srcDataIdx==dataLen)
                {
                break;
                }
                }
                //================================================== ===
                Các bác cho em hỏi:
                Giả sử trong webpage của em như thế này:
                "<p align=\"left\"><input type=\"checkbox\" name=\"Led1\" value=\"ON\"%LD1>LED 1</p>"
                "<p align=\"left\"><input type=\"checkbox\" name=\"Led2\" value=\"ON\"%LD2>LED 2</p>"
                "<p align=\"left\"><input type=\"checkbox\" name=\"Led3\" value=\"ON\"%LD3>LED 3</p>"
                "<p align=\"left\"><input type=\"checkbox\" name=\"Led4\" value=\"ON\"%LD4>LED 4</p>"
                "<p align=\"left\"><input type=\"checkbox\" name=\"Led5\" value=\"ON\"%LD5>LED 5</p>"

                + Theo em hiểu thì nguyên tắc của phần này là: Đầu tiên tìm kí tự '%' trong dataBuffer, sau đó là tìm số thứ tự của các Led bằng cách tmpVar = pgm_read_byte(progdata + srcDataIdx + 2) - 0x30; Vậy tương ứng với Led1 biến tmpVar=1, Led1 -> tmpVar=2 . . . đúng không ạ? Vậy nếu dùng code trên thì có cần tạo ra biến tmpVar không ạ? Hay là xác định trực tiếp bằng cú pháp: if((pgm_read_byte(progdata + srcDataIdx) == 'L') && (pgm_read_byte(progdata + srcDataIdx + 1) == 'D')&& (pgm_read_byte(progdata + srcDataIdx + 1) == '1')) ???
                + Cái thứ hai em muốn hỏi là khi thay chuỗi "LD1" bằng chuỗi "checked" thì trên web nó sẽ tự hiểu và tự check vào cái checkbox của con Led tương ứng hay sao? Em vẫn chưa hiểu nguyên tắc hoạt động tương thích của cái hàm httpSend() với trang web???

                Comment

                • nttam79
                  Thành viên tích cực
                  • Feb 2009
                  • 152

                  #578
                  Nguyên văn bởi lu_lu Xem bài viết
                  + Theo em hiểu thì nguyên tắc của phần này là: Đầu tiên tìm kí tự '%' trong dataBuffer, sau đó là tìm số thứ tự của các Led bằng cách tmpVar = pgm_read_byte(progdata + srcDataIdx + 2) - 0x30; Vậy tương ứng với Led1 biến tmpVar=1, Led1 -> tmpVar=2 . . . đúng không ạ? Vậy nếu dùng code trên thì có cần tạo ra biến tmpVar không ạ? Hay là xác định trực tiếp bằng cú pháp: if((pgm_read_byte(progdata + srcDataIdx) == 'L') && (pgm_read_byte(progdata + srcDataIdx + 1) == 'D')&& (pgm_read_byte(progdata + srcDataIdx + 1) == '1')) ???
                  + Cái thứ hai em muốn hỏi là khi thay chuỗi "LD1" bằng chuỗi "checked" thì trên web nó sẽ tự hiểu và tự check vào cái checkbox của con Led tương ứng hay sao? Em vẫn chưa hiểu nguyên tắc hoạt động tương thích của cái hàm httpSend() với trang web???
                  Đoạn trên là do các bạn khác phát triển đấy nhé, ko phải từ code gốc. Tuy nhiên có thể trả lời vấn đề của bạn như vầy:
                  1-
                  Code:
                  if(tmpChr == '%')
                  ...
                  if((pgm_read_byte(progdata + srcDataIdx) == 'L') && (pgm_read_byte(progdata + srcDataIdx + 1) == 'D'))
                  Như vậy là trước tìm ký tự '%', sau đó tìm ký tự 'L' và 'D' của chuỗi "%LDx" (x=1,2,3,4)
                  tmpVar = pgm_read_byte(progdata + srcDataIdx + 2) - 0x30;
                  Vậy tmpVar = 1 nếu là "%LD1", ...

                  2-Chỗ này bạn coi qua ngôn ngữ HTML là hiểu liền, giải thích ngắn gọn thì như vầy:
                  <input type="checkbox" name="Led5" value="ON" checked/> là một ô checkbox (không có chữ kèm theo), với trạng thái được check.
                  <input type="checkbox" name="Led5" value="ON"/> là một ô checkbox , với trạng thái không check.
                  <p align="left">chuỗi</p> là một dòng canh lề trái, có nội dung là chuỗi.
                  Vậy thì <p align="left"><input type="checkbox" name="Led5" value="ON"/>LED 3</p> là 1 dòng trên đó có 1 ô check, bên phải là chữ LED 3.
                  Có vậy thôi, đó là cách các trang web được hiển thị, nếu muốn bạn có thể right-click trên trang web và chọn view source để xem code HTML.

                  Comment

                  • stevenboy
                    Thành viên chính thức
                    • Oct 2011
                    • 41

                    #579
                    còn phần địa chỉ WAn để điều khiển qua internet thì sao thầy. mong thầy giúp đỡ

                    Comment

                    • yamailuk
                      Thành viên tích cực
                      • Nov 2010
                      • 105

                      #580
                      Nguyên văn bởi stevenboy Xem bài viết
                      còn phần địa chỉ WAn để điều khiển qua internet thì sao thầy. mong thầy giúp đỡ
                      NAT là gì - Static, Dynamic và Overload NAT
                      Cách NAT port trên một số modem thông dụng ( sưu tầm internet) - Trung Tâm Đào Tạo Mạng Máy Tính Nhất Nghệ

                      Comment

                      • lu_lu
                        Thành viên mới
                        • Mar 2013
                        • 19

                        #581
                        Nguyên văn bởi nttam79 Xem bài viết
                        Đoạn trên là do các bạn khác phát triển đấy nhé, ko phải từ code gốc. Tuy nhiên có thể trả lời vấn đề của bạn như vầy:
                        1-
                        Code:
                        if(tmpChr == '%')
                        ...
                        if((pgm_read_byte(progdata + srcDataIdx) == 'L') && (pgm_read_byte(progdata + srcDataIdx + 1) == 'D'))
                        Như vậy là trước tìm ký tự '%', sau đó tìm ký tự 'L' và 'D' của chuỗi "%LDx" (x=1,2,3,4)
                        tmpVar = pgm_read_byte(progdata + srcDataIdx + 2) - 0x30;
                        Vậy tmpVar = 1 nếu là "%LD1", ...

                        2-Chỗ này bạn coi qua ngôn ngữ HTML là hiểu liền, giải thích ngắn gọn thì như vầy:
                        <input type="checkbox" name="Led5" value="ON" checked/> là một ô checkbox (không có chữ kèm theo), với trạng thái được check.
                        <input type="checkbox" name="Led5" value="ON"/> là một ô checkbox , với trạng thái không check.
                        <p align="left">chuỗi</p> là một dòng canh lề trái, có nội dung là chuỗi.
                        Vậy thì <p align="left"><input type="checkbox" name="Led5" value="ON"/>LED 3</p> là 1 dòng trên đó có 1 ô check, bên phải là chữ LED 3.
                        Có vậy thôi, đó là cách các trang web được hiển thị, nếu muốn bạn có thể right-click trên trang web và chọn view source để xem code HTML.
                        Thầy xem hộ cho em cái code này, em không biết tại sao nó vẫn chưa cập nhật được trạng thái các của Led1 và Led2! Mong thầy giúp đỡ!
                        ntAVRnet.rar

                        Comment

                        • yamailuk
                          Thành viên tích cực
                          • Nov 2010
                          • 105

                          #582
                          Nguyên văn bởi lu_lu Xem bài viết
                          Thầy xem hộ cho em cái code này, em không biết tại sao nó vẫn chưa cập nhật được trạng thái các của Led1 và Led2! Mong thầy giúp đỡ!
                          ntAVRnet.rar
                          Mình chưa xem code nhưng với những dấu hiệu bạn nêu ra thì chắc chắn là do code sai.
                          Như thầy đã giải thích thì muốn đưa trạng thái thì chỉ cần tìm %ADx và thay đổi nó
                          Như vậy có 2 việc cần làm:
                          + Lấy trạng thái thiết bị
                          + Thay đổi %AD
                          Theo như trên thì có thể nói rằng bạn chưa lấy được trạng thái thiết bị để đưa lên mà thôi.
                          Vậy vấn đề còn lại là lấy trạng thái chân điều khiển thiết bị đúng chưa?
                          Muốn kiểm tra được thì bạn phải hiểu cái trình dịch và ngôn ngữ bạn sử dụng? AVR Studio thì khác CodeVisionAVR, dùng C thì khác dùng ASM.
                          Còn muốn kiểm tra phương pháp bạn lấy trạng thái thì bạn printf nó ra UART và check.
                          Mình đoán là nó lấy sai thôi. Kiểm tra thì nó hơi ngược lại với điều khiển một chút hay nói cách khác bạn điều khiển được thì bạn phải lấy được nếu bạn biết viết code hoặc ít nhất bạn đọc hiểu code đó nếu không phải bạn viết.
                          Tinh thần của project này chỉ là giúp bạn truyền được thông tin qua mạng, các vấn đề liên quan sâu đến phần cứng theo mình bạn phải tự giải quyết như RTC DS1307 chẳng hạn trừ khi bạn làm phần cứng giống hệt thầy thì rất có thể thầy giúp được bạn

                          Theo mình bạn nên học hết 10 bài của trang này: http://www.hocavr.com
                          Cách đây 5 tháng mình cũng bắt đầu từ đây
                          Nhớ hồi đó mình toàn quen dùng 8051. Đến lúc học con này, cái nan giải cơ bản nhất mà mình mất nhiều thời gian nhất là làm sao điều khiển được 1 chân của nó và đọc được trạng thái chân đó. Mình nghĩ rất có thể bạn cũng đang chỉ mới tới gian đoạn này ( hơn 3 ngày mới tìm ra được). Hồi đó là làm điều khiển qua SMS, module sim 548 dùng giao tiếp UART nên mình phải viết từ UART đi lên, mô phỏng trên proteus, viết giao tiếp truyền được thông tin điều khiển được rồi, nhưng loay hoay mãi k dk được 1 chân vì toàn ví dụ port. Nên cứ thực hiện lệnh mới thì lại mất lệnh cũ. Rồi làm tiếp LCD, ADC, RTC theo gợi ý điều khiển theo nhiệt và hẹn giờ của thầy. Nói như vậy để thấy, không có cách nào đi từ ngọn xuống gốc đâu bạn ah. Và cái giao tiếp ethernet này là một cái ngọn rất cao.
                          Last edited by yamailuk; 27-03-2013, 01:11.

                          Comment

                          • lu_lu
                            Thành viên mới
                            • Mar 2013
                            • 19

                            #583
                            Ok, mình hiểu rồi! Tại vì mình gần báo cáo rồi, nên hơi gấp mà đốt cháy giai đoạn! Bắt tay vào lại từ đầu thôi, nhất định sẽ làm được!

                            Comment

                            • yamailuk
                              Thành viên tích cực
                              • Nov 2010
                              • 105

                              #584
                              Ai chưa hiểu về NAT thì xem lại cái này nhé:
                              VnPro - Bài Giảng Network Address Translation (Part 1).avi - YouTube!
                              VnPro - Bài Giảng Network Address Translation (Part 2).avi - YouTube
                              VnPro - Bài Giảng Network Address Translation (Part 3).avi - YouTube
                              VnPro - Bài Giảng Network Address Translation (Part 4).avi - YouTube

                              Comment

                              • lu_lu
                                Thành viên mới
                                • Mar 2013
                                • 19

                                #585
                                //========= Lay trang thai PORTD.0 ===========
                                #include <avr/io.h>
                                #include <util/delay.h>

                                #define sbi(sfr,bit) sfr|=_BV(bit)
                                #define cbi(sfr,bit) sfr&=~(_BV(bit))
                                #define IND PIND
                                #define LED1 PD1
                                #define LED2 PD2
                                unsigned int x;
                                int main(void)
                                {
                                DDRD=0xFE;
                                while(1)
                                {
                                x=(IND & 0x01);
                                if(x==0) {cbi(PORTD,LED2);sbi(PORTD,LED1);}
                                if(x==1) {sbi(PORTD,LED2);cbi(PORTD,LED1);}
                                }
                                }
                                //=========================================
                                Bác Yamailuk xem dùm em code lấy trạng thái thiết bị thế này có ổn không?
                                Kết quả như thế này:
                                Click image for larger version

Name:	TH1.jpg
Views:	1
Size:	100.1 KB
ID:	1376124
                                Click image for larger version

Name:	TH2.jpg
Views:	1
Size:	96.2 KB
ID:	1376125

                                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...