Sunday, June 28, 2015

[How to] Stm32F0 Wireless Sensor Node [Ethernet]

Ethernet อุปกรณ์ที่นำมาใช้คือ Enc28j60 ที่ใช้การเชื่อมต่อแบบ SPI

ENC28J60


     ET-MINI ENC28J60 เป็นโมดูลที่ออกแบบมาเพื่อเป็นตัวกลางในการเชื่อมต่อระบบการสื่อสารระหว่าง บอร์ดไมโครคอนโทรเลอร์ กับโครงข่าย ETHERNET ผ่าน SPI BUS ความเร็วสูงสุด 10 Mbps
Feature Summary
    • เป็นโมดูลที่ออกแบบมาเพื่อเป็นตัวกลางในการเชื่อมต่อระบบการสื่อสารระหว่างบอร์ดไมโครคอนโทรเลอร์ กับโครงข่าย ETHERNET
    • รองรับการทำงานของโปรโตคอล TCP/IP
    • ใช้ไอซีเบอร์ ENC28J60 ของบริษัท MICROCHIP เป็นไอซี ETHERNET CONTROLLER รองรับมาตรฐานการสื่อสาร IEEE 802.3
    • ต่อขาสัญญาณควบคุมผ่าน SPI BUS ความเร็วสูงสุด 10 MB/S
    • เลือกต่อระบบไฟระหว่าง 3.3V หรือ 5V ได้ พร้อมวงจรบัฟเฟอร์, ขั้วต่อ ETHERNET แบบ RJ45
________________________________________________________________
Software โดยทำการพอร์ต Library มาเพื่อใช้งานกับ STM32F0 With HAL Library

  • Udp.parsePacket()
ใช้ในการอ่านค่าความยาวของ UDP Packet เมื่อมีการรับค่าเข้ามา
  • Udp.read(packetBuffer,MAX_UDP_BUFFER)
ใช้ในการอ่านค่าและเก็บลง Array โดยรับค่าเป็น Array และขนาดของ Array นั้นๆ
  • Udp.beginPacket(IPAddress(192,168,106,59),55065)
ใช้ในการเริ่มต้นการส่งโดยระบุ IP และ Port ของเป้าหมายที่จะส่งไปโดยให้ค่าเป็น True เมื่อสำเร็จ
  • Udp.write(buff,n)
ใช้ในการส่งข้อมูลไปยังเป้าหมายโดยรับค่าเป็น Array และขนาดของ Array นั้นๆ
  • Udp.endPacket();
ใช้สิ้นสุดในการส่ง Packet แต่ละครั้ง

example send
       uint8_t* buff = (uint8_t*)"hello world!";
       bool success = Udp.beginPacket(IPAddress(192,168,106,59),55065);
       Udp.write(buff,12);
       Udp.endPacket();

example recived
       int packetSize = Udp.parsePacket();
       if(packetSize){
          Udp.read(packetBuffer,MAX_UDP_BUFFER);
   ** สามารถนำค่าจาก packetBuffer ไปแสดงผลผ่าน UART ได้ว่ารับข้อมูลอะไรมา **
________________________________________________________________
Using on STM32
     ทำการทดลองโดยการเชื่อมต่ออุปกรณ์ทั้งสองตัวร่วมกับบอร์ด STM32F0 โดยใช้งานผ่านพอร์ต SPI2 โดยทำงานร่วมกับ HAL Library

ENC28J60
SPI2 on STM32F0
SDI
PB15 (MOSI)
SDO
PB14 (MISO)
SCK
PB13 (SCK)
CS
PC6
VCC
3.3V or 5V (Select on ENC28j60)
GND
GND
______________________________________________________________
Results

ทดลองรับค่าจาก STM32 โดยใช้โปรแกรม UDP Sender/Receiver ทดลองรับค่า
** สามารถทดลองรับค่าโดยใช้โปรแกรมบนวินโดว์และ Packet Sender **

No comments:

Post a Comment