Hackapost:黑客马拉松如何成为世界上最好的学习工具

Hackapost:黑客马拉松如何成为世界上最好的学习工具

原文:https://medium.com/hackernoon/hackapost-how-hackathons-can-be-the-best-learning-tool-under-the-sun-9c97e567e0a5

回想一下 Hackapost hackathon,我想分享一些关于技术栈如何工作的元素。

确实有相当多的移动部件参与其中。

首先说一下感知世界。

为了做到这一点,我们需要传感器。

为了方便我们,我们从 AllThingsTalk(简称 ATT)获得了 LoRa 开发套件形式的硬件和工具。

嗯,等等,劳拉是什么?

Lora 实际上代表一个更长的东西:“LoRaWAN”。

“LoRaWAN 是一种低功耗广域网(LPWAN)规范,适用于区域、国家或全球网络中的无线电池供电设备。”

劳拉联盟网站上有很多关于它的东西:https://www.lora-alliance.org

作为一个硬件,它有一个微芯片组件的形式(实际上是一些 Semtech 许可的东西)。我们需要把这个组件插在某个地方,这样我们才能控制它。在 LoRa devkit 中,我们可以将其插入名为“Mbili Sodaq”的 Arduino 板。Sodaq 代表太阳数据采集。这有点像太阳能电池板,电池可以在没有外部电源的情况下保持系统供电(如果需要外部电源,它仍然可以工作)。更多信息请上:【http://support.sodaq.com/mbili/

让我们回到传感器。Arduino 板通常需要一些焊接或与试验板玩耍等。这一个就不一样了,因为它有所谓的“T6”凹槽插座。这些插座使得以模块化方式连接传感器变得更加容易。LoRa 开发套件包含了很多这样的传感器。

我们在黑客马拉松期间发现了这个板的一些情况:只有一个 I2C 连接器,这意味着人们必须在 GPS 模块和 3 轴加速度计之间做出选择。你不能同时拥有两者。

这里有一个组成套件的小零件的视图。

因此,连接传感器很容易,获得 LoRa 调制解调器也很容易。

现在,需要一些软件来完成所有这些工作。比如将数据发送出去,以便我们可以在应用程序或网站中使用。

首先,无线电方面的事情

这就是 Proximus EnCo 派上用场的地方。他们运营着 LoRa 网络,并在全国部署了天线。

在这一点上,一些地区仍然参差不齐。

为了能够与网络通话,我们的小设备必须被识别。

使用 LoRa 开发套件时,用户在 https://devs.enabling.be 网站上激活开发套件后,会自动获得在系统中注册的设备。

这意味着拥有一个设备 id。

设备 id 唯一地标识了板(我真的不知道这是板,还是调制解调器本身)。

还有一个重要的概念,即“云渠道”。

对于开发套件,会自动创建一个通道,将传感器数据转发到 AllThingsTalk。

通道正在使用 MQTT。MQTT 的参考地点是 http://mqtt.org

MQTT 是什么?这是一种物联网协议,由安迪·斯坦福-克拉克(Twitter 上的 @andysc )于 1999 年在 IBM 发明。新来的就这么多!

在 Pi 播客#14 上有一个对他的超级酷的采访,那是今年二月播出的。http://thepipodcast . com/the-pi-podcast-14-Andy-Stanford-Clark/

对于感兴趣的人,可以从这里获得协议规范:https://www . IBM . com/developer works/web services/library/ws-mqtt/

所以,MQTT 代表“MQ 遥测传输”。它是一种“轻量级发布/订阅协议,通过低带宽、不可靠或间歇性的通信,在 TCP/IP 上为远程传感器和控制设备流动。”

啊,非常适合物联网领域。MQ 代表“消息队列”。

有很多可用的软件来处理 MQTT:https://github.com/mqtt/mqtt.github.io/wiki/software?id =软件

客户端库也很多:https://github.com/mqtt/mqtt.github.io/wiki/libraries

