目录
简介
本教程介绍如何使用Arduino Uno / Mega和PHPoC [WiFi] Shield创建一个可同时连接多达4个Telnet客户端的Telnet服务器。
它将任何传入消息分发到所有连接的客户端。
传入的消息也会打印到串行监视器上。
步骤一 材料准备
硬件准备:
- Arduino Uno或Mega
- PHPoC Shield(P4S-347)或PHPoC WiFi Shield(P4S-348)
软件准备:
- Arduino IDE
步骤二 电路搭建
将PHPoC Shield或PHPoC WiFi Shield连接到在Arduino Uno或Mega上
注意: Arduino通过Uno上的引脚10,11,12和13以及Mega上的引脚10,50,51和52与PHPoC [WiFi] Shield通信。因此,这些引脚不能用于通用I / O.
步骤三 安装Arduino IDE
如果您还没有安装Arduino IDE,请下载并安装Arduino IDE:点击进入下载
安装库
运行Arduino IDE
点击项目>加载库>管理库:
在搜索栏上搜索“Phpoc”:
选择PHPoC库并按[Install]按钮:
重新启动Arduino IDE以进行下一步
步骤四 设置网络信息
仅在首次使用时才需要此部分。
1.如果使用以太网
使用PHPoC Shield(P4S-348),您有两种连接网络的选项:以太网或WiFi。
如果使用以太网,请按照此说明将开发板连接到以太网:点击查看
2.如果使用WiFi,则P4S-347和P4S-348均提供WiFi
请按照:
步骤五 编写程序
在Arduino IDE上打开“TelnetServer”示例:
程序:
#include <Phpoc.h>
PhpocServer server(23);
boolean alreadyConnected = false; // 是否客户端先前已连接
void setup() {
Serial.begin(9600);
while (!Serial)
;
// 初始化PHPoC [WiFi] Shield:
Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
//Phpoc.begin();
// beginTelnet()启用telnet选项协商和“一次一个字符”。 //在“一次一个字符”模式下,键入的文本会立即发送到服务器。
server.beginTelnet();
// 打印PHPoC [WiFi] Shield到串口监视器的IP地址:
Serial.print("Telnet server address : ");
Serial.println(Phpoc.localIP());
}
void loop() {
// 等待新客户:
PhpocClient client = server.available();
// 当客户端发送第一个字节时,请打个招呼:if (client) {
if (!alreadyConnected) {
// 清除传输缓冲区:
client.flush();
Serial.println("We have a new client");
client.println("Hello, client!");
alreadyConnected = true;
}
if (client.available() > 0) {
// 读取从客户端传入的字节:char thisChar = client.read();
// 将字节回显给所有连接的客户端:
server.write(thisChar);
// 将字节回显到服务器:
Serial.write(thisChar);
}
}
}
- 编译示例代码并通过单击Arduino IDE上的“上传”按钮上传到Arduino
- 在Arduino IDE上打开串行监视器工具以查看输出日志。
- 复制PHPoC Shield的IP地址。
步骤六 测试和结果
在此示例中,Arduino充当Telnet服务器。它需要使用Telnet客户端进行测试。Telnet客户端可以是PC或智能手机上的任何类型的Telnet客户端软件/程序。
在本教程中,需要使用一个名为 Tera Term的基于Windows的软件:
下载地址:
打开四个Tera Term窗口
输入PHPoC Shield的IP地址和端口号(23)
- 单击“OK”按钮。
- 从第1个Tera Term窗口向Arduino发送“Hello 1”消息。
- 从第2个Tera Term窗口向Arduino发送“Hello 2”消息。
- 从第3个Tera Term窗口向Arduino发送“Hello 3”消息。
- 从第4个Tera Term窗口向Arduino发送“Hello 4”消息。
我们可以在每个Tera Term的接收区域看到echo消息:
查看串行监视器中的消息: