《物联网基础知识和 Python 开发基础》| 学习笔记

简介: 快速学习《物联网基础知识和Python开发基础》

开发者学堂课程【HaaS 物联网云端一体低代码开发课程:《物联网基础知识和 Python 开发基础》 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/810/detail/13906


《物联网基础知识和 Python 开发基础》

目录

一、 物联网是什么

二、 物联网应用场景概览

三、 物联网操作系统介绍

四、 物联网通信协议介绍

五、 HaaS EDU 开发板介绍

六、 Python 语言知识

 

一、物联网是什么

1.物联网的定义

物联网( The Internet of Things,简称 IoT ),即”万物相连的互联网“。

通过各种传感器技术、射频识别技术( RFID )、全球定位系统( GPS ,北斗等)、激光扫描等各种装置与技术,采集物体的温湿度、声音、光学信号、力学、化学、生物特征及位置等各种信息,通过网络连接实现对物体的智能化感知、识别和管理,从而实现物与物、物与人的信息交换和共享。

1.世界信息产业发展的第三次浪潮

2.互联网基础上的延伸和扩展

3.数以亿计的物联网设备已经被广泛部署

4.据预测,到2025年,千亿级别物联网设备

5.物联网+大数据+云计算+人工智能,加速实现物理世界的数字化和智能化

2.物联网的层次

image.png

 

二、物联网应用场景概览

物联网产业的几种场景概括:

智能家居:智能灯、智能空调、智能摄像头、智能门锁、踢脚线感应灯等;

智慧城市:智能路灯、智能红绿灯、车载系统、智能摄像头等;

智慧能源;

车联网;

智能物流;

智能安防;

智能医疗;

智能制造:MES 系统、HMI 屏、智能工控等;

智慧零售:便利店、无人零售柜、菜鸟驿站等;

智慧农业:野生动物保护、智能养蜂等。

 

三、物联网操作系统介绍

1.操作系统分类

桌面操作系统

移动操作系统

物联网操作系统

Windows

Android

uC/OS、FreeRTOS

Mac Os

ios

AliOs Things、LiteOS

ubuntu

Chrome OS

……

2. 物联网操作系统定义

Ø 定义︰提供物物相连能力的操作系统,运行在 IoT 设备上

Ø 核心∶能够将各种物体连接到互联网,并为各种物体提供数据通信能力

Ø uC/Os,FreeRTOS,LiteOS,AliOS Things,ThreadX,Android Things,mbedOs,...

3.介绍FreeRTOS:

image.png

Ø 简单、轻量、可靠性好、可移植性好

Ø  Amazon FreeRTOS 设备可以直接连接到 AWS ToT Core 等云服务,也可以连接到 AWS Greengrass 等本地边缘服务

Ø 缺少对外设接口定义,对文件系统支持相对较弱

Ø 策略:  MIT License ,开源、免费,适用于任何商业/非商业场合

 image.png

Amazon FreeRTOS 操作系统框图

4.介绍 Linux:

a) 定义:

人们通常所说的 Linux 是指 Linux 内核,但只有内核并不是一个完整的操作系统。实际上,Linux 是一套开放源代码、可以自由传播的类 Unix 操作系统。它是一个基于 POSIX 的多用户、多任务并且支持多线程和多 CPU 核心的操作系统。

Linux 系统= Linux 内核+ GNU 项目组件+应用程序(数据库、网络、图形界面、音视频等等)

b)  Linux 在物联网领域的应用:

在国内物联网操作系统得到大量应用之前, Linux 应该是物联网应用中使用最广泛的操作系统了。 Linux 系统一般都比较大,为了适应物联网领域的应用场景,很多开源组织和商业公司对 Linux 进行裁剪,RT Linux 和 uClinux 是两个比较有代表性的基于 Linux 的物联网操作系统。

RT Linux

uClinux

降低 Linux 内核默认任务的优先级

派生自 Linux 2.0/2.4

提高物联网应用程序的任务优先级

专为没有 MMU 的 CPU 进行裁剪和优化

5.LiteOS

image.png

华为2015年 BSD-3 开源许可 鸿蒙 OS 内核选择之一

智能家居、个人穿戴、车联网、城市公共服务、制造业等领域

6.Alios Things

Apacne 2.0 协议

云端一体化 IoT 基础设施关键能力:

Ø 极致性能

Ø 极简开发

Ø 云端一体

Ø 丰富组件

Ø 安全防护

