软硬件集成开发简介

软硬件集成开发简介

说明

软硬件集成开发是目前普遍的应用为物联网(Internet of Things, IoT),物联网一词是指互联设备的集合网络,以及促进设备与云之间以及设备自身之间通信的技术,而物联网的架构由底层至上层依序为感知层、网络层、应用层。感知层位于物联网三层结构中的最底层,其功能为“感知”,感知层包括二维码标签和识读器、RFID标签和读写器、摄像头、GPS、传感器、M2M终端、传感器网关等设备,主要功能是识别物体、采集信息。

网络层其功能为“传输”,有多种联网技术可供选择,依照有效传输距离可区分为短距离无线、中距离无线、长距离无线,以及有线技术:

  • 短距离无线
    • 蓝牙网状网络(Bluetooth mesh networking)– 规范采用蓝牙技术的网状网络,可增加节点数,并提供标准化的应用层。
    • 光照上网技术(Li-Fi)– 与Wi-Fi标准相似的无线通信技术,但使用可见光通信以增加带宽。
    • 近场通信(Near-field communication,NFC)– 使两个电子设备能够在4公分范围内进行通信的通信协议。
    • 无线射频识别(Radio-frequency identification,RFID)– 使用电磁场访问无线射频识别(RFID)标签中数据的技术。
    • Wi-Fi – 基于IEEE 802.11标准的无线局域网技术。
    • ZigBee – 基于IEEE 802.15.4标准的个人网通信协议,具有低功耗,低数据速率,低成本的特性。
    • Z-Wave – 主要应用于智能家庭和安全应用的无线通信协议。
  • 中距离无线
    • 高级长期演进技术(LTE-Advanced)– 高速蜂窝网络的通信规范。通过扩展的覆盖范围,提供更高的数据传输量和更低的延迟。
    • 5G - 新一代移动通信技术,提供高资料速率、减少延迟、节省能源、提高系统容量和大规模设备连接。
  • 长距离无线
    • 低功率广域网(Low-Power Wide-Area Network,LPWAN)– 提供低资料速率与远程通信,降低功耗和传输成本。可用的LPWAN技术和协议分为使用授权频段的NB-IoT,以及使用非授权频段的LoRa、Sigfox、Weightless、Random Phase Multiple Access(RPMA)、IEEE 802.11ah等。
    • 甚小孔径终端(Very Small Aperture Terminal, VSAT)– 使用小型碟型天线,透过人造卫星传输之通信技术。
  • 有线
    • 以太网(Ethernet)– 基于IEEE 802.3标准的技术,可使用双绞线、光纤连接至集线器或网络交换器。
    • 电力线通信(Power Line Communication,PLC)– 以电缆传输电力和数据的通信技术,有HomePlug或G.hn等标准。

应用层其功能为“处理与呈现”,可以对感知层采集数据进行计算、处理和知识挖掘,从而实现对物理世界的实时控制、精确管理和科学决策。在应用层中,通常使用多种编程语言撰写应用程序,常见的是使用网页的技术,如 HTTP、Web API 与 JSON 。

在本书介绍智能软硬件项目与一般的 IoT 系统相同,可以通过实时收集和交换数据来运作。智能软硬件项目系统有三个组件:

  • 智能设备:从环境、用户输入或使用模式中收集数据,通过网络与应用程序进行数据通信。
  • 智能应用程序:是一种服务和软件集合,使用机器学习或人工智能(AI)技术来分析此数据并据此做出明智决策,这些决策会传输回智能设备,然后智能设备会以智能方式对输入进行响应。
  • 图形用户界面:用户可以通过图形用户界面管理智能设备。常见示例包括用于注册和控制智能设备的移动应用程序或网站。

下图为本书的软硬件集成开发架构,智能装备选择的是 ESP32-CAM ,以计算石头数量作为智能应用程序,使用 HTML/JS/CSS 来进行图形用户介面开发。整个项目将以 Python 为主要开发语言,以求项目集成的无缝衔接。

在这里插入图片描述
图 1. 软硬件集成开发架构

ESP32 简介

ESP32 是一系列低成本,低功耗的单晶片微控制器,集成了 Wi-Fi 和双模蓝牙。 ESP32 系列采用 Tensilica Xtensa LX 6微处理器,包括双核心和单核变体,内建天线开关,RF变换器,功率放大器,低杂讯接收放大器,滤波器和电源管理模组。

