Pharo IoT
文章目录
前言
IoT
近期写了几篇IoT相关的文章:
因为沉迷于Pharo提供的沉浸式、可探索的编程体验,决定将IoT相关的探索性工作放在Pharo上来做。
空间操作系统
「空间操作系统」是我随口杜撰的一个名词,我最近对这个概念感兴趣,它的背景是这样的:
CodeLab Adapter目前已经用于驱动Neverland整个空间,最近在考虑如何扩展这个逻辑模型,用以驱动一个小区或者一座城市。设备的连接并不是大问题,最坏方式可以硬整合(像目前大多数公司在做的)。但复杂性并不在通信,而在于如何驯服业务增长带来的复杂度,UNIX之前的系统都是被不断增长的复杂度压垮的,如何保证系统的未来可生长,《unix编程艺术》论述了很多设计原则,组件之间的开放和协作是核心机制。最近在学习Smalltalk,隐约觉得Smalltalk的设计十分适合驱动大型复杂系统(一些军事模拟系统和金融系统是Smalltalk 驱动的),于是去Quora上阅读Alan Kay近期的思考。正巧看到他在讨论城市的复杂性问题,以及如何在软件层面驯服它。
Alan Kay提到:
The methods used to invent Smalltalk (Pharo is a version of Smalltalk) at Xerox Parc will work well for creating What Is Actually Needed (WIAN). I have outlined some of the first steps above …
我相信Smalltalk提供了绝佳的环境去探索「空间操作系统」。
pharo-iot
搜索Pharo和IoT,很容易发现pharo-iot,以及该组织开源的PharoThings。
于是我决定从这里起步。 以下是我的学习和使用笔记。
PharoThings
PharoThings是什么东西? 它是基于Pharo的IoT编程环境,拥有Pharo的沉浸式、可探索的编程体验。
PharoThings基于TelePharo构建,TelePharo又是个啥?这是一个用于管理和开发远程Pharo镜像(image)的工具。
PharoThings目前可用于驱动树莓派(由WiringPi library驱动),未来计划支持Arduino(由Firmata驱动)和Beaglebone。
尽管可以按照PharoThings readme来使用它,但我更喜欢这本小册子: A PharoThings Tutorial。
我基本遵照A PharoThings Tutorial的引导来开发,以下是使用记录。
树莓派环境搭建
我目前在树莓派3B+上运行Raspbian
(Stretch)。
首先安装WiringPi library:
|
|
检查按照是否成功:
|
|
接下来下载Pharo和所需image: wget -O - get.pharoiot.org/server | bash
操作很简单,实际上是在下载一个压缩包:server.zip
解压之后运行即可:
|
|
成功运行后可以看到:
|
|
本地环境
我的本地环境是MacOS。 但Pharo是跨平台的,所以各个平台下应该都没问题。
首先下载:multi.zip
解压之后可以看到里边的文件:
|
|
Linux, Mac用户双击 pharo-ui
, Windows用户双击pharo.bat
.
可以看到,image目前使用的Pharo版本为7.0.2
,几乎是最新的。
连接到树莓派
既可以使用hostname连接也可以使用IP连接
使用hostname连接
|
|
使用IP连接
|
|
如果没有报错就可以随意使用:
- Remote Playground
- Remote System Browser
- Remote Proxcess Browser
|
|
远程树莓派GPIO面板
|
|
我们在Pharo中将7号引脚设为关闭状态:
|
|
从shell中可以看到生效了。
在shell中将7号引脚设为开启状态: gpio write 7 1
可以看到Pharo里的远程树莓派GPIO面板发生相应变化。
你可以点击指示状态的圆点切换其状态!
更多用法
当然也鼓励在Pharo中自由探索。在Pharo中的旅程常有意外收获。
参考
文章作者 种瓜
上次更新 2019-06-07