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

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

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

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

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

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

下文以树莓派4和Arduino为例,由浅入深来模拟一个物联网应用开发的实例。树莓派4的初始化的教程在语雀上有相关的介绍(https://www.yuque.com/miniqiang),包括如何注册阿里云、初始化树莓派,至于如何连接树莓派,可以在https://pinout.xyz/pinout上查看,有关于树莓派上每一个管脚的功能介绍。

一、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 {

 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
目录
相关文章
|
16天前
|
存储 SQL BI
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
|
19天前
|
算法 物联网 数据库
阿里云 OpenSearch RAG 应用实践
本文介绍了阿里云OpenSearch在过去一年中在RAG方面的应用和探索。
461 2
阿里云 OpenSearch RAG 应用实践
|
1天前
|
存储 弹性计算 安全
构建高效企业应用架构:阿里云产品组合实践深度解析
该方案展现了阿里云产品组合的强大能力和灵活性,不仅满足了当前业务需求,也为未来的扩展打下了坚实的基础。希望本文的分享能为读者在设计自己的IT解决方案时提供一定的参考和启发。
14 1
|
5天前
|
负载均衡 测试技术 网络安全
阿里云服务网格ASM多集群实践(一)多集群管理概述
服务网格多集群管理网络打通和部署模式的多种最佳实践
|
7天前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是面向物联网的时序数据库,专注于时间序列数据管理,提供高效的数据处理、集成Hadoop和Spark生态、支持多目录存储策略。它还具有InfluxDB协议适配器,允许无缝迁移原本使用InfluxDB的业务。文章讨论了IoTDB的体系结构,包括数据文件、系统文件和预写日志文件的存储策略,并介绍了如何配置数据存储目录。此外,还提及了InfluxDB版本和查询语法的支持情况。IoTDB在物联网数据管理和分析中扮演关键角色,尤其适合处理大规模实时数据。
26 5
|
5天前
|
传感器 人工智能 搜索推荐
人工智能(AI)与物联网(IoT)的融合是当今技术领域的一个重要趋势
人工智能(AI)与物联网(IoT)的融合是当今技术领域的一个重要趋势
|
6天前
|
安全 物联网 物联网安全
物联网(IoT)的兴起与挑战:技术变革的双刃剑
【6月更文挑战第17天】**物联网的崛起带来了智能家居、智慧城市等便利,但安全挑战、设备兼容性和带宽压力也随之而来。加强安全、统一标准及提升处理能力是关键。面对挑战,持续的技术创新和法规完善将推动其健康发展,物联网的未来充满希望。**
|
10天前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
物联网技术带来数据库管理挑战,特别是实时数据整合与安全性。IoTDB是一个专为时间序列数据设计的数据库,提供数据收集、存储和分析服务,适用于海量物联网数据。其架构包括数据文件、系统文件和预写日志文件的管理,并支持多目录存储策略。此外,IoTDB还开发了InfluxDB协议适配器,使得用户能无缝迁移原有InfluxDB业务。此适配器基于IoTDB的Java服务接口,转换InfluxDB的元数据格式,实现与IoTDB的数据交互。目前,适配器支持InfluxDB 1.x版本及部分查询语法。
35 5
|
15天前
|
运维 监控 搜索推荐
客户案例 | 阿里云向量检索 Milvus 版在识货电商检索场景的应用与实践
本文分享了阿里云向量检索 Milvus 版在识货电商检索场景的应用与实践。阿里云的 Milvus 服务以其性能稳定和功能多样化的向量检索能力,为识货团队在电商领域的向量检索场景中搭建业务系统提供了强有力的支持。
|
16天前
|
机器学习/深度学习 传感器 算法
物联网(IoT)数据与机器学习的结合
【6月更文挑战第6天】物联网和机器学习加速融合,驱动数据收集与智能分析。通过机器学习算法处理 IoT 数据,实现智能家居、工业生产的智能化。示例代码展示如何用线性回归预测温度。结合带来的优势包括实时监测、预警、资源优化,但也面临数据质量、隐私安全、算法选择等挑战。未来需强化技术创新,应对挑战,推动社会智能化发展。
60 0

相关产品

  • 物联网平台