ESP32 由总部位于上海的中国公司乐鑫信息科技创建和开发,由台积电采用40奈米技术制造。它是 ESP8266 微控制器的后继产品。而以 ESP32 芯片有制作出多个系列的模块,分别是 ESP32-S 系列、ESP32-C 系列与ESP32 系列,以下以 ESP32 系列为主。

ESP32的基础功能包括以下内容:

  • 处理器:
    • CPU: Xtensa 双核心 (或者单核心) 32位元 LX6 微处理器, 工作时脉 160/240 MHz, 运算能力高达 600 DMIPS
  • 记忆体:
    • 448 KB ROM (64KB+384KB)
    • 520 KB SRAM
    • 16 KB RTC SRAM,SRAM 分为两种
    • 最大支援 16 MB 外部 SPI Flash
    • 最大支援 8 MB 外部 SPI SRAM
  • 无线传输:
    • Wi-Fi: 802.11 b/g/n
    • 蓝芽: v4.2 BR/EDR/BLE
  • 外部介面:
    • 34个 GPIO
    • 12-bit SAR ADC ,多达18个通道
    • 2个 8位元 D/A 转换器
    • 10 个触控感应器
    • 4个 SPI
    • 2个 I2S
    • 2个 I2C
    • 3个 UART
    • 1个 Host SD/eMMC/SDIO
    • 1个 Slave SDIO/SPI
    • 带有专用 DMA 的乙太网路介面,支援 IEEE 1588
    • CAN 2.0
    • 红外线传输
    • 电机 PWM
    • LED PWM, 多达16个通道

而 ESP32 模组还可以细分成以下几个子系列:

  • ESP32-WROOM 系列模组基于 ESP32-D0WD 双核芯片设计,适用于基于 Wi-Fi 和蓝牙连接的应用场景,具备强大的双核性能。
  • ESP32-WROVER 系列模组基于 ESP32-D0WD 双核芯片设计,其强大的双核性能适用于对内存需求大的应用场景,例如多样的 AIoT 应用和网关应用。
  • ESP32-MINI 系列模组基于 ESP32-U4WDH 单核芯片设计, 为基于 Wi-Fi 和蓝牙连接的应用提供了高性价比的解决方案。

在这里插入图片描述
图 2. ESP32 模组

上面所提到的 ESP32-D0WD 芯片的描述是:

代号意义说明
D内核D=双核、S=单核
0嵌入式 Flash0=无、2=16Mbit
WD通信模式WD=Wifi b/g/n + BT/BLE 双频
AD=Wifi a/b/g/n + BT/BLE 双频
CD=Wifi ac/c/b/g/n + BT/BLE 双频

ESP32-CAM 简介

本书使用的是 ESP32-CAM 设备,它是安信可科技发布小尺寸的摄像头模组。该模块可以作为最小系统独立工作,尺寸仅为 27x40.5x4.5 mm,可广泛应用于各种物联网场合,适用于家庭智能设备、工业无线控制、无线监控、QR无线识别,无线定位系统信号以及其它物联网应用,是物联网应用的理想解决方案。

特性

  • 基于 ESP32-WROVER 系列,处理器是 ESP32-D0WD
  • 采用低功耗双核 32 位 CPU,可作应用处理器
  • 体积超小的 802.11b/g/n Wi-Fi + BT/BLE SoC模块
  • 主频高达 240MHz,运算能力高达 600 DMIPS
  • 内置 520 KB SRAM,外置 8MB PSRAM
  • 支持 UART/SPI/I2C/PWM/ADC/DAC 等接口
  • 支持 OV2640 和 OV7670 摄像头,内置闪光灯
  • 支持图片 WiFI 上传
  • 支持 TF 卡
  • 支持多种休眠模式。
  • 内嵌 Lwip 和 FreeRTOS
  • 支持 STA/AP/STA+AP 工作模式
  • 支持 Smart Config/AirKiss 一键配网
  • 支持串口本地升级和远程固件升级(FOTA)

在这里插入图片描述
图 3. ESP32-CAM 管脚定义

智能应用程序

智能应用程序将处理智能装置所传送过来的信息,可以使用电脑视觉或是深度学习的算法进行分析、处理。

什么是计算机视觉?
计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取“信息”的人工智能系统。因为感知可以看作是从感官信号中提取信息,所以计算机视觉也可以看作是研究如何使人工系统从图像或多维数据中“感知”的科学。

