IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 树莓派 + AWS IoT 入门实验 -> 正文阅读

[嵌入式]树莓派 + AWS IoT 入门实验

前言

好久没折腾过硬件了, 翻出了吃灰1年多的树莓派3B体验一下与 AWS IoT 物联网的联动, 参考官方文档:
https://docs.aws.amazon.com/iot/latest/developerguide/connecting-to-existing-device.html

AWS准备工作

AWS IoT 与硬件之间的通信依赖X.509证书进行加密并通过policy的策略进行限制, 所以需要先在AWS控制台做下面的准备工作:

创建policy

打开 Amazon IoT 控制台, 依次 Security - Policies - Create policy

在这里插入图片描述

分别添加 iot:Coonect, iot:Receive, iot:Publish, iot:Subscribe 的Allow权限, 为了方便实验, resource就不做具体限制了, 直接*通配

在这里插入图片描述

创建 thing

创建好policy后回到左侧导航栏 All devices - Things - Create things

在这里插入图片描述

因为实验就一台设备, 所以选择 Create single thing

在这里插入图片描述

起个名字, 注意这个名字后面是不能修改的, 其他保持默认设置继续

在这里插入图片描述

选择推荐的自动生成证书

在这里插入图片描述

勾选上刚才创建的policy继续

在这里插入图片描述

下载证书/密钥

分别下载生成的证书和密钥文件, 注意公钥和私钥文件只能在这个界面进行下载, 关了就没法再下载了, 需要重新生成新的.

在这里插入图片描述
一共有5个文件, 对应说明:

文件名说明
xxxx-certificate.pem设备证书, 用于与目标物理设备绑定
xxxx-private.pem私钥
xxxx-public.pem公钥
AmazonRootCA1.pemAmazon trust services endpoint 根证书 (RSA 2048 bit)
AmazonRootCA3.pemAmazon trust services endpoint 根证书 (ECC 256 bit)

本次实验中将会用到的是RSA 2048 bit算法的AmazonRootCA1.pem文件作为根证书, 同时还需要xxxx-certificate.pem设备证书和xxxx-private.pem私钥, 后面将会用到这三个文件. 都下载好后点击Done关闭弹窗.

再次回到左侧导航栏最底部 Settings, 复制 Endpoint 对应的网址到记事本后面会用到. IoT控制台的准备工作至此告一段落.
在这里插入图片描述

硬件准备工作

也不记得之前树莓派的TF卡里面有啥东西了, 直接用 Raspberry Pi Imager 重新刷了最新版本的 Raspberry Pi OS Lite (32-bit), 这个版本是基于 Debian 11 Bullseye 魔改的. SSH 连上开始下面的操作:

# 先替换国内镜像
sudo sed -i 's|raspbian.raspberrypi.org|mirrors.ustc.edu.cn/raspbian|g' /etc/apt/sources.list
sudo sed -i 's|//archive.raspberrypi.org|//mirrors.ustc.edu.cn/archive.raspberrypi.org|g' /etc/apt/sources.list.d/raspi.list

# 更新和安装依赖
sudo apt update
sudo apt upgrade -y
sudo apt install -y cmake libssl-dev git python3-pip

# 使用豆瓣pip镜像
pip config set global.index-url https://pypi.doubanio.com/simple

# 安装 AWS IoT Device SDK
cd ~
pip install awsiotsdk
git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git

# github访问有困难可以用下面gitee上的镜像
# git clone https://gitee.com/mirrors_aws/aws-iot-device-sdk-python-v2.git

Hello IoT World

IoT 通信用到的是MQTT协议1 下面的测试程序会用MQTT库创建名为topic_1的主题, 并发送10条消息到这个主题.

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

首先将第一步在AWS控制台中生成的三个证书/密钥文件上传到树莓派~/certs文件夹中, 方便后面操作重命名一下:

文件名说明
certificate.pem设备证书, 用于与目标物理设备绑定
private.pem私钥
AmazonRootCA1.pemAmazon trust services endpoint 根证书 (RSA 2048 bit)
/home/pi/certs/
├── AmazonRootCA1.pem
├── certificate.pem.crt
└── private.pem.key

调用aws-iot-device-sdk-python-v2中自带的演示应用, 注意将your-iot-endpoint替换为第一步在AWS控制台准备工作最后Settings中复制到记事本的那个网址

cd ~/aws-iot-device-sdk-python-v2/samples

python3 pubsub.py --topic topic_1 --ca_file ~/certs/AmazonRootCA1.pem --cert ~/certs/certificate.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint

成功输出下面信息:
在这里插入图片描述
回到 AWS IoT 控制台检查树莓派发送的消息, 左侧导航栏: MQTT test client - Topic filter 输入topic_1 - Subscribe, 订阅后再次在树莓派的SSH中执行上面的测试程序, 可以观察到控制台中同步接收到了传来的Hello World消息.
在这里插入图片描述

总结

本次实验只是进行了最基本的物理设备与 AWS IoT 互联并通过 MQTT 协议发送/接受消息, 对于实际应用场景而言使用到更多的会是商用级的硬件设备已经封装好了更简洁的配置界面, 整体思路而言其实是一样的, 主要就是在 AWS 控制台配置好policy, 定义/添加 thing, 创建证书并在设备上正确关联.


  1. MQTT协议介绍 https://www.runoob.com/w3cnote/mqtt-intro.html ??

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:19:04  更:2022-06-25 18:19:58 
 
开发: 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年12日历 -2024/12/29 7:55:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计