嘘~~听说有逼格的人都基于Arduino搭建个人聊天室了!
SO,本聊天服务器应用于局域网内,为了搭建该服务器你需要的硬件有Arduino UNO,Ethernet扩展板,或者也可以使用Arduino的Mega、Leonardo等兼容Ethernet扩展板的主控板替代UNO,甚至你也可以直接使用Arduino Ethernet集成控制器,免去了控制板的堆叠,本次我们使用UNO与新版扩展板堆叠。
同时,你也需要一些C++编程,懂得一点Arduino的基本知识,大佬劝退!
——聪明的瓦肯人
1、 硬件连接
UNO是啥?
这个
Ethernet扩展板是啥?
这个
所以,UNO+Etnernet是啥?
这个啦
注意如果你使用其他主控板的堆叠方案
要注意自己使用的Ethernet扩展板
是新版还是旧版
再结合具体的IO口排布堆叠
实际上,Ethernet扩展板通过SPI总线与Arduino连接,使用时,两者需要通过不同SS引脚选择使能。在UNO或其他使用ATmega328芯片的主控板上,占用13、12、11、10、4引脚进行网络通信及SD卡存储。而MEGA的引脚占用情况可不一样。同时,旧版的Ethernet扩展板是通过10~13号引脚连接到W5100芯片,使得其只能堆叠到UNO上,与此同时,MEGA的SPI引脚是50~53、Leonardo的SPI引脚在ICSP引脚处。到了新版扩展板,其新添了ICSP引脚母头,所以在上述三个板均可直接堆叠使用。
实在不知道
那就找百度
然后
哪个地方接电源接网线想必是一目了然的
一切都连接好后
上电应该如下图所示
PWR、LINK、100M、FULLED以及L
常亮
同时
RX与TX会时不时闪烁
说明发生了一些网络通信
COLL闪烁说明检测到冲突
在这之后是时候写点程序了
2、服务端搭建
本聊天室是基于Telnet协议连接
其是TCP协议的子集
实际上
我们需要编写的仅仅是服务器程序
至于客户端之后会说
话不多说,上代码
(我们在Arduino IDE中编写代码)
// 调用SPI和Ethernet类库#include #include// 输入MAC地址和IP地址,在此后的控制中将会用到// IP地址需要根据本地网络进行设置// 网关和子网掩码、DNS是可选的,可以不用填byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};IPAddress ip(192, 168, 1, 177); // 这段IP都是局域网(比如你的WIFI)下的IP,可以随便设置,一般范围为192.168.1.2~192.168.1.255// 但是不要与该局域网下的其他设备有冲突// IPAddress myDns(192,168,1, 1);// IPAddress gateway(192, 168, 1, 1);// IPAddress subnet(255, 255, 0, 0);
// 创建一个服务器对象,Telnet默认端口为23EthernetServer server(23);// 记录之前是否有客户端接入boolean alreadyConnected = false;
void setup() { // 初始化网络设备Ethernet.begin(mac, ip, myDns, gateway, subnet);// 开始监听客户端server.begin(); // 初始化串口Serial.begin(9600);while (!Serial) { ; // 等待串口连接,需要先把USB线接好}
// 串口打印网络设备的IP地址Serial.print("Chat server address:");Serial.println(Ethernet.localIP());}
void loop() { // 等待一个新的客户端连接:创建一个客户端对象,并通过available()函数返回一个连接到本服务器的对象EthernetClient client = server.available();
// 当服务器第一次发送数据时,发送一个Hello回应if (client) {if (!alreadyConnected) { // flush()函数清除输入缓冲区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中
选择UNO以及相应的端口号
编译
上传
3、客户端搭建
严格地说
客户端算不上搭建
仅仅算是开启Telnet客户端
这里我们以windows系统为例
在XP系统中
该客户端是默认开启的
其他windows系统的请跟我来
马上就要成功了
步骤:
控制面板-程序-程序和功能
(有些小伙伴可能在控制面板中直接就找到了程序和功能)
选择
打开或关闭Windows功能
从而打开了windows功能对话框
(由于功能众多,打开该对话框需要缓冲的时间较长)
耐心等待哦
然后选中
Telnet客户端
点击确定
4、开启对话
快捷键
开始+R
(开始菜单+运行)
输入
telnet
点击确定
在出现的命令行对话框中输入
open 192.168.1.177 [23]
这里的192.168.1.177换成你自己在上面的程序中设置的IP
端口号[23]是默认的
所以可以省略
回车之后
你会发现
界面一直显示“正在连接......”
如上图所示
Don't worry!
实际此时上已经连上了
键盘上随便敲一个字母就能进入对话界面
是的,我敲了一个K
上面的"Hello client!"
不就是服务端程序中的这段代码吗?
太无聊了
赶紧再找另一台电脑加入聊天室
操作如上
结果如下
全程匿名
但是
缺点也是显而易见的
就是输入法有问题
除了英文,似乎只有渣渣的微软拼音
更要命的是
显示也是一塌糊涂
但这并不妨碍你在朋友面前
有逼格
技术无原罪,装逼有风险,不经意间的流露才是真正的大哥,有逼格的生活就是这么的朴实无华!还不快快搭建起来!
——聪明的瓦肯人
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com