人类眼中的世界
因为我们是被赋予了视觉的生物,所以很容易误认为“计算机视觉也是一种很简单的任务”。计算机视觉究竟有多困难呢?以下图中的车为例,人类的大脑将视觉信号划分为许多通道,好让不同的信息流输入大脑。大脑已经被证明有一套注意力系统,在基于任务的方式上,通过图像的重要部分检验其他区域的估计。
在视觉信息流中存在巨量的信息反馈,并且到现在我们对此过程也知之甚少。肌肉控制的感知器和其他所有感官都存在着广泛的相互联系,这让大脑能够利用人在世界上多年生活经验所产生的交叉联想,大脑中的反馈循环将反馈传递到每一个处理过程,包括人体的感知器官(眼睛),通过虹膜从物理上控制光线的量来调节视网膜对物体表面的感知。

计算机的世界
然而在机器视觉系统中,计算机会从相机或者硬盘接收栅格状排列的数字,也就是说,最关键的是,机器视觉系统不存在一个预先建立的模式识别机制。没有自动控制焦距和光圈,也不能将多年的经验联系在一起。大部分的视觉系统都还处于一个非常朴素原始的阶段。
下图展示了一辆汽车。在这张图片中,我们看到后视镜位于驾驶室旁边。但是对于计算机而言,看到的只是按照栅格状排列的数字。所有在栅格中给出的数字还有大量的噪声,所以每个数字只能给我们提供少量的信息,但是这个数字栅格就是计算机所能够“看见”的全部了。我们的任务变成将这个带有噪声的数字栅格转换为感知结果“后视镜”。

在这里插入图片描述

图 4. 人类与计算机所理解的图型

下图给出了为什么计算机视觉如此困难的另一些解释。给定一个对于 3D 世界的二维(2D)观测,就不存在一个唯一的方式来重建三维信号。即使数据是完美的,相同的二维图像也可能表示一个无限的 3D 场景组合中的任一种情况。而且,前面也提到过,数据会被噪声和畸变所污染。这样的污染源于现实生活中的很多方面(天气、光线、折射率和运动),还有传感器中的电路噪声以及其他的一些电路系统影响,还有在采集之后对于图像压缩产生的影响。

在这里插入图片描述
图 5. 物体的二维表示会随著观点不同而完全改变

深度学习
深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习的成功,主要得益于数据积累和计算能力的提高。深度网络的概念上世纪80年代就已提出来了,只是因为当时发现“深度网络”性能还不如“浅层网络”,所以没有得到大的发展。目前似乎有点计算机视觉就是深度学习的应用之势,这可以从计算机视觉的三大国际会议:国际计算机视觉会议(ICCV),欧洲计算机视觉会议(ECCV)和计算机视觉和模式识别会议(CVPR),上近年来发表的论文可见一般。目前的基本状况是,人们都在利用深度学习来“取代”计算机视觉中的传统方法。

计算机视觉发展趋势

  1. 基于学习的物体视觉和基于几何的空间视觉继续“相互独立”进行。深度学习在短时期内很难代替几何视觉。
  2. 基于视觉的定位将更加趋向“应用性研究”,特别是多传感器融合的视觉定位技术。
  3. 三维点云重建技术已经比较成熟,如何从“点云”到“语义”是未来研究重点。“语义重建”将点云重建、物体分割和物体识别同时进行,是三维重建走向实用的前提。
  4. 对室外场景的三维重建,如何重建符合“城市管理规范”的模型是一个有待解决的问题。室内场景重建估计最大的潜在应用是“家庭服务机器人”。 鉴于室内重建的应用还缺乏非常具体的应用需求和驱动,在加上室内环境的复杂性,估计在3-5年内很难有突破性进展。
  5. 对物体识别而言,基于深度学习的物体识别估计将从“通用识别”向“特定领域物体的识别”发展。“特定领域”可以提供更加明确和具体的先验信息,可以有效提高识别的精度和效率,更加具有实用性;
  6. 目前基于CNN对视频理解的趋势将会持续;
  7. 解析深度网络机理的工作具有重大的理论意义和挑战性,鉴于深度网络的复杂性,估计近期很难取得突破性进展;
  8. 具有“反馈机制”的深度网络结构(architecture)研究必将是下一个研究热点。

图形用户界面

图形用户界面主要以网页技术为主,而网页技术分为前端与后端,前端主要的应用技术为 HTML/CSS/JavaScript,后端则为网站服务器,本书将以 Flask 框架来实作。

前端网页
HTML(HyperText Markup Language)是一门语言,所有的网页都是用 HTML 编写出来的,可以描述文字信息、图片、音频、视频等内容。以下为一段简单的 HTML,说明标前、原始码,最后显示结果画面。

标签说明:

