极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 217447|回复: 76

wifi模块简单使用教程,如何将数据发送到电脑(esp8266 arduino库的使用)

  [复制链接]
发表于 2014-9-16 21:07:07 | 显示全部楼层 |阅读模式
本帖最后由 迷你强 于 2017-11-16 09:52 编辑

您正在阅读一个较为过时的帖子,我们不建议您直接使用帖子中介绍的技术

说明一下,我的库是基于1.5.7版本的IDE开发的,主要是从里面复制了一个软串口库,所以1.0x版本会有问题。建议使用1.5x版本尝试下

目前发现的问题是,软件串口库有一个bug,会造成不定时不定位置的字符丢失现象,目前暂无很好的解决方案(除非bug原因被找到并修复),所以这个库的后续开发工作已经暂停,并且可能有些用户会遇到各种问题不能使用,这个就是目前所存在的问题,没有太好的解决方案,目前不推荐使用本库,本帖也仅限于参考,推荐学习研究AT指令,并通过arduino程序来发送这些指令

公告:新版本的OCROBOT SEED模块已经采用了官方版本的固件(已开源),所以要做本实验的童鞋,可以参考wiki上的固件更新教程将ocrobot固件上传到模块中(ocrobot固件及源代码均以开源)。

http://www.ocrobot.com/doku.php?id=zh:ocrobot:modules:seed

2014年11月24日增补




    最近大家都比较关心WIFI模块的使用,目前328p芯片系列的硬件库已经初步完成了(MANGOII  NANO  等),下面我给大家演示下具体的使用。首先就是网络的基础知识,这个需要理解下,自己找找资料研读下
具体就是要知道 TCP/IP协议集,什么是TCP 什么是UDP  ,TCP链接的原理,内网与外网的区别(nat技术),什么端口。

理解下面这句话:任何网络服务器可以理解为监听在指定端口的程序,负责接收数据并且做出反应。


好,我们今天就会用wifi模块往自己的计算机上发送一组字符串(“hello Intelnet~!”),直接发送到我们的自己的电脑的8080端口~

所以我们需要一个能在自己电脑上监听端口的软件,如果有熟悉的可以自己选用,不会的,就下载我提供的这个东西



我们目前只用右侧部分的功能,请照下图配置好软件



模式选择为UDP模式(这个模式俗称发送后不管,也是非可靠链接,只管发送数据,路上丢了不会补发。好处就是速度快,效率高)

IP选择你自己的电脑的IP
端口设置为8080
下面的所有的钩钩都去掉
然后点击按钮,使其变红,这样就开启了端口监听,这个软件会在电脑上监听8080端口了。如果端口收到任何数据,都会显示出来。

然后

我们来玩模块,按照下图来接线()


                 V  -------- 3v3
ESP8266     G  ------- GND     ARDUINO
                 T --------- 10
                 R --------- 11


接好线,我们去下载arduino库~·

https://github.com/534659123/OCO ... 266-arduino-library

点击右边的 download ZIP下载所有文件,解压缩后将uarlWIFI_328 文件放入arduino的libraries目录下即可

注意目前这个库只适用于328p系列的主板,2560 32u4等硬件选择uarlWIFI这个文件库(当然,不能用我们下面的例子,以后有可能我会做合并)


然后启动arduino,写入下面的代码

  1. /*show you home wifi AP*/
  2. #include <uarlWIFI_328.h>
  3. WIFI wifi;
  4. void setup() {
  5.   Serial.begin(9600);
  6.   delay(2000);
  7.   wifi.confMode(STA);  // STA or  AP or  AP+STA
  8.   wifi.Reset();
  9.   Serial.println(wifi.showAP()); //print wifi
  10. }
  11. void loop() {

  12. }
复制代码


打开串口监视器,看到类似下图的显示,就说明wifi模块已经正常工作了,下图显示的是你附件模块能够搜索到的wifi热点,所以每个人都不一样


BUG更新
很多人在这个程序执行完成后发现,不能显示,我进过排查发现,有些人家周围的wifi信号非常密集,这就造成了显示的列表比较长,超过了arduino的串口缓冲区容量,所以需要手工修改串口缓冲区容量,arduino默认64字节
首先打开文件
\arduino-1.5.7\hardware\arduino\avr\cores\arduino\HardwareSerial.h
看第40 和41行 后面有两个64
我们需要将其改成128或者更大的数字,以保证能顺利的接收所有字符


