2021爱智先行者—互动树莓派

xybin1990 xybin1990 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

【本文正在参与"2021爱智先行者-征文大赛"活动】

  之前手上有一个树莓派并开发了一些有意思的小玩意儿。在看到爱智 Spirit 1 之后对这个小巧的智能边缘计算机产生了一点浓厚的兴趣,它实现了一个万物互联的平台。所以马上想到用它来连接一下树莓派,这样就可以让我的树莓派给它打工了,将爱智作为一个数据中心,处理各个地方上报上来的数据,然后再进行资源重新分配,所有的设备都可以根据自己的需求来进行工作了。

接下来用一个小应用来实现这个互动连接。

硬件展示

爱智 Spirit 1

 

树莓派3b+

 

HC-SR04 超声波模块

 

爱智 Spirit 1

CPU     : Allwinner H6 (ARMv8 Cortex-A53 1.3GHz VFPv4)
CACHE   : 64KBytes L1-Cache (D-32K/I-32K) 512KByte L2-Cache
PACKET  : Spirit1 Allwinner H6 Packet for HardWare v3.0
ROM SIZE: 0x00400000 Bytes (0x00000000 - 0x003fffff)
RAM SIZE: 0x77000000 Bytes (0x49000000 - 0xbfffffff)
BSP     : BSP version 1.5.0 for Enterprise

javascript -v

1.5.8 (0)

树莓派

Raspberry Pi 3 Model B Plus Rev 1.3

Architecture: armv7l

Byte Order: Little Endian

CPU(s): 4

On-line CPU(s) list: 0-3

Thread(s) per core: 1

Core(s) per socket: 4

Socket(s): 1

Vendor ID: ARM

Model: 4

Model name: Cortex-A53

Stepping: r0p4

CPU max MHz: 1400.0000

CPU min MHz: 600.0000

BogoMIPS: 38.40

Flags: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32

 

pigpiod -v

79

node -v

v10.24.1

npm -v

6.14.15

HC-SR04 超声波模块

工作电压:DC 5V

工作电流:15mA

工作频率:40Hz

射程:4cm~4.5m

测量角度:15°

输入触发信号:10μS 的TTL 脉冲

树莓派与 HC-SR04 超声波模块连接示意图


---------------------------|---------------------------------
                                              
3v3                                    01 02  5v                              -- Vcc
GPIO  2 (WiringPi  8)      03 04  5v
GPIO  3 (WiringPi  9)      05 06  GND
GPIO  4 (WiringPi  7)      07 08  GPIO 14 (WiringPi 15)
GND                                 09 10  GPIO 15 (WiringPi 16)
GPIO 17 (WiringPi  0)     11 12  GPIO 18 (WiringPi 1)   -- Trig
GPIO 27 (WiringPi  2)    13 14  GND                             -- Gnd
GPIO 22 (WiringPi  3)    15 16  GPIO 23 (WiringPi 4)
3v3                                  17 18  GPIO 24 (WiringPi 5)   -- Echo
GPIO 10 (WiringPi 12)    19 20  GND
GPIO 09 (WiringPi 13)    21 22  GPIO 25 (WiringPi 6)
GPIO 11 (WiringPi 14)     23 24  GPIO 8  (WiringPi 10)
GND                                 25 26  GPIO 7  (WiringPi 11)
GPIO  0 (WiringPi 30)    27 28  GPIO 1  (WiringPi 31)
GPIO  5 (WiringPi 21)    29 30  GND
GPIO  6 (WiringPi 22)    31 32  GPIO 12 (WiringPi 26)
GPIO 13 (WiringPi 23)    33 34  GND
GPIO 19 (WiringPi 24)    35 36  GPIO 16 (WiringPi 27)
GPIO 26 (WiringPi 25)    37 38  GPIO 20 (WiringPi 28)
GND                                 39 40  GPIO 21 (WiringPi 29)

---------------------------|---------------------------------

爱智 Spirit 1 与 树莓派的强强联合

应用的整个连接通过的是 CoAP 协议:

CoAP(Constrained Application Protocol,受限应用协议,RFC 7252)协议是一种运行在资源、通信带宽十分有限的物联网设备上的 M2M(Machine to Machine)通信协议。

CoAP 协议运行在 UDP 协议之上,并且设计得非常小巧,最小的数据包只有 4 个字节。CoAP 协议采用 C/S 架构,使用类似于 HTTP 协议的 请求/响应(Request/Response)的交互模式。设备可以通过类似于 coap://192.168.1.150:5683/floor/temperature 的 URL 来标识一个实体对象(资源),并使用类似于 HTTP 协议的 RESTful 风格 API 和 PUT、GET、POST、DELETE 方法来获取或者修改这个实体对象的状态。

首先我们通过 CoAP 协议在爱智 Spirit 1 和 树莓派上建立连接,爱智中已经集成了 CoAP 包,树莓派上需要安装 nodejs 的 coap 包,然后我们在爱智应用中通过client 像 树莓派上建立的 CoAP server 发送获取距离的指令。

