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

  • đă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, 19:49.

    Comment


    • 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


      • 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


        • 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, 19:22.

          Comment


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

            Comment


            • 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


              • 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


                • 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


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

                    Comment


                    • 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


                      • 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


                        • 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, 02:11.

                          Comment


                          • 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


                            • //========= 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

                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

                                Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
                                hôm nay, 14:51
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

                                Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
                                hôm nay, 14:39
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

                                Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
                                hôm nay, 14:28
                              • bqviet
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi bqviet
                                Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
                                Hôm qua, 20:26
                              • mèomướp
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi mèomướp
                                Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
                                Hôm qua, 12:32
                              • vi van pham
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi vi van pham
                                Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                                Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                                20-02-2025, 21:31
                              • bqviet
                                Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                                bởi bqviet
                                Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
                                20-02-2025, 17:22
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Tiếng Anh, Đình Thường phải nói là rất tệ, khiến việc giao tiếp đời thường thôi cũng khó chứ nói gì về kĩ thuật.

                                Nhân tiện, nhờ các bạn, các bác xem giúp thư ĐT viết thế này liệu có thể gửi tới địa chỉ nhận hay chăng,...
                                20-02-2025, 11:52
                              • vi van pham
                                Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                                bởi vi van pham
                                Uống rượu 1 mình, thấy trang này nhớ lại cách đây vài chục năm hàn thiếc với inox cực kỳ khó, phải dùng acid Hcl tác dụng lên kẻm Zn để có Zncl2 làm thuốc trợ hàn, lúc đó làm gì có acid Hcl và thuốc trợ hàn?

                                Cái khó bó cái...
                                19-02-2025, 23:05
                              • nhathung1101
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi nhathung1101
                                Nếu chú tâm thì học tiếng Việt cũng đủ rồi, thừa sức làm việc rồi.

                                Học tiếng Anh cũng chỉ phụ trợ để đọc thêm tài liệu, hướng dẫn.

                                Nhưng có hiểu điều đó không mới là vấn đề. Khi mà học ngoại ngữ để đi đạp xích lô đón khách???...
                                19-02-2025, 21:27
                              Đang tải...
                              X