然后我就要登陆wifi热点了。。这个用另外一个程序

  1. /*Join wifi AP*/
  2. #include <uarlWIFI_328.h>
  3. WIFI wifi;
  4. void setup() {
  5.   Serial.begin(9600);
  6.   delay(2000);
  7.   wifi.confMode(STA);  // STA or  AP or  AP+STA   选择STA模式,也就是客户端模式,简单的说就是作为网卡来用  AP就是自己作为热点
  8.   wifi.Reset();     //reboot wifi Modules
  9. wifi.confJAP("SSID","PASSWORD");   //这里填写你要加入的网络热点名与密码,如果是没有密码的也乱写一个写满8位,注意千万别写错了,不会提示的,你会很难排查。
  10. delay(5000);                       //等待5秒钟时间,让路由器给你分配IP
  11.    Serial.println(wifi.showIP());  // 串口显示获取到的IP,如果正常显示,说明登录网络成功了,如果不显示,需要检查SSID和密码是否写错了
  12. }
  13. void loop() {

  14. }
复制代码


千万注意这个程序是要自己修改SSID  和password的~!!!!!!
比如我加入的网络是 OCROBOT   密码是 12345678  那一句就要改成
wifi.confJAP("OCROBOT","12345678");
别傻乎乎的一个字不改下载说不行~,严格区分大小写~!!!!!!  

下载完后马上打开串口监视器,然后耐心等待。。。。。

比我耐心等待了10多秒以后,会显示如图下的内容




呵呵这样就顺利连上自家网络了。。

到这一步后,模块的配置工作就完成啦~~~~只要以后在附近,就不用重新配置了,上电会自动连上的。方便吧~~


下面我们开始写程序来发个数据~


  1. #include <uarlWIFI_328.h>
  2. WIFI wifi;
  3. void setup() {
  4. wifi.confMux(0);       //切换模块到单链接通讯模式
  5. wifi.Reset();           //切换模式必须重启后生效
  6. delay(5000);          //重启后一定要给足够的时间让模块获取IP
  7. wifi.newMux(UDP,"192.168.100.116",8080);    //建立一个连接 UPD 到我的电脑的8080端口
  8. wifi.Send("hello Intelnet~!");                       //发送字符
  9. delay(1000);                                                   //等一会
  10. wifi.Send("My name is miniqiang");                //接着发字符

  11. }
  12. void loop() {

  13. }
复制代码



如果一切顺利的话,你的监视器就会看到数据啦,如下图




这样,简单的数据上传就完成了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +3 收起 理由
幻生幻灭 + 3 财主威武

查看全部评分

回复

使用道具 举报

发表于 2014-9-16 23:56:52 | 显示全部楼层
收藏,并求淘宝链接……
回复 支持 反对

使用道具 举报

发表于 2014-9-17 09:02:45 | 显示全部楼层
哈哈,教程出来了。。。。。严重支持。。。 链接。。。。。。
回复 支持 反对

使用道具 举报

发表于 2014-9-17 09:18:24 | 显示全部楼层
刚买了这个模块   今天估计能到手    貌似这个模块就用串口发送at指令就能用吧
回复 支持 反对

使用道具 举报

发表于 2014-9-17 11:34:00 | 显示全部楼层
wetnt 发表于 2014-9-16 23:56
收藏,并求淘宝链接……

论坛导航栏的杂货铺中有售~
回复 支持 反对

使用道具 举报

发表于 2014-9-17 11:34:11 | 显示全部楼层
flashria 发表于 2014-9-17 09:18
刚买了这个模块   今天估计能到手    貌似这个模块就用串口发送at指令就能用吧

恩,AT指令。
回复 支持 反对

使用道具 举报

发表于 2014-9-17 13:48:16 | 显示全部楼层
有了这个帖子就敢放心买了
回复 支持 反对

使用道具 举报

发表于 2014-9-17 14:05:33 | 显示全部楼层
网上买了个跟这个板子不大一样,指令更新了。。库需要一个一个调 郁闷
回复 支持 反对

使用道具 举报

发表于 2014-9-17 17:51:50 | 显示全部楼层
啊哈,模块前几天入了俩,不过是官方的指令集版本,也是需要修改类库的,学习了
回复 支持 反对

使用道具 举报

发表于 2014-9-17 21:53:02 | 显示全部楼层
赞~通俗易懂。另外想请教一个问题,如果我想让WIFI模块每隔一段时间就主动访问计算机,然后获取计算机的数据,读取它的指令,让后通过串口控制Arduino,使得Arduino做出相应的行动。如何才能实现呢~
回复 支持 反对

使用道具 举报

发表于 2014-9-17 22:56:30 | 显示全部楼层
支持,请问一下,可以实现把arduino上的音频文件传输到电脑上吗?
回复 支持 反对

使用道具 举报

发表于 2014-9-18 00:11:45 | 显示全部楼层
好,一直就想用这种方式,控制方便,兼容性好多了
回复 支持 反对

使用道具 举报

发表于 2014-9-18 07:42:50 | 显示全部楼层
请教下,esp8266的固件是哪个版本的,能提供下固件吗?
回复 支持 反对

使用道具 举报

发表于 2014-9-18 12:53:51 | 显示全部楼层
能设置固定IP么?
回复 支持 反对

使用道具 举报

发表于 2014-9-19 00:02:10 | 显示全部楼层
正在学习这个
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 06:34 , Processed in 0.059537 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表