书签 分享 收藏 举报 版权申诉 / 56
上传文档赚钱

类型第9章Arduino-wifi-相关项目课件.pptx

  • 上传人(卖家):三亚风情
  • 文档编号:3408381
  • 上传时间:2022-08-28
  • 格式:PPTX
  • 页数:56
  • 大小:3.18MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第9章Arduino-wifi-相关项目课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Arduino wifi 相关 项目 课件
    资源描述:

    1、第九章第九章:ARDUINOARDUINO WIFIWIFI 相关相关项目项目目录9.1 9.1 ArduinoArduino WiFiWiFi相关项目相关项目9.2 9.2 ArduinoArduino与手机通讯调试项目与手机通讯调试项目9.1 9.1 ARDUINOARDUINO WIFIWIFI相关相关项目项目9.1.19.1.1设计思想设计思想本节中我们将介绍如何基于 Arduino 控制板利用 wifi 模块上传周边的温度至服务器端,可以通过连接服务器的任一客户端获取。这样,就算甚至在大洋彼岸的任何国家,都能查阅到自己亲人身边的温度。同理,也可以利用多种类型的传感器,查阅您需要的其他

    2、信息。9.1.29.1.2材料清单材料清单 本实验所用到的材料清单如表9-1所示。表9-1材料清单利用 ARDUINO 和 WIFI 将温度传送至云端,如图9-1所示硬件实物图。图9-1硬件实物图1.工作原理如图9-2所示。图9-2工作原理图2.实验分析(1)设计实验原理图:按照设计思路,画出实验原理图,如图9-3所示。这是从前面某一讲中抽取的一个图,为了读者查阅的方便,在这再次给出这个图。但这个原理图中,由于画法的原因,还缺少 Arduino 的扩展板和 wifi 模板。但利用传感器 LM35 来采集数据的原理是一样的。图9-3实验原理图(2)实物连接:按照原理图,连接好电路,如图9-4所

    3、示。图9-4实验连接图(3)wifi 网络连接:当连接 Arduino 主板时,就已经可以收到 wifi 信号了,但是为了稳定,最好用专用充电器连接 Arduino 扩展板。你的电脑将会搜索到有 wifi 模块发出的 wifi 信号HI_LINK_0021(或者 HI_LINK_XXXX 可参考第 2 讲得内容)。双击连接 HI_LINK_0021wifi 信号(默认密码 12345678)。若不是第一次使用的,为了确保数据配置的正确性,需要将 wifi 模块恢复出厂默认设置(按住 Arduino 扩展板上的 RST 按钮 6s,然后断电重启即可,具体也可参考第 2 讲的内容)。这一步相当于咱

    4、们用打开手机的 wifi 信号上网一样。此时的 wifi 模块打开 wifi 信号,连接手机的 wifi 热点信号上网。(4)建立 wifi 热点:由于本次实验环境没有其他 wifi,所以采用的是 HTC 手机建立 wifi 热点,用 wifi 路由器也是一样的。打开手机的“WLAN 热点”,记住此时记得打开手机的 3G 网络信号,以便由温度传感器 LM35 采集的数据上传至云端的服务器。本次实验 WLAN 热点名称“HTCtest”,密码“12345678”。也可以用手机默认的用户名和密码,不过,为了输入的方便,可以更改手机默认的用户名和密码。5)网络数据配置:当成功连接 wifi HI_L

    5、INK_0021 网络后,打开浏览器,输入地址192.168.16.254,输入用户名和密码(均为 admin)进入数据配置,如图 9-5 所示。图9-5 网络数据配置 注意红色框框标记部分,其他按默置即可。几点说明:(1)此时的 wifi 模块相当于一个采集输送单元,将采集到的数据由 wifi 模块送至服务器端;(2)SSID 和 Password 指的是手机(或 wifi 路由器)的 SSID 和 Password;(3)Remote ServerDomian/IP:指的是咱们要将采集到的温度数据要存放的服务器 IP 地址;(4)Locale/Remote Port:是访问服务器的地址。(

    6、5)配置完成后,点击“Apply”。这时,再检查手机的“WLAN 热点界面”最下方的“管理用户处”,有“1 连接的用户”。此时,表示 wifi 模块已经连接上了手机的热点,也即连接上了internet。(6)编写 Arduino 代码:void setup()Serial.begin(115200);/设置串口波特率void loop()int n=analogRead(A0);/定义 A0 口为接收电压信号数据 float vol=n*(5.0/1023*100);/电压信号数据温度转换upload_sensor(vol);/调用子函数delay(5000);void upload_sens

    7、or(float vol)/send the HTTP PUT request:核心代码 char buf200;memset(buf,0,200);int ret;ret=sprintf(buf,GET/upload.php?uid=ycf&ps=ycf&sensor_name=Arduino&data=);/设置协议Serial.print(buf);/暂存至 buf Serial.print(vol);/调用温度数据 vol Serial.println(HTTP/1.1);/HTTP 协议名称Serial.println(Host:);/设置服务器地址Serial.println(Co

    8、nnection:close);/数据传输完毕,连接关闭 Serial.println();将上述代码下载到 Arduino 主板上,注意,在 Arduino 的扩展板上有个开关,在下载数据时,请将拨至外侧(O)。这是因为连接串口时,有可能会影响数据的下载。同时打开串口,如图9-6 注意红色的标记。此时的环境温度为 25.90。然后这个温度将通过 wifi 模块连接手机热点上的 wifi 信号上传至服务器端。图9-6 Arduino 串口监视器数据示(7)终端数据采集:若前面 6 步全部成功,恭喜你!成功啦,由温度传感器 LM35 采集到的温度数据已经通过 wifi 模块经由手机 wifi 联

    9、网成功,一路过关斩将,历经千辛万苦,终于将温度传感器 LM35 采集到的温度数据上传至服务器端,如图 9-7所示。图9-7 服务端数据显示比较图 图 9-7服务器端数据显示比较图 9-6(用 Arduino 自带的串口显示器)和图 9-6(云端服务器),会发现,用 Arduino自带串口监视器采集的温度数据和云端服务器温度数据是一致的,说明数据传送成功。在下一讲的内容,咱们将接着下一步工作,将云端服务器的数据很好地展现给别人看。3.要点与总结(1)配置数据前,为确保数据能配置成功,请将 wifi 模块恢复出厂设置;(2)注意配置数据的准确性,尤其是关于手机和服务器端的 IP 地址设置;9.2

    10、9.2 ARDUINOARDUINO与手机通讯调试项目与手机通讯调试项目9.2.19.2.1设计思想设计思想 想要通过Arduino实现与指定手机的通讯录进行信息交互有很多方法,nRF24L01的成本较低,但内部需通过SPI通信,略显复杂,而RF模块又过于专用,接入其他系统时需要转换,不方便。ESP8266是乐鑫公司推出的廉价、但几乎全能的WIFI芯片,被各种智能硬件广泛使用,根据其datasheet,不但支持SPI,也可通过I2C、UART等方式进行通信,尤其是UART,直接支持AT指令,大大简化开发难度,相当便利。本项目通过使用ESP8266无线wifi模块实现与手机进行通信,完成相应的任

    11、务。9.2.29.2.2材料材料清单清单本实验所用到的材料清单如表9-2所示。表9-2材料清单1.ESP8266-14简介 ESP8266-14是一款低成本WIFI-MCU通讯/控制模块,内置ESP8266 WIFI通讯IC和STM8003单片机,拥有业内极富竞争力的封装尺寸和超低能耗技术,可广泛应用于智能家居和物联网网领域,用于将用户的物理设备连接到Wi-Fi无线网络上,进行互联网或局域网通信,实现联网控制功能。该模块内置了一个功能强大的STM8003的芯片,所有管脚全部接出来,其串口与ESP8266的串口相连,用户可以编写STM8程序,通过AT指令控制ESP8266的实现绝大部分智能灯家居

    12、和WIFI物联网功能。ESP8266-14内置ESP8266 WIFI通讯IC和STM8003单片机,可以绕过单片机,直接通过串口使用ESP8266-14内置的8266模块,只是不能利用它的GPIO来作其他事情了,只能作为一个单纯的串口WiFi使用,不过对于目前的应用场景,也差不多了。第一步调试,需要知道这模块从网上买来之后是否好用,那么一般需要用USB_TTL来接PC查看串口消息,不过Arduino可以使用软串口,不过更直接的,可以使用Arduino当作USB TTL来直连PC,是不是很方便呢?这样就可以节省单独购买USB TTL串口调试板的费用了。是不是把Arduino的潜能开发出来了。代

    13、码很简单,就是把D0,D1端口中的内置上拉电阻使能。void setup()/put your setup code here,to run once:pinMode(0,INPUT_PULLUP);pinMode(1,INPUT_PULLUP);void loop()/put your main code here,to run repeatedly:然后把其他设备的TX,RX,GND接到Arduino板子上和USB TTL方法一样。这样,其他设备就可以直接通过串口与PC相连了。PC可以通过串口直接操作它了。Arduino只是作为USB串口的模块存在。引脚图如图9-8所示。在进行USB_TT

    14、L上传的时候,不要把TX,RX插到板子上。以免失败。图9-8 Esp8266引脚图按此方式接线方式如图9-9,接入Arduino Mega2560(或UNO)图9-9 接线方式8266TX(PD6)Arduino Tx08266RX(PD5)Arduino Rx08266ESP_VDDArduino 3.3V8266GNDArduinoGNDArduino VIN 电池7.4V (为确保供电充足,不然USB口接电脑供电不足)Arduino GND电池GND上面的插座是自己焊上去的,这个引脚不是标准的距离,比较费事,需要把引脚掰弯之后焊接,如图9-10所示。上步完成后,如果通过串口能获取到信息,

    15、则证明芯片是好的。可以进行下一步.这里可以手动下一些AT命令对ESP8266进行控制测试第二步 接线方式 与第一步的区别是,TX,RX要反着接,以便Arduino给8266发串口命令。图9-10 接线方式8266RX(PD5)Arduino Tx18266TX(PD6)Arduino Rx18266ESP_VDDArduino 3.3V8266GNDArduinoGNDArduino VIN 电池7.4V (为确保供电充足,不然USB口接电脑供电不足)Arduino GND电池GND 手机设置为便携热点,如图9-11所示(如果用8266作为热点,可能因为客户端没去连接它,而休眠,所以使用手机作

    16、为热点)图9-11 手机设置为便携热点 手机上安装“网线调试助手”,安装成功之后,在 tcp server选项下,点击“配置”,弹出服务配置界面,默认5000端口,点击右边的“激活”,激活成功会显示手机的IP与端 口,则在手机上创建了一个服务,我手机的IP是192.168.43.1:5000.通过Arduino给8266发串口命令,使其连接手机#define WIFISerial Serial1#define _cell Serial1char CMD_LEFT=LEFTOK;char CMD_RIGHT=RIGHTOK;char CMD_BACK=BACKOK;char CMD_FORWAR

    17、D=FORWARDOK;char CMD_STOP=STOPOK;int chlID;/client id(0-4)int ReceiveMessage(char*buf)/+IPD,:/+IPD,:String data=;if(_cell.available()0)unsigned long start;start=millis();char c0=_cell.read();if(c0=+)while(millis()-start0)char c=_cell.read();data+=c;if(data.indexOf(OK)!=-1)break;/Serial.println(data)

    18、;int sLen=strlen(data.c_str();int i,j;for(i=0;i=sLen;i+)if(data=:)break;boolean found=false;for(j=4;j=i;j+)if(dataj=,)found=true;break;int iSize;/DBG(data);/DBG(rn);if(found=true)String _id=data.substring(4,j);chlID=_id.toInt();String _size=data.substring(j+1,i);iSize=_size.toInt();/DBG(_size);Strin

    19、g str=data.substring(i+1,i+1+iSize);strcpy(buf,str.c_str();/DBG(str);else String _size=data.substring(4,i);iSize=_size.toInt();/DBG(iSize);/DBG(rn);String str=data.substring(i+1,i+1+iSize);strcpy(buf,str.c_str();/DBG(str);return iSize;return 0;boolean Send(String str)_cell.print(AT+CIPSEND=);/_cell.

    20、print();_cell.println(str.length();/_cell.println();unsigned long start;start=millis();bool found;while(millis()-start)=true)found=true;break;if(found)_cell.print(str);else /closeMux();return false;String data;start=millis();while(millis()-start0)char a=_cell.read();data=data+a;if(data.indexOf(SEND

    21、OK)!=-1)return true;return false;void setup()Serial.begin(115200);Serial.println(Goodnight moon!);WIFISerial.begin(115200);delay(1000);WIFISerial.println(AT+RST);delay(6000);/WIFISerial.println(AT+CIPMUX=1);/delay(3000);/WIFISerial.println(AT+CIPSESVER=1,1001);WIFISerial.println(AT+CIPSTART=5000);/d

    22、elay(2000);WIFISerial.println(AT+CIPMODE=0);/delay(2000);/WIFISerial.println(AT+CIPSEND);/void loop()char buf500;int iLen=ReceiveMessage(buf);if(iLen 0)Serial.write(buf);if(!strcmp(buf,CMD_LEFT)Serial.write(rnYes Sir Turn Left.);Send(left);/WIFISerial.write(rnYes Sir Turn Left.);else if(!strcmp(buf,

    23、CMD_RIGHT)Serial.write(rnYes Sir Turn right.);WIFISerial.write(rnYes Sir Turn right.);else if(!strcmp(buf,CMD_BACK)Serial.write(rnYes Sir back.);WIFISerial.write(rnYes Sir Turn right.);else if(!strcmp(buf,CMD_FORWARD)Serial.write(rnYes Sir forword.);WIFISerial.write(rnYes Sir Turn right.);WIFISerial

    24、.write(rnYes Sir Turn right.);else if(!strcmp(buf,CMD_FORWARD)Serial.write(rnYes Sir forword.);WIFISerial.write(rnYes Sir Turn right.);else if(!strcmp(buf,CMD_STOP)Serial.write(rnYes Sir stop.);WIFISerial.write(rnYes Sir Turn right.);手机上会显示已有设备连接上了,如图9-12所示。图9-12 显示设备连接 连接好之后,输入LEFTOK 会收到Arduino 通过

    25、8266传输回来的left.完整代码如下:#define WIFISerial Serial1#define _cell Serial1 char CMD_LEFT=LEFTOK;char CMD_RIGHT=RIGHTOK;char CMD_BACK=BACKOK;char CMD_FORWARD=FORWARDOK;char CMD_STOP=STOPOK;int chlID;/client id(0-4)int ReceiveMessage(char*buf)/+IPD,:/+IPD,:String data=;if(_cell.available()0)unsigned long st

    26、art;start=millis();char c0=_cell.read();if(c0=+)while(millis()-start0)char c=_cell.read();data+=c;if(data.indexOf(OK)!=-1)break;/Serial.println(data);int sLen=strlen(data.c_str();int i,j;for(i=0;i=sLen;i+)if(data=:)break;boolean found=false;for(j=4;j=i;j+)if(dataj=,)found=true;break;int iSize;/DBG(d

    27、ata);/DBG(rn);if(found=true)String _id=data.substring(4,j);chlID=_id.toInt();String _size=data.substring(j+1,i);iSize=_size.toInt();/DBG(_size);String str=data.substring(i+1,i+1+iSize);strcpy(buf,str.c_str();/DBG(str);else String _size=data.substring(4,i);iSize=_size.toInt();/DBG(iSize);/DBG(rn);Str

    28、ing str=data.substring(i+1,i+1+iSize);strcpy(buf,str.c_str();/DBG(str);return iSize;return 0;boolean Send(String str)_cell.print(AT+CIPSEND=);/_cell.print();_cell.println(str.length();/_cell.println();unsigned long start;start=millis();bool found;while(millis()-start)=true)found=true;break;if(found)

    29、_cell.print(str);else /closeMux();return false;String data;start=millis();while(millis()-start0)char a=_cell.read();data=data+a;if(data.indexOf(SEND OK)!=-1)return true;return false;void setup()Serial.begin(115200);Serial.println(Goodnight moon!);WIFISerial.begin(115200);delay(1000);WIFISerial.print

    30、ln(AT+RST);delay(6000);/WIFISerial.println(AT+CIPMUX=1);/delay(3000);/WIFISerial.println(AT+CIPSESVER=1,1001);WIFISerial.println(AT+CIPSTART=TCP,192.168.43.1,5000);/delay(2000);WIFISerial.println(AT+CIPMODE=0);/delay(2000);/WIFISerial.println(AT+CIPSEND);/void loop()char buf500;int iLen=ReceiveMessa

    31、ge(buf);if(iLen 0)Serial.write(buf);if(!strcmp(buf,CMD_LEFT)Serial.write(rnYes Sir Turn Left.);Send(left);/WIFISerial.write(rnYes Sir Turn Left.);else if(!strcmp(buf,CMD_RIGHT)Serial.write(rnYes Sir Turn right.);WIFISerial.write(rnYes Sir Turn right.);else if(!strcmp(buf,CMD_BACK)Serial.write(rnYes Sir back.);WIFISerial.write(rnYes Sir Turn right.);else if(!strcmp(buf,CMD_FORWARD)Serial.write(rnYes Sir forword.);WIFISerial.write(rnYes Sir Turn right.);else if(!strcmp(buf,CMD_STOP)Serial.write(rnYes Sir stop.);WIFISerial.write(rnYes Sir Turn right.);

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第9章Arduino-wifi-相关项目课件.pptx
    链接地址:https://www.163wenku.com/p-3408381.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库