|
|
本帖最后由 ardyPro 于 2014-11-29 13:16 编辑
Marco Schwartz先生是一位有超过5年工作经验的电子工程师,热衷于使用Arduino、树莓派来制作智能家居项目,目前他维护一个开源智能家居控制的网站www.openhomeautomation.net,同时他还是《Arduino Networking》, 《Home Automation with Arduino》, 《Internet of Things with the Arduino Yun》等畅销书的作者。
当前物联网这个概念正是热门,国内也出现了yeelink、lewei等物联网供应商,不少朋友也使用Arduino搭建自己的数据采集平台,将现实世界的比如温度、湿度等环境数据上传到物联网服务器,甚至通过这些物联网服务器来远程控制自己的设备。不过由于涉及网络通信协议,对新手而言就比较复杂了。不少新手在实现这些功能的过程中,就会遇到不少的问题,其中最多的就是如何通过Arduino连接远程服务器。我当初也是这么一步一步淌过来的,所以清楚新手在问题面前如何抓耳挠腮。在yeelink、乐为的QQ群里,经常会遇到他们询问W5100如何连接网络, 如何调试之类的基础性问题,要是有一本关于Arduino网络编程的书多好,就可以不用一遍又一遍的回答同样的问题。
这次有幸从Packet Publishing得到一本赠书《Arduino Networking》http://goo.gl/hhHH2u,这本书正是通过一些实例,教你从认识W5100网络模块开始,如何连接路由器以及联网,如何发送数据以及如何从远程服务器获取数据等,一步一步的深入。

全书共六章,第一章很简单,用一个实例来认识网络模块以及如何联网,讲的非常细致,如何设置IP地址、Mac地址,注意作者使用的是Adafruit的W5100网络模块,据作者在书里讲,板子的后面有MAC地址的标识,而我使用过的W5100兼容板子是没有内置MAC地址的,读者看到这里的时候需要注意,这里可以填入任意有效的MAC地址。
例程基本上是Ethernet自带的sample的改进版,host改成你www.brainjar.com,这个比原来sample中的www.google.com要好的多,道理你懂的。例程分解的很详细,基本上每个代码块都讲到了。
第二章是如何发送数据到web服务器,注意这里的web服务器是本地端的,需要自己搭建,windows平台可以用EasyPHP来搭建,书里有简单的说明。接下来是客户端的Arduino代码,以及服务器端的PHP代码,读者可以照着范例运行一遍。个人感觉这一章比较难,最好是放在最后一章,所以建议没有php基础的读者可以粗略看一看,然后跳过去阅读第三章。
在前面两章中,都是创建的ElthernetClient的实例,Arduino作为客户端访问网络。这一章是将Arduino作为web服务器,供其它客户端通过浏览器来访问,Arduino通过DHT11采集来的温度、湿度数据保存在SD卡里面。本章的一个亮点是Arduino通过NTP协议从远程的时间服务器获取时间。这种方式的最大优势,就是可以用手机、平板电脑等移动终端通过浏览器就可以获取Arduino采集到的数据,大大减少了编程工作量。
前面几章介绍的都是Arduino通过传感器采集数据,接下来的第四章介绍远程控制,这里将用到两个第三方类库,aREST和teleduino,www.teleduino.org的服务是基于RESTful框架的,所以要用到aREST类库。
Teleduino的功能十分强大,服务器通过网络与Arduino交互,许多原本本地端的功能都可以远程实现,teleduino.org主页是这么介绍的:
Using the Teleduino platform, you can perform the following tasks with your Arduino via the simple web service:
· Reset, ping, get uptime, get free memory.
· Define pin modes, set digital outputs, set analog outputs, read digital inputs, read analog inputs, or read all inputs with a single API call.
· Define up to 2 'banks' (4 for the Mega) of shift registers. Each 'bank' can contain up to 32 cascaded shift registers, giving a total of 512 digital outputs (1024 for the Mega).
· Shift register outputs can be set, or merged, and expire times can be set on merges (you could set an output(s) high for X number of milliseconds).
· Define, and read and write from serial port (4 for the Mega).
· Read and write from EEPROM.
· Define and position up to 6 servos (48 for the Mega).
· Interface with I2C (TWI) sensors and devices.
· Set preset values for the above functions, which get set during boot. Preset values are stored in the first 178 bytes of the EEPROM (413 for the Mega).
第四章就是利用teleduino的服务来实现远程控制继电器,有了这些强大的平台,控制继电器那只不过是如何使用teleduino类库的事情了。
第五章是发送数据到xively服务器,xively可是开源物联网的先驱,掌握了跟xively交互,那再使用本土的yeelink、乐为等物联网服务,那就小菜一碟了。这一章本来可以讲更多的东西的。
最后一章是讲如何把数据发布到Google Docs,学会爬墙之后再来细看,心急的可以现在就看。这一章从头到尾我都没看到如何从Google Docs GET回来我想要的数据,实用性上打了很大一个折扣,可能需要大家自己来发掘。
这本书不厚,一百来页,作者讲述的也很通俗易懂,适合新手入门,老鸟就可以直接参考后面的案例。
|
|