“0”基础物联网IOT开发实践(上)——阿里云 MVP程磊

简介: 随着5G技术进入商用,万物互联的时代已经到来。杭州橡木桶科技合伙人、开源硬件社区极客工坊创始人程磊以树莓派4为基础开发平台,辅以Arduino等硬件,在直播中向大家展示了物联网硬件端开发的基本套路。

【MVP时间】线上峰会,一键收藏

《“0”基础物联网IOT开发实践》精彩直播

查看下篇文章,点击这里。

物联网开发的技术链比较长,很多情况下,如果没有很好的引导,很难从互联网层面转到物联网层面,也不可能真正的0基础转行。

下文以树莓派4和Arduino为例,由浅入深来模拟一个物联网应用开发的实例。树莓派4的初始化的教程在语雀上有相关的介绍(https://www.yuque.com/miniqiang)。

一、Hello World

任何一个软件开发者都会先从HelloWorld程序起步,物联网开发也一样,不过物联网硬件开发的HelloWorld程序一般是通过控制灯的闪烁(点灯实验)来实现,与软件开发不同的是硬件的HelloWorld程序会贯穿我们整个的物联网应用开发过程,一定程度上也是该过程中最重要的一个程序。

(一)树莓派4的点灯实验

我们将树莓派4连接到计算机上,通过一个小的程序来实现Led灯的控制,也就是HelloWorld程序了,其python代码如下。

coding=utf-8

import RPi.GPIO as gpio
import time

gpio.setmode(gpio.BOARD) #IO口编码规则选择板卡编号
gpio.setup(5,gpio.OUT) #5号口输出

while True:
gpio.output(5,gpio.HIGH) # 5号引脚输出高电平
time.sleep(1) #停顿1秒
gpio.output(5,gpio.LOW) #5号引脚输出低电平
time.sleep(1) #停顿1秒
通过运行以上代码,我们便能实现Led灯的闪烁,实现了一个最简单的控制硬件的程序。

(二)Arduino的点灯实验

大部分情况下我们是不会直接用计算机进行点灯的,因为系统会直接调用管脚,而管脚是直接接到硬件的CPU上的,万一接错了一些地方,可能会造成严重的后果,甚至烧毁CPU。一般来说,我们会使用Arduino板,通过USB来对其进行控制,再通过网线等连接到其他硬件上进行复杂的开发工作。
以下是实现Arduino点灯实验的Blink代码(C++):
void setup()
{
pinMode(2,OUTPUT);
}
void loop(){
digitalWrite(2,HIGH);
delay(1000); //ms
digitalWrite(2,LOW);
delay(1000);
}
在选择好相应的板卡和串口后,点击上传程序,会自动编译,程序成功上传到板子中后就可以看到Led灯如程序设定的有规律亮灭现象,这就说明我们的点灯实验成功了。

(三)通过Json来进行控制Led灯

上面两个实验中,灯的亮灭均是由写好的程序来控制的,不受我们行为或者指令的控制,那么如果要实现数据可控,比如通过阿里云来控制的话,我们要怎么做呢?这里我们举一个例子,我们用json来传递我们的指令,进而控制灯的开关。实现该功能的步骤大致如下:
1、初始化端口;
2、串口处理,如果收到了消息,就把消息取出来交给json处理,函数代码如下(C++):
//串口处理
if(Serial.available()>0)//检查串口是否有数据,并且缓冲区是否可用

delay(50);
byte SerialDataLen = Serial.available();//获取消息长度
char SerialData[SerialDataLen];
for(int a=0;a<SerialDataLen;a++)
{

 SerialData[a]=rSerial.read();

}

3、json处理,如果错误,就返回一个json错误,并且返回程序,如果正确,就会执行动作,其中json消息类似{"O":2,"D":0-1},"O"代表消息输出的串口,"D"代表动作,0为关灯,1为开灯,json处理函数的代码如下(C++):
//json处理
size_t capacity = JSON_ARRAY_SIZE(2)+30;
DynamicJsonDocument JSON(capacity);
//判断串口消息是否可以解析
DeserializationError error = deserializeJson(JSON.SerialData);
if(error)//判断对象是否符合标准

Serial.printin("json.error");
return;

4、执行动作,其代码如下(C++):
//执行动作
byte sw = JSON['O'];
byte type = JSON['D'];
digitalWrite(sw.type); //配置控制状态
在完成以上步骤程序的书写、编译以及上传之后,通过串口监视器,发送json消息给串口,我们就实现了通过USB线的方式来人为控制灯的亮灭。

二、树莓派4+Arduino的点灯实验

上面通过Json来进行控制Led灯的实验我们仍然是直接用的计算机来传递指令,下面我们用树莓派来进行控制。我们用USB将Arduino板子和树莓派4连接在一起,如果树莓派4检测到了板子,就会多出一个ttyUSB0的串口,代表设备连接成功。我们要实现的功能与上面的实验类似,就是通过指令来控制连接在Arduino板子上的Led灯的开关。其Blink代码如下(python):
import serial,time,json
port = serial.Serial(port='dev/ttyUSB0',baudrate=9600,

  bytesize=8,parity='N',stopbits=1,timeout=2)

time.sleep(2)
On = {'O':2,'D':0}
On = json.dums(On)
Off = {'O':2,'D':0}
Off = json.dumps(Off)
while True:

port.write(str.encode(On))
time.sleep(1)
port.write(str.encode(Off))
time.sleep(1)

通过以上程序我们就实现了通过计算机软件来控制前端的硬件设备,在该例子中树莓派4通过USB线每次给Arduino板子发送一条指令来控制Led灯的亮灭。可能大家会有疑问,上面的实验有什么用呢,就是我们可以通过上面的程序来控制继电器,进而通过继电器(如下图)来控制家里的开关,比如小米的智能插座,然后实现控制家里电器开关的作用,最终可以实现智能家居。

image.png

《“0”基础物联网IOT开发实践》精彩直播

查看下篇文章,点击这里。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
29天前
|
机器学习/深度学习 自然语言处理 物联网
深度学习入门:从理论到实践新技术趋势与应用:探讨新兴技术如区块链、物联网、虚拟现实等的发展趋势和应用场景
【8月更文挑战第30天】本文将介绍深度学习的基本原理和实践应用。我们将从深度学习的定义、历史和发展开始,然后深入探讨其工作原理和关键技术。接着,我们将通过一个简单的代码示例来展示如何实现深度学习模型。最后,我们将讨论深度学习在现实世界中的应用和挑战。无论你是初学者还是有经验的开发者,这篇文章都将为你提供深度学习的全面理解。
|
22天前
|
存储 物联网 关系型数据库
PolarDB在物联网(IoT)数据存储中的应用探索
【9月更文挑战第6天】随着物联网技术的发展,海量设备数据对实时存储和处理提出了更高要求。传统数据库在扩展性、性能及实时性方面面临挑战。阿里云推出的PolarDB具备高性能、高可靠及高扩展性特点,能有效应对这些挑战。它采用分布式存储架构,支持多副本写入优化、并行查询等技术,确保数据实时写入与查询;多副本存储架构和数据持久化存储机制保证了数据安全;支持动态调整数据库规模,适应设备和数据增长。通过API或SDK接入IoT设备,实现数据实时写入、分布式存储与高效查询,展现出在IoT数据存储领域的巨大潜力。
39 1
|
3天前
|
传感器 监控 安全
物联网通信的基石:LoRa、Sigfox与NB-IoT详解
物联网通信的基石:LoRa、Sigfox与NB-IoT详解
43 0
|
1月前
|
消息中间件 存储 传感器
RabbitMQ 在物联网 (IoT) 项目中的应用案例
【8月更文第28天】随着物联网技术的发展,越来越多的设备被连接到互联网上以收集和传输数据。这些设备可以是传感器、执行器或其他类型的硬件。为了有效地管理这些设备并处理它们产生的大量数据,需要一个可靠的消息传递系统。RabbitMQ 是一个流行的开源消息中间件,它提供了一种灵活的方式来处理和转发消息,非常适合用于物联网环境。
71 1
|
1月前
|
分布式计算 搜索推荐 物联网
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
|
24天前
|
机器学习/深度学习 人工智能 算法
物联网(IoT)就像是一个大型派对,无数的设备都在欢快地交流着信息
【9月更文挑战第4天】在这个万物互联的时代,物联网(IoT)犹如一场盛大的派对,各类设备欢聚一堂。然而,如何让这些设备互相理解并协同工作呢?这就需要机器学习与人工智能的助力。例如,智能空调通过学习你的使用习惯来调节温度,使你更加舒适;智能安防系统则能识别异常行为并及时报警,保障家庭安全。此外,智能农业、交通等领域也因机器学习和人工智能的应用变得更加高效。下面通过一个简单的温度预测代码示例,展示机器学习在物联网中的实际应用,让我们一起感受其强大潜力。
26 0
|
30天前
|
消息中间件 传感器 物联网
Producer 在物联网 (IoT) 中的应用
【8月更文第29天】在物联网 (IoT) 领域,设备和传感器不断生成大量的数据。为了有效地收集、处理和分析这些数据,通常会采用消息队列技术。消息队列允许设备将数据发送给后端系统进行进一步处理。在这个过程中,消息生产者(Producer)扮演着关键角色,负责将数据从设备发送到消息队列。本文将详细介绍如何使用消息生产者来收集来自各种传感器和其他 IoT 设备的数据,并提供一个基于 Python 和 Kafka 的示例代码。
28 0
|
1月前
|
消息中间件 传感器 监控
AMQP 与物联网 (IoT) 应用的结合
【8月更文第28天】高级消息队列协议 (AMQP) 是一种开放标准的应用层协议,特别适合于物联网 (IoT) 场景中的消息传递。AMQP 提供了可靠的、可扩展的消息传输机制,能够处理来自大量设备的数据流。本文将探讨 AMQP 在 IoT 应用中的优势,并提供使用不同编程语言构建 AMQP 客户端的具体示例。
24 0
|
1月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
54 1
|
4月前
|
传感器 存储 机器学习/深度学习
物联网(IoT)简介:定义、技术与应用
【5月更文挑战第30天】物联网(IoT)是将物品通过嵌入式系统、传感器及通信技术连接至互联网,实现物物、物人交互和数据共享的技术。其关键包括传感器、通信、嵌入式系统、云计算和人工智能技术。物联网应用于智能家居、智慧城市、工业自动化、农业和健康医疗等领域,通过Arduino等平台可实现简单数据传输。随着技术发展,物联网将深远影响人们生活和工作方式。
397 3

相关产品

  • 物联网平台