- <!DOCTYPE html>:标识html5标签
- 基本框架
<html></html>:根标签
<head></head>:头标签
<body></body>:网页体(显示在网页上)
- <meta>:编码方式标签,使用什么编码方式打开此文件

源代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>It is a sample</title>
	</head>
	<body>
   Hello HTML
   </body>
</html>

在这里插入图片描述

图 6. 一个简单的HTML范例

CSS(Cascading Style Sheets)是一种样式表语言,用于指定网页不同部分对用户的显示方式,针对已经使用 HTML 构建的内容添加一些样式和附加格式的方法。CSS可以使用下列三种方式嵌入HTML:

  • 内联定义方式
  • 定义内部样式块对象
  • 链入外部样式表文件

以下范例以定义内部样式块对象为例,将样式块写在 style 标签中,样式名为 font-size 用来指定字体大小,样式值为 30px,可以在结果画面中看到两段文字的差异。

源代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>It is a sample</title>
      <style>
      div{
		   font-size:30px
	   }
   </style>
	</head>
	<body>
   Hello HTML
   <div>Hello HTML</div>
   </body>
</html>

在这里插入图片描述

图 7. 一个包含 CSS 的 HTML 范例

HTML 为网站创建了基本结构,但 CSS 为该结构添加了样式,而 JavaScript 承担了所有这些工作,并使其具有交互性且功能更复杂。JavaScript是一种脚本语言,运行在浏览器上,以普通文本形式保存,有变量,控制语句等,主要用于操作 HTML 与 CSS ,产生动态效果。

将 JavaScript 脚本嵌入到 HTML 文档中有 4 种标准方法:

  1. 代码包含于 script标记对,然后嵌入到 HTML 文档中;(嵌入式)
  2. 通过 script 标记的 src 属性链接外部的 JavaScript 脚本文件;(外链式)
  3. 通过 JavaScript 伪 URL 地址引入;(行内式)
  4. 通过 HTML 文档事件处理程序引入。(行内式)

以下范例使用通过 HTML 文档事件处理程序引入,事件为 onMouseOver 当鼠标移到上方时触发,会跳出弹窗显示 Hello JS,代码与结果画面如下。

源代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>It is a sample</title>
      <style>
      div{
		   font-size:30px
	   }
   </style>
	</head>
	<body>
   Hello HTML
   <div onMouseOver='alert("Hello JS")'>Hello HTML</div>
   </body>
</html>

在这里插入图片描述

图 8. 一个包含 CSS 与 JavaScript 的 HTML 范例

后端网站服务器

Flask 是一个使用 Python 编写的轻量级网站应用框架,使用 BSD 授权,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合 MVC 模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或 Web 服务的实现。

以下为一个简单的代码范例,可以用来与前端进行交互,源代码如下,结果画面如下所示,左手边是利用 python 解释器执行 Flask 代码的画面,右手边则是透过 Chrome 浏览器观看的结果。

源代码

# 导入Flask类库
from flask import Flask
# 创建应用实例
app = Flask(__name__)
# 视图函数(路由)
@app.route("/")
def hello_world():
    return "Hello, World!"
# 启动服务
if __name__ == '__main__':
   app.run(debug = True)

在这里插入图片描述

图 9. Flask 范例

参考资料

  • ESP32,https://zh.wikipedia.org/zh-hans/ESP32
  • ESP32 系列模组,https://www.espressif.com/zh-hans/products/modules/esp32
  • ESP32-CAM 摄像头开发板,https://docs.ai-thinker.com/摄像头开发板_esp32-cam
  • ESP32-CAM 模组,https://docs.ai-thinker.com/_media/esp32/docs/esp32-cam_product_specification_zh.pdf
  • ESP32-CAM, Camera Module Based on ESP32,https://www.waveshare.com/ESP32-CAM.htm
  • ESP32 系列芯片分类,https://blog.csdn.net/dalangtaosha2011/article/details/83106191
  • ESP32芯片和模组的硬件差异与选型,ESP32-WROOM-32、ESP32-WROVER和ESP32-S衍生模组选型,https://blog.csdn.net/Mark_md/article/details/120576979
  • Arm Cortex-M vs ESP32: Which is More Efficient?, https://www.youtube.com/watch?v=XJawv8xGtX4
  • Tensilica最新处理器, https://www.cadence.com/zh_CN/home/company/newsroom/press-releases/pr-cn/2015/tensilica75-2015-01-12.html
  • ESP32 技术参考手册, https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_cn.pdf
  • 物联网,https://zh.wikipedia.org/zh-cn/物联网
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值