使用Arduino UART-WiFi模块做web服务器

一、硬件准备

1.选择硬件,主要有2种:

  • 一种是官方推荐的Arduino WiFi Shield(比较贵,大概要300~400块 淘宝网 ;但是资料齐全);
  • 一种是UART-WiFi模块,不仅支持Arduino,而且支持所有串口的单片机都可以和其模块通信(大概100块左右,淘宝网,资料较少)。

最后选择了UART-WIFI模块,也走了条坎坷的路,也许到了不少东东。

2.
 
UART-WIFI模块介绍

  • 图片

  • 接口
       双排(2 x 4)插针式接口
       支持波特率范围:1200~115200bps
       支持硬件 RTS/CTS  流控
       单 3.3V  供电 、300mA
  • 无线
       支持 IEEE802.11b/g  无线标准
       支持频率范围:2.412~2.484 GHz  
       支持两种无线网络类型:
       基础网(Infra )和自组网(Adhoc)
       支持多种安全认证机制:
       WEP64/WEP128/ TKIP/CCMP(AES)
       WEP/WPA-PSK/WPA2-PSK
       支持快速联网
       支持无线漫游
  • 其它
       支持多种网络协议:
       TCP/UDP/ICMP/DHCP/DNS/HTTP 
       支持自动和命令两种工作模式
       支持串口透明传输模式
       支持 AT+控制指令集
       支持多种参数配置方式:
       串口/WEB  服务器/ 无线连接

3.
 
UART-WIFI模块配置

由于
 
UART-WIFI模块需要3.3V和300mA的输入,而Arduino只能提供3.3V和50 mA,直接连接到Arduino,会导致arduino的3.3v输出,实际测量只有2.3V左右,不能正常使用
 
UART-WIFI模块。

  • 3种配置
    • 配置一:外接电源

    • 配置二:可以使用兼容官方Arduino的升级版开发板(Freaduino).Freaduino使用1117-3.3输出3.3V供电,最大电流800mA。Arduino只提供500mA的5V供电,而Freaduino更改原有LDO设计为DCDC,最多可以提供2A的5V供电。
    • 配置三:转接板(没找到合适的转接板,未验证,不过原理应该是一样的,提高电流 )

二、测试UART-WiFi模块

  • 方法一:使用UART-WIFI配置管理程序进行管理
    • 将 UART-WIFI 模块和串口连接板连接好,连接好串口线后打开电源
      • 小技巧:1.可以把Arduino的reset和gnd连接,作为串口转接板使用;2.Arduino作为串口转接板使用时,必须RX连接UART-WIFI 模块RX;TX连接UART-WIFI 模块TX。
    • 启动 UART-WIFI配置管理程序,从端口列表中选择模块的连接端口号,如果不确定可以选择自动(频率设置为9600)

    • 点击“退出透传模式”
    • 点击“搜索模块”,如果连接端口选择“自动”且计算机有多个串口时,可能会花费较长的搜索时间,完成后如下图所示:
    • 修改该模块相应的配置
  • 方法二:通过内置WEB服务器,使用IE浏览器通过网页进行参数配置功能
    • 使用pc,搜索并连接到该模块的ap。必须保证模块已经成功连接到网络;
    • WEB服务器默认端口号为 80,因此在浏览器的地址栏仅输入地址即可。比如:192.168.1.100
    • 输入WEB服务器的账号密码(默认账号:admin 默认密码:000000)

    • 网页的配置页面如下图所示,如果要修改无线模块的配置参数,只需在修改完成后点击相应的“ save”按钮即可提交修改

三、实现wifi webserver

  • 第一步:配置参数(使用管理程序和web后台均可)
    • 无线参数
      • sta模式
      • SSID名称
      • 加密模式
      • 无线路由器密码
    • 自动工作模式
      • 协议类型:TCP
      • C/S模式:server
      • TCP过期时间:2s
      • 端口号:8080
  • 第二步:编写arduino并上传代码到板子上

void setup()

{

Serial.begin(9600);

}

void loop()

{

boolean currentLineIsBlank = true;

while(1){

if (Serial.available()) {

char c = Serial.read();

// if you‘ve gotten to the end of the line (received a newline

// character) and the line is blank, the http request has ended,

// so you can send a reply

if (c == ‘\n‘ && currentLineIsBlank) {

// send the webpage

Serial.println("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<html><body><center><h1>Hello World!! I am WiFi WebServer</h1></center></body></html>");

break;

}

if (c == ‘\n‘) {

// you‘re starting a new line

currentLineIsBlank = true;

}

else if (c != ‘\r‘) {

// you‘ve gotten a character on the current line

currentLineIsBlank = false;

}

}

}

}

注意:不要连续输入三个“!”,这会导致上传到mega2560失败。

