|
本篇完成任务:使用arduino Ethernet3库,设置静态IP,连接远端服务器测试
1. Ethernet3库的获取
打开以上网址,克隆仓库文件到本地。
2. 新建项目
打开vs code,打开左侧的platform IO插件图标,打开home页。
在home页中,选择新建工程
输入关键字“pico”,然后在下边的列表中选择“Raspberry Pi Pico”,然后在name一栏中输入项目/工程名称:(如:pico_telnet_test)。
等一小会,待工程创建完毕。
3. 添加第三方库Ethernet3到工程中
工程创建完毕后,复制Ethernet3库文件夹至项目文件夹下的lib子文件夹下(在项目列表中,在任一文件上鼠标右键,选择在文件资源管理器中显示)。
添加完成后,可见code中资源管理器该工程下的lib子项下显示Ethernet3目录,说明添加成功。
4. 代码编写
在工程main.cpp中编辑如下代码:
#include <Arduino.h>
#include <SPI.h>
#include <Ethernet3.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 2, 186);
// Enter the IP address of the server you're connecting to:
IPAddress server(180,101,50,188); //www.baidu.com
// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 23 is default for telnet;
// if you're using Processing's ChatServer, use port 10002):
EthernetClient client;
void setup() {
// start the Ethernet connection:
Ethernet.setCsPin(17);
Ethernet.setRstPin(20);
Ethernet.begin(mac, ip);
Serial.begin(115200);
// give the Ethernet shield a second to initialize:
delay(1000);
Serial.println("connecting...");
// if you get a connection, report back via serial:
if (client.connect(server, 80)) {
Serial.println("connected");
}
else {
// if you didn't get a connection to the server:
Serial.println("connection failed");
}
}
void loop() {
/* *********** Telnet client test*********** */
// if there are incoming bytes available
// from the server, read them and print them:
if (client.available()) {
char c = client.read();
Serial.print(c);
}
// as long as there are bytes in the serial queue,
// read them and send them out the socket if it's open:
while (Serial.available() > 0) {
char inChar = Serial.read();
if (client.connected()) {
client.print(inChar);
}
}
// if the server's disconnected, stop the client:
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
// do nothing:
while (true);
}
}
说明:
第一步:引用头文件
第二步:定义mac地址(w5500)、IP静态地址、要连接的服务器IP地址(这里使用百度的ip)、
第三步:新建一个EthernetClient类型对象
第四步:在setup初始化函数中设置CS和rst引脚,并调用begin()函数/方法初始化W5500的网络参数。
初始化之后,使用connect函数连接远端服务器的指定端口,并输出连接情况、如果连接成功,输出服务器返回内容。