// routers/rest.js

const coap = require('coap');

router.get('/get-distance', function(req, res) {
  // 这里填写 树莓派上 CoAP 服务地址
  var coapClient = coap.request('coap://192.168.64.89:5683/get-distance', function (client) {
    client.on('response', function (client, data) {
      console.log('>> Recv message:', data.payload.toString());
      res.json({
        code: 0,
        data: data.payload.toString()
      })
    });
  }, {method: 'GET', payload: 'get-distance'});
})

// 前端页面通过 API 请求 /get-distance 资源路径回去返回的结果,进行展示
// 前端页面见参考链接

接着我们在树莓派上创建 CoAP 的 server 端

// main.js
const coap = require('coap')
const server = coap.createServer()
const trigHCSR04 = require('./libs/hc-sr04')

const PORT = 5683
server.on('request', function (req, res) {
  console.log('>> url:', req.url.split('/'))
  console.log('>> req:', req.payload.toString())
  trigHCSR04((data) => {
    res.end(`${data}`)
  })
})

server.listen(PORT, function () {
  console.log(`>> raspi CoAP server started on port: ${PORT} <<`)
})

CoAP 服务端接收到请求然后将获取的数据返回到 爱智APP。

// hc-sr04.js
const Gpio = require('pigpio').Gpio;
// 每ms的声速
const MICROSECDONDS_PER_CM = 1e6 / 34321;
const trigNumber = 18;
const echoNumber = 24;
const trigger = new Gpio(trigNumber, { mode: Gpio.OUTPUT });
// 设置 trigger 引脚为输出引脚
const echo = new Gpio(echoNumber, { mode: Gpio.INPUT, alert: true });
// 设置 echo 引脚为输入
trigger.digitalWrite(0);
// 设置 trigger 引脚为低电平
let cb = () => {}
const watchHCSR04 = () => {
  let startTick;
  echo.on('alert', (level, tick) => {
    if (level == 1) { startTick = tick; }
    else {
      const endTick = tick;
      const diff = (endTick >> 0) - (startTick >> 0);
      // 无符号的 32位数据
      const distance = diff / 2 / MICROSECDONDS_PER_CM;
      cb(distance)
      // process.exit(0)
    }
  });
};
watchHCSR04();
function trigHCSR04 (callback) {
  cb = callback
  trigger.trigger(10, 1)
}

module.exports = trigHCSR04;

我们来看看效果:

https://gitee.com/xybin1990/connect-raspi-web/blob/master/public/results.gif

 

总结

爱智中的 JSRE 已经集成了多种通讯协议,这为我们开发带来了很多的便捷,也为我们的创意带来了更多的可能性。再搭配上各种传感器设备,发挥无边无际的想象力吧。

 

参考链接:

爱智APP项目地址

爱智APP页面项目地址

树莓派项目地址

...全文

相关推荐

学习树莓派相关书籍.rar 树莓派相关5本电子书 树莓派入门 树莓派实战 玩转树莓派

本附件包含5本树莓派相关电子书,有“爱上Raspberry Pi”李凡希译,树莓派教程,树莓派入门指南,玩转树莓派,树莓派实战指南,需要的同学可以下载。

Raker_L

树莓派在互动艺术中的应用

本文介绍南安普顿大学利用树莓派开发互动艺术装置“埃丽卡犀牛”的案例。该装置融合传感器、LED、摄像头等组件,通过分布式树莓派系统实现情感响应与公众互动,用于推广电子与计算机科学教育,并在公共展览中取得显著参与效果。

night

基于树莓派的亲子互动娱乐机器人设计.pdf

#资源达人分享计划#

结冰架构

【高分设计】基于C++实现树莓派的互动性宠物机器人源码+项目说明+演示视频.zip

【高分设计】基于C++实现树莓派的互动性宠物机器人源码+项目说明+演示视频.zip

不会仰游的河马君

基于C++实现树莓派的互动性宠物机器人源码+项目说明+演示视频.zip

实现了在树莓派控制下的基于人脸识别,语音识别,手势识别的互动机器人,能够通过语 音,手势等命令进行实时互动,并具备动作,表情互动回应。基于深度学习的互动宠物机器人 开发环境:Linux+Arduino+SolidWorks 项目简介: 实现了在树莓派控制下的基于人脸识别,语音识别,手势识别的互动机器人,能够通过语 音,手势等命令进行实时互动,并具备动作,表情互动回应。 功能实现: 整体具备三个模块的设计,最上层为数据采集系统,通过树莓派提供的摄像头进行人脸识 别和手势姿态识别,并通过语音采集模块进行语音命令的识别。在识别到交互信息后, 将通过深度学习算法将人脸信息、手势信息、语音信息进行识别认证,并通过网络协议发送到实时 监控的服务器中,并将数据统一放入消息队列中等待中间层的决策系统调用。

A爱了个I
评论
收藏 已收藏
分享
返回顶部