Raven Pi:「乌鸦派」秘密摄像机

MAKER: MisterM/译:趣无尽(转载请注明出处)

这只乌鸦不错吧?它是一台非常实用的秘密摄像机。乌鸦虽小,五脏俱全。其腹部装有树莓派卡片电脑,脖子上安装了摄像头,可在检测到运动时捕获高清视频。

同时,它的 LED 双目可以点亮发光。头部还配备了舵机,可以控制旋转角度。不仅如此,身体前方还安装了扬声器,能播放乌鸦的叫声或其他声效。

摄像机所用的软件基于 motionEye OS 系统,使用起来非常方便。你可以把这只大鸟安放在任何地方,随时准备迎接你的客人或者吓跑不速之客。

材料清单

塑料乌鸦 × 1

树莓派主板 × 1

9G 舵机 × 1

5V 音频功放 × 1

红色 LED × 2

扬声器 × 1

跳线 × 1

塑料杯 × 2

制作头部

用钢锯切掉鸟头,一定要切干净,这非常重要。因为后面需要旋转,如果切得不太光滑呢,就容易在旋转时卡住。

再用电钻钻出双目的开孔,插入 LED 并用热熔胶固定好。接下来在鸟脖子上钻一个孔,用于放置摄像头。

编程

在项目文件库中下载源程序。

https://make.quwj.com/project/342

GitHub https://github.com/MisterEmm/RavenPi

没有什么额外的东西,源码用来控制 GPIO 15 上的 LED 以及 GPIO 18 上的舵机。

随机播放 /home/pi/Music 目录中的声音文件。

眨眨眼吧

根据 motionEye OS 官方提供的安装说明来给树莓派安装好 motionEye OS。

安装完成之后就可以通过 Web 浏览器来访问 motionEye 的 WebUI 了。功能可以参考这里:

树莓派视频监控方案 motionEyeOS 装配教程

motionEye 具备运动检测功能,通过选项来配置检测到运动之后调用我们准备好的脚本 raven.py。

你只需要把脚本放到 /etc/motioneye/ 目录下,就可以通过设置检测到运动之后「Run a Command」来调用这个脚本。相当于唤起乌鸦的行为——眨眼、转头和鬼叫。

乌鸦的叫声

将 5V 音频功放和扬声器接好,功放的音频输入接树莓派的 3.5MM 接口,功放通过树莓派的 USB 口供电。

接下来我从网上找了十几种乌鸦的叫声,放在一个文件夹中,供树莓派播放。最后将扬声器声音调到最大。

制作身体

开始制作乌鸦身体了,这里主要在身体和脖子的连接处安装好舵机。

然后我在厨房找到了两个塑料杯,尺寸刚好用作脖子的地方来固定舵机。注意这里需要开好尺寸合适的孔,以便摄像头软排线可以穿过去。

组装

虽然乌鸦很大,但是要把树莓派、摄像头、扬声器等这一整套东西塞进去还是显得非常紧张。需要好好规划一下空间的使用。

你可以自己发挥,也可以参考我图片中的布局来组装。

结语

你可能会问,这个塑料乌鸦怎么来的?

这是我在一次万圣节的摆摊活动中买到的。项目中介绍的方法非常通用,只要你可以找到适合的动物形状的塑料玩具,就可以参考这篇教程,发挥创意来 DIY 自己的秘密摄像机。

via

树莓派 400 超频方法介绍

对树莓派 400 进行超频非常容易实现。散热上,树莓派 400 设计了一个面积很大的被动散热器,这很有用。无需额外的主动降温就可以应对超频的散热需求。

尽管有些用户通过配置,让树莓派 400 超频到了 2.2GHz,但我相信 2GHz 更稳一些。

超频的设置

下面介绍一下树莓派超频设置的步骤。(免责声明:对树莓派进行超频会带来一定的风险,在实施超频之前请自行了解)

1、打开终端,用下面的命令编辑 config.txt 文件

sudo nano /boot/config.txt

找到 “arm_freq” 一行,将它修改为

arm_freq=2000

如果前面有一个 # 号,请将 # 号移除。

在 “arm_freq” 这行下面添加:

over_voltage=6

最终修改成如图所示。

CTRL-X 再按 Y 并回车保存修改。

超频是通过调整 CPU/GPU 的电压来实现的。完整的设置说明请参考文档:

https://github.com/raspberrypi/documentation/blob/master/configuration/config-txt/overclocking.md

重启树莓派使设置生效。

sudo reboot

接下来你的树莓派 400 CPU 将能在 2GHz 下运行。但是请注意,这个频率是动态调整的。当计算负荷增加时,频率也会增加,最高为 2GHz。

监控频率

显然你可能希望确认当前的运行频率,那么可以用下面的命令来检查。

vcgencmd measure_clock arm

还可以通过下面的命令每两秒钟自动检查一次运行频率。

watch -n 2 vcgencmd measure_clock arm

CTRL-C 可退出监控。

温度监控

建议观察 CPU 的温度,如果温度超过 80 摄氏度,系统会自动限频运行。因此需要确保 CPU 温度不会因为超频而超出这个水平。

使用下面的命令可以检查 CPU 当前的温度。

vcgencmd measure_temp # 每 2 秒检查一次 watch -n 2 vcgencmd measure_temp

禁用超频

在树莓派启动时按住 SHIFT 键可以重置为默认配置。要删除超频的设置的话,只要在上面的 config.txt 中把 “over_voltage” 和 “arm_freq” 两行删除即可。

超频可能会导致你的树莓派失去保修,请在操作之前深思熟虑哦!

最后附上 jeffgeerling.com 所给出的超频到 2.2GHz 之后树莓派的温度和性能数据,仅供参考。

虹科工业树莓派:基于Node-RED的工业物联网改造

1. 工业树莓派与Node-RED简介

1.1 工业树莓派

虹科工业树莓派RevolutionPi是一种DIN导轨安装的小型工控机和智能网关。RevolutionPi(简称RevPi)具有一整套IO和总线模块,可以与所有常见的模拟和数字传感器、执行器和总线系统以及基于TCP-IP的网络进行通信。RevPi运行Linux操作系统,这使得它成为一个功能多样的多功能解决方案。

与经典的可编程逻辑控制器(PLC)相比,软PLC没有一个用于进行编程的预定义软件。Revolution Pi可以用几乎所有语言进行编程:高级语言(例如C,C#,Java,PHP,Python),经典的自动化解决方案(例如Codesys)或图形工具(例如NodeRed)。这就是巨大的潜力所在:您几乎可以在RevPi上运行任何东西。

1.2 Node-RED

Node-RED是构建物联网(IoT)应用程序的强大工具,它使用可视化的编程方法,允许开发人员将预定义的代码块(称为“节点”)连接在一起以执行任务。当连接在一起时,通常由输入节点,处理节点和输出节点组成的连接节点构成一个“流”。RevPi Core模块已经内置Node-RED运行环境,本文将详细介绍Node-RED基本概念与编程逻辑,以及可能的应用方案。

2. Node-RED基本概念

与常见的编程语言比如C,Java,Python不同,Node-RED是一种可视化编程工具,可以快速实现代码块的复用,简单快捷地构建您的IIOT程序。它最重要的几个基本概念是节点、消息结构和“流”。

2.1 节点

节点是指封装好的代码块,通常分为输入节点、处理节点和输出节点三种。

输入节点可以产生消息,并将信息传送给下一个节点。这类节点最重要的特征是只有输出端,没有输入端。

处理节点可以接受来自上一个节点的消息,并对收到的信息进行处理,然后将处理后的信息输出到下一个节点。这类节点通常同时具有输入端和输出段。

输出节点消耗消息,通常只有输入端,可以接收来自其它节点的消息并执行相应操作。通常此类节点具有输出功能,即通过各种协议或方式将Node-RED流中的消息输出。

2.2 消息结构

各节点之间通过称为msg的JavaScript对象传输消息,其典型结构为:

其中最重要的是payload,它是指一条消息的有效负载,一般常见的节点都会涉及到payload内容的操作。其它的都是可选项,可以根据需要自行决定。

2.3 “流”

Node-RED是一种可视化编程工具,可以在可视化面板上将输入节点、处理节点以及输出节点以一定的顺序连接起来,消息在各节点之间流动,这就形成了一个“流”。用户可以通过“流”实现各种功能,对于一些比较复杂的流程也可以将其包装成一个“子流”,简化程序结构。

3. Node-RED应用方案

刚刚简单介绍了Node-RED的基本概念,简单来说Node-RED就是连接不同功能的代码块以实现需要的功能。而Node-RED被称为构建工业物联网的强大工具,能够实现哪些功能呢?下面我举几个简单的例子,可供参考。

3.1 简单的逻辑控制

虹科RevPi针对Node-RED制作了专属节点,可以通过RevPi的Node-RED节点直接控制附属的IO模块或者网关模块。所以可以通过Node-RED建立逻辑关系,从而实现小型控制的功能。比如您可以控制电机的启停、继电器的开闭等等。

Node-RED具有各种各样包装好的节点,可以直接使用。如果没有满足需求功能的节点也可以通过function节点编写自己的功能节点,使用的语言是JavaScript。

3.2 边缘智能网关与数据上云

Node-RED支持很多种传输协议,如串口、TCP、MQTT、HTTP、Modbus、OPC UA、S7等。可以借助于这些节点,采集连接到树莓派的传感器或者PLC等设备的数据并对数据进行处理,然后通过其它协议发送出去,从而可以对接您的SCADA系统或者进行串口虚拟化,协议转换等。工业树莓派可以扩展常见工业以太网和现场总线的网关模块,您可以利用这些模块接入到OT网络中,获取数据之后,再通过Node-RED进行协议转换或数据上云等。

当然不是所有的节点都是预装好的,比如Modbus或者OPC UA功能的节点,您需要在节点管理面板中搜索安装。

Node-RED作为一个开源平台,拥有强大的开发者社区论坛,您可以在其中找到各种功能节点。

3.3 HMI仪表盘

Node-RED还具有一些Dashboard节点,您可以借助它建立您自己的HMI界面。Dashboard节点可以自动生成一个基于web的界面,这样您不仅可以在本地查看设备运行状态,也可以进行远程监控。如果您想要升级工厂,使得产线设备运行状态更加直观,Node-RED是一个很好的选择。

上图是一个简单的示例,不是很精致,只是简单展现一些基本功能。您可以根据实际需要建立自己的仪表盘界面。

4. 总结

通过Node-RED可视化编程工具可以大大减少您的开发工作量。通过其它程序大量代码实现的工作,在这里只需要几个节点就可以配置完成。如果您需要进行小型控制、采集设备或者传感器数据、边缘计算、协议转换、数据上云、建立HMI界面、远程数据监控等等,Node-RED都大有用武之地。关于Node-RED的具体应用示例,可以参考以前的文章。

基于树莓派和 ArozOS 的口袋云服务器

MAKER: tobychui/译:趣无尽(转载请注明出处)

作为开发者,我一直希望制作一个能装进口袋的东西,来为我的设备提供离网存储解决方案。

而通常大家所选择的便携式的 SSD 并不能很好地满足这一需求,因为你还需要数据线、笔记本电脑、手机或其他设备的电源适配器。显然不是一个口袋装得下的,至少也需要一个小腰包吧。

另一方面,我在构建自己的云存储方案,一种为 NAS 设计的操作系统。

那么为什么不将这两个需求合并一下,组合成一个超级便携的「云服务器」呢?

这正是我开始下面这个项目的背景,这个设备内置了电池,并带有 WiFi AP 和数据存储池。

材料清单

树莓派 Zero W × 1

尺寸合适的锂电池 × 1

便宜的 18650 移动电源(用来拆零件用) × 1

RT3070 USB 无线网卡 × 1

FE1.1S USB Hub 模块 × 1

组装部件

参考下面的组装演示视频进行组装。

部件的连接图如下。如果你不需要使用 AP 模式,那就不用安装 RT3070 无线网卡。

最终组装成下面的样子。

电源的设计使用 2 x 1200mAh 的锂电池,它在高负载下可以工作大约 45 分钟到 1 小时。

3D 打印外壳

在项目文件库中下载打印文件:

https://make.quwj.com/project/345

外壳由两部分构成,顶面和底面。用 M3X10 的螺钉固定在一起。

现在可以将装好的模块放入外壳了!

下面开始介绍软件部分。

NAS 软件的选择

在大多数 NAS DIY 项目中,通常选择 Open Media Vault (OMV) 或者 FreeNAs 来「标配」树莓派实现 NAS 功能。下面我重点介绍一下我自己做的 NAS 系统——ArozOS!

GitHub: https://github.com/tobychui/arozos

我自己造这个 NAS 系统的轮子,主要是因为其他开源系统是用 PHP 写的,在树莓派上运行效率一般。而 ArozOS 采用 Golang 开发,可以榨干树莓派的处理能力。

从 GitHub 仓库中下载最新的镜像文件,用 7zip 解压出 img 文件之后再用 Win32 DiskImager 写入 microSD 卡。在根目录添加一个名为 ssh 的目录。

启动树莓派,使用 Putty 登录树莓派,默认用户名 pi 密码 raspberry。

使用 sudo raspi-config 命令扩展磁盘分区。然后重启树莓派。

下面的视频展示了 ArozOS 系统 Web 桌面模式的实际运行效果。

在口袋云服务器上创建第一个帐号

服务器启动之后,在电脑的网络邻居里会弹出新设备。

双击图标,根据提示创建新账号。

用所创建的帐号即可登录到 Web 桌面。

这个 NAS 系统我将一直更新和改进,你不妨在 GitHub 上关注一下这个项目:

https://github.com/tobychui/arozos

最后附上完整的接线图。

锂电池并联接线示意图。

via

编译树莓派 4B Linux 5.9 内核

来自 九年吃菜粥 的发帖。

文中的操作是在 x86 docker 的 Ubuntu 容器中进行操作,因为子系统编译时好像 CPU 吃不满。

文中命令全部用 root 用户执行。

1、首先下载树莓派的内核

GitHub 地址:https://github.com/raspberrypi/linux

可以直接使用 git clone –depth=1 –branch rpi-5.9.y https://github.com/raspberrypi/linux 来下载 5.9 版本的内核

个人建议从 github 直接下载 zip 包

2、然后下载交叉编译工具(x86_64 编译 arm64)

下载链接:https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

gcc-7.5.0-2019.12-x86_64_aarch64

截至2020年10月13日,该交叉编译工具为最新版本。

3、安装依赖项

apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev

4、解压操作

unzip linux-rpi-5.9.y.zip ~/linux-rpi-5.9 tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz mv ./gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu ~/gcc-linaro

5、把交叉编译工具添加到环境变量

首先 nvim ~/.bashrc

在 .bashrc 后面加上: export PATH=$PATH:~/gcc-linaro/bin

然后执行 source ~/.bashrc 刷新环境变量

6、进行编译前的处理

首先进入内核目录

如果你要用默认配置进行编译,执行 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig

如果你要自定义某些配置,执行 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711 后,再执行 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig ,会弹出内核配置窗口进行配置

7、启动编译过程

make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

整个编译时间可能会比较长,根据编译机器的硬件处理器数量来制定同时使用多少线程编译(-j{‌‌n},这里同时使用8个线程)。

8、生成编译后的文件

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=../ modules_install

这会在路径下生成一个lib文件夹,将该文件夹拷贝到树莓派上

9、在树莓派上执行内核替换

首先切换目录:lib/modules/5.9.0-v8/source/arch/arm64/boot

执行以下命令:

cp Image /boot/kernel8.img cp dts/broadcom/*.dtb /boot/ cp dts/overlays/*.dtb* /boot/overlays/ cp dts/overlays/README /boot/overlays/

10、生成内核模块

在执行这一步之前你可能需要安装kmod依赖项

执行: make ARCH=arm64 modules_install

如果你是在交叉编译的机上直接进行安装,则要执行: make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=rootDirect modules_install

修改配置文件(可选)

树莓派默认是用32位内核启动,需要修改 boot 分区下的 config.txt 文件

arm_64bit=1 kernel=kernel8.img

11、重启

reboot

12、确认

基于 MCC DAQ HATs 的数据采集机器人

MCC HATs 简介

树莓派的强大功能和多样的能力已经广泛应用于整个工业中,其中Measurement Computing已经将树莓派集成到我们的 WebDAQ 系列 数据记录器中。基于树莓派3和数据采集设备,MCC已研发出高性能 WebDAQ 504 声学 /振动记录仪。该设备可获取并记录 24 位数据,具备4路通道,且每通道均可进行 FFT 数学分析,同时将数据显示在Web服务器的 UI界面上。树莓派在高性能处理器,专业工程应用中的成功,证明了它一直处于工业设计中OEM首选的地位。

Measurement Computing提供了四种针对测试和测量应用的产品,这些产品符合树莓派HAT标准。这些设备小巧,可堆叠,同时保持了MCC数据采集产品这30多年来一如既往的品质。

MCC 118 允许用户以100 KS/s的总吞吐量测量共计8路单端信号数据。同时可以在单个树莓派上堆叠8个 HAT,以创建一个64通道设备,最高以320KS/s的采样 组合速率读取数据。

MCC 134 提供4路24位热电偶输入,可测量多种最受欢迎的热电偶类型,包括J,K,R,S,T,N,E以及B型。每种通道类型都可以基于自身来选择。

MCC 152 提供2路12位模拟信号输出通道以及8路5V或 3.3V DIO通道,可以创建完整的多功能树莓派测量和控制系统。

MCC 172 专为基于树莓派的振动,声音和声学应用而设计。 它提供两路24位模拟输入,采样率高达51.2kS /s/ch,用于测量IEPE传感器,如加速度计和麦克风。

采集机器人的介绍

采集机器人可以用来进行机器人科研研究,通过基于树莓派的数据采集模块可让普通机器人拥有感知和交互功能。采集机器人在工业领域可以在不同由工作人员操作的场景进行测试测量和控制操作。

在科研领域,采集机器人可以用来验证基于复杂传感器的采集,处理以及分析算法。是低成本测试和验证方案。

采集机器人硬件架构:

这款机器人搭载了两块树莓派,分别用于小车的控制和环境数据的采集。

车身搭载了 MCC 118 和 MCC 134 两款数据采集卡,可以用来完成电压测量和热电偶测量。

车顶的显示屏用于显示现场环境的实时数据。

使用和展示

首先让电脑、控制平板、小车上的两台树莓派,四者接入同一局域网并确认互相可以通信。

给小车自带的树莓派1 接显示器,获取一下它在局域网内的 IP 地址。

打开电脑使用 VMware 虚拟机软件启动 Ubuntu 。

机器人使用了 RikirobotROS 平台,首先需要先自行构建好地图。

修改系统配置中 RikiRobot 的 IP 和 Riki_control_host 的 IP。

再通过 SSH 登录到树莓派。

ssh rikirobot@192.168.1.xxx roslaunch rikirobot bringup.launch

另外再打开一个终端,运行下面的命令启动主控。

roslaunch rikirobot navigate.launch

打开第三个终端,启动 ROS。

rosrun rviz rviz

在菜单 File 下点击 Open Config,找到 ~/catkin_ws/src/rikirobot_project/rikirobot/rviz/navigate.rviz 文件。选择打开,载入之前已经构建好的地图。

到这里,就可以在平板和电脑上查看机器人周围的地图信息。

配置好树莓派上的数据采集脚本 /var/www/html/pi-dashboard-daq/config.php 中的 IP 地址为树莓派的 IP 地址。

然后就可以通过平板的浏览器登录树莓派(也就是机器人)的 IP 地址。

http://树莓派IP地址:11311

采集到的数据可以通过 Web 实时查看到。

http://树莓派IP地址/pi-dashboard-daq

联系 MCC

Measurement Computing 公司的技术支持工程师(TSE)凭借在硬件和软件方面的专业知识与丰富经验, 不仅为客户选取最合适的数据采集产品,同时帮助客户快速搭建数据采集系统,最终完成数据采集任务。

TSE 团队将在工作日的上午9:00至下午6:00接听您的来电 (021-50509819)

email: sales.china@mccdaq.com

数据采集专家MCC

树莓派 CM4 开售,32 个型号,25 美元起

树莓派基金会今天发布了树莓派计算模块 4 代「Raspberry Pi Compute Module 4」。共有 32 个具体型号,售价从 25 美元起。最低配置 1GB RAM/Lite/无无线版本,25 美元;最高配置 8GB RAM/32GB Flash/无线增强版,90 美元。对应着 4 种不同的内存、4 种闪存容量和是否有无线通讯功能。

购买地址:

http://link.nxez.com/buy/raspberry-pi-cm4

计算模块核心

CM4 核心模块配置如下:

博通 BCM2711 SoC 1.5GHz 4 核心 64-bit ARM Cortex-A72 CPU

VideoCore VI 图形,支持 OpenGL ES 3.x

H.265 (HEVC) 4Kp60 视频硬解码

H.264 (AVC) 视频 1080p60 硬解码和 1080p30 硬编码

双 HDMI 接口分辨率高达 4K

单通道 PCI Express 2.0 接口

双 MIPI DSI 显示器和双 MIPI CSI-2 摄像头接口

1GB, 2GB, 4GB 或 8GB LPDDR4-3200 SDRAM

可选 8GB, 16GB 或 32GB eMMC Flash 存储

可选 2.4GHz 和 5GHz IEEE 802.11b/g/n/ac 无线网卡和蓝牙 5.0

支持 IEEE 1588 的千兆以太网 PHY

28 个 GPIO 引脚,6 个 UART、6 个 I2C 和 5 个 SPI

CM4 采用了全新的尺寸,更加紧凑。

详细的价格如图。

计算模块 IO 板

为配合计算模块核心使用,官方推出了一款新的 IO 板。配置如下:

两个全尺寸 HDMI 接口

千兆以太网接口

两个 USB 2.0 接口

MicroSD 卡插槽(仅 Lite 有用到)

PCI Express Gen 2 x1 插槽

带有 40 针脚的 GPIO 接口

12V 输入接口(如果不使用 PCIe,可支持最高 26V)

摄像头和显示器 FPC 接口

实时时钟

IO 板的官方定价为 35 美元。

这是迄今为止性能最强的树莓派计算模块,性能远超之前的树莓派 CM3+。基金会表示去年销售的 700 万个树莓派产品中,有超过一半的产品被用于工业和商业应用。我们会对这款树莓派 CM4 以及随后可能推出的各类功能底板保持关注,如果你的工业项目可能会使用到树莓派,请关注我们后续的相关内容。

工业树莓派访问过程映像数据的三种方式

RevolutionPi是一款基于树莓派计算模块进行工业级设计和封装的工业树莓派。RevPi的操作系统在Raspbian基础上进行了优化,给linux内核添加了RT实时补丁,以使得linux满足硬实时的需求。用户可以通过python等高级语言编写程序,并且可以通过存储器中的过程映像便捷的写入或者读取所有当前过程值。本文将介绍从过程映像中访问数据的三种方法:直接从文件中读取、ioctl以及revpimodio2模块。(以下示例均采用python代码)

1 设备配置

为了演示如何从过程映像中读取过程值,本文采用RevPi内置的虚拟Modbus TCP Master读取电脑模拟的Modbus TCP Slave的一个保持寄存器的值,并将其放入变量Input_Word_1中。其中变量Input_Word_1的值被放入过程映像中,下面将采用三种方法读取它的值。在此之前,首先使用piTest命令,查看Input_Word_1的当前值。

图0.1 Modbus TCP Slave寄存器配置

图0.2 Input_Word_1的值

0. 直接从文件中读取

直接从文件中读取数据,简单来说就是通过变量的参数offset和length,在过程映像文件中查找变量所在位置并读取,然后对读取到的数据进行解包即可。

图1.1 从文件中直接读取数据程序示例

图1.2 数据读取程序运行结果

当然,也可以直接对文件进行修改,为变量赋值。可以在RevPi的Modbus TCP Master中配置另一个任务,将Output_Word_1的值写入电脑模拟的Modbus TCP Slave寄存器中。下图展示了,如何通过python程序为Output_Word_1赋值。

图1.3 通过修改文件为变量赋值程序示例

图1.4 写入数据程序运行结果

通过这种方式读取和写入数据,过程不是很复杂,但问题在于需要提前知道变量的offset和length,这对于编程开发人员来说很不友好。我们希望的是直接通过变量名,而不需要知道变量的存储位置及长度,就可以对变量进行操作,下面一个方法将弥补这个缺点。

2 ioctl

在计算机中,ioctl(input/output control)是一个专用于设备输入输出操作的系统调用,该调用传入一个跟设备有关的请求码,系统调用的功能完全取决于请求码。RevPi的系统中已经预定义好了一些ioctl功能,我们可以通过调用这些功能,获取变量的offset、length等信息,并读取数据。

图2.1 ioctl功能定义

图2.2 ioctl读取数据示例程序

图2.3 ioctl读取数据程序运行结果

图2.4 ioctl为变量赋值程序示例

图2.5 ioctl为变量赋值程序运行结果

实际上ioctl功能15和16主要用于长度为1bit的变量的读写,如果将其用于2byte的变量的读写,程序比较繁杂,且可能会带来其它问题。示例程序采用ioctl功能15和16读写变量数据仅仅是为了展示其功能,在实际使用时,通过ioctl功能17得到变量的offset之后,用f.seek()和f.read()以及f.write()实际上更方便。

图2.6 ioctl访问2byte数据示例程序

图2.7 ioctl访问2byte数据示例程序运行结果

虽然采用第二种方法,我们不再需要提前记住变量的offset,但这种程序比较繁杂,只是为了读取或者修改一个变量就需要很多代码。在实际开发中,这也会给开发人员带来很多困扰,那有没有一种更简单地方式让我们能够轻松便捷的控制变量呢?很幸运,确实有这样的方法,就是下面要介绍的第三种方法revpimodio2模块。

3 revpimodio2 模块

如前所述,如果要使用Python3编写程序,则可以使用FileHandler打开过程映像并读取/写入模块中的数据。但是,变量名称在那里不可用,必须在文件中搜索IO的各个位…计算…读取…写入…。这给开发人员带来很大的困扰,但这正是python3-revpimodio2发挥作用的地方!通过这个模块,可以为所有Python开发人员节省很多工作。与过程映像的所有通信均在模块内部执行。不仅如此,python3-revpimodio2还为开发者提供了一些其它功能,了解详细信息可以访问:https://revpimodio.org/en/homepage/。在这里,本文仅仅展示如何借助revpimodio2模块读取或写入变量。

图3.1 revpimodio2示例程序

图3.2 revpimodio2示例程序运行结果

可以看到,通过使用revpimodio2模块,我们可以很简单地读取和写入变量的值,所有与过程映像相关的操作都自动完成。需要注意的是对于Core模块,revpimodio2默认的io数据同步频率是25Hz,所以在向io变量写入数值之后,至少保证40ms内不退出程序运行,否则可能会导致写入失败,当然此循环时间可以自行更改。

4 总结

本文总结了三种访问过程映像的方法,对于大多数开发者来说,第三种方法已经足够了,而且操作相对其它两种方法来说十分便捷。本文介绍前两种方法的目的是让你能够更加深刻地理解RevPi中的过程映像的数据访问机制。当然,第三种方法也并非毫无缺点,相对来说调用revpimodio2模块进行数据访问的效率比起其它两种办法来说较低,开发者可根据自身项目的要求选择合适的方法。另外,关于revpimodio2的其它功能,本文在此不再深入介绍,作者将在另一篇文章中进行详细介绍,有兴趣的也可以访问revpimodio2官网深入了解。

树莓派 + OpenWrt 做 BT 下载机

来自 Archer 的投稿。

诸君好久不见,我是 Archer,最近我手上有了些低价格板子,也在闲鱼上进了个树莓派1代,在手上闲置着,就想刷 OpenWrt 来做高性能软路由使用,可惜性能不够,在 OpenWrt 之下,仅 56Mbps 数据转发量就能让 CPU 占用上升至 100%,当主路由不行当下载机行不行呢?怀着这样的想法,我花了一天的时间,把 OpenWrt 的树莓派1做成BT下载器,毕竟,OpenWrt 系统体积小,资源消耗也比 Raspbian 低太多,这次就分享一下我的配置方法,希望大家能用上。

首先把一台树莓派1代刷上 OpenWrt,不知道怎么刷 OpenWrt 的,请看我往期的教程。

系统版本我选择最新的 OpenWrt 19.07.3,然后刷上系统之后,这次不需要手动扩充 SD 卡,可以自己扩展的。

首先电脑网口跟树莓派的网口用一根网线连起来,浏览器网址栏输入192.168.1.1,访问树莓派,用户 root,默认密码 admin,输入之后,去系统——管理权中修改密码,然后去网络——接口中配置正确可联网的IP地址和网关,最后把它接上网络,就可以安装相关软件包了。

(网络设置相关:例如我自己的内网主路由器是192.168.1.1,树莓派则应该设置为192.168.1.100等任意不与现时网络设备不冲突的IP地址,网关为192.168.1.1,广播设置为192.168.1.255,DNS设置为180.76.76.76,其中一项不正确会使树莓派无法联网)

然后转PUTTY命令行操作。

首先更新软件列表

opkg update

然后安装USB磁盘驱动软件

opkg install kmod-usb-core kmod-usb-ohci kmod-usb-uhci kmod-usb2 kmod-ledtrig-usbdev usbutils kmod-usb-storage kmod-fs-ext4 mount mount-utils e2fsprogs

安装完毕之后,关闭电源,接上储存设备(硬盘则需要外置电源的USB分线器或者移动硬盘自身有外置供电),然后通电开机。

开机之后Putty继续链接,

用以下指令查找刚接上的磁盘

ls /dev/sd*

如果回显 /dev/sda 等,则成功,如果要格式化硬盘,则用以下指令

mkfs.ext4 /dev/sda

即可

在主目录下创建自己的下载文件夹,例如我创了/root/data,那么用指令或者网页绑定

指令绑定为

mount -t ext4 /dev/sda /root/data

网页绑定去到 系统——挂载点,按下图设置

然后安装BT软件所需软件包

opkg update opkg install transmission-cli-mbedtls transmission-daemon-mbedtls transmission-daemon-openssl luci-app-transmission luci-i18n-transmission-zh-cn transmission-remote-openssl transmission-web-control transmission-web

其中 transmission-remote-openssl 是用transmission-remote-gui这个软件遥控的必选包,transmission-web-control transmission-web 则是网页操作的必选包,各位可以根据条件自行选择,据测试,遥控对服务端的负担最低。

然后重启一下树莓派,等 transmission 服务加载成功。

重启完毕之后,在网页端设置一下 transmission,去服务——Transmission 处,按照以下图设置 transmission 的各项参数。

用户权限改为 root,下载路径改为 /root/data

最后Putty命令行设置一下下载文件夹权限即可

chgrp transmission /root/data chmod 770 /root/data

这样大多数情况下即可正常下载不出错。

网页操作在浏览器地址栏输入 192.168.1.100:9091 即可访问,账号是 root,密码就是你自己改的。

遥控端操作可以去下载 transmission-remote-gui 这个软件,或者用 UWP 应用的 Transmission Client,都可以进行操作下载。

好吧,教程到此结束,希望天下的树莓派1代不要再吃灰,我去下载片子了,三上老师我来啦。

树莓派上使用光照强度检测(BH1750)传感器

BH1750FVI 是一款 IIC 接口的数字型光强度传感器集成电路。下面介绍一下其在树莓派下的用法。

一、前期准备

1、环境要求

GY30模块(BH1750FVI传感器)

树莓派 Raspbian 系统

python-smbus

IIC 开启

启动 IIC 驱动的方法:

运行 sudo raspi-config 进入 Interfacing Options 高级设置,将 SPI 与 I2C 设置为 Enable 后重启系统。

2、安装 python-smbus

这个安装会附带安装 i2c-tools,省的单独安装了

sudo apt-get install python-smbus

3、将 BH1750 连接到树莓派

二、连接测试

sudo i2cdetect -y 1

三、光照强度测量

1、创建代码文件 bh1750.c

#include #include #include #include #define I2C_ADDR 0x23 int main(void) { int fd; char buf[3]; char val,value; float flight; fd=open(“/dev/i2c-1”,O_RDWR); if(fd<0) { printf("打开文件错误:%s\r ",strerror(errno)); return 1; } if(ioctl( fd,I2C_SLAVE,I2C_ADDR)<0 ) { printf("ioctl 错误 : %s\r ",strerror(errno));return 1; } val=0x01; if(write(fd,&val,1)<0) { printf("上电失败\r "); } val=0x11; if(write(fd,&val,1)<0) { printf("开启高分辨率模式2\r "); } usleep(200000); if(read(fd,&buf,3)){ flight=(buf[0]*256+buf[1])*0.5/1.2; printf("光照度: %6.2flx\r ",flight); } else{ printf("读取错误\r "); } } 编译、运行: sudo gcc -o bh1750 bh1750.c sudo ./bh1750

再推荐一个备份树莓派系统的脚本

来自 九年吃菜粥 的投稿。

在我们使用树莓派进行学习或者搭建实验环境时经常会把系统玩坏,辛苦配置的开发环境又得重新配置;或者更新某一软件后发现新版本和某些组件不兼容,又无法降级。这个时候我们会想将系统在稳定时进行备份,在系统出现问题后可以很方便的进行恢复。

1、使用 Win32DiskImager 进行备份(Read操作)

这个方法是网上很多教程中写的方法,这个方法的缺点是:只能进行全卡备份,像我使用的内存卡容量是 128G,安装好系统和一些组件后虽然只占用10G左右的空间,用这个方法进行备份的镜像大小将是 128G(虽然我只使用了其中的 10G 的空间),网上很多文章说可以用PiShrink脚本进行压缩裁剪,但我测试后很多系统会裁剪失败,原因是该脚本不支持部分系统的镜像,我自己用 Ubuntu server 和 Manjaro-arm 进行测试都是这个问题,如果你用 16G 以下的小容量 tf 卡,直接用这种方法就行。

2、站内的老备份教程

该方法主要是将系统备份到另一张 tf 卡,如果我们只有一张卡,并且备份只是用于归档,用这个方法就比较鸡肋了。

3、使用 rpi-backup 脚本进行备份

这是我寻求备份方案以来找到的最好的树莓派系统备份解决方案,解决了备份文件体积大,恢复也方便,这个脚本备份文件的体积为 已用空间×1.2,我的系统占用了不到 10G 的空间,备份文件大概是 11G 多一些,这相比于全盘备份的 128G 已经小太多了,在使用7z进行极限压缩后甚至只有 1.7G,进行日常归档备份完全可以接受。

该脚本进行系统恢复时也很方便,将 img 文件像安装系统一样刷入 tf卡 后对分区进行简单拓展后即可。接下来就来演示怎么使用该脚本进行备份。

备份演示

首先 clone 该脚本:

git clone https://github.com/nanhantianyi/rpi-backup.git && cd rpi-backup

然后要安装依赖项,这里我用的是 Manjaro-arm 系统。在 Manjaro 系统中该脚本无法自动安装依赖项,需要运行这行命令 sudo pacman -Sy && pacman -S dosfstools parted multipath-tools rsync 来安装依赖。

如果你是用 apt 进行安装软件的系统,可以跳过这一步,该脚本会自动安装依赖项。

然后运行

sudo ./back.sh youImageName.img

该脚本就会开始备份,如果不指定文件名则会自动命名。

如果你的内存卡剩余空间不够的话就挂载 U 盘,将 img 直接保存在 U 盘中,要注意U盘务必挂载到 /media 目录下,不要挂载到 /mnt,因为脚本会对 /mnt 目录进行备份操作,会导致递归性的备份,总之就是不要挂载到 /mnt 目录,切记!

脚本运行结束后就得到了备份镜像。

备份的恢复

备份镜像恢复可以直接用烧录软件直接烧录,这里我使用的是 Etcher,我也推荐大家使用这个软件,站内有这个软件的文章:使用 Etcher 给 SD 卡安装树莓派系统,界面简洁明了,选择镜像,选择要刷入的磁盘,Flash!

在烧录完毕后不要着急,我们还要一项操作没有做,打开 DiskGenius 后查看 tf 卡的分区可以看到有一部分空闲分区没有被分配。

这会导致进入系统后可用空间变少,在这里我直接用 DiskGenius 将空闲分区分配给 root 分区,这样不用在进入系统后做其他操作。

也可以进入系统后执行 git clone 来的 resize.sh 脚本进行扩容操作:sudo resize.sh,脚本运行完毕后会自动重启,两个步骤效果一样(但在部分系统会无法运行,还是推荐用 DiskGenius 弄好再开机)。

最后也不要忘了给该项目点一个 Star。

树莓派 400 发布:70 美元的桌面电脑

继前不久刚刚发布 树莓派 CM4 之后,树莓派基金会刚刚推出了一款桌面电脑,被命名为「树莓派 400(Raspberry Pi 400)」。一直以来,树莓派都向着「为世界各地的人们提供价格合理的高性能可编程计算机」这一使命在打造自己的产品。

树莓派 400

树莓派 400 这款一体机官方定价为 70 美元。本质上是一台集成了键盘、更快、更酷的 4GB 内存的 树莓派4 一体机。

打造这样一款产品,树莓派创造者们的初衷显然是想让自家的产品更加平易近人。树莓派的产品一直以来都因为价格亲民而受到欢迎;但另一方面,对于新手来说易于上手可能显得更重要。比起所有前辈,树莓派 400 看起来更像是一个消费级产品,而不再仅仅是 DIY 项目的起点。

「把它放在圣诞树下当礼物没有什么违和感,如果你 9 点钟打开这件礼物,10 点钟就可以连上电视,拥有自己的电脑,」Eben Upton 说道。

树莓派 400 的外形让人想起了早期的家用计算机,如 BBC Micro 和 ZX Spectrum,新产品显然吸取了前辈们的经验。尽管树莓派已经被人们用来打造各种客户端、智能家居、自动化系统,但帮助人们学代码才是它的原本用途。

树莓派 400 和去年 6 月发布的树莓派 4 架构相近。不过它有一片速度更快的四核 1.8GHz ARM Cortex-A72 CPU(树莓派 4 是 1.5GHz),4GB 的内存,千兆以太网,蓝牙 5.0 以及 802.11ac WiFi。在接口配置上,有两个 micro HDMI 接口,每个都可以输出 4K/60Hz,两个 USB 3.0 接口,一个 USB 2.0 接口。

树莓派 400 的电源是通过 USB-C 口输入的,另有 microSD 卡槽用作存储,还有一个 GPIO 头可接通各种硬核设备。

前方预览图:

结构透视图:

另外,还提供了包含鼠标、电源、SD卡和 microHDMI 视频线的套件,定价为 100 美元。

当年小霸王伪装成电脑大获成功,如今树莓派电脑伪装成小霸王会不会大获成功呢?让我们拭目以待。——趣无尽公众号

产品预览视频:

树莓派上用 fswebcam + USB 摄像头拍摄

在实践过程中,树莓派对 USB 摄像头的支持不如 CSI 摄像头完美。偶尔会出现无法使用 USB 摄像头的情况,自带的摄像头操作命令 raspistill、raspivid 也无法使用。

而 fswebcam 这是一款小型摄像头程序(官网),则可以很好地支持 USB 摄像头。使用方法也很简便。

安装 fswebcam

安装 fswebcam,用于访问摄像头、进行拍照。

sudo apt-get install fswebcam

fswebcam 的用法

fswebcam –help Usage: fswebcam [] [[] … ] Options: -?, –help Display this help page and exit. -c, –config Load configuration from file. -q, –quiet Hides all messages except for errors. -v, –verbose Displays extra messages while capturing –version Displays the version and exits. -l, –loop Run in loop mode. -b, –background Run in the background. -o, –output Output the log to a file. -d, –device Sets the source to use. -i, –input Selects the input to use. -t, –tuner Selects the tuner to use. -f, –frequency Selects the frequency use. -p, –palette Selects the palette format to use. -D, –delay Sets the pre-capture delay time. (seconds) -r, –resolution Sets the capture resolution. –fps Sets the capture frame rate. -F, –frames Sets the number of frames to capture. -S, –skip Sets the number of frames to skip. –dumpframe Dump a raw frame to file. -s, –set = Sets a control value. –revert Restores original captured image. –flip Flips the image. (h, v) –crop [,] Crop a part of the image. –scale Scales the image. –rotate Rotates the image in right angles. –deinterlace Reduces interlace artifacts. –invert Inverts the images colours. –greyscale Removes colour from the image. –swapchannels Swap channels c1 and c2. –no-banner Hides the banner. –top-banner Puts the banner at the top. –bottom-banner Puts the banner at the bottom. (Default) –banner-colour Sets the banner colour. (#AARRGGBB) –line-colour Sets the banner line colour. –text-colour Sets the text colour. –font <[name][:size]> Sets the font and/or size. –no-shadow Disables the text shadow. –shadow Enables the text shadow. –title Sets the main title. (top left) –no-title Clears the main title. –subtitle Sets the sub-title. (bottom left) –no-subtitle Clears the sub-title. –timestamp Sets the timestamp format. (top right) –no-timestamp Clears the timestamp. –gmt Use GMT instead of local timezone. –info Sets the info text. (bottom right) –no-info Clears the info text. –underlay Sets the underlay image. –no-underlay Clears the underlay. –overlay Sets the overlay image. –no-overlay Clears the overlay. –jpeg Outputs a JPEG image. (-1, 0 – 95) –png Outputs a PNG image. (-1, 0 – 10) –save Save image to file. –exec Execute a command and wait for it to complete.

使用 fswebcam

命令行下查看 /dev/下有video0 的设备。

运行 lsusb 命令,有相关摄像头的信息。

在终端中运行下面的命令来抓去一张来自摄像头的照片。

fswebcam –no-banner -r 640×480 image.jpg

或者你可以直接用:

fswebcam image.jpg

可以直接拍照,-d 用于指定使用哪个摄像头设备。-r 指定图片的分辨率,最后的是照片保存的路径。

如果拍摄出来的照片是一片漆黑,可能和摄像头启动延迟有关,可以通过加 -S 参数来跳过前面几帧解决。例如使用命令:

fswebcam -S 10 image.jpg

树莓派上 Qt 开发环境的搭建

1、介绍

Qt 是一个跨平台的 C++ 图形用户界面应用程序框架,提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt 可以帮助我们轻松地使用 C++ 开发跨平台的 GUI 程序。

在树莓派上,使用 Qt 来开发图形用户界面应用程序同样轻而易举。本文中将介绍如何在树莓派上安装 Qt Creator,并制作一个简单的应用程序。

由于 Qt 是跨平台的,这就意味着在 Windows 下使用 Qt 开发的某些项目源码有可能通过简单的修改就可以在树莓派上打开并重新编译。这实在是太棒了!

2、安装 Qt 开发环境

在命令行终端分别输入以下命令进行安装:

sudo apt-get update sudo apt-get install qt5-default sudo apt-get install qtcreator sudo apt-get install qtmultimedia5-dev sudo apt-get install libqt5serialport5-dev

软件安装成功之后,在左上角树莓派菜单中可以找到软件图标。

3、试一试

打开 Qt Creator 就可以进入集成开发环境。

创建一个简单的项目,测试一把。选完项目的种类,就要帮项目取名以及选择储存项目的位置,本范例中名称取为「nxez」,路径为默认值。

只是为了测试用,那么接下来的三个步骤都套用默认值,点选「Next」、「Next」、「Finish」。

然后项目就创建好了。

左边的树形结构就是整个项目的架构以及档案,基础的架构会包含「Click_Me.pro」、「mainwindow.h」、「main.cpp」、「mainwindow.cpp」、「mainwindow.ui」。如果前面你的「Class name」没有选用默认值,mainwindow 这串文字会是你的「Class name」。

打开 Forms 下面的 mainwindow.ui,这个是用户界面的设计资源。进入到设计器窗口之后,可以很方便的通过拖拽左侧的控件来为项目添加文本、按钮等常用控件。

我们先添加一行文本(Label)试试,点击控件之后输入要显示的内容。

点击左侧下方的绿色箭头调试执行,即可看到以下画面。

是不是很简便呢?另外 QtCreator 本身附带了一组范例,基于这些范例可以快速获得想要的交互效果。

当然,深入使用 Qt 是需要系统学习 C++、Qt 开发框架、以及 QtCreator 等开发工具的用法的。最后推荐有兴趣的朋友在 Qt 官网进一步了解这些内容:https://doc.qt.io/

MCC 参展 9 月中国国际工业博览会

工业物联网始于数据采集系统

MCC 展位号:5.2H – B072

MCC的主要产品为数据采集卡,数据记录仪和数据采集软件。产品线分为USB,以太网,物联网和其它数据总线。

MCC的数据采集有丰富的产品线,从高性价比到高速高精度,可以适应不同用户的使用需求和应用场景。

在软件端,MCC为用户提供开箱即用和通用二次开发编程接口(API)两种选择。支持Windows®,Linux®,MacOS®和Android™®四种操作系统。为移动式测试测量提供了多种可能性。

产品主要应用于自动化产线测控,物联网测试测量系统,高端工业测试,精密自动化测试仪器,高校实验室等。

WebDAQ

物联网数据记录仪

这是一个移动应用和网络设备的时代,远程接入获取数据的测试测量方式已经变得前所未有的重要。

作为这个时代的产物,为更多用户提供了一种新型的数据记录架构。它允许用户在世界上的任意位置配置您的设备,获取您的数据!

DAQ HATs

基于树莓派®的数据采集模块

(Hardware Attached on Top) 是一款专为当今最流行的单板电脑树莓派设计的数据采集模块。

为这个低成本的计算机提供专业、可靠、高质量的测试和输入输出功能。

适用于:

嵌入式系统设计

工业物联网

终端测试

远程监控

边缘计算

验证/认证测试

关注 MCC 专注数据采集

产品及技术咨询:021-50509819

sales.china@mccdaq.com

china.mccdaq.com

本文内容原发于:https://mp.weixin.qq.com/s/WRIxejgZM8OEJZUEyaWgLg

相关内容

基于树莓派的数据采集方案MCC 118上手体验

树莓派 + MCC 118 实现数据采集

Pi Dashboard DAQ 框架的介绍和使用

基于树莓派的热电偶测量模块 MCC 134

Raspberry Pi 电压信号输出/数字IO HAT