0%

LoRa初探-Dragino物联网套件

继大数据、AR/VR、无人驾驶、AI、共享单车之后,物联网又成为了IT业界的新风口,虽然物联网其实是年纪不小的『90后』,但这次能走上风口应该是得益于最近华为、电信运营商对NB-IoT的高调支持与宣传--几乎每天都有NB-IoT在某地实现商用化的新闻,再加上智能硬件的这股热潮远未退去,物联网自然而然地再度成为了风口上的那只猪。 其实就我个人的观点来说,我也认为如今的软件发展已经极其成熟--无论用户需要什么功能的软件(在软件能实现的范畴之类),无论是Native的还是Web的,无论需要支撑多大的用户量与数据量,程序猿们都可以实现只是钱和时间的问题。但用户已经不满足于此了,纯粹的软件既不能帮你倒茶、也不能帮你做饭,所以智能硬件、物联网的出现是顺应了时代的潮流的,在不久的将来,高科技的硬件会广泛地出现在我们的生活中,再往后,估计人们就开始往自己身上动刀子、开始改造自身了吧......

最近在了解NB-IoT和LoRa之类的物联网通信协议,两者作为物联网物理层的协议都具有广覆盖、低功耗、低带宽、大容量、低成本(暂时还没能实现)的特点,区别也很明显,NB-IoT可以由现有的蜂窝网络基站(2/3/4G基站)升级而来,所以电信运营商会大力支持它;而LoRa使用开放频段,由使用者自行建立网络。两者将来是共存,还是由一个取代另一个,这个就只有交给时间来验证了。

话题扯回来,最近刚好有接触到Dragino的LoRa开发套件,在这里记录一下使用方法吧。 Dragino套件中包含:一个LoRa网关,兼作路由器;两个LoRa结点,一个是LoRa Shield,另一个是LoRa/GPS Shield,与Arduino底板配套。

LoRa网关其实是一个带LoRa模块的Arduino Yun,而Arduino Yun又可以看做是路由器与Arduino的结合,其包含了一个Atheros AR9331和一个ATmega 32u4共两个处理器,前者运行OpenWrt、支持Wifi和有线网络、实现了一个完整的路由器功能,后者则实现了Arduino环境、可以看作就是一个Arduino Leonardo。两者之间在硬件层面通过UART通信,在软件层面可以使用Arduino提供的Bridge软件库进行通信,通过Bridge软件库Arduino可以进行调用Linux命令、文件读写、控制台通信、发起HTTP请求等操作,具体的可以看官方资料:https://www.arduino.cc/en/Guide/ArduinoYun 。

Dragino LoRa网关的OpenWRT系统默认账号密码是:root/dragino,因为没有带说明书,这个密码折腾了好一会才弄出来。

在连接到LoRa网关的WIFI网络中后,在Arduino IDE中就可以通过网络发现网关这个Arduino Yun了,当然也就可以通过网络向这个Arduino刷写程序了。 具体的操作步骤可以看Dragino的文档:http://wiki.dragino.com/index.php?title=Getting_Start_with_Arduino_Yun

接下来就是几种通信方式了,第一种是只借助LoRa模块的简单通讯,直接使用Dragino提供的sample即可,在Github上也有:https://github.com/dragino/Arduino-Profile-Examples/tree/master/libraries/Dragino/examples/LoRa ,再找一个Arduino Uno、插上LoRa Shield,然后它和网关(Arduino Yun)分别刷入Client和Server即可实现通信,在这个示例中谁是Server谁是Client并不重要。

第二种就是通过LoRa将远程Arduino上采集的信息传输到互联网中了,官方示例中使用的是ThinkSpeak提供的服务,示例位于:https://github.com/dragino/Arduino-Profile-Examples/tree/master/libraries/Dragino/examples/IoTServer/ThingSpeak ,这一次将自己的Arduino Uno作为Client(示例见dht11_client),从DHT11温湿度传感器中采集温湿度并通过LoRa传输给网关,在网关中(示例见LG01_ThingSpeak_RESTful_Single_Data)使用HttpClient或者其它方式(现在Dragino的示例改为使用Process来调用OpenWrt中的curl)将数据上传到ThinkSpeak,这样就借助网关(Arduino Yun)完成了数据从LoRa协议到以太网的转换。