| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> IoT-For-Beginners-Lesson1-getting-started -> 正文阅读 |
|
[嵌入式]IoT-For-Beginners-Lesson1-getting-started |
Lesson 1 quick start文章目录课程github仓库: microsoft/IoT-For-Beginners: 12 Weeks, 24 Lessons, IoT for All! (github.com) 1. Intro1.1 实验环境微软这个iot课程提供了arduino、树莓派、模拟器三种实验选项。本笔记先用模拟器环境过一遍。 安装web服务环境:
在IoT-For-Beginners根目录下执行 参考virtual-device.md,安装模拟器环境:
安装后执行
Web界面如下(注意右上角的未连接状态): 1.2 什么是 “物联网(IoT)”?任何能够与周围物理世界交互的设备。 两种关键设备:
IoT还包括:
IoT开发的关注点之一:了解需要收集的数据、怎么收集它,怎么利用它来作出决策,以及如果有必要的话,怎么利用这些决策来和物理世界交互。 应用举例:
1.3 IoT设备开发者套件通常有两种:微控制器(microcontrollers)和单板机(single-board computers) 微控制器微控制器,简称MCU,包括:
使用模拟器完成实验后,可以买个 Seeed studios 的Wio Terminal ,一个兼容Arduino的微控制器,它包含传感器、执行器、Wi-Fi 和一个屏幕。 通常用 C 或 C++ 来为微控制器写程序,后续环境可以用vsc+PlatformIO 扩展,或者Arduino IDE。 单板机可理解为功能齐全的计算机,可以用任何编程语言来为它写程序。我们通常用 Python 为物联网设备写程序。 最有名的就是树莓派。后续学习树莓派时可以用vsc+RemoteSSH扩展。 1.4 Hello World源码位于 这里只看counterfit源码:
Vscode里执行前,先配一下python环境:
Ctrl+F5执行,如果web界面的状态编未connected,就说明成功了。 2. A deeper dive into IoT2.1 IoT应用组件当然就是Internet和Thing。 先看一下两种Internet:
关于Thing,在上一节说过,并不一定非要联网(即edge边缘设备),这样可以快速处理局域网内的数据,比如智能音箱的语音唤醒功能,再高级点的功能可能会内置AI。 2.2 微控制器详解CPU需要理解的一些概念 clock tick ALU The faster the ticks, the more power consumed and more heat generated. The Wio Terminal for example has a CPU that runs at 120MHz or 120,000,000 cycles per second. 微控制器通常没有要散热器。 一些cpu有多种工作频率,通过切换来延长硬件寿命,比如苹果M1,有4种工作频率。 Memory两种:
MCU的RAM通常是KB级的,比如WIO有192KB。而现在的PC,众所周知,RAM是GB级的。 MCU的程序存储器,是MB级的,比如WIO有4M,和PC的GB/TB差远了。 IOMicrocontrollers need input and output (I/O) connections to read data from sensors and send control signals to actuators. They usually contain a number of general-purpose input/output (GPIO) pins. These pins can be configured in software to be input (that is they receive a signal), or output (they send a signal). Frameworks and operating systems因为CPU和内存的原因,MCU不能运行操作系统。 每种芯片都有自己的api和文档,通过交叉编译后把符合芯片结构的程序烧录进芯片,比如Arduino的程序就是setup和loop,即事件循环,或者说消息循环。
有些MCU也支持RTOS,比如Arduino FreeRTOS。 2.3 单板机以 树莓派为例,它有三种型号:
Raspberry Pi OS, 是Debian Linux的衍生版本(能用apt)。 3. Interact with the physical world with sensors and actuatorsThis lesson introduces two of the important concepts for your IoT device - sensors and actuators. 3.1 sensorsLesson 1 quick start文章目录课程github仓库: microsoft/IoT-For-Beginners: 12 Weeks, 24 Lessons, IoT for All! (github.com) 1. Intro1.1 实验环境微软这个iot课程提供了arduino、树莓派、模拟器三种实验选项。本笔记先用模拟器环境过一遍。 安装web服务环境:
在IoT-For-Beginners根目录下执行 参考virtual-device.md,安装模拟器环境:
安装后执行
Web界面如下(注意右上角的未连接状态): [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a9ufs7mN-1652011480341)(lesson1.assets/CounterFit.png)] 1.2 什么是 “物联网(IoT)”?任何能够与周围物理世界交互的设备。 两种关键设备:
IoT还包括:
IoT开发的关注点之一:了解需要收集的数据、怎么收集它,怎么利用它来作出决策,以及如果有必要的话,怎么利用这些决策来和物理世界交互。 应用举例:
1.3 IoT设备开发者套件通常有两种:微控制器(microcontrollers)和单板机(single-board computers) 微控制器微控制器,简称MCU,包括:
使用模拟器完成实验后,可以买个 Seeed studios 的Wio Terminal ,一个兼容Arduino的微控制器,它包含传感器、执行器、Wi-Fi 和一个屏幕。 通常用 C 或 C++ 来为微控制器写程序,后续环境可以用vsc+PlatformIO 扩展,或者Arduino IDE。 单板机可理解为功能齐全的计算机,可以用任何编程语言来为它写程序。我们通常用 Python 为物联网设备写程序。 最有名的就是树莓派。后续学习树莓派时可以用vsc+RemoteSSH扩展。 1.4 Hello World源码位于 这里只看counterfit源码:
Vscode里执行前,先配一下python环境:
Ctrl+F5执行,如果web界面的状态编未connected,就说明成功了。 2. A deeper dive into IoT2.1 IoT应用组件当然就是Internet和Thing。 先看一下两种Internet:
关于Thing,在上一节说过,并不一定非要联网(即edge边缘设备),这样可以快速处理局域网内的数据,比如智能音箱的语音唤醒功能,再高级点的功能可能会内置AI。 2.2 微控制器详解CPU需要理解的一些概念 clock tick ALU The faster the ticks, the more power consumed and more heat generated. The Wio Terminal for example has a CPU that runs at 120MHz or 120,000,000 cycles per second. 微控制器通常没有要散热器。 一些cpu有多种工作频率,通过切换来延长硬件寿命,比如苹果M1,有4种工作频率。 Memory两种:
MCU的RAM通常是KB级的,比如WIO有192KB。而现在的PC,众所周知,RAM是GB级的。 MCU的程序存储器,是MB级的,比如WIO有4M,和PC的GB/TB差远了。 IOMicrocontrollers need input and output (I/O) connections to read data from sensors and send control signals to actuators. They usually contain a number of general-purpose input/output (GPIO) pins. These pins can be configured in software to be input (that is they receive a signal), or output (they send a signal). Frameworks and operating systems因为CPU和内存的原因,MCU不能运行操作系统。 每种芯片都有自己的api和文档,通过交叉编译后把符合芯片结构的程序烧录进芯片,比如Arduino的程序就是setup和loop,即事件循环,或者说消息循环。
有些MCU也支持RTOS,比如Arduino FreeRTOS。 2.3 单板机以 树莓派为例,它有三种型号:
Raspberry Pi OS, 是Debian Linux的衍生版本(能用apt)。 3. Interact with the physical world with sensors and actuatorsThis lesson introduces two of the important concepts for your IoT device - sensors and actuators. 3.1 sensorsSensors convert whatever they sense into an electrical signal that can be interpreted by an IoT device. How this electrical signal is interpreted depends on the sensor, as well as the communication protocol used to communicate with the IoT device. 举例:温度传感器、光感,按钮、相机、加速度计、麦克风。 TypesSensors are either analog or digital. 模拟传感器,以电位表为例,传感器通过指针的旋转角度计算点位,模拟信号经过模数转换器(ADC)编码为数字信号(0/1),传送给IoT设备。
Arduino库提供了 数字传感器已经越来越普及,这样就不必给设备加上ADC了,不过也有些高级点的数字传感器有自己的ADC,比如数字温度传感器。 最简单的数字传感器应该是开关了,只有on/1和off/0两种状态。
有的数字传感器也支持其它功能,比如加密。 CounterFit亮度传感器实验参考文档:virtual-device-sensor.md Create a light sensor:
运行python后,这个模拟器要这么玩:
3.2 ActuatorActuator convert an electrical signal from your IoT device into an interaction with the physical world such as emitting light or sound, or moving a motor. 举例:LED、喇叭、步进电机(Stepper motor)、继电器(Relay)、以及屏幕。 Types和传感器一样,也是模拟和数字两种。 Analog actuators take an analog signal and convert it into some kind of interaction, where the interaction changes based off the voltage supplied. 模拟执行器,比如可变亮度的灯。IoT设备通过DAC(模数转换器)把数字信号转换为电压数,执行器就可以提供不同伏特的电压。 另一种数模转换方法是 脉冲宽度调制(Pulse-Width Modulation, PWM),具体参考课件。 数字执行器,一个简单的例子就是不可变亮度的灯泡。 CounterFit数字传感器LED实验参考virtual-device-actuator.md 这个实验在传感器实验的基础上来实现,当光感亮度小于300时,led就亮。 Create an LED:
可以把光感亮度上限设置为600,即LED等有50%的概率亮。 4. Connect your device to the Internet4.1 简介IoT devices typically connect to a single cloud IoT service using a standard communication protocol, and that service is connected to the rest of your IoT application, from AI services to make smart decisions around your data, to web apps for control or reporting. 从传感器收集数据并发送给云服务的过程叫做遥测,telemetry。 IoT devices can receive messages from the cloud. Often the messages contain commands:
4.2 通信协议IoT里应用最广泛的通信协议就是基于发布/订阅模型的MQTT。其它协议还有AMQP 、 HTTP/HTTPS. 实验上一节的实验其实就是很简单的夜间路灯,只不过在实际中,为了避免某个灯被遮住导致误判,需要所有灯的光感都认为天黑了,才能亮灯。 本节的实验,则是在上一节的基础上引入MQTT broker,可以自己搭建,也可以使用test.mosquitto.org, 安装依赖库:
如果设备是wio,则需要一些arduino库,比如WiFi ,还有mqtt客户端库 PubSubClient。 客户端名称需要有一个guid,避免使用test.mosquitto.org时和其它客户端冲突,可以在Generate GUIDs online (guidgen.com)生成,也可以命令行里执行vs的uuidgen.exe工具。 连接mqtt的逻辑如下
MQTT可以参考之前的笔记: 4.3 遥测实验Telemetry is the act of gathering data from sensors and sending it to the cloud. Although the name is Message Queueing (initials in MQTT), it doesn’t actually support message queues. This means that if a client disconnects, then reconnects it won’t receive messages sent during the disconnection, except for those messages that it had already started to process using the QoS process. Messages can have a retained flag set on them. If this is set, the MQTT broker will store the last message sent on a topic with this flag, and send this to any clients who later subscribe to the topic. This way, the clients will always get the latest message. MQTT also supports a keep alive function that checks if the connection is still alive during long gaps between messages. 课件提供了一个恒温器的例子,帮助理解。 要发送的数据和web一样,一般是json形式。Arduino需要ArduinoJson库,python需要json库。 发布端源码位于 code-commands/server
订阅端源码位于code-commands/virtual-device/nightlight
把两端的id改成相同的guid,先执行哪个都可以,订阅端响应如下:
响应的,收到True时,web界面的led灯会亮。 4.4 失联处理如果订阅端失联了,那要看具体逻辑:
举例:温度传感器、光感,按钮、相机、加速度计、麦克风。 TypesSensors are either analog or digital. 模拟传感器,以电位表为例,传感器通过指针的旋转角度计算点位,模拟信号经过模数转换器(ADC)编码为数字信号(0/1),传送给IoT设备。
Arduino库提供了 数字传感器已经越来越普及,这样就不必给设备加上ADC了,不过也有些高级点的数字传感器有自己的ADC,比如数字温度传感器。 最简单的数字传感器应该是开关了,只有on/1和off/0两种状态。
有的数字传感器也支持其它功能,比如加密。 CounterFit亮度传感器实验参考文档:virtual-device-sensor.md Create a light sensor:
运行python后,这个模拟器要这么玩:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5CxK5jZm-1652011398722)(lesson1.assets/virtual-sensor.png)] 3.2 ActuatorActuator convert an electrical signal from your IoT device into an interaction with the physical world such as emitting light or sound, or moving a motor. 举例:LED、喇叭、步进电机(Stepper motor)、继电器(Relay)、以及屏幕。 Types和传感器一样,也是模拟和数字两种。 Analog actuators take an analog signal and convert it into some kind of interaction, where the interaction changes based off the voltage supplied. 模拟执行器,比如可变亮度的灯。IoT设备通过DAC(模数转换器)把数字信号转换为电压数,执行器就可以提供不同伏特的电压。 另一种数模转换方法是 脉冲宽度调制(Pulse-Width Modulation, PWM),具体参考课件。 数字执行器,一个简单的例子就是不可变亮度的灯泡。 CounterFit数字传感器LED实验参考virtual-device-actuator.md 这个实验在传感器实验的基础上来实现,当光感亮度小于300时,led就亮。 Create an LED:
可以把光感亮度上限设置为600,即LED等有50%的概率亮。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hi8BuIL1-1652011398724)(lesson1.assets/virtual-led.png)] 4. Connect your device to the Internet4.1 简介IoT devices typically connect to a single cloud IoT service using a standard communication protocol, and that service is connected to the rest of your IoT application, from AI services to make smart decisions around your data, to web apps for control or reporting. 从传感器收集数据并发送给云服务的过程叫做遥测,telemetry。 IoT devices can receive messages from the cloud. Often the messages contain commands:
4.2 通信协议IoT里应用最广泛的通信协议就是基于发布/订阅模型的MQTT。其它协议还有AMQP 、 HTTP/HTTPS. 实验上一节的实验其实就是很简单的夜间路灯,只不过在实际中,为了避免某个灯被遮住导致误判,需要所有灯的光感都认为天黑了,才能亮灯。 本节的实验,则是在上一节的基础上引入MQTT broker,可以自己搭建,也可以使用test.mosquitto.org, 安装依赖库:
如果设备是wio,则需要一些arduino库,比如WiFi ,还有mqtt客户端库 PubSubClient。 客户端名称需要有一个guid,避免使用test.mosquitto.org时和其它客户端冲突,可以在Generate GUIDs online (guidgen.com)生成,也可以命令行里执行vs的uuidgen.exe工具。 连接mqtt的逻辑如下
MQTT可以参考之前的笔记: 4.3 遥测实验Telemetry is the act of gathering data from sensors and sending it to the cloud. Although the name is Message Queueing (initials in MQTT), it doesn’t actually support message queues. This means that if a client disconnects, then reconnects it won’t receive messages sent during the disconnection, except for those messages that it had already started to process using the QoS process. Messages can have a retained flag set on them. If this is set, the MQTT broker will store the last message sent on a topic with this flag, and send this to any clients who later subscribe to the topic. This way, the clients will always get the latest message. MQTT also supports a keep alive function that checks if the connection is still alive during long gaps between messages. 课件提供了一个恒温器的例子,帮助理解。 要发送的数据和web一样,一般是json形式。Arduino需要ArduinoJson库,python需要json库。 发布端源码位于 code-commands/server
订阅端源码位于code-commands/virtual-device/nightlight
把两端的id改成相同的guid,先执行哪个都可以,订阅端响应如下:
响应的,收到True时,web界面的led灯会亮。 4.4 失联处理如果订阅端失联了,那要看具体逻辑:
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 3:50:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |