|
|
|
@ -1,38 +1,38 @@
|
|
|
|
|
# 虚拟单板机
|
|
|
|
|
|
|
|
|
|
除了买一个 IoT 设备、传感器和执行器,你也可以用你的电脑来模拟 IoT 硬件。[CounterFit 项目](https://github.com/CounterFit-IoT/CounterFit) 让你在自己的电脑上运行模拟 IoT 硬件(如传感器和执行器)的应用,以及用本地 Python 代码(就像你能在物质 Raspberry Pi 上写的代码)访问传感器和执行器。
|
|
|
|
|
除了买一个 IoT 设备、传感器和执行器,你也可以用你的电脑来模拟 IoT 硬件。[CounterFit 项目](https://github.com/CounterFit-IoT/CounterFit) 让你在自己的电脑上运行模拟 IoT 硬件(如传感器和执行器)的应用,并从本地Python代码访问传感器和执行器,代码的编写方式,与使用Raspberry Pi物理硬件相同。
|
|
|
|
|
|
|
|
|
|
## 设置
|
|
|
|
|
|
|
|
|
|
利用 CounterFit 前,你必须在你的电脑上安装一些免费的软件。
|
|
|
|
|
使用 CounterFit 前,你必须在你的电脑上安装一些免费的软件。
|
|
|
|
|
|
|
|
|
|
### 任务
|
|
|
|
|
|
|
|
|
|
安装需要的软件。
|
|
|
|
|
|
|
|
|
|
1. 安装 Python。 在 [Python 的下载页](https://www.python.org/downloads/) 找安装最新 Python 版本的指示。
|
|
|
|
|
1. 安装 Python。 在 [Python 的下载页](https://www.python.org/downloads/) 找到最新版本Python的安装指示。
|
|
|
|
|
|
|
|
|
|
1. 安装 Visual Studio Code (VS Code)。 这是你将用来写虚拟设备的 Python代码的代码编辑器。在 [VS Code 文档](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) 找安装VS Code 的指示。
|
|
|
|
|
1. 安装 Visual Studio Code (VS Code)。 这是你将用来写虚拟设备的 Python代码的代码编辑器。在 [VS Code 文档](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) 找到VS Code的安装指示。
|
|
|
|
|
|
|
|
|
|
> 💁 如果你对其它平台比较熟悉,你当然可以用你较喜欢的 Python IDE 或 代码编辑器,但注意这个课程的指示将根据 VS Code。
|
|
|
|
|
> 💁 如果你对其它平台比较熟悉,你当然可以用你较喜欢的 Python IDE 或 代码编辑器,但注意这个课程将根据VS Code提供说明。
|
|
|
|
|
|
|
|
|
|
1. 安装 VS Code 的 Pylance 扩展。 这个 VS Code 扩展提供 Python 语言支持。在 [Pylance 扩展文档](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance&WT.mc_id=academic-17441-jabenn) 找安装扩展的指示。
|
|
|
|
|
|
|
|
|
|
我们将在合适的时间在作业指示中提供安装及设置 CounterFit 的程序,因为我们需要在每个项目中安装它。
|
|
|
|
|
我们将在日后的作业中提供安装及设置 CounterFit 的说明,因为我们需要在每个项目中安装它。
|
|
|
|
|
|
|
|
|
|
## Hello world(你好,世界)
|
|
|
|
|
|
|
|
|
|
第一次用新的编程语言或科技,通常以创建一个“Hello World”应用开始——一个输出像`"Hello World"`的字的小小应用,为了确保所有的工具被设置好。
|
|
|
|
|
第一次用新的编程语言或技术,通常以创建一个“Hello World”应用开始——一个输出类似`"Hello World"`文本的小小应用,以确保所有的工具被设置好。
|
|
|
|
|
|
|
|
|
|
这个虚拟 IoT 硬件的“Hello World”应用将确保你有安装好 Python 与 Visual Studio Code。它也将把虚拟 IoT 传感器和执行器连接到 CounterFit。它不会用到任何硬件,他只会以连接来证明每个部分运作良好。
|
|
|
|
|
这个虚拟 IoT 硬件的“Hello World”应用将确保你安装好 Python 与 Visual Studio Code。它也会连接到 CounterFit以获取虚拟 IoT 传感器和执行器。它不会用到任何硬件,它只会以正确连接来证明每个部分运作良好。
|
|
|
|
|
|
|
|
|
|
这个应用正在被称为`夜灯`的文件夹中,而且我们等一下会跟着不同的代码再次利用它,为了在作业当中创建夜灯应用。
|
|
|
|
|
这个应用放在名为`nightlight`的文件夹中,稍后将和其他代码结合,以构建夜灯应用。
|
|
|
|
|
|
|
|
|
|
### 配置 Python 虚拟环境
|
|
|
|
|
|
|
|
|
|
Python 的其中一个强大功能是安装 [pip 软件包](https://pypi.org)的能力;它们是别人写并在网上上载的代码软件包。只要用着一个命令,你就可以在你的电脑上安装一个 pip 软件包,并在你的代码中使用它。你将用 pip 安装一个软件包,把它用来跟 CounterFit 沟通。
|
|
|
|
|
Python 的强大功能之一是能够安装 [pip 软件包](https://pypi.org);这些是由其他人编写并发布到互联网上的代码包。只需一条命令就可以在你的电脑上安装pip 软件包,并在你的代码中使用它。你将用 pip 安装一个软件包,来与CounterFit 沟通。
|
|
|
|
|
|
|
|
|
|
默认情况下,当你安装一个软件包,你的电脑哪里都可以访问它,而那可以造成关于软件包版本的问题,例如:当你为新应用安装软件包的新版本,依靠旧版本的另一个应用就有可能出些状况。为了以免这种事发生,你可以用一个 [Python 虚拟环境](https://docs.python.org/3/library/venv.html),在一个专用文件夹中的 Python,那当你安装 pip 软件包它们只会在那个文件夹中。
|
|
|
|
|
默认情况下,当你安装软件包时,在计算机的任何位置都是可用的,而这可能会造成软件包版本问题,例如:当你为新应用安装软件包的新版本,依靠旧版本的另一应用就有可能出现状况。为了避免这种问题,你可以使用 [Python 虚拟环境](https://docs.python.org/3/library/venv.html),本质上是一个专用文件夹中的 Python 副本,当你安装 pip 软件包时,它们只会安装到那个文件夹中。
|
|
|
|
|
|
|
|
|
|
#### 任务:配置一个 Python 虚拟环境
|
|
|
|
|
|
|
|
|
@ -82,7 +82,7 @@ Python 的其中一个强大功能是安装 [pip 软件包](https://pypi.org)的
|
|
|
|
|
|
|
|
|
|
> 💁 你的 Python 版本有可能不一样,但只要版本是 3.6 或以上就没事。不然,请删除这个文件夹,并安装较新的 Python 版本,再试一试。
|
|
|
|
|
|
|
|
|
|
5. 运行以下的命令来安装为 CounterFit 的 pip 软件包。这些软件包包括主要的 CounterFit 应用以及为 Grove 硬件的垫片。这些垫片让你就像用来自 Grove 生态系统的物质传感器和执行器一样写代码,但把它连接到虚拟 IoT 设备。
|
|
|
|
|
5. 运行以下的命令来安装CounterFit 软件包。这些软件包包括主要的 CounterFit 应用以及 Grove 硬件的[垫片](https://zh.wikipedia.org/wiki/%E5%9E%AB%E7%89%87_(%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1))。这些垫片让你就像用来自 Grove 生态系统的物理传感器和执行器一样写代码,但把它连接到虚拟 IoT 设备。
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
pip install CounterFit
|
|
|
|
@ -92,11 +92,11 @@ Python 的其中一个强大功能是安装 [pip 软件包](https://pypi.org)的
|
|
|
|
|
|
|
|
|
|
这些 pip 软件包只会在虚拟环境中安装,而你无法在虚拟环境外访问它。
|
|
|
|
|
|
|
|
|
|
### 写代码
|
|
|
|
|
### 编写代码
|
|
|
|
|
|
|
|
|
|
Python 虚拟环境一被准备好,你就能为 “Hello World” 应用写代码。
|
|
|
|
|
一旦Python 虚拟环境被准备好,你就能为 “Hello World” 应用写代码。
|
|
|
|
|
|
|
|
|
|
#### 任务:写代码
|
|
|
|
|
#### 任务:编写代码
|
|
|
|
|
|
|
|
|
|
创建一个 Python 应用在控制台上打印`"Hello World"` 输出。
|
|
|
|
|
|
|
|
|
@ -145,7 +145,7 @@ Python 虚拟环境一被准备好,你就能为 “Hello World” 应用写代
|
|
|
|
|
(.venv) ➜ nightlight
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
6. 从 VS Code explorer 打开 `app.py` 文件,在加以下的代码:
|
|
|
|
|
6. 从 VS Code explorer 打开 `app.py` 文件,并添加以下的代码:
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
print('Hello World!')
|
|
|
|
@ -170,7 +170,7 @@ Python 虚拟环境一被准备好,你就能为 “Hello World” 应用写代
|
|
|
|
|
|
|
|
|
|
### 连接“硬件”
|
|
|
|
|
|
|
|
|
|
你的第二 “Hello World” 步将是运行 CounterFit 应用,再连接你的代码。这是把一些 IoT 硬件插入开发者套件的虚拟相等。
|
|
|
|
|
你的第二个“Hello World”步骤,是运行 CounterFit 应用并连接你的代码。这相当于把一些 IoT 硬件插入开发者套件。
|
|
|
|
|
|
|
|
|
|
#### 任务:连接“硬件”
|
|
|
|
|
|
|
|
|
@ -182,7 +182,7 @@ Python 虚拟环境一被准备好,你就能为 “Hello World” 应用写代
|
|
|
|
|
|
|
|
|
|
应用将开始运行以及在你的网页浏览器打开:
|
|
|
|
|
|
|
|
|
|
![CounterFit 应用在网页浏览器运行](../../../images/counterfit-first-run.png)
|
|
|
|
|
![CounterFit 应用在网页浏览器运行](../../../../images/counterfit-first-run.png)
|
|
|
|
|
|
|
|
|
|
他会有个 *Disconnected*(断开连接)的标记,右上角的 LED 也会关着。
|
|
|
|
|
|
|
|
|
@ -199,12 +199,12 @@ Python 虚拟环境一被准备好,你就能为 “Hello World” 应用写代
|
|
|
|
|
|
|
|
|
|
3. 你必须选择 **Create a new integrated terminal** 按钮来启动一个新 VS Code 终端。这是因为 CounterFit 应用正在当前终端运行着。
|
|
|
|
|
|
|
|
|
|
![VS Code Create a new integrated terminal 按钮](../../../images/vscode-new-terminal.png)
|
|
|
|
|
![VS Code Create a new integrated terminal 按钮](../../../../images/vscode-new-terminal.png)
|
|
|
|
|
|
|
|
|
|
4. 在这个新终端,像以前一样运行`app.py` 文件。CounterFit 的状态将改成 **Connected** (连接),LED也会开着。
|
|
|
|
|
|
|
|
|
|
![CounterFit 被连接了](../../../images/counterfit-connected.png)
|
|
|
|
|
![CounterFit 被连接了](../../../../images/counterfit-connected.png)
|
|
|
|
|
|
|
|
|
|
> 💁 你可以在 [code/virtual-device](code/virtual-device) 文件夹找到这个代码。
|
|
|
|
|
> 💁 你可以在 [code/virtual-device](../code/virtual-device) 文件夹找到这个代码。
|
|
|
|
|
|
|
|
|
|
😀 你的硬件连接成功了!
|
|
|
|
|