STM32F103 with Ethernet Shield (W5100)

 

STM32F103 with Ethernet Shield (W5100)

Bài viết này sẽ hỗ trợ các bạn lập trình STM32F103 giao tiếp với Shield Ethernet W5100.

Để giao tiếp được các bạn nối dây với STM32 với board Ethernet W5100 theo sơ đồ bên trên.


/*
Chương trình convert dữ liệu từ Serial Port sang TCP gửi về Server
*/

#include <Arduino.h>
#include <SPI.h>
#include <Ethernet.h>
#include <SoftwareSerial.h>

#define DIR PB11

HardwareSerial Serial_Mon(PA10PA9);
HardwareSerial Serial_Device(PA3PA2);

byte mac[] = {
  0xDE0xAD0xBE0xEF0xFE0xED
};
IPAddress ip(1921681240);// shield ip
//IPAddress server(113,161,240,83); // my computer ip
const charserver = "192.168.1.15";
EthernetClient client;

String buff_tcp = "";
String buff_serial = "";
int port = 62001;
bool flag = false;

void setup() {
  pinMode(DIROUTPUT);
  digitalWrite(DIRLOW);
  // start the Ethernet connection:
  Ethernet.begin(macip);// Open serial communications and wait for port to open:
  Serial_Mon.begin(115200);
  Serial_Device.begin(38400SERIAL_7E1);
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial_Mon.println("connecting...");
  // if you get a connection, report back via serial:
  if (client.connect(serverport)) {
    Serial_Mon.println("connected");
  } else {
    // if you didn't get a connection to the server:
    Serial_Mon.println("connection failed");
  }
}

void loop() {
  if(client.connected())
  {
  while (client.available()) {
      char c = (char)client.read();
      buff_tcp += c;
            
  } 
  if(buff_tcp.length() > 0){
    digitalWrite(DIRHIGH);
    Serial_Device.print(buff_tcp);
    if(!Serial_Device.availableForWrite()) 
      digitalWrite(DIRLOW);
    Serial_Mon.print("TCP request: ");
    Serial_Mon.println(buff_tcp);
    buff_tcp = "";
  }

  while (Serial_Device.available() > 0) {
    char c = (char)Serial_Device.read();
    buff_serial += c;
    }
    if (buff_serial.length() > 0)
    {
      client.write(buff_serial.c_str());
      Serial_Mon.print("Serial Response: ");
      Serial_Mon.println(buff_serial);
      buff_serial = "";
    }
  }
}

No comments:

Post a Comment