วันพุธที่ 1 กรกฎาคม พ.ศ. 2558

การใช้งาน Module Ethernet mini ENC28J60

MiniProject 010123120 Embedded System Design Lab นาฬิกาปลุก


Ethernet mini ENC28J60
การเชื่อมต่อกับไมโครคอนโทรลเลอร์ โดยจะใช้การเชื่อมต่อแบบ SPI Bus และในส่วนของระบบไฟ ไอซี ENC28J60 จะทำงานที่แรงดัน 3 Voltage  จึงได้สร้างวงจรบัฟเฟอร์เพื่อให้สำหรับรองรับการเชื่อมต่อระบบไฟ ระหว่าง 3V กับ 5V
                เป็นโมดูลที่ออกแบบมาเพื่อเป็นตัวกลางในการเชื่อมต่อระบบการสื่อสารระหว่างไมโครคอนโทรลเลอร์ กับโครงข่าย Ethernet ซึ่งรองรับการทำงานของProtocol TCP/IP โดยใช้ไอซี ENC28J60 ซึ่งรองรับมาตรฐานการสื่อสาร IEEE 802.3 เชื่อมต่อสัญญาณควบคุมผ่าน SPI Bus ความเร็วสูงสุด 10 Mb/s ในการพัฒนาโปรแกรมทางบริษัท Microchip จะสนับสนุนตัว Microchip TCP/IP Stack ซึ่งสามารถดาวน์โหลด และ นำไปใช้ได้ฟรีที่เว็บไซต์ของ Microchip (www.microchip.com) โดยคุณสมบัติคร่าวๆ ของ ENC28J60 จะเป็นดังนี้
คุณสมบัติของ IC ENC28J60
General:
·       IEEE 802.3 compatible Ethernet Controller
·       Integrated MAC and 10BASE-T PHY
·       8 Kbyte Transmit/Receive Packet Dual Port Buffer SRAM
·       Programmable Automatic Retransmit on Collision
·       Programmable Padding and CRC Generation
·       Programmable Automatic Rejection of Erroneous Packets
·       SPI™ Interface with speeds up to 10 Mb/s
·       Supports Full and Half-Duplex modes

Code :
เป็นการตั้งค่าให้กับ SPI2 สำหรับนำมาใช้เชื่อมต่อระหว่าง ไมโครคอนโทรลเลอร์ กับ Module Ethernet


เป็นส่วนที่ประกาศ object จากclass UIPEthernetClass
-                   โดยได้กำหนดให้ PB12 เป็น CS



เป็นส่วนไว้กำหนด IP address, Port, DNS, GATE, SUBnet ให้กับ Module Ethernet และให้เริ่มต้นการทำงาน ซึ่งอยู่ในส่วนของ int main()




เป็นส่วนไว้กำหนด IP address, Port ของ Computer และทำการส่ง Data ที่อยู่ใน char aray ชื่อ str_to_send  ซึ่งอยู่ในส่วนของ while loop


จากนั้นทำการรันไฟล์ server เพื่อตรวจสอบการใช้งานของ Module Ethernet
Code server.py
import socket,SocketServer,time

print 'Server started...' #print server start
host, port = '192.168.1.173',51000 #set host and port
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
server.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
server.bind((host,port))
server.settimeout(5)
j=0
start_time = time.time()
try:
  server.sendto("Hello",('192.168.1.63',50000)) #ip, port module ethernet
  while True:
    try:
      print "send"
      (received, addr) = server.recvfrom(65535)
      server.sendto(received,addr)
      print j, ': received from ', str(addr), 'data is ', received
      j+=1
      
    except socket.timeout:
      print "Out"
      pass
  
except KeyboardInterrupt as ex:
  print ex

ผลการทดลอง




ไม่มีความคิดเห็น:

แสดงความคิดเห็น