标签归档:microcontroller

IoT-For-Beginners-面向初学者的物联网课程

微软的Azure云倡导者很高兴提供为期12周、24节课的IoT基础知识课程。每节课包括课前和课后测验、完成课程的书面说明、解决方案、作业等。我们的基于项目的教学法允许您边学边建,这是一种行之有效的新技能“坚持”的方法

这些项目涵盖了食物从农场到餐桌的旅程。这包括农业、物流、制造业、零售业和消费业-所有这些领域都是物联网设备的热门行业领域

衷心感谢我们的作者Jen FoxJen LooperJim Bennett,和我们的素描艺术家Nitya Narasimhan

也感谢我们的团队Microsoft Learn Student Ambassadors他们一直在审阅和翻译这门课程-Aditya GargAnurag SharmaArpita DasAryan JainBhavesh SunejaFaith HunjaLateefah BelloManvi JhaMireille TanMohammad Iftekher (Iftu) Ebne JalalMohammad ZulfikarPriyanshu SrivastavThanmai Gowducheruvu,以及Zina Kamel

见见团队吧!

教师,我们有included some suggestions如何使用这门课程。如果您想创建您自己的课程,我们还提供了一个lesson template

学生,自学使用本课程,分叉整个回购,自己完成练习,先从讲前小考开始,然后朗读讲座,完成活动的睡觉。尝试通过理解课程而不是复制解决方案代码来创建项目;但是,在每个面向项目的课程的/Solutions文件夹中都可以找到该代码。另一个想法是和朋友们组成一个学习小组,一起学习内容。为了进一步研究,我们建议Microsoft Learn

有关本课程的视频概述,请查看此视频:

🎥点击上面的图片观看关于该项目的视频!

教育学

在构建这门课程时,我们选择了两个教学原则:确保它是基于项目的,并包括频繁的测验。到本系列结束时,学生们将构建植物监控和浇水系统、车辆跟踪器、用于跟踪和检查食物的智能工厂设置以及声控烹饪定时器,并将学习物联网的基础知识,包括如何编写设备代码、连接到云、分析遥测和在边缘运行人工智能

通过确保内容与项目一致,这一过程对学生来说更具吸引力,并将增加对概念的保留

此外,课前的一次低风险的测验可以确定学生学习某一主题的意图,而课后的第二次测验可以确保学生更好地记住某一主题。本课程设计灵活有趣,可以全部或部分选修。这些项目一开始规模很小,到12周周期结束时变得越来越复杂。

每个项目都基于学生和业余爱好者可用的真实硬件。每个项目都着眼于特定的项目领域,提供相关的背景知识。要成为一名成功的开发人员,了解您正在解决问题的领域是很有帮助的,只要提供此背景知识,学生就可以在他们作为物联网开发人员可能被要求解决的那种现实世界问题的背景下思考他们的物联网解决方案和学习。学生了解他们正在构建的解决方案的“原因”,并了解最终用户

硬件

我们有两种物联网硬件可供选择,具体取决于个人偏好、编程语言知识或偏好、学习目标和可用性。我们还为那些无法访问硬件或想要在承诺购买之前了解更多信息的人提供了一个“虚拟硬件”版本。你可以阅读更多,并在网上找到一份“购物清单”。hardware page,包括从Seeed Studio的朋友那里购买完整套件的链接

💁找到我们的Code of ConductContributing,以及Translation指导方针。我们欢迎您的建设性意见!

每节课包括:

  • 草图注释
  • 可选补充视频
  • 课前热身测验
  • 书面课
  • 有关基于项目的课程,请参阅有关如何生成项目的分步指南
  • 知识检查
  • 一项挑战
  • 补充阅读
  • 作业
  • 课后测验

关于测验的一个注解:所有的测验都包含在内in this app,共48个测验,每个测验3个问题。它们是从课程内部链接的,但测验应用程序可以在本地运行;请按照中的说明进行操作quiz-app文件夹。他们正在逐渐本地化。

课程

