用arduino搭建web服务器
⑴ Arino 能不能发送一个 get 或 post 请求到某个 web 服务器
可以,有两种方法供参考:
方法一:使用Arino配合W5100等SPI网卡模块,通过TCP,根据http协议格式,用字符串的方式进发送
方法二:使用Arino连接TCP串口透传模块,通过串口或软串口,一样根据http协议格式,用字符串的方式进发送
另外一些个人经验供参考:
1. 在发送前最好用TCP调试助手等工具对发送的字符串进行确认一次(可以用电脑想服务器端发送,以及Arino向本机发送各测试一次)
2. 由于网卡的缓冲区(Buffer)有限,且单片机的处理速度不高,因此尽量不要访问可能返回大量数据的WEB服务器,否则可能发生Buffer满的问题。
⑵ 系统管理提供什么,日志管理和备份恢复功能。
5G 网管具备以下优点:
(1)Web 方式的用户界面。
(2)统一的网络管理(如 4G / 5G 融合)。
(3)网络智能分析。
(4)开放的 API 接口。
(5)虚拟化部署
SaaS:Software as a Service(软件即服务)。
PaaS:Platform as a service(平台即服务)。
IaaS:Infrastructure as a service(基础设施即服务)。
5G 网管软硬件组成:
底层采用服务器提供基础的 CPU、内存、存储等物理资源,通过平台抽取具体资源形成 虚拟网管平台,然后向高层提供网管功能,包括系统管理、自运维管理、智能运维管理和无线 应用等 APP 功能,客户端可远程接入 5G 网管。
5G 网管系统组件包括:
(1)系统管理:提供安全管理、日志管理和备份恢复功能。
(2)自运维管理:提供应用性能管理。
(3)智能运维:提供告警根因分析、网络智能分析高级应用、开发自动化平台和全局策略管理。
(4)无线应用:提供数据采集、北向接口管理、网络智能分析、无线配置管理、无线网元
管理、无线网络运维监控、信令跟踪分析、网元开通升级中心和通用网元管理。
(5)公共应用:提供全网告警和拓扑管理。
5G 网管常用功能包括:
(1)任务说明:任务背景以及规划数据表。
(2)网络规划:规划数据表。
(3)工勘测量:模拟工程勘测及测量。
(4)设备安装:模拟硬件设备的安装。
(5)设备维护:进行数据配置,参数调整。
(6)业务验证:根据配置的数据进行业务的验证,完成任务。
任务二:配置数据
简述PnP开基站的基本流程。
第一步:确认传输是否开启DHCP relay功能。
第二步:UME网管版本入库。
第三步:UME网管前台配置制作
第四步:UME网管创建及启动开站任务,跟踪开站任务
第五步:前台上电
第六步:跟踪UME开站任务是否完成
常用参数:
(1)PLMN:公共陆地移动(通信)网络。
PLMN=MCC + MNC
(2)PCI:物理小区 ID,取值范围为 0 ~ 1007
PCI=PSS + 3SSS (PSS 取值为 0 ~ 2,SSS 取值为 0 ~ 335)
(3)SCTP 本端端口号 / 远端端口号:SCTP 协议端口号,本端端口号常用 38412,远端端 口号常用 38422。
(4)中心频点:小区使用频点,确定小区的中心频率。
(5)频点带宽:小区带宽,FR1 频段的频率范围是 450 MHz ~ 6 GHz,又称为 sub 6 GHz频段。FR2 频段的频率范围是 24.25 ~ 52.6 GHz,通常被称为毫米波 (mmWave)。FR1 频段可使用的最大带宽是100MHz,FR2 频段可使用的最大带宽是 400 MHz。目前现网 5G 主要采用 30 kHz 子载波间隔,带宽是 100 MHz,实际配置根据 5G 场景确定。
(6)每 10 ms 下行资源占比:下行在整个无线帧中所占的比例。与帧结构、符号配比有关。
(7)TAC 跟踪区:有 AMF 分配,若干个小区组成一个 TAC,是寻呼的基本范围。
(8)小区标识:取值为 0 ~ 255,一个基站中的小区 ID 不重复,由集团统一规划。
数据配置:
1.全局参数:
“MCC”:移动国家码,全球唯一。中国为 460。
“MNC”:移动网络码。 各国内运营商唯一,如中国移动为 00。
“OMC 服务器地址”:服务器地址,根据实际的服务器地址填写。
“OMC 前缀长度”:按照网络规划填写。
“SNTP 服务器 IP 地址”:SNTP 服务器用来做时间同步,一般运营商省公司会有 SNTP 服务器。
“时区”:东八区。
站点配置参数:
“子网 ID”:根据规划填写。
“网元 ID”:根据规划填写,网元 ID 不能重复。
“基站名称”:基站名称不是必配的,可以人为规划。
“网元模型类型”:CUDU,唯一值。
“网元 IP 地址”:基站网元地址,该地址用于和网管通信。
3.传输网络配置:
“网元 IP 地址”:根据规划填写。
“IP 前缀”:根据规划填写。
“IP 网关地址”:根据规划填写。
“IP层使用的VLAN标识”:用来隔离IP层,如果配置多个IP,那么VLAN也需要多个(比 如把网管 IP 和业务 IP 分开)。
“偶联号”:根据规划填写。
“SCTP 本端端口号 / 远端端口号”:全网常用的是 38412。
“本端地址 / 远端地址”:根据规划填写。本端地址是网元 IP 地址,远端地址是核心网
AMF 的 IP 地址。
“静态路由配置(目的 IP 地址)”:该地址是核心网 AMF 的 IP 地址。
“静态路由配置(静态路由前缀长度)”:根据规划填写。
“静态路由”:核心网远端 IP 地址和网关不是同一个网段时,需要配置成和远端地址同
一个网段,否则不通。
4.小区配置:
“小区标识”:唯一小区标识,按规划填写。一般由集团统一规划。
“物理小区识别码”:PCI 取值范围为 0 ~ 1007。复用举例内不能重复出现,相邻小区 PCI mod 3 不相等。
“跟踪区码”:一个 AMF 内唯一,由核心网规划。
“频段指示”:指示小区所使用的频段。
“频点带宽”:指示小区带宽。
“切片业务类型”:根据场景配置。
“切片分区”:根据业务填写。
任务三:业务调测
当完成 5G 数据配置之后,如何判断 5G 数据配置是否正确,5G 基站是否能正常开通。这 就需要进行业务调测,测试业务能否正常运行,从而判断 5G 基站是否正常开通。
问题 1:什么是 eMBB ?主要用在什么场景?
答:eMBB 是增强型移动带宽。eMBB 主要是服务于消费互联网,如 AR/VR、高清视频直
播、8K 高清等。对网络的速率要求高,需要大带宽的支持。
问题 2:什么是 uRLLC ?主要用在什么场景?
答:uRLLC 是低时延高可靠通信。uRLLC 主要场景,如车联网、无人机、 工业控制,远程医疗等。对网络的低时延和可靠性的要求均高。
问题 3:什么是 mMTC ?主要用在什么场景?
答:大规模机器连接。mMTC主要是服务于物联网,如:智慧城市(水表,电表,气表,路灯,红绿灯),智能家居(烟感,灯,门锁,家电),智能农业等。
学生需要知道什么场景使用哪一种验证,很关键。
eMBB验证操作:
uRLLC验证操作:
5g
人工智能
大数据
点赞文章给优秀博主打call~
高清播放机,图片大全,点击查看详情!
精选推荐
广告
LTE开站流程
35下载·1评论
2013年8月7日
华为5G基站概述及基本操作.pdf
30下载·0评论
2021年2月7日
5G缩略语 (TS38.101/104/211/212/213/214/300)
4013阅读·0评论·4点赞
2019年3月26日
移动4g华为lte站点故障处理实战手册.docx
0下载·0评论
2020年11月25日
OMC-V3版 Modbus地址功能对应表新(2).zip
3下载·0评论
2019年9月7日
5G基站邻区规划
974阅读·0评论·1点赞
2022年5月18日
你看见在哪个播放器能看?
精选推荐
广告
【通信工程】大三下课程设计-5G核心网功能设计与部署
990阅读·0评论·2点赞
2022年9月24日
智能运维平台包括哪些功能?运维平台有哪些功能模块?
657阅读·0评论·0点赞
2022年10月20日
31省 “5G基建+5G应用”实施路径!(最全汇总)
782阅读·1评论·0点赞
2021年6月4日
amf组网_【5G核心网】5G核心网SA组网方案及4G/5G互操作探讨
2.8W阅读·0评论·1点赞
2021年1月9日
Arino的软件:Arino IDE和Mind+图形化编程
2555阅读·0评论·1点赞
2022年8月28日
[4G&5G专题-75]:流程 - 4G LTE无线接入网中运营商标识、基站标识、终端标识大全
3754阅读·0评论·5点赞
2021年5月2日
SqlPLus简介
4072阅读·1评论·0点赞
2010年11月14日
PLMN各种类型的含义及说明
1647阅读·0评论·0点赞
2020年7月13日
常见各种PLMN的含义(RPLMN,HPLMN...)以及自动选网原则
2.9W阅读·0评论·11点赞
2015年11月17日
1.springboot使用入门
85阅读·0评论·0点赞
2020年11月4日
volte信令流程详解_点点滴滴学5G——SA注册流程详解
890阅读·0评论·2点赞
2020年11月28日
去首页
看看更多热门内容
⑶ arino下esp8266+web实现远程开关窗和雨滴感应开关窗
一、设计要求
1、雨滴传感器感受到雨滴会关窗
2、Wifi模块连接热点实现与web的传输
3、web实现远程控制窗户
二、零件部分
1、雨滴传感器
2、舵机
舵机对应模拟窗户状态(因懒惰,此处卜慧直接在网络上拿型坦答的舵机图)
3、esp8266_01 WIFI模块
4、实行平台 arino
5、流程图
三、主要是用web通过HTTP请求把数据上传到数据端,这里的设置是应用8266WiFi模块与电脑连接手机热点,在arino里做一个webserver,实现硬件和软件的连接。
webserver设置
web的连接
通过发生http请求与webserver进行交互,该系统数据层部分主要是把web收集到的数据通过到ESP8266 WiFi模块收集到的信号,信弯以此来对舵机实现驱动。
四、实物图
web界面
串口实时输出界面
⑷ 如何使用Arino和SIM900A GPRS / GSM模块将数据发送到Web服务器
在路由器上做端口映射。TP-LINK之类的家用路由器上好像有"转发规则"---“虚拟服务器”的下拉菜单。里面设置一下,将你的SIM900A所在的私有地址映射成公网IP。
⑸ 如何用arino构建一个基于zigbee的网络
这里我们使用Arino Ethernet建立一个简单网页服务器,当Arino服务器接收到浏览器访问请求时,即会发送响应消息,浏览器接收到响应消息,会将其中包含的HTML文本转换为网页显示出来。
这样就可以将传感器获取到的信息显示到网页上,每个在该网络范围内的计算机或其他移动设备,无论什么平台都可以通过网页浏览器了解到各传感器的数据。
[C++] 纯文本查看 复制代码
/*
OpenJumper WebServer Example
建立一个显示传感器信息的Arino服务器
[url=http://www.openjumper.com/]http://www.openjumper.com/[/url]
[url=http://x.openjumper.com/ethernet/]http://x.openjumper.com/ethernet/[/url]
*/
#include <SPI.h>
#include <Ethernet.h>
// 设定MAC地址、IP地址
// IP地址需要参考你的本地网络设置
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);
// 初始化Ethernet库
// HTTP默认端口为80
EthernetServer server(80);
void setup() {
// 初始化串口通信
Serial.begin(9600);
// 开始ethernet连接,并作为服务器初始化
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// 监听客户端传来的数据
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// 一个Http请求结尾必须带有回车换行
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// 如果收到空白行,说明http请求结束,并发送响应消息
if (c == '\n' && currentLineIsBlank) {
// 发送标准的HTTP响应
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>");
// 添加一个meta刷新标签, 浏览器会每5秒刷新一次
// 如果此处刷新频率设置过高,可能会出现网页的卡死的状况
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
// 输出每个模拟口读到的值
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// 已经开始一个新行
currentLineIsBlank = true;
}
else if (c != '\r') {
// 在当前行已经得到一个字符
currentLineIsBlank = false;
}
}
}
// 等待浏览器接收数据
delay(1);
// 断开连接
client.stop();
Serial.println("client disonnected");
}
}
下载程序后,通过浏览器,访问Arino Ethernet所在的IP地址(如程序中设定的IP地址为192.168.1.177),即可看到如图10-11对应的网页了。
在网页中显示了A0至A5所读出的模拟值,你也可以通过修改以上程序,显示其他类型的数据。
以上程序修改自Arino IDE自带的Web Server例程,它是通过不断刷新网页来获取Arino反馈来完成的。实际上,在当今web开发上,我们几乎都是通过ajax不刷新网页,来与服务器通信的。这里我写了一个ajax+arino web server的示例。
程序二
要制作这个项目,首先我们需要准备一个
该网页HTML部分如下:
[HTML] 纯文本查看 复制代码
<!--例程网页控制Arino -->
<!--奈何col 2014.12.24 v3.0 -->
<!--学了半小时js,求别吐槽 -->
<html>
<head>
<meta charset="UTF-8">
<title>OpenJumper!Arino Web Server</title>
<script type="text/javascript">
function send2arino(){
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
element=document.getElementById("light");
if (element.innerHTML.match("Turn on"))
{
element.innerHTML="Turn off";
xmlhttp.open("GET","?on",true);
}
else
{
element.innerHTML="Turn on";
xmlhttp.open("GET","?off",true);
}
xmlhttp.send();
}
function getBrightness(){
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("brightness").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","?getBrightness",true);
xmlhttp.send();
}
window.setInterval(getBrightness,5000);
</script>
</head>
<body>
<div align="center">
<h1>Arino Web Server</h1>
<div>brightness:</div>
<div id="brightness">??</div>
<button id="light" type="button">Turn on</button>
<button type="button">About</button>
</div>
</body>
</html>
在该网页中,第一个id为light的button标签,用于控制开关灯。点击后,会调用send2arino()函数,浏览器会以AJAX的方式向Arino服务器发送含有"?on"或"?off"的GET请求。Arino服务器通过判断请求中的内容,做出开关灯动作。
而getBrightness()函数通过一个定时操作,每秒钟运行一次,每次都以AJAX的方式向Arino服务器发送含有"?getBrightness"的GET请求,Arino接收到该请求后,就会读取传感器数据并返回给浏览器。同时getBrightness()函数会将id为brightness的div标签中的内容更新为返回的数据。
此外我们将A0引脚连接光敏模块,用于采集室内光线;D2引脚连接LED模块。
示例程序代码如下:
[C++] 纯文本查看 复制代码
/*
OpenJumper WebServer Example
[url=http://www.openjumper.com/ethernet/]http://www.openjumper.com/ethernet/[/url]
显示室内照度+开关灯控制
通过手机、平板、计算机等设备访问
Arino Server,就看到当前室内光线照度
在A0引脚连接光敏模块,用于采集室内光线;在2号引脚连接LED模块。
奈何col 2014.12.25
*/
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);
EthernetServer server(80);
EthernetClient client;
String readString="";
int Light=2;
int Sensor=A0;
void setup() {
Serial.begin(9600);
//初始化Ethernet通信
Ethernet.begin(mac, ip);
server.begin();
pinMode(Light,OUTPUT);
Serial.print("Server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// 监听连入的客户端
client = server.available();
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = false;
while (client.connected()) {
if (client.available()) {
char c = client.read();
readString += c;
if (c == '\n') {
Serial.println(readString);
//检查收到的信息中是否有”on”,有则开灯
if(readString.indexOf("?on") >0) {
digitalWrite(Light, HIGH);
Serial.println("Led On");
break;
}
//检查收到的信息中是否有”off”,有则关灯
if(readString.indexOf("?off") >0) {
digitalWrite(Light, LOW);
Serial.println("Led Off");
break;
}
//检查收到的信息中是否有”getBrightness”,有则读取光敏模拟值,并返回给浏览器
if(readString.indexOf("?getBrightness") >0) {
client.println(analogRead(Sensor));
break;
}
//发送HTML文本
SendHTML();
break;
}
}
}
delay(1);
client.stop();
Serial.println("client disonnected");
readString="";
}
}
// 用于输出HTML文本的函数
void SendHTML()
{
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><meta charset=\"UTF-8\"><title>OpenJumper!Arino Web Server</title><script type=\"text/javascript\">");
client.println("function send2arino(){var xmlhttp;if (window.XMLHttpRequest)xmlhttp=new XMLHttpRequest();else xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");element=document.getElementById(\"light\");if (element.innerHTML.match(\"Turn on\")){element.innerHTML=\"Turn off\"; xmlhttp.open(\"GET\",\"?on\",true);}else{ element.innerHTML=\"Turn on\";xmlhttp.open(\"GET\",\"?off\",true); }xmlhttp.send();}");
client.println("function getBrightness(){var xmlhttp;if (window.XMLHttpRequest)xmlhttp=new XMLHttpRequest();else xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");xmlhttp.onreadystatechange=function(){if (xmlhttp.readyState==4 && xmlhttp.status==200)document.getElementById(\"brightness\").innerHTML=xmlhttp.responseText;};xmlhttp.open(\"GET\",\"?getBrightness\",true); xmlhttp.send();}window.setInterval(getBrightness,1000);</script>");
client.println("</head><body><div align=\"center\"><h1>Arino Web Server</h1><div>brightness:</div><div id=\"brightness\">");
client.println(analogRead(Sensor));
client.println("</div><button id=\"light\" type=\"button\" onclick=\"send2arino()\">Turn on</button><button type=\"button\" onclick=\"alert('OpenJumper Web Server')\">About</button></div></body></html>");
}
下载程序,并将你的Arino接入到局域网中。现在你就可以通过浏览器访问你的Arino了。页面的中的亮度数据,每秒回更新一次,还可以通过“Turn on”、“Turn off”按钮控制LED的开关。
需要注意的是Arino本身的存储空间有限,存放和输出网页信息会消耗掉很多空间,因此在以上示例程序中,尽量将client.println()输出的文本行数减少,可以节省一定的存储空间。
在Arino Ethernet控制器及扩展板上通常都带有SD卡槽,也可以尝试将网页数据放置在SD卡上,然后分段读取,并通过Ethernet输出,从而达到节省存储空间的目的。