Thông báo

Collapse
No announcement yet.

[Ethernet] Điều khiển "RealTime" qua mạng Internet

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

  • #31
    Nguyên văn bởi robotden Xem bài viết
    @@@alone76816:
    Bạn nhắc mình mới nhớ là dùng web thêm một điểm yếu là rất tốn bộ nhớ.
    Theo bạn, giao diện web để làm gì, chính là để điều khiển Device, thế nếu không có máy tính thì giao diện web đó hiển thị lên đâu???? Không hiển thị lên thì lưu trong ROM có nghĩa lý gì?
    Mình nói rồi, việc dùng giao diện web và giao diện viết bằng C# có ý nghĩa như nhau, nhưng quan trọng là cái nào mềm dẻo hơn.
    Chúc vui.
    Tốn bộ nhớ cho cái gì, RAM? ROM? của PIC hay máy tính. Cho bạn biết, những ứng dụng trên nền Web là những ứng dụng với dung lượng tối ưu nhất, khả năng load nhanh nhất để đáp ứng yêu cầu của người sử dụng. Trước đây mạng Internet không nhanh như bây giờ đâu.

    Nguyên văn bởi robotden Xem bài viết
    Không phải lúc nào cũng dùng web làm giao diện điều khiển đâu bạn à. Đa số các Example đều dùng Ethernet với HTTP lên thành 1 trang web, nhưng nếu như thế sẽ có các điểm yếu sau:
    1/ Tốc độ chậm
    2/ Lập trình không mềm dẻo tí nào. Bạn cứ thử tưởng tượng việc dùng một web làm giao diện và dùng Một Chuơng trình C# (viết được bao nhiêu thứ trên này, còn kết hợp được các giao thức khác như USB, RS232..... tổng hợp)
    Dùng phần mềm làm giao diện điều khiển là cấp cao hơn của các Example kia đó bạn à. Bạn hãy suy nghĩ giữa khả năng đáp ứng của 2 cái nhé.
    Chúc vui.
    Tốc độ chậm là tại sao? HTTP chậm à, đúng, chậm hơn giao thức khác do nhiều overhead, nhưng ko hẳn là chậm, tùy thuộc vào đường truyền, nhưng dùng HTTP vì nó đơn giản, trình duyệt nào sinh ra cũng cho thằng HTTP này, máy tính nào cũng có trình duyệt. Lúc sử dụng giao diện không cần dùng đến bất kỳ công cụ nào khác ngoài trừ Browser.
    Nếu bạn sử dụng máy của người khác để liên kết vào Board của bạn, nhưng máy đó không cài .NET 3.5 trong khi chương trình của bạn viết bằng C# .NET 3.5, vậy phải ngồi download .NET hơn 300MB về cài à, chưa kể, nếu người kia sử dụng MAC, Linux ...

    Tuy nhiên, bài viết cũng đã đề cập đến tại sao dùng Flash, nó tạo TCP Socket Client, kết nối tới Boart trên nền TCP, HTTP chỉ là cách để tải Flash Client về rồi
    Diễn đàn Vi điều khiển:

    Comment


    • #32
      @minhtuan04:
      Vâng, anh nói đúng.
      Nhưng ý em đưa ra ở đây là để tăng thêm sự lựa chọn. Ví dụ ta có thể kết hợp thêm một số truyền thông khác như USB, UART... dễ dàng. Lập trình giao diện cũng tuơng đối dễ . Tất nhiên nó có nhược điểm của nó.
      Còn việc tốn bộ nhớ. Chắc chắn là Trang web đó được lưu trong Bộ nhớ trên mạch của chúng ta. Đó cũng là một hạn chế nếu chúng ta phát triển các ứng dụng lớn. (hoặc tốn tiền). Còn bộ nhớ máy tính thì có lẽ không cần tính đến làm gì.
      Mong được học hỏi thêm ở anh Tuấn.
      Chúc vui!
      All in one. Sài Gòn + Đồng Nai.

      Comment


      • #33
        Nguyên văn bởi robotden Xem bài viết
        @minhtuan04:
        Vâng, anh nói đúng.
        Nhưng ý em đưa ra ở đây là để tăng thêm sự lựa chọn. Ví dụ ta có thể kết hợp thêm một số truyền thông khác như USB, UART... dễ dàng. Lập trình giao diện cũng tuơng đối dễ . Tất nhiên nó có nhược điểm của nó.
        Còn việc tốn bộ nhớ. Chắc chắn là Trang web đó được lưu trong Bộ nhớ trên mạch của chúng ta. Đó cũng là một hạn chế nếu chúng ta phát triển các ứng dụng lớn. (hoặc tốn tiền). Còn bộ nhớ máy tính thì có lẽ không cần tính đến làm gì.
        Mong được học hỏi thêm ở anh Tuấn.
        Chúc vui!
        Đâu có khó khi thêm các chuẩn giao tiếp trên, bạn có thể thêm CAN, USB, UART... lên cái board của bạn, chuyển tất cả giao thức đó thành Ethernet ... Còn bộ nhớ thì đâu có khó, chỉ cần 1 cái thẻ nhớ và 1 cổng SPI là bạn xài tẹt ga rồi.
        Còn lập trình giao diện, mình chắc chắn với bạn rằng giao diện Web dễ làm hơn giao diện Desktop, vì giao diện Web hướng tới số lượng người dùng rất đông, khả năng thích ứng cao và thay đổi thường xuyên nên các công cụ đề làm nên nó cũng cực kỳ phát triển. Thậm chí bạn đang làm về C#, Visual Studio cũng hỗ trợ để làm giao diện web, tất cả các control trong đó đều có thể đưa lên web, bằng mã HTML và CSS

        Nhưng mỗi ứng dụng có đặc thù riêng của nó, không thể tranh cãi làm bằng cái này, cái kia hơn được
        Diễn đàn Vi điều khiển:

        Comment


        • #34
          Nhưng mỗi ứng dụng có đặc thù riêng của nó, không thể tranh cãi làm bằng cái này, cái kia hơn được
          Đúng ạ.
          Càng thêm nhiều sự lựa chọn càng tốt .
          Đâu có khó khi thêm các chuẩn giao tiếp trên, bạn có thể thêm CAN, USB, UART... lên cái board của bạn, chuyển tất cả giao thức đó thành Ethernet ...
          ý em ở chỗ phát triển nhiều Giao tiếp khác, không phải chỉ để trên 1 mạch ạ. Một máy tính quản lý nhiều device đặt những nơi khác nhau, với những yêu cầu khác nhau ạ.
          Còn bộ nhớ thì đâu có khó, chỉ cần 1 cái thẻ nhớ và 1 cổng SPI là bạn xài tẹt ga rồi.
          cái này em có nói ở bài viết trước. " Tốn thêm tiền" và không khai thác hết PC.

          ----> Nói chung là có nhiều sự lựa chọn cho mọi người khi phát triển ứng dụng.
          Chúc vui.
          All in one. Sài Gòn + Đồng Nai.

          Comment


          • #35
            Anh minhtuan04 và anh robotden có thể cho em thêm 1 số tài liệu để đọc thêm được không ạ !

            Nếu ai đã làm về ứng dụng ethernet này rồi có thể chỉ cho em cái hướng đi như thế nào được không ạ ? Cần phải có những kiến thức gì, tài liệu gì, software - hardware nào ? Và phải bắt đầu như thế nào ?

            Cảm ơn các anh !

            ------------------------------------------------

            Comment


            • #36
              @alone76816:
              mình đang online bằng sim điện thoại nên up lên không nổi đâu.mạng yếu lắm.
              Bạn nên tìm hiểu các đặc điểm của Ethernet.
              Về phần cứng, nếu bạn không có chip 18f*j60 chuyên Ethernet. có thể dùng ENC28j60 giao tiếp MCU qua SPI để học.
              Bạn có thể chọn công cụ của Mikro hay Microchip. Mình nghĩ trước tiên bạn nên chạy các demo có sẵn, sau đó ngâm cứu để phát triển thêm.
              Chúc vui.
              All in one. Sài Gòn + Đồng Nai.

              Comment


              • #37
                chào các bác, theo em hiểu có phải là ENC28j60 cấp cho mình 1 ip và mình làm 1 cái giao diện để đk nó thông qua kết nối socket trên 1 máy phai ko? Nếu muốn mở rộng ra mình thêm cái modem để quản lý mạch khi đó thì mình ở chỗ nào cũng có thể đk đc

                Comment


                • #38
                  Các bác cho em hỏi là trong bản Demo ethernet của MC ko define 2 chân WP, HOLD của 25LC256 thì mình bỏ trống hay nối đi đâu, với lại nếu mình muốn dùng Chip khác với Chip mặc định trong bản Demo thì chỉ cần cấu hình Chip, định nghĩa các chân ở đây đúng ko ạ
                  Code:
                  #elif defined(YOUR_BOARD)
                  // Define your own board hardware profile here
                  - Một vấn đề nữa là mọi người nói là dùng Chip nào cũng được (18F trở lên) miễn là có giao tiếp SPI là được nhưng em thấy có nhiều định nghĩa các thanh ghi, các bits thanh ghi mà ko phải con nào cũng có thì sao.
                  - Với lại con ENC28J60 tạo giao tiếp với tốc độ 10MHz vậy có cần phải tạo dao động tối thiểu cho PIC là 40MHz (40/4 = 10) để tương thích với ENC28J60 ko.
                  Thank!
                  Nhớ quá khứ buồn rơi nước mắt.
                  Nhìn tương lai lạnh buốt sống lưng.
                  Y!M: nhamdtk4.

                  Comment


                  • #39
                    Nguyên văn bởi nhamdtk4 Xem bài viết
                    Các bác cho em hỏi là trong bản Demo ethernet của MC ko define 2 chân WP, HOLD của 25LC256 thì mình bỏ trống hay nối đi đâu, với lại nếu mình muốn dùng Chip khác với Chip mặc định trong bản Demo thì chỉ cần cấu hình Chip, định nghĩa các chân ở đây đúng ko ạ
                    Code:
                    #elif defined(YOUR_BOARD)
                    // Define your own board hardware profile here
                    - Một vấn đề nữa là mọi người nói là dùng Chip nào cũng được (18F trở lên) miễn là có giao tiếp SPI là được nhưng em thấy có nhiều định nghĩa các thanh ghi, các bits thanh ghi mà ko phải con nào cũng có thì sao.
                    - Với lại con ENC28J60 tạo giao tiếp với tốc độ 10MHz vậy có cần phải tạo dao động tối thiểu cho PIC là 40MHz (40/4 = 10) để tương thích với ENC28J60 ko.
                    Thank!
                    WP là write protect, tích cực mức thấp, bạn ko dùng thì nối nó lên nguồn
                    HOLD (tích cực mức thấp) là chân deactive SPI nghĩa là kéo chân clock xuống thấp, bạn dùng SPI thì nối nó lên nguồn luôn

                    Khi bạn dùng Chip khác định nghĩa của TCP/IP Stack thì bạn phải định nghĩa lại phần cứng board của bạn, cái phần define (YOUR_BOARD) đó

                    Khi làm giao tiếp Ethernet, thì bạn cần xác định phần cứng tối thiểu, cần cái gì, nếu PIC ko đáp ứng được thì bạn phải chọn lại PIC khác, tốt nhất nên chọn những PIC có trong định của của MCHP TCP/IP Stack

                    Clock SPI có thể tùy chỉnh được, hầu hết PIC18 có SPI clock tối đa là 8MHz thôi, đối với các PIC 16-bit thì khoảng 12MHz
                    Diễn đàn Vi điều khiển:

                    Comment


                    • #40
                      Vậy anh minhtuan có thể cho em biết về phần cứng cơ bản để giao tiếp ethernet được không ạ ? Nếu em muốn dùng loại PIC để giao tiếp theo chuẩn SPI thông qua con ENC28J60, vậy có được không anh nhỉ ?

                      ------------------------------------------------

                      Comment


                      • #41
                        Nguyên văn bởi alone76816 Xem bài viết
                        Vậy anh minhtuan có thể cho em biết về phần cứng cơ bản để giao tiếp ethernet được không ạ ? Nếu em muốn dùng loại PIC để giao tiếp theo chuẩn SPI thông qua con ENC28J60, vậy có được không anh nhỉ ?
                        Mình đọc từ đầu luồng tới giờ, và rất ít trả lời bài của bạn, lý do là hầu hết các bài viết của bạn không có tính xây dựng. Bạn cứ tự bắt tay vào làm đi, khi nào gặp rắc rối, post lên thì mọi người sẽ giúp, thời gian mà bạn chờ kết quả của những câu hỏi trên e là dài hơn bạn tự thử đó.

                        Phần cứng cơ bản như mình nói, hãy vào website của Microchip, tìm Development Tool nào cho Ethernet, tất cả các DevTool của MCHP đều có schematic và hướng dẫn đi kèm, dựa trên đó mà thiết kế thôi
                        Diễn đàn Vi điều khiển:

                        Comment


                        • #42
                          Nguyên văn bởi alone76816 Xem bài viết
                          Vậy anh minhtuan có thể cho em biết về phần cứng cơ bản để giao tiếp ethernet được không ạ ? Nếu em muốn dùng loại PIC để giao tiếp theo chuẩn SPI thông qua con ENC28J60, vậy có được không anh nhỉ ?
                          Chào bạn.
                          Đúng là bạn nên xem lại cách tiếp cận vấn đề.
                          Mình xin đưa lên Schematic và Manual cho SPI Ethernet+ Code example với MikroC.
                          Bạn có thể thử.

                          Chúc vui!
                          Attached Files
                          All in one. Sài Gòn + Đồng Nai.

                          Comment


                          • #43
                            Em cố thay đổi cái code ethernet demo của MC để dùng Chip khác mà ko được, nó báo lỗi rất khó hiểu em chưa dùng mcc18 bao giờ cả đánh vật với nó mấy hôm rồi mà ko ra. Ai giúp em với.
                            - Chip 18F4520 em khai báo ở đây, trong phần select device đã chọn 18F4520
                            Code:
                            #elif defined(YOUR_BOARD)
                            // Define your own board hardware profile here
                            		#if defined(__18F4520) && !defined(HI_TECH_C)
                            
                            			#pragma config OSC=HSPLL, FCMEN=OFF, IESO=OFF, PWRT=OFF, WDT=OFF, LVP=OFF
                            
                            	#define LED0_TRIS			(TRISbbits.TRISb0)
                            	#define LED0_IO				(LATbbits.LATb0)
                            	#define LED1_TRIS			(TRISbbits.TRISb1)
                            	#define LED1_IO				(LATbbits.LATb1)
                            	#define LED2_TRIS			(TRISbbits.TRISb2)
                            	#define LED2_IO				(LATbbits.LATb2)
                            	#define LED3_TRIS			(TRISbbits.TRISb3)
                            	#define LED3_IO				(LATbbits.LATb3)
                            	#define LED4_TRIS			(TRISbbits.TRISb4)
                            	#define LED4_IO				(LATbbits.LATb4)
                            	#define LED5_TRIS			(TRISbbits.TRISb5)
                            	#define LED5_IO				(LATbbits.LATb5)
                            	#define LED6_TRIS			(TRISbbits.TRISb6)
                            	#define LED6_IO				(LATbbits.LATb6)
                            	#define LED7_TRIS			(TRISbbits.TRISb7)
                            	#define LED7_IO				(LATbbits.LATb7)
                            
                            	#define LED_GET()			(LATd)
                            	#define LED_PUT(a)			(LATd = (a))
                            
                            	#define BUTTON0_TRIS		(TRISAbits.TRISA5)
                            	#define	BUTTON0_IO			(PORTAbits.RA5)
                            
                            	#define BUTTON1_TRIS		(TRISabits.TRISa0)
                            	#define	BUTTON1_IO			(PORTabits.Ra0)
                            
                            	#define BUTTON2_TRIS		(TRISAbits.TRISA4)
                            	#define	BUTTON2_IO			(PORTAbits.RA4)
                            
                            	#define BUTTON3_TRIS		(TRISabits.TRISa3)
                            	#define	BUTTON3_IO			(PORTabits.Ra3)
                            
                            	#define BUTTON4_TRIS		(TRISAbits.TRISA2)
                            	#define	BUTTON4_IO			(PORTAbits.RA2)
                            
                            	#define BUTTON5_TRIS		(TRISabits.TRISa1)
                            	#define	BUTTON5_IO			(PORTabits.Ra1)
                            
                            	// ENC28J60 I/O pins
                            	#define ENC_RST_TRIS		(TRISc0)
                            	#define ENC_RST_IO			(LATc0)
                            
                            	#define ENC_CS_TRIS			(TRISc2)	
                            	#define ENC_CS_IO			(LATc2)
                            
                            	#define ENC_SCK_TRIS		(TRISC3)
                            
                            	#define ENC_SDI_TRIS		(TRISC4)
                            
                            	#define ENC_SDO_TRIS		(TRISC5)
                            
                            	#define ENC_SPI_IF			(SSPIF)
                            	#define ENC_SSPBUF			(SSP1BUF)
                            	#define ENC_SPISTAT			(SSP1STAT)
                            	#define ENC_SPISTATbits		(SSP1STATbits)
                            	#define ENC_SPICON1			(SSP1CON1)
                            	#define ENC_SPICON1bits		(SSP1CON1bits)
                            	#define ENC_SPICON2			(SSP1CON2)
                            
                            	// 25LC256 I/O pins
                            	#define EEPROM_CS_TRIS		(TRISc6)
                            	#define EEPROM_CS_IO		(LATc6)
                            
                            	#define EEPROM_SCK_TRIS		(TRISC3)
                            
                            	#define EEPROM_SDI_TRIS		(TRISC4)
                            
                            	#define EEPROM_SDO_TRIS		(TRISC5)
                            
                            	#define EEPROM_SPI_IF		(SSP1IF)
                            	#define EEPROM_SSPBUF		(SSP1BUF)
                            	#define EEPROM_SPICON1		(SSP1CON1)
                            	#define EEPROM_SPICON1bits	(SSP1CON1bits)
                            	#define EEPROM_SPICON2		(SSP1CON2)
                            	#define EEPROM_SPISTAT		(SSP1STAT)
                            	#define EEPROM_SPISTATbits	(SSP1STATbits)
                            
                            	// LCD I/O pins
                            	#define LCD_DATA_TRIS		(TRISd)
                            	#define LCD_DATA_IO			(LATd)
                            
                            	#define LCD_RD_WR_TRIS		(TRISe1)
                            	#define LCD_RD_WR_IO		(LATe1)
                            	#define LCD_RS_TRIS			(TRISe0)
                            	#define LCD_RS_IO			(LATe0)
                            	#define LCD_E_TRIS			(TRISe2)
                            	#define LCD_E_IO			(LATe2)
                            - Nó báo lỗi thế này
                            Code:
                            Make: The target "C:\Microchip Solutions\TCPIP Demo App\Objects - TCPIP Demo App-C18\MainDemo.o" is out of date.
                            Executing: "C:\MCC18\bin\mcc18.exe" -p=18F4520 /i"." -I"..\Microchip\Include" -I"C:\MCC18\h" "MainDemo.c" -fo="Objects - TCPIP Demo App-C18\MainDemo.o" -k -sco -mL -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
                            MPLAB C18 v3.35 (evaluation)
                            Copyright 2000-2010 Microchip Technology Inc.
                            Days remaining until evaluation becomes feature limited:  56
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:215:Error [1105] symbol 'BUTTON0_IO' has not been defined
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:282:Error [1105] symbol 'LED0_IO' has not been defined
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:282:Error [1101] lvalue required
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:338:Warning [2058] call of function without prototype
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:344:Warning [2058] call of function without prototype
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:371:Warning [2058] call of function without prototype
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:388:Warning [2058] call of function without prototype
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:389:Warning [2058] call of function without prototype
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:450:Error [1105] symbol 'LED0_TRIS' has not been defined
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:450:Error [1101] lvalue required
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:451:Error [1105] symbol 'LED1_TRIS' has not been defined
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:451:Error [1101] lvalue required
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:452:Error [1105] symbol 'LED2_TRIS' has not been defined
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:452:Error [1101] lvalue required
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:453:Error [1105] symbol 'LED3_TRIS' has not been defined
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:453:Error [1101] lvalue required
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:454:Error [1105] symbol 'LED4_TRIS' has not been defined
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:454:Error [1101] lvalue required
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:455:Error [1105] symbol 'LED5_TRIS' has not been defined
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:455:Error [1101] lvalue required
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:456:Error [1105] symbol 'LED6_TRIS' has not been defined
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:456:Error [1101] lvalue required
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:458:Error [1105] symbol 'LED7_TRIS' has not been defined
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:458:Error [1101] lvalue required
                            C:\Microchip Solutions\TCPIP Demo App\MainDemo.c:460:Warning [2058] call of function without prototype
                            Halting build on first failure as requested.
                            - À cho em hỏi thêm nữa là khai báo tần số thạch anh của Chip ở đâu ạ.
                            Thanks!
                            Nhớ quá khứ buồn rơi nước mắt.
                            Nhìn tương lai lạnh buốt sống lưng.
                            Y!M: nhamdtk4.

                            Comment


                            • #44
                              Những định nghĩa trên đâu phải là trong mcc18 đâu bạn, nó chỉ gần giống thôi mà. Bạn khai báo thử lại như sau , ví dụ :

                              #define LED0_TRIS (TRISbbits.TRISb0)
                              #define LED0_IO (LATbbits.LATb0)

                              Thay lai :

                              #define LED0_TRIS TRISBbits.TRISB0
                              #define LED0_IO LATBbits.LATB0

                              thử lại hết xem nha bạn.

                              Với lại Command :

                              #elif defined(YOUR_BOARD)
                              // Define your own board hardware profile here
                              #if defined(__18F4520) && !defined(HI_TECH_C)

                              mình chưa thấy trong C18 bao giờ, chắc khi biên dịch nó sẽ báo lỗi đó. Theo mình thấy thì bạn thử bỏ đi xem sao, và sửa lại như sau :

                              #include"p18f4520.h"

                              ------------------------------------------------

                              Comment


                              • #45
                                Cảm ơn nhé để mình thử lại xem thế nào, mà những định nghĩa đó mình sửa ngay trong file HardwareProfile.h sao lại ko phải của c18.
                                Nhớ quá khứ buồn rơi nước mắt.
                                Nhìn tương lai lạnh buốt sống lưng.
                                Y!M: nhamdtk4.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X