“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
目录
相关文章
|
10天前
|
安全 物联网 网络安全
智能设备的安全隐患:物联网(IoT)安全指南
智能设备的安全隐患:物联网(IoT)安全指南
34 12
|
8天前
|
传感器 监控 安全
物联网(IoT):定义、影响与未来
物联网(IoT):定义、影响与未来
25 3
|
9天前
|
供应链 物联网 区块链
未来已来:探索区块链、物联网与虚拟现实技术的融合趋势与实践应用
【10月更文挑战第34天】随着科技的迅猛发展,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正逐步渗透到我们的生活中,不仅改变着我们的生活方式,还在重塑全球的经济结构。本文将深入探讨这些技术的发展现状、相互之间的融合趋势以及在实际应用中的创新场景。我们将通过具体案例分析,揭示这些技术如何共同作用,推动社会向更加智能、互联的方向发展。
25 3
|
17天前
|
存储 JSON 运维
智能物联网平台:Azure IoT Hub在设备管理中的实践
【10月更文挑战第26天】随着物联网技术的发展,Azure IoT Hub成为企业管理和连接数百万台设备的强大平台。本文介绍Azure IoT Hub的设备管理功能,包括设备注册、设备孪生、直接方法和监控诊断,并通过示例代码展示其应用。
21 4
|
1月前
|
存储 边缘计算 物联网
阿里云物联网平台:推动万物互联的智能化解决方案
随着物联网技术的快速发展,阿里云物联网平台为企业提供了一体化的解决方案,包括设备接入、数据管理和智能应用等核心功能。平台支持海量设备接入、实时数据采集与存储、边缘计算,并具备大规模设备管理、高安全性和开放生态等优势。广泛应用于智能制造、智慧城市和智能家居等领域,助力企业实现数字化转型。
153 5
|
16天前
|
SQL 监控 物联网
ClickHouse在物联网(IoT)中的应用:实时监控与分析
【10月更文挑战第27天】随着物联网(IoT)技术的快速发展,越来越多的设备被连接到互联网上,产生了海量的数据。这些数据不仅包含了设备的状态信息,还包括用户的使用习惯、环境参数等。如何高效地处理和分析这些数据,成为了一个重要的挑战。作为一位数据工程师,我在一个物联网项目中深入使用了ClickHouse,以下是我的经验和思考。
40 0
|
1月前
|
人工智能 安全 物联网
|
3月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
106 1
|
2月前
|
存储 物联网 关系型数据库
PolarDB在物联网(IoT)数据存储中的应用探索
【9月更文挑战第6天】随着物联网技术的发展,海量设备数据对实时存储和处理提出了更高要求。传统数据库在扩展性、性能及实时性方面面临挑战。阿里云推出的PolarDB具备高性能、高可靠及高扩展性特点,能有效应对这些挑战。它采用分布式存储架构,支持多副本写入优化、并行查询等技术,确保数据实时写入与查询;多副本存储架构和数据持久化存储机制保证了数据安全;支持动态调整数据库规模,适应设备和数据增长。通过API或SDK接入IoT设备,实现数据实时写入、分布式存储与高效查询,展现出在IoT数据存储领域的巨大潜力。
67 1
|
2月前
|
传感器 监控 安全
物联网通信的基石:LoRa、Sigfox与NB-IoT详解
物联网通信的基石:LoRa、Sigfox与NB-IoT详解
320 0

相关产品

  • 物联网平台