示意图:

  • 第三步:打开浏览器,访问板子的ip地址, 验证结果。以192.168.103:8080 为例

时间: 2024-08-24 21:54:30

使用Arduino UART-WiFi模块做web服务器的相关文章

入门篇:Ubuntu用apache做web服务器

一.安装Apache Ubuntu提供了3个apache2的软件包,它们分别是apache2-mpm-worker.apache2-mpm-prefork.apache2-mpm-event.如果你在安装Ubuntu操作系统<入门篇:ubuntu server 安装教程>的时候你选择安装了LAMP包的话,那么安装的是apache2-mpm-prefork.如果你没有选择安装LAMP包,安装完系统之后,执行下面的命令安装apache2这个软件包时,安装的是apache2-mpm-worker:s

Nginx是什么,有什么优点?为什么选择Nginx做web服务器软件?(经典经典)

1.基础知识 代理服务器:    一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端.应用比如:GoAgent,FQ神器.    一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接.或者获得目标服务器的指定资源. Web代理(proxy)服务器是网络的中间实体. 代理位于Web客户端和Web服务器之间,扮演“中间人”的角色.HTTP的代理服务器即是Web服务器又是Web客户端.    代

Nodejs做web服务器的一个简单逻辑和实现

本文写了自己对"Nodejs做web服务器的一个简单逻辑和实现",如果不太合理,或者了解这部分的大神,欢迎拍死.哈哈,新手. 昨天开始学习Nodejs,w3cschool看了一遍.感觉其上的内容,一上来就开始介绍Nodejs的模块.看来后来,连如何"从零创建一个nodejs版的web服务器"都没能明白.可能是自己太过肤浅,或者,陷到了WAMP的思维里,不能自拔吧.后来在nodejs中文社区发了个帖子.感觉自己算是明白了点儿.写出来,希望和大家一起学习,同时也希望得到

使用nodejs的http模块创建web服务器

[email protected] Contents 1.?web服务器基础知识 2.?Node.js的Web 服务器 3.?代码实现 1.?web服务器基础知识 接受HTTP请求(GET POST DELETE PUT PATCH HEAD) 处理HTTP请求(自己处理,或者请求别的程序处理CGI) 做出响应(返回页面.文件.各类数据等) 常见的web服务器架构: Nginx/Apache:负责接受HTTP请求,确定谁来处理请求,并返回请求的结果 php-fpm/php模块:处理分配给自己的请

树莓派做web服务器(nginx、Apache)

一想到Linux Web服务器,我们首先想到的是: Apache + MySql + Php. Apache:是世界使用排名第一的Web服务器软件. 可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件. MySQL:是一个关系型数据库管理系统,由瑞典MySQL AB公司开发.是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(关系数据库管理系统)应用软件之一. PHP:(外文名: Hypertext Preproces

利器: 用Siege做Web服务器压测

用「Web压测」关键词检索,能找到好多进行压测的工具,比如ab.Http_load.Webbench.Siege这些,不过今天并不是要对这些工具做对比,毕竟我们只是想得到一个结果.本文主要介绍Siege,因为Siege是上面四者中,在Mac上安装和使用最便利的,所以果断就是它了! 准备工作 在压测开始前,你需要确保你的open files足够大,否则会报TOO MANY FILES OPEN错误,可以通过ulimit -a查看,如下图: 使用ulimit -n 10000可以修改该值.不过这种修

nginx添加proxy_cache模块做缓存服务器

业务需求nginx对后端tomcat(静态文件)做缓存 减轻后端服务器的压力 # nginx-1.6.2.tar.gz  ngx_cache_purge-2.3.tar.gz #编译安装 ./configure --add-module=../ngx_cache_purge-2.3 --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx

Nginx做web服务器linux内核参数优化

关于Linux内核参数的优化: net.ipv4.tcp_max_tw_buckets = 6000 timewait的数量,默认是180000. net.ipv4.ip_local_port_range = 1024 65000 允许系统打开的端口范围. net.ipv4.tcp_tw_recycle = 1 启用timewait快速回收. net.ipv4.tcp_tw_reuse = 1 开启重用.允许将TIME-WAIT sockets重新用于新的TCP连接.

树莓派3uart wifi模块调试 (浪费了我3天时间的宝贵经验)

最开始我是连接一个wifi模块到我的arduino uno上,可是uno只有一个uart并且这个uart和usb串口相连的.出现了一些和很奇怪的问题.进入设置模式(m0=1 , m1=1)后,确实能够设置,设置的参数都保存成功了,但是使用c3c3c3无法获取到版本没有任何返回,可能当时是我的rx数据线的没有接触的问题. 后来我将两块uart wifi模块通讯,在电脑上外接usb转串口 (2个usb转换器,通讯一点问题没有,使用linux的minicom. minicom一定要将硬件流控制关闭,8