在智能家居、智慧城市、智慧园区、智能安防、智能制造、智慧农业、人工智能等领域涉猎。

7.AliOS Things 3.3

Ø 更易用的轻应用开发

JavaScript 和 Python,无需搭建环境、编译、烧写

不依赖嵌入式软件技术栈,调用简洁的 API 即可操控硬件行为

支持一键热更新推送应用代码到硬件,极致开发体验

Ø 更易用的开发调试工具

图形化完整支持开发编译调试烧录全流程,提供易用性

重构构建系统,使用更先进直观的 yaml 方式编译脚本

智能串口工具 SmartTrace V1.4

Ø 更丰富的积木方案

解决方案中心

硬件积木

软件积木

Ø 更易用的文档库

每个案例和组件的使用方式

内核开发指南

API 用户手册等等

 

四、物联网通信协议介绍

1. 物联网常用应用层协议

a). MQTT ( Message Queuing Telemetry Transport,消息队列遥测传输)

最早由 IBM 开发的,专门为计算能力有限,工作在低带宽,不可靠网络的控制设备进行通信而设计的

基于 TCP/IP 常连接,开销小,支持 QoS

基于基于主题(( Topic )的订阅/发布模式,支持多对多的协议

b). COAP ( Constrained Application Protocol,受限制的应用协议)

基于 UDP ,采用请求响应(类 http )的工作模式

无连接,只支持一对一

一般来说,IoT 设备与云端通信用用 MQTT 协议的多一些,局域网通信一般采用CoAP 协议。

2. 物联网网络接口层常用协议

按照传输距离的远近可以分为低功耗广域网和低功耗局域网。

低功耗广域网:4G,LoRa,NB-IOT 等

低功耗局域网:WIFI、蓝牙、ZTB、红外等


五、HaaS EDU 开发板介绍

在无须外接任何外设的情况下,提供了10个精心打造的场景式开源案例每一个都是不同的知识点,寓教于乐,在边玩的过程中就能将知识点学习了。

 

六、Python 语言基础知识

WHY Python:简单易用、有成熟的社区、大量优秀的库和框架、多领域应用

Python 轻应用基础–变量

变量赋值

#直接赋值

chapter = 1

name = "Haas"

time = 12.3

binnum = 0b1111000

#连续赋值

chapter = name = time = 1

print(name)

chapter, name,time = 1,"Haas", 12.3

print(nmae)

变量类型:

Ø Numbers 数字

Ø List 列表

Ø String 字符串

Ø Tuple 元组

Ø Dictionary 字典

Number:

t_int = 12

type(t_int)

<class 'int'>

type(12)

<class 'int'>

type(12.3)

<class 'float'>

t_complex = complex(1.2,3.4)

type(t_complex)分

<class 'complex'>

List:

#初始化方法

t_list = [1,2,3,4,5]

print(t_list)

[1,2,3,4,5]

#另一种初始化方法t_list = [0]* 5

t_list

[0,0,0,0,0]

#复杂类型数组

t_list = [2,'*',0.5,'equals to ',1.0]

t_list

[2,'*',0.5, 'equals to', 1.0]

#数组操作

##索引

t_list[2]#数组首个元素index=0

0.5

t_list[-1] #数组最后的元素index=-1

1.0

##截取

t_list[2:4]