项目名称 教授的概念 学习目标 链接的课程
01 Getting started 物联网简介 在设置您的第一台物联网设备时,了解物联网的基本原理以及物联网解决方案的基本构建块,如传感器和云服务 Introduction to IoT
02 Getting started 更深入地研究物联网 了解有关物联网系统组件以及微控制器和单板计算机的更多信息 A deeper dive into IoT
03 Getting started 通过传感器和执行器与物理世界交互 了解用于从物理世界收集数据的传感器和用于发送反馈的执行器,同时构建夜灯 Interact with the physical world with sensors and actuators
04 Getting started 将您的设备连接到互联网 通过将夜灯连接到MQTT代理,了解如何将物联网设备连接到Internet以发送和接收消息 Connect your device to the Internet
05 Farm 预测植物生长 了解如何使用物联网设备捕获的温度数据预测植物生长 Predict plant growth
06 Farm 检测土壤水分 了解如何检测土壤水分和校准土壤水分传感器 Detect soil moisture
07 Farm 植物自动浇水 了解如何使用继电器和MQTT自动和定时浇水 Automated plant watering
08 Farm 将您的工厂迁移到云 了解云和云托管的物联网服务,以及如何将您的工厂连接到这些服务之一,而不是公共MQTT代理 Migrate your plant to the cloud
09 Farm 将您的应用程序逻辑迁移到云 了解如何在云中编写响应物联网消息的应用程序逻辑 Migrate your application logic to the cloud
10个 Farm 确保您的工厂安全 了解物联网的安全性,以及如何使用密钥和证书保护您的工厂安全 Keep your plant secure
11个 Transport 位置跟踪 了解物联网设备的GPS位置跟踪 Location tracking
12个 Transport 存储位置数据 了解如何存储物联网数据以便稍后可视化或分析 Store location data
13个 Transport 可视化位置数据 了解有关在地图上可视化位置数据以及地图如何以2维形式表示真实3D世界的信息 Visualize location data
14. Transport 土工栅栏 了解GeoFence,以及如何使用它们在供应链中的车辆接近目的地时发出警报 Geofences
15个 Manufacturing 培训一名水果质量检测员 了解有关在云中培训图像分类器以检测水果质量的信息 Train a fruit quality detector
16个 Manufacturing 通过物联网设备检查水果质量 了解如何使用物联网设备上的水果质量检测仪 Check fruit quality from an IoT device
17. Manufacturing 在边缘运行你的水果探测器 了解有关在边缘的物联网设备上运行水果检测器的信息 Run your fruit detector on the edge
18岁 Manufacturing 从传感器触发水果质量检测 了解如何从传感器触发水果质量检测 Trigger fruit quality detection from a sensor
19个 Retail 培训一名库存检验员 了解如何使用对象检测来训练库存检测器清点商店中的库存 Train a stock detector
20个 Retail 检查物联网设备的库存 了解如何使用对象检测模型检查物联网设备的库存 Check stock from an IoT device
21岁 Consumer 使用物联网设备识别语音 了解如何识别来自物联网设备的语音以构建智能计时器 Recognize speech with an IoT device
22 Consumer 理解语言 了解如何理解对物联网设备说的句子 Understand language
23个 Consumer 设置计时器并提供语音反馈 了解如何在物联网设备上设置计时器,并就计时器何时设置和何时结束提供口头反馈 Set a timer and provide spoken feedback
24个 Consumer 支持多种语言 了解如何支持多种语言,包括与您的智能计时器对话和从您的智能计时器响应 Support multiple languages

脱机访问

您可以使用以下命令脱机运行此文档Docsify分叉这个回购,install Docsify在本地计算机上,然后在此存储库的根文件夹中键入docsify serve该网站将在您的本地主机上的端口3000上提供服务:localhost:3000

PDF格式

如果需要,您可以生成此内容的PDF以供脱机访问。要做到这一点,请确保您拥有npm installed并在此存储库的根文件夹中运行以下命令:

npm i
npm run convert

需要帮助!

你愿意贡献一份翻译吗?请阅读我们的translation guidelines并添加输入to one of the translations issues如果您想要翻译成一种新的语言,请提出一个新的问题进行跟踪

其他课程

我们团队制作其他课程!查看:

图像属性

您可以在本课程中所需的位置找到本课程中使用的图像的所有属性Attributions

Micropython-一种用于微控制器和受限系统的精简而高效的Python实现

MicroPython项目

这是MicroPython项目,旨在将Python3.x的实现放在微控制器和小型嵌入式系统上。您可以在以下位置找到官方网站micropython.org

警告:此项目处于测试阶段,可能会更改代码库,包括项目范围的名称更改和API更改

MicroPython实现整个Python3.4语法(包括异常,withyield from等,并且另外async/await来自Python3.5的关键字)。提供以下核心数据类型:str(包括基本Unicode支持)、bytesbytearraytuplelistdictsetfrozensetarray.arraycollections.namedtuple、类和实例。内置模块包括systime,以及struct等。部分端口支持_thread模块(多线程)。请注意,仅为数据类型和模块实现了Python 3功能的子集

MicroPython可以执行文本源代码形式的脚本或从预编译字节码执行脚本,在这两种情况下,都可以从设备上的文件系统执行脚本,也可以将脚本“冻结”到MicroPython可执行文件中

查看存储库http://github.com/micropython/pyboard对于MicroPython电路板(PyBoard),官方支持的参考电子电路板

此存储库中的主要组件:

  • py/–核心Python实现,包括编译器、运行时和核心库
  • mpy-cross/–用于将脚本转换为预编译字节码的MicroPython交叉编译器
  • ports/unix/–在Unix上运行的MicroPython版本
  • ports/STM32/-在PyBoard和类似的STM32板上运行的MicroPython版本(使用ST‘s Cube HAL驱动程序)
  • ports/Minimal/–最小的MicroPython端口。如果您想要将MicroPython移植到另一个微控制器,请从这个开始
  • 测试/–测试框架和测试脚本
  • docs/–Sphinx reStrucureText格式的用户文档。呈现的HTML文档位于http://docs.micropython.org

其他组件:

  • ports/Bare-ARM/–用于ARM MCU的MicroPython的最低版本。主要用于控制代码大小
  • ports/teensy/–运行在teensy3.1上的MicroPython版本(初步版本,但功能正常)
  • ports/pic16bit/-用于16位PIC微控制器的MicroPython版本
  • ports/cc3200/-TI在CC3200上运行的MicroPython版本
  • ports/ESP8266/-在Espressif的ESP8266 SoC上运行的MicroPython版本
  • ports/esp32/-在Espressif的ESP32 SoC上运行的MicroPython版本
  • ports/nrf/-在北欧的nRF51和nRF52 MCU上运行的MicroPython版本
  • extmod/–用C++实现的附加(非核心)模块
  • tools/–各种工具,包括pyboard.py模块
  • Examples/–几个Python脚本示例

上列子目录可能包括带有附加信息的自述文件

“make”用于构建组件,或者在基于BSD的系统上使用“gmake”。您还需要bash、GCC和Python3.3+作为命令python3(如果您的系统只有Python 2.7,则使用附加选项调用makePYTHON=python2)

MicroPython交叉编译器mpy-Cross

大多数端口都需要首先构建MicroPython交叉编译器。该程序称为mpy-Cross,用于将Python脚本预编译为.mpy文件,然后可以将这些文件包含(冻结)到端口的固件/可执行文件中。要构建mpy交叉,请使用以下命令:

$ cd mpy-cross
$ make

Unix版本

“unix”端口需要一个带有GCC和GNU make的标准unix环境。支持x86和x64架构(即x86 32位和64位),以及ARM和MIPS。要将功能齐全的端口移植到另一种架构,需要编写一些用于异常处理和垃圾回收的汇编代码。或者,也可以使用基于setjmp/long jmp的后备实现

要构建(有关所需依赖项,请参阅下一节):

$ cd ports/unix
$ make submodules
$ make

那就试一试吧:

$ ./micropython -h

运行完整的测试套件:

$ make test

UNIX版本附带一个名为upip的内置包管理器,例如:

$ ./micropython -m upip install micropython-pystone
$ ./micropython -m pystone

浏览上的可用模块PyPI标准库模块来自micropython-lib项目

外部依赖项

构建MicroPython端口可能需要安装一些依赖项

对于Unix端口,libffi库和pkg-config工具是必需的。在Debian/Ubuntu/Mint派生Linux发行版上,安装build-essential(包括工具链和品牌),libffi-dev,以及pkg-config包裹

其他依赖项可以与MicroPython一起构建。这可能是启用额外特性或功能所必需的,在最新版本的MicroPython中,默认情况下可能会启用这些特性或功能。要构建这些附加依赖项,请在您感兴趣的端口目录中(例如ports/unix/)首先执行:

$ make submodules

这将获取端口需要的所有相关的git子模块(子存储库)。使用相同的命令获得子模块的最新版本,因为它们会不断更新。在执行之后:

$ make deplibs

这将构建所有可用的依赖项(无论是否使用它们)。如果您打算使用其他选项(如交叉编译)构建MicroPython,则应该将相同的选项集传递给make deplibs要实际启用/禁用依赖项的使用,请编辑ports/unix/mpconfigport.mk文件,其中包含选项的内联描述。例如,要构建SSL模块(需要upip如上所述的工具,因此在默认情况下启用),MICROPY_PY_USSL应设置为1

对于某些端口,构建所需的依赖项是透明的,并且是自动进行的。但是它们仍然需要用make submodules命令

STM32版本

“stm32”端口需要ARM编译器、arm-one-eabi-GCC和相关的bin-utils。对于那些使用Arch Linux的用户,您需要arm-one-eabi-binutils、arm-one-eabi-GCC和arm-one-eabi-newlib软件包。否则,请尝试此处:https://launchpad.net/gcc-arm-embedded

要构建,请执行以下操作:

$ cd ports/stm32
$ make submodules
$ make

然后,您需要将您的电路板设置为DFU模式。在写字板上,用导线将3v3引脚连接到P1/DFU引脚(在PYBv1.0上,它们相邻在电路板的左下角,倒数第二行)

然后通过USB DFU将代码刷新到您的设备:

$ make deploy

这将使用包含的tools/pydfu.py剧本。如果刷新固件不起作用,可能是因为您没有正确的权限,需要使用sudo make deploy有关详细信息,请参阅ports/stm32/目录中的readme.md文件

贡献

MicroPython是一个开放源码项目,欢迎贡献。为了提高工作效率,请务必遵循Contributors’ Guidelines以及Code Conventions请注意,MicroPython是在麻省理工学院许可下获得许可的,所有贡献内容都应遵循此许可