1.1、我们在使用W5500模块时,首先要了解这个模块的基本特性。
该模块采用WIZNET公司最新型号W5500以太网芯片,模块通讯稳定、可靠。可以根据用户的需求个性化定制。提供资料全,全套开发文件。
1.2、其产品特性:
- 集成全硬件TCP/IP协议栈,无需编写以太网底层驱动即可实现TCP/IP协议;
- 支持TCP、UDP、IPv4、ICMP、ARP、IGMP以及PPPOE协议;
- 支持10/100Mbps传输速率,支持自动协商,支持休眠模式和网络唤醒;
- 内部集成32Kbyte片上缓存供以太网包处理;
- 支持8个独立端口同时工作;
- 模块支持5V/3.3V供电,方便用户用于不同的单片机系统,同时3.3V供电还有防反接避 免损坏产品;
- SPI协议,支持高达80MHz的速率;
- 修改后的SPI接口定义,与各种常见MCU的SPI接口顺序一致,无需交叉接线(别的模块需交叉);
- 钽电容滤波,保证了电源的稳定;
- 全贴片元件设计,使用SMD贴片晶振,最大程度保证产品的质量;
- 带电源指示灯、ACT、LINK指示灯反映产品工作状态。
1.3、Ethernet Shield W5100状态指示灯 (LEDs)功能如下:
- PWR: 表示 Arduino 控制板和 Ethernet Shield 已经上电
- LINK: 网路指示灯,当灯号闪烁时代表正在传送或接收资料
- FULLD: 代表网路连线是全双工
- 100M: 表示网路是 100 MB/s (相对于 10 Mb/s)
- RX: 接收资料时闪烁
- TX: 传送资料时闪烁
- COLL: 闪烁时代表网路上发生封包碰撞的情形 (network collisions are detected)
1.4、arduino程序
#include <SPI.h>
#include <Ethernet.h>
// 设置MAC地址
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// 设置IP地址,这个根据当地网络情况设置,要在同一局域网下
IPAddress ip(192, 168, 123, 231);
//可选择设置DNS
//IPAddress dnServer(168, 95, 1, 1);
// 可选择设置
IPAddress gateway(192, 168, 0, 1);
// 设置掩码
IPAddress subnet(255, 255, 255, 0);
// 初始化Ethernet程序,HTTP默认为80(我们也可用其他端口,需做不同处理)
EthernetServer server(80);
void setup() {
// 初始化串口通讯
Serial.begin(9600);
// 开始ethernet连接,并作为服务器初始化,开始连接ethernet
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.print( "server is at " );
Serial.println(Ethernet.localIP());
}
void loop() {
// 监听客户传来的数据
EthernetClient client = server.available();
//如果有新连接请求
if (client) {
Serial.println( "new client" );
// 只要通讯连接中.....
while (client.connected()) {
//确定客户端发出请求
if (client.available()) {
char c = client.read();
Serial.write(c);
client.println( "HTTP/1.1 200 OK" );
client.println( "Content-Type: text/html" );
client.println( "Connection: close" );
client.println();
client.println( "<!DOCTYPE HTML>" );
client.println( "<html><head>" );
client.println( "<meta charset=\"utf-8\" />" );
client.println( "<title>Arduino 通信</title>" );
client.println( "</head><body>" );
client.println( "<h1>通信连接成功</h1>" );
client.println( "</body></html>" );
break ;
}
}
// 等待浏览器接收数据
delay(1);
// 断开连接
client.stop();
Serial.println( "client disonnected" );
}
}
1.5、执行结果:
首先在windows的dos窗口下ping一下ip:
然后看浏览器是否通信成功:
2、另一种设置方式,必须的设置:电脑端的设置方法
2.1.打开网络连接,看网络配置器
2.2.右键网络配置器,找其属性
2.3.打开属性,选择Internet协议版本4(TCP/IPv4)
2.4.设置IP地址,子网掩码、默认网关,进行对应程序设置:
2.5实验效果就是打开浏览器,输入192.168.123.231回车查看
3.P3022-V1-CW360模块的学习与调试
3.1对该模块的基本了解
3.2工作原理
0-360度的工作描述:
0-180度的工作描述:
0-90度的工作过程:
3.3 arduino代码:
/*
Connection:
LM35 UNO
Vs <------> 5V
GND <-----> GND
Vout <----> A0
*/
const int PIN_AD = A0; //pin connection
float sensorVolt; //unit: mV
float angle; //unit: centigrade
void setup()
{ sensorVolt =0;
pinMode(PIN_AD,INPUT);
Serial.begin(115200); //initialize serial communication
}
void loop()
{
sensorVolt = analogRead(PIN_AD); //转后的电压值
//Serial.print(analogRead(PIN_AD));
angle = sensorVolt*(360/1023.0);
Serial.print("angle: "); //print the result
Serial.print(angle);
Serial.println(" 度");
delay(1000); //delay 1s
}
执行结果:
3.4再测试一下arduino UNO的AD采样率:
代码如下:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
analogReference(INTERNAL); //调用板载1.1V基准源
}
void loop() {
int i;
float voltage;
int sensorValue;
unsigned long elsp=millis();
for (i=0;i<10000;i++)
{
// read the input on analog pin 0:
sensorValue = analogRead(A0);
}
Serial.println(millis()-elsp);
delay(10000);
}
执行结果:
运行结果是1120左右,也就是就是说采样10000次用时1.12s,采样频率大约是 8928.57Hz (次/秒)
4.总结
熟悉一下W5500模块、Ethernet ShieldW5100模块和 P3022-V1-CW360角度传感器的基本性质,将其基本调通;我们也可以将角度的值经过w5500模块进行传输数据。
5.安排
当购买的激光雷达到了后,将角度传感的值与激光雷达测得距离值,组合到一个可以采集二维数据的数据结构,即有角度也有距离。还有将w5500的TCP和UDP运用熟练。