[0.5,"笔quals to ']#挂#下面的可能比较难理解

t_list[-4:-2]

[ '*',0.5]

t_list[-2:-4]#注意 index 顺序

[]

t_list[1:]

['*',0.5,'equals to ', 1.0]

##拼接

t_list + t_list[1:3]

[2,'*',0.5,'equals to',1.0,'*', 0.5]

t_list*2

[2,'*',0.5,'equals to',1.0,2,'*',0.5,'equals to ',1.0]

# List 函数&方法

##取一个正常的列表

t_n_list =[1,2,3,4,5]len(c)

5

max(t_n_list)

5

min(t_n_list)

0

##需要相同类型的列表元素,如单纯的 Number,String 数组

t_list = [2,'*',0.5,'equals to ',1.0]

max(t_list)

#Traceback (most recent calllast):

#File "<stdin>" , line 1, in<module>

#TypeError: can't convert 'int'object to str implicitly

#在列表末尾添加新的对象t_n_list.append(5)t_n_list

[1,2,3,4,5,5]

#统计某个元素在列表中出现的次数

t_n_list.count(5)

2

#将对象插入列表

t_n_list.insert(4,3)

t_n_list

[1,2,3,4,3,5,5]

#从列表中找出某个值第一个匹配项的索引位置

t_n_list.index(3)

2

#移除列表中某个值的第一个匹配项

t_n_list.remove(3)

[1,2,4,3,5,5]

#移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

t_n_list.pop()t_n_list

[1,2,4,3,5]

t_n_list.pop(2)

4

t_n_list

[1,2,3,5]

#在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

t_n_list.extend( [4,7,6,9,8])

t_n_list

[1,2,3,5,4,7,6,9,8]

t_n_list.reverse()

t_n_list

[8,9,6,7,4,5,3,2,1]

#对原列表进行排序

t_n_list.sort()

t_n_list

[1,2,3,4,5,6,7,8,9]

String:

t_string = "welcome to Haas"

len(t_String)#字母个数

>>>15

t_String += ':3'

t_String

>>> "welcome to Haas :3'

t_String[11:15]

>>> "Haas'

Tuple:

t_tuple = (2,'*',0.5,'equals to' ,1.0)

t_list = [2,'*',0.5,'equals to' ,1.时

t_list[0] =1t_tuple[0] = 1

Traceback (most recent call last):

File "<stdin>", line 1,in

<module>

TypeError: 'tuple' object does not

support item assignment

Dictionary:

t_dict = { ' key ' : 'value' , 'list' : [1,2,3]}

t_dict[1]

Traceback (most recent call last):

File "<stdin>", line 1,in

<module>

KeyError: 1

t_dict [ ' key ' ]

>>> 'value'

#输出所有键

t_dict.keys()

>>>dict_keys( ['key' , 'list'])

#输出所有值

t_dict.values()

>>> dict_values( ['value', [1,2,3]])

运算:

算术运算

a = 37

b = 16

#+一*/%

#小数除法

a / b

>>>2.3125

#整数除法 a ll b

>>> 2

a % b

>>> 5

#幂运算

a** b

>>>12337511914217166362274241

#运算并赋值

a**=b

a

>>>12337511914217166362274241

位运算:

bin_a = 0b11110000

bin_b = 0b10101010

print(bin_a, bin_b)

>>>240170

bin(bin_a [ bin_b)

>>>8b11111010

bin(bin_a & bin_b)

>>>0b10100000

bin(bin_a ^ bin_b)

>>>0b1011010

bin(~bin_a)

>>> -0b11110001

bin(bin_a << 4)

>>>0b11110000000o

成员运算:

t_list = [2,‘*',0.5,"equals to' ,

1.0]

2t_list

>>> True

2 not in t_list

>>> False

条件语句:从这里开始,要介绍 Python的tab 缩进方法

cur_time = 12.3

time = 45

if(cur_time > time):

print("class off")

elif(cur_time < time):

print("class on")

else:

print("Schrodinger's class")

循环语句:

while:

i = 0

while(i < 10):

i +=2

if(i < 3):

continue

if(i > 9):

break

print('i = ', i)

for:

#for 本身的迭代器

for i in [1,2,3,4,5]:

print( 'i = ', i)

#range方法

for i in range( 10):

if(i < 3):

continue

if(i > 8):

break

print( 'i = ', i)

函数:

#定义函数

def bubble_sort(arr):

n = len(arr)

for i in range(n):

for j in range(0,n-i-1):

if(arr[j] > arr[j+1]):

arrljl,arr[j+1] =

arr[j+1], arr[j]

return arr

#调用函数

random_arr =

[5,6,3,4,1,2,3,9,0,2,4,5,7]

bubble_sort( random_arr)

>>>[0,1,2,2,3,3,4,4,5,5,6,7,9]

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
2月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
349 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
2月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
152 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
2月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
169 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
2月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
69 1
|
2月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
104 1
|
2月前
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
52 2
|
2月前
|
存储 Python
Python学习笔记编程小哥令狐~持续更新、、、 (下)
Python学习笔记编程小哥令狐~持续更新、、、 (下)
34 1
|
2月前
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
44 0
【免费分享编程笔记】Python学习笔记(二)
|
2月前
|
Java 编译器 Go
Python学习笔记--- day01计算机基础和环境搭建(一)
Python学习笔记--- day01计算机基础和环境搭建(一)
43 2
|
2月前
|
程序员 编译器 Python
Python学习笔记--- day01计算机基础和环境搭建(二)
Python学习笔记--- day01计算机基础和环境搭建(二)
49 1

热门文章

最新文章

相关产品

  • 物联网平台