对于服务器端,可以使用 RabbitMQ 及其 MQTT 适配器(https://www.rabbitmq.com/mqtt.html)。

我想这就是 AllThingsTalk 在他们那边使用的东西。

还有一个使用非常广泛的经纪人叫 Mosquitto:http://mosquitto.org/,这个月起代码就住在 GitHub 上:https://github.com/eclipse/mosquitto

回到我们的云渠道订阅,以下是我们的详细信息:

嗯,好吧,但是我们的设备是如何发送信息的呢?

从 Enabling.co 检索数据就是使用 API 的问题。

但这不是我们想要的。我们想发送从 Arduino 板上的传感器感应到的数据。

让我们来看看如何对 Arduino 板进行编程以实际发送数据。

为了对 Arduino 进行编程,必须使用 Arduino IDE。

这个 IDE 通常有一个浅色的背景,它在编码的时候会杀了我的眼睛。正如你所看到的,它实际上是有可能得到一个黑暗的主题。就查https://github.com/jeffThompson/DarkArduinoTheme

为了设置 LoRa 开发工具包,让我们访问一下 AllThingsTalk。

网站本身并不能说明太多,因为真正的肉在 http://www.smartliving.io/的

呃,是的,实际上更进一步:【https://maker.smartliving.io/

那里有关于它如何工作的文件:http://docs.smartliving.io/kits/lora/

注册(“申请”)设备后,有一个不错的“游戏场”可供使用:

有趣的是,人们可以在操场上添加其他设备。

让我们看看我们的,包含我们的单个漂亮的小设备。

因为在写这篇文章之前我们有一些乐趣,你可以看到不同传感器的几个值。这显然会空出一个新的工具包。

回到硬件/Arduino 前面有一些事情要做。

基本上,有一些关键的事情要做:

  • 将板卡类型添加到 Arduino IDE 中
  • 将电路板、LoRa 和传感器的库添加到 Arduino IDE 中
  • 获得一份“密钥”的拷贝,使设备在发送无线电信息时能够被识别,并使信息进入授权系统

这些库也在 GitHub 上,您可能想了解最新信息:

https://github.com/allthingstalk/arduino-lora

里面还有一组示例草图。草图是 Arduino IDE 帮助您编辑、编译和传输到 Arduino 板的东西。

还有一个 keys.h 文件,其中放有从 smartliving.io 云设置中检索到的密钥。

这些是代码使用的东西。

让我们来看看草图的内容:

https://github . com/all thingstalk/arduino-Lora/blob/master/ATT 劳拉 IOT/examples/experiments/environmental sensing/environmental sensing . ino

正如你所看到的,草图使用了你的按键,也有一个使用微芯片调制解调器的 ATTDevice。

从开发人员的角度来看,这看起来很容易。

在下面,是的,有很多事情正在发生,我们并不介意。

因此,通过 USB 将主板连接到您的 PC……(前提是在 Arduino IDE 中选择了正确的 COM 端口)

编译上传就行了。

从那时起,系统将运行其程序循环,并根据其逻辑发送数据。

发送将数据推送到 ATT 平台(通过启用,但那是在幕后)。

从传感器到 LoRa,从启用到智能生活,数据正在流动。

这就是我们可以开始谈论在我们的应用程序中实际使用数据的地方。

怎么会?

通过利用 API。

实际上有几种方法可以做到这一点。

有一种简单的方法,甚至不涉及智能生活。或者也可以。稍后将详细介绍。

我们来谈谈 Waylay.io

Waylay 实际上做了很多事情:

好玩的部分在https://playground . waylay . io

我有机会与 Waylay 的首席技术官 Veselin Pizurica 聊天。很棒的人,超级聪明。我从我们的聊天中得到一个爆炸。在操场上弄了个账号,开始玩。

如果你想了解更多,可以在 http://docs.waylay.io/找到 Waylay docs。

有一个传感器实际上可以直接挂钩到 Enabling 的 API。

代码就在那里,随时可以使用。

都是 Javascript。

一个人能用它做什么是疯狂的。但这将是另一个职位。

但这不是智能生活的 API。

如果我们想使用 Smartliving 的 API(这是我在黑客马拉松期间想做的,如果我有更多关于 Waylay 的线索,我不确定我会这样做……)

让我们来看看 Smartliving API。在http://docs.smartliving.io/api/有记录

在处理 API 时,我首先想到的是:“我到底要如何用这个东西来验证我自己呢?”API 对此往往有自己的看法。

所以,我们需要身份证,钥匙等等。

那些在哪里?

就在这里:

然后,乐趣开始于用头球做正确的舞蹈等等。

我实际上想使用我最喜欢的开发平台来实现这个 API,这个平台恰好是 Pharo(http://pharo.org)

最近,我也在使用 Python 和 Javascript|Node,但是它们没有“Pharo 的感觉”。

如果你想更多地了解 Pharo,这里有几篇关于 Medium.com 的好文章。

例如:

https://medium . com/concerning-pharo/elegant-pharo-code-bb 590 f 0856d 0 #。sjqdgmtsc

它实际上是一种非常有能力的语言。我用它做了一个处理 CMTSes 和 cable modems 的解决方案:【http://pharo.org/success/CableExpertise】T2

看起来是这样的:

几乎可以很好地利用物联网领域的所有项目,因为没有什么限制它只做 CMTS 的工作。这是一个通用的数据收集和演示+报警的事情。

所以,我想使用 Pharo 来访问 API。

从一个小测试开始…

该客户端是 AttClient 实例。

AttClient 身份验证如下所示:

一个好处是你不必创建无数的类来组织事物,就像在 Objective-C 中一样,有协议,也就是分组方法。

长话短说,API 调用代码最后看起来是这样的;

探索这个东西不应该出现在测试中,但是,嘿,我们在黑。

它显示了这样一个对象资源管理器:

这使得在不离开开发环境的情况下探索 API 的结果和向下钻取变得非常方便。

一旦 API 客户端工作正常,我就开始制作服务器,这样我们就可以按照前端开发人员要求的格式访问数据。

在 Pharo 中,我们有一个名为“茶壶的小框架,它可以很容易地做到这一点:

返回的 xml 实体由#sensors 消息生成,该消息实际上发送了带有我们实际设备 id 的' #sensors:'。

给予:

我们需要 XML 输出,这就是为什么最后一行转换输出的数据。

这其实也很简单:

如您所见,Pharo 代码非常干净。

在这一点上,我们现在有可能以我们想要的方式使用数据。

当然,我们可以马上在 JS 前端应用程序中拥有同样的东西。

但我更感兴趣的是获得一个基于 Pharo 的组件,帮助我创建物联网应用,而不是商业案例。

我们有机会使用非常有用的硬件,测试所有传感器,通过所有路径获取数据,发现新的服务和功能,集成 API,并结识新的酷人。

对我来说,这才是最重要的,不是成为另一家创业公司的一部分。坦率地说,我已经忙于几个项目,关键是要更深入地理解所有这些。

如果物联网领域出现另一场黑客马拉松,我相信我会做好更充分的准备来应对它。

我还剩下一套超级酷的装备,对此我有了新的想法!

黑客中午是黑客如何开始他们的下午。我们是 @AMI 家庭的一员。我们现在接受投稿,并乐意讨论广告&赞助机会。

如果你喜欢这个故事,我们推荐你阅读我们的最新科技故事趋势科技故事。直到下一次,不要把世界的现实想当然!


本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除