55541| 58
|
[求助] 教你用WIFI shield 简单几步轻松搞定物联网 |
本帖最后由 Grey 于 2014-5-19 11:02 编辑 首先感谢DFRobot提供了这么好的一块wifi拓展版,虽说在设置的时候闹了不少小情绪,比方说重启之后就不鸟你了,每次都要等啊,然后突然就连不上了等等各种小问题,当然在使用过程中,你就会发现,板子其实还是不错滴,价廉物美,功能强大,你值得拥有!在开头稍微吐槽一下这块板子艰辛的设置过程,当然也是楼主自己蛋疼,非要把每种设置都要尝试一遍。这里感谢一下wiki的作者youyou酱,让我少了很多自虐的过程。 STEP 1 准备工作: Arduino UNO 一块 DFRobot WIFI shield 一块 I/O 拓展版 一块 SHT1x温湿度传感器 一个 STEP 2 设置wifi 1,给模块供电,然后用电脑去搜索wifi模块创建的网络,一个原名叫DFRobot wifi shield V3 重置芯片之后会变为名叫 HF-LPB的wifi网络。 当网络显示“有限制的访问网络”时,这其实是没连接上,要像右图一样,显示连接之后,才能访问模块的设置页面。 最好烧一个blink在arduino里面,然后不要插网线,就剩下WIFI。 楼主80%设置时间就是花在了这啊,特此提醒一下小伙伴。 2选择工作模式,推荐AP+STA双模式,其实这也是这款模块的一大亮点,同时支持两种模式。楼主以前玩过其他的wifi模块,不同时支持双模式,设置起来灰常麻烦。 3STA设置 点击搜索,选择相应的工作网络,并加入 点击确定,这时候会出来一个弹窗,需要你输入密码,这是你要加入网络的密码。别忘了保存,保存会让你重启,你可以等全部设置完再重启。但一定不能忘记保存。 4AP设置 ap模式就是你要设置模块的网络,这是给你用来设置参数,网络名字的地方。 5其他设置 这是重头戏,连接外网服务器,这边选了比较新的物联网网站machtalk作为平台。填好相应的端口号和远程服务器地址。ps:Yeelink的服务器地址是api.yeelink.net 端口号是80.想用yeelink的小伙伴可以自己设置。 点击保存之后,到基本信息会出现这样一个页面: 至此,模块的设置基本完成。 6machtalk 为什么选这个网站呢,因为它很新,非常新,异常的干净,非常适合做一些简单的数据上传服务。 在完成注册之后,你会得到一个API号。 添加设备号,在设备里面点击添加设备 填写相应参数 点击保存,ok大功告成,至此网站设置也已完成。 7程序;在提供的样例代码里面把自己的API号和设备号替换上去 因为你需要设置温湿度两个参数,所以需要改两次,还要注意设备ID。 OK~大功告成 查看结果吧 每次一温度变化都是楼主在哈气,原来湿度的变化率远胜于温度。 哈哈哈哈~ 由于时间匆忙Yeelink 和乐联的教程稍后奉上,方法可参考Machtalk,就是把远程服务器地址和端口号改一下。 乐联需要使用他们自己的库,yeelink就更简单了。 有什么问题可以提,楼主不定时更新 |
1.18 KB, 下载次数: 8591
好吧,我自己来回答我的问题。做之前把这个问题想的太复杂了,其实tcp协议就是tcp协议,哪个平台都一样 先放 Arduino的代码
wifi sheild设定的是Tcp Server模式,ip地址 192.168.1.20,端口8899 因为我用的是Leonardo, 所以wifi 用的是Serail1,电脑用Serial,不冲突 客户端用c#代码如下
客户端程序跑起来,用Arduino IDE的串口查看程序就能看到通过tcp传过来的字符了 |
本帖最后由 sunny_nianda 于 2014-5-30 15:36 编辑 楼主,我照着你的做了一遍,试尽了各种物联网平台,但是都没有数据,数据只存在于串口输出,这是怎么回事呢?void setup() { Serial.begin(9600);//Set Baud Rate to 9600 bps } void loop() { double dat; int sensorValue = analogRead(A0);//Connect LM35 on Analog 0 dat = (double) sensorValue * (5/10.24); Serial.print(dat); Serial.println("`C"); Serial.println("POST /v1.0/device/**************/1/1/datapoints/add"); //“/device/4290/sensor/9970/”device,sensor 后面的数值用你自己的替代 Serial.println("Host: api.yeelink.net"); Serial.print("Accept: *"); Serial.print("/"); Serial.println("*"); Serial.print("U-ApiKey: "); Serial.println("**************"); // 此处用你的APIKEY替代 Serial.print("Content-Length: "); int thisLength = 10 + getLength(sensorValue); Serial.println(thisLength); Serial.println("Content-Type: application/x-www-form-urlencoded"); Serial.println("Connection: close"); Serial.println(); Serial.print("par{\"value\":"); Serial.print(sensorValue); Serial.println("}"); delay(1000); digitalWrite(13,LOW); delay(9000); } int getLength(int someValue) { // there's at least one byte: int digits = 1; // continually divide the value by ten, // adding one to the digit count for each // time you divide, until you're at 0: int dividend = someValue /10; while (dividend > 0) { dividend = dividend /10; digits++; } // return the number of digits: return digits; } |
好教程,受益非浅,我是初学者,代码中有一个不明白的地方 代码中用Serial.println用来输出http内容,我的理解是Serial只是用来向串口输出或者读入信息,这个串口应该就是板子用usb连接电脑的时候的那个串口,为什么和wifi扩展板也是用这个串口呢?这样不会和电脑的usb发生冲突么? |
Grey 发表于 2014-5-9 14:24 谢谢解答,那也就是说我其实可以在电脑的com通讯软件里输入同样的内容来让wifi扩展板进行通讯咯 问题二,在没有例子代码的情况下,我如何可以得知wifi扩展板用的是标准的serial和Arduino通讯的呢? 再次感谢! |
fantast_xu 发表于 2014-5-9 13:54 如果用UNO(UNO只有一个串口)作为主控器的话,其实这个串口是既连接了USB,又连接了wifi,这时USB只能读数据,但是不能给UNO发。但是Leonardo有Serial和Serial1就不会有这个问题。一个主机发起通讯的时候,串行总线上可能有多个从机,需要确定到底跟哪个从机通讯先,有应答之类的程序,后面就跟双机通讯一样了。串行方式 一不能做多机通信,单工的没法实现主从的概念。。。。。 |
本帖最后由 fantast_xu 于 2014-5-9 15:59 编辑 Phoebe 发表于 2014-5-9 15:04 也就是说在双工的情况下,因为Leonardo有两个Serial口,所以可以实现和usb以及wifi的通讯。按Phoebe大大的意思理解,那个从机先建立通讯,哪个就是Serial?如果此时第二个从机建立通讯,那这个时候自动分配Serial1? 那为什么不是固定的呢?比如在Leonardo的板子上,usb用的就是Serial口,而wifi用的就是Serial1口, 向wifi写数据的时候的代码是Serial1.println(.....)这样子 还是我上面理解的是错误的,其实你的意思是在Serial上就可以有多个设备同时存在?比如usb口和wifi都挂载在Serial串口上。而Serial1口是空着的 |
这个是我从串口看到的内容,各位大侠帮看看对不对?但是我在yeelink上面看不到数据?楼上的兄弟说要经过浮点要经过格式转换,这个真的不懂,那位大侠帮帮忙? par{"value":62} 30.27`C POST /v1.0/device/device/10965/sensor/18180/datapoints/add Host: api.yeelink.net Accept: */* U-ApiKey: bf6497a31fabf2a574f6b52f5a32b2e8 Content-Length: 12 Content-Type: application/x-www-form-urlencoded Connection: close par{"value":62} |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed