你觉得这篇文章怎么样? 帮助我们为您提供更好的内容。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
你觉得这篇文章怎么样?
世界上第一台内置LoRaWAN的笔记本的电脑?
使用Microchip RN2483 PICtail芯片连接至物联网
物联网正在变得越来越流行,于此同时,连接的需求也在增长。传统的WiFi,有线以太网和蜂窝网络都已使用一段时间并且适用于许多连接设备,但是当考虑到低能耗、低价格和长距离等需求时,现在有了许多别的解决方法。
进入LoRaWAN(长距离广域网),只需要很低廉的安装费用,一个无线系统可以通过免执照频段来达到相当广阔的范围。关于LoRaWAN更多细节的信息可以在LoRa Allia 网站上的一篇来自Andrew Back的近期博文中找到。
Image source: thethingsnetwork.org
在Andrew的博文中还有关于物联网(一个自由开放的数据网络原型)的相关信息。这使得使用者可以将节点连接至提供了对互联网连接性的LoRaWAN网关。
有一个LoRaWan网关在旁边,我认为有一个移动开发平台来进一步试验物联网络是一件很酷的事。
在这篇博文中我们使用Pi-top(一个基于树莓派的笔记本电脑)和一个可兼容LoRaWAN的Microchip RN2483开发板来建立一个解决方案。
易于开发
RN2483是一个自含式模块,有一些人有做一些基础的分接板,我们选择即插即用的开发板来做一个简单的原型样板。
这一块板的实用特性是包含了两个SMA接口可用于433MHz或868MHz的操作,还有对应的天线,一个板上的USB-UART口可使USB直接连接至电脑。值得注意的是不是所有的频段在所有的国家都适用的。
在将这个模块直接连接到树莓派的GPIO口之前,我们决定先用USB接口测试这个系统。
回归基础
为了提供一个更加熟悉的操作环境,我们使用新安装的Raspbian代替Pi-top自带的操作系统。这使得我们有机会将最流行的Pi版本在Pi-top上试用。Raspbian的最新版本(在写这篇文章时是2016-03-18-raspbian-jessie.zip)已经被下载并写入SD卡。
在移除原本的Pi-top SD卡之前,我检查了是否有Pi-top专用的软件包可以为我们安装Raspbian提供方便。尽管普通版本可以在Pi-top上使用,安装Pi-top专用软件包带来了一些实用的升级,如屏幕亮度控制和电池监控等。
为了将这些加入Raspbian,在Pi上执行下面几步操作:
-
导航至 /etc/apt/sources.list.d :
-
$ cd /etc/apt/sources.list.d
-
-
创建一个叫pi-top.list的新文件:
-
$ sudo nano pi-top.list
-
-
加上如下一行:
-
deb http://apt.pi-top.com/raspbian/ jessie main
-
-
保存文件关闭编辑器
-
得到所需的公共码:
-
将代码加到APT键环
-
$ sudo apt-key add apt.pi-top.com.gpg.key
-
-
确保Pi更新
-
$ sudo apt-get update
-
$ sudo apt-get upgrade
-
-
安装Pi-top专用安装包:
-
sudo apt-get install pt-battery pt-hub-controller
-
然而上述步骤不是必须的,你的Raspbian现在变得更适用于Pi-top。完成这一步之后,我们可以接着测试RN2483模块。
串口通信
使用提供的USB线将RN2483开发板连接到Pi。为了决定正确的串口,如下指令可以被使用:
$ dmesg | grep tty
这在来自dmesg的输出中搜索tty,并且我们很快确定ACM0是新插入的USB设备的串口。
注意的是我们的模块有安装1.0.0固件,如果你需要更新或改变你设备的固件,可以在这里查询更多信息。
对这个部分来说,我们是假设你喜欢使用Minicom或是gtkterm等虚拟终端。我们将会使用Minicom,我们用如下指令安装在Pi-top上:
-
$ sudo apt-get install minicom
接下来使用合适的串口和传输速率开启:
-
$ minicom -D /dev/ttyACM0 -b 57600
根据RN2483的指令参考用户指南,这个指令是用来从板上追踪版本信息的:'sys get ver'。这个模块通过显示出相关信息作为反馈,我们可以看到链接是可以工作的。值得注意的是指南上建议我们在虚拟终端设定上激活CR和LF,尽管我们发现这是不够的。在按了回车之后,看上去什么都没有发生。在物联网论坛上讨论时,用户kersing建议我们使用ctrl-M和ctrl-J来发送指令,这个方式能够解决问题。
如下指令用来装配模块:
-
确保模块重置和重启:
-
sys reset
-
-
设定网络会话密匙,在这里使用的是默认物联网密匙
-
mac set nwkskey
2B7E151628AED2A6ABF7158809CF4F3C
-
-
设定应用会话密匙,在这里使用的是与网络会话一样的密匙,便于初始测试:
-
mac set appskey
2B7E151628AED2A6ABF7158809CF4F3C
-
-
(注意的是这允许所有人查看物联网RESTful API,这里提供。然而,如果你有一个与隐私相关的应用,你可以使用个人密匙。)
-
设定专有的网络设备地址——你将会使用一些不一样的,这里仅是用来测试。建议你在物联网Wiki上保留地址空间:
-
mac set devaddr 90000009
-
-
禁用自适应传输频率:
-
mac set adr
off
-
-
将上面的所有更改保留至用户EEPROM:
-
mac save
-
-
告诉RN2483模块去尝试连接至网络:
-
mac join abp
-
-
发送一个'68656c6c6f576f726c64' ('helloWorld'的16进制表达)的负荷:
-
mac tx uncnf 1 68656c6c6f576f726c64
-
如果这一切都能正常工作,就可以导航至RESRful API并且参看负荷量:
http://thethingsnetwork.org/api/v0/nodes/90000009/ (注意的是加粗的部分是要求改变你选择的设备地址的)。
值得强调的是正确使用应用会话密匙的重要性。使用默认物联网密匙是适用于测试的但是建议在生产中使用你自己的密匙。首先,这意味着信息负荷不再是以文字格式在公共的RESTful API中显示。其次,这确保了信息的完整性:它使得你的设备/负荷免于被他人盗取,但是如果应用会话密码被他人盗取这是可能的。
当模块可以正常工作时,我们就能够发送文件包到网络上了,我们可以改用Pi的板上UART 口而不是开发板自带的USB-UART口。
树莓派3上的串口
最新版本的树莓派保留了主要的板上UART到低耗能蓝牙模块,与之前版本的树莓派一样,在它能够被打包应用于GPIO口之前需要一些设置调整。
更多的相关信息可参考这个论坛,但是概括来说,将BLE转换为mini-UART以及重装UART0到GPIO头是可能的,因此使得它更容易使用。这是一个妥协并且可能影响BLE的性能,但是这适合我们的目的。如下步骤是用来完成这个改变的:
-
确保固件更新:
-
$ sudo rpi-update
-
-
编辑 config.txt:
-
$ sudo nano /boot/config.txt
-
-
在末尾加上如下行:
-
dtoverlay=pi3-miniuart-bt
-
-
保存并退出编辑器:
-
编辑cmdline.txt并且移除下面的'console=serial0,115200':
-
$ sudo nano /boot/cmdline.txt
-
-
保存并退出编辑器。
重启系统,现在的情况应该是UART0 TX+RX被分为GPIO14+GPIO15
将LoRaWAN加到Pi-top
Pi-top有一个小空间将Pi包围起来,在Pi-top的中心处,有很多的空余空间。默认建议是将Pi悬挂于盒子的右手边,为了方便USB接口的接入。
通过将Pi移动到Pi-top中比较靠中心的位置,就能够使LoRaWAN模块以能使868MHz的接口从Pi-top侧面的接口接入的方式安装。虽然使它成为一个触摸不太方便的连接USB的外设,但是还是能够通过可以轻易移除的外壳盖接触到树莓派。
这是目前很好的解决办法,但是也可以用一个更为简单的RN2483模块的分接板,因为我们不再要求USB-UART界面和其它我们正在使用的开发板特性。这将会解放Pi-top里的更多空间并且节约成本。
使用2mm插头和母头做一根用来连接Pi-top核心板和RN2483开发板的线。一个特别需要注意的是当接线的时候记得将系统断电,以防线的滑落或是不正确的连接。只需要4条线,3.3V,GND,TX和RX.记得树莓派上的TX需要连接到模块上的RX。Pi-top核心板上关于GPIO口的相关信息可以在这里找到。
当所有东西都连接好,树莓派可以启动。现在就可以使用串口ttyAMA0来连接RN2483而不是以前的ttyACM0。像以前一样,试着运行Minicom或者是你喜欢的虚拟终端来检测是否一切都能正常运行。
总结
Pi-top的便携性和可连接的树莓派GPIO口以及可外加其他硬件的空间的性质,使这成为一个足够成熟的用来做进一步调整的平台。这个添加RN2483开发板并且建立一个灵活的整合的 LoRaWAN物联网开发工具的过程是相对简单的。
我们已经演示了在虚拟终端中直接使用串口传输信息,但是下一步就是用脚本或是使之自动运行,例如Marten Vijn提供的这个使用Python的例子可以帮助你起步。
在此期间,我们将继续享受我们的鲜绿色黑客机!