标签: raspberry-pi4

如何在树莓派上实现Modbus?

我目前正在进行一个项目,尝试以 Raspberry Pi 4 作为主站来实现 Modbus,并控制多个执行器作为从站。为此,我为我的 Pi 购买了一个特殊的防护罩。我运行了一个演示测试程序,确认 Pi 可以与其新的扩展板配合使用,但后来遇到了麻烦。

Shield 用户手册- 在用户手册文件夹内。

掌握:

## To install dependencies:
## sudo pip3 install modbus-tk
##################################################################################################
import serial
import fcntl
import os
import struct
import termios
import array
#import modbus lib
import modbus_tk
import modbus_tk.defines as cst
import modbus_tk.modbus as modbus
#import modbus_tk.modbus_rtu as modbus_rtu
from modbus_tk import modbus_rtu

# RS485 ioctls define
TIOCGRS485 = 0x542E
TIOCSRS485 = 0x542F
SER_RS485_ENABLED = 0b00000001
SER_RS485_RTS_ON_SEND = 0b00000010
SER_RS485_RTS_AFTER_SEND = …
Run Code Online (Sandbox Code Playgroud)

python modbus rs485 raspberry-pi raspberry-pi4

3
推荐指数
1
解决办法
1万
查看次数

执行 --version 时 Docker-Compose 错误:“第 1 行:Not:找不到命令”(当前版本 1.27.4)

看起来我遇到了与docker-compose-usr-local-bin-docker-compose-line-1-not-command-not-found相同的问题,但是当我查看我的 '/usr/local/bin/docker -compose' 文件不为空。另外,当我尝试 pip install 时,它说“已满足要求:docker-compose in /usr/lib/python3/dist-packages (1.27.4)”这让我认为这是别的东西。

我正在 RPI 4 上运行 64 位 Ubuntu 21.10 服务器,具有 4gig 内存和 USB 250gig SSD。我正在启动USB。我使用 Raspberry Pi Imager v1.6.2 来刷新驱动器。uname -r 是“5.13.0-1009-raspi”

我可以运行“sudo docker run hello-world:latest”而不会出现错误。

只是为了清楚起见,我的确切错误:

ubuntu@ubuntu:~$ docker-compose --version
/usr/local/bin/docker-compose: line 1: Not: command not found
ubuntu@ubuntu:~$
Run Code Online (Sandbox Code Playgroud)

编辑:如果我的假设在我的答案中是正确的,那么它可能与64位arm比Ubuntu有更多的关系。以防万一,我还更新了上面的规格。我补充说它是 64 位 Ubuntu。

ubuntu docker-compose raspberry-pi4

3
推荐指数
1
解决办法
9317
查看次数

使用 Overlay fs 在 Raspberry Pi4 上运行 Docker

我更喜欢创建一种情况,其中 Raspberry Pi4 Docker 正在运行,而 SD 卡是只读的。这与覆盖 fs 一起。

\n

在docker容器中,数据库正在运行,数据库的数据被写入USB记忆棒(卷映射)。

\n

当overlayfs被激活时(重启后,通过\xe2\x80\x9csudo raspi-config\xe2\x80\x9d启用),docker将不再启动。

\n

https://docs.docker.com/storage/storagedriver/overlayfs-driver/上的步骤\n系统信息:\nLinux raspberrypi 5.10.63-v8+ #1488 SMP PREEMPT Thu Nov 18 16:16:16 GMT 2021 aarch64 GNU/ Linux

\n

码头工人信息:

\n
pi@raspberrypi:~ $ docker info\nClient:\nContext:    default\nDebug Mode: false\nPlugins:\n  app: Docker App (Docker Inc., v0.9.1-beta3)\n  buildx: Build with BuildKit (Docker Inc., v0.6.3-docker)\nServer:\nContainers: 1\n  Running: 1\n  Paused: 0\n  Stopped: 0\nImages: 1\nServer Version: 20.10.11\nStorage Driver: overlay2\n  Backing Filesystem: extfs\n  Supports d_type: true\n  Native Overlay Diff: true\n  userxattr: false\n\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\n
Run Code Online (Sandbox Code Playgroud)\n …

readonly docker docker-compose raspberry-pi4

3
推荐指数
1
解决办法
1359
查看次数

docker buildx armv7 平台缺失

我正在尝试为 raspberry pi 4 (linux/arm/v7) 构建 docker 映像。我正在使用 Ubuntu WSL。我已经能够毫无问题地为 Ubuntu WSL 构建映像。我正在使用 docker buildx 构建树莓派 pi4 (armv7) 的映像。我这样创建了构建器:

docker buildx create --name my_builder
Run Code Online (Sandbox Code Playgroud)

但列出构建器后,armv7 似乎与其他平台一起缺失了。知道这怎么可能吗?Ubuntu WSL 不支持这个跨平台吗?我需要直接从 Windows 或其他主机平台执行此操作吗?

> docker buildx inspect
Name:   my_builder
Driver: docker-container

Nodes:
Name:      my_builder0
Endpoint:  unix:///var/run/docker.sock
Status:    running
Platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/386
Run Code Online (Sandbox Code Playgroud)

如果这有帮助:

> docker buildx ls
NAME/NODE                 DRIVER/ENDPOINT             STATUS                 PLATFORMS
my_builder *              docker-container
  my_builder0 unix:///var/run/docker.sock             running                linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/386
desktop-linux                                         protocol not available
default                   docker
  default                 default                     running                linux/amd64, linux/386
Run Code Online (Sandbox Code Playgroud)

docker raspberry-pi4 buildx

3
推荐指数
1
解决办法
2505
查看次数

如何在 x64 主机上为 AArch64 交叉编译 LLVM/Clang?

我想在运行 Ubuntu 20.04 Focal 的 AArch64 Raspberry Pi 4 上使用 clang-11。我查看了https://apt.llvm.org/,但 AArch64 预构建二进制文件似乎不可用?

我尝试直接在 Raspberry Pi 上构建 clang,但速度非常慢,最终我的 SD 卡空间不足。

我如何在 x64 笔记本电脑上自己交叉编译 clang?

cross-compiling llvm-clang arm64 raspberry-pi4

2
推荐指数
1
解决办法
3450
查看次数

在装有 Ubuntu 20.10 的 Raspberry Pi 4 上安装 R 4.0.3

我正在尝试在运行 Ubuntu 20.10 64 位的 Raspberry Pi 4 上安装 R 4.0.3。它已完全更新。

在我做任何事情之前,我使用 为该操作系统添加了正确的 CRAN 存储库sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu groovy-cran40/'

当我运行时sudo apt install r-base,出现错误:r-base-corer-recommendrf都被指定为需要 version >= 4.0.3-1.2010.0,“不会安装”。

单独检查它们,似乎r-base-core是问题所在。如果我尝试自行安装r-recommished,则会收到错误消息,指出它需要“r-base-core (>= 4.0.3-1.2010.0),但要安装 4.0.2-1build1”。

如果我检查https://cloud.r-project.org/bin/linux/ubuntu/groovy-cran40/,我注意到r-base-core 4.0.3 仅在 AMD64 变体中可用,根据amd64中的文件名。我观察到r-base包的文件的文件名中没有amd64 。对我来说,这表明,目前,如果您使用的是 Intel/AMD 64 位平台,则只能在 Ubuntu 20.10 上运行 R 4.0.3。https://cloud.r-project.org/bin/linux/ubuntu/groovy-cran40/Packages似乎支持这一点。

除了等待与更多平台兼容的r-base-core 4.0.3 软件包出现之外,还有其他实用的选择吗?

linux ubuntu r raspberry-pi4

2
推荐指数
1
解决办法
1308
查看次数

错误:无法安装 PyCharm:找不到 JRE

我尝试在我的 raspberry-pi 4 上安装 PyCharm,但收到此错误:

ERROR: Cannot start PyCharm: No JDK found

我也尝试过:

sudo apt install default-jre

但我仍然收到错误。

python linux pycharm raspberry-pi4

2
推荐指数
1
解决办法
1万
查看次数

暂时无法解析“raspbian.raspberrypi.org”

iam 无法更新我的馅饼上的任何内容,我收到以下错误 Err:1 http://raspbian.raspberrypi.org/raspbian bullseye InRelease 解决“raspbian.raspberrypi.org”的临时失败

resolv.conf 中的名称服务器是 8.8.8.8

这是 ping 结果 root@raspberrypi:/etc# ping google.com ping: google.com: 名称解析暂时失败

我之前在我的馅饼中安装了馅饼,但之后我格式化了存储卡并安装了新的操作系统。请提出任何修复建议。

raspberry-pi raspbian raspberry-pi4

2
推荐指数
1
解决办法
9620
查看次数

opencv 和 picamera (V2) 高分辨率下的白/蓝平衡误差

我的问题是当我将分辨率设置为高于 640x480 时,输出颜色仅位于右下部分。输出的其余部分呈蓝色。

我有一个带有 4GB 内存的 RaspyberryPi4 和一个 PiCamera V2。最高分辨率下CPU占用率不超过~65%。同样的错误也出现在另一个 rapberrypi 及其 picamera (V2 NOIR) 上。

这是图像(不要关心角落里的白条:它们来自糟糕的屏幕截图)

640x480 - 正常

1920x1080 - 有错误

3280x2464 - 有错误

这是我的 python 脚本:

import cv2
cap = cv2.VideoCapture(0)
width = 640; height = 480
# width = 1920; height = 1080
# width = 3280; height = 2464

cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
cv2.waitKey()

print(cap.get(cv2.CAP_PROP_FRAME_WIDTH),cap.get(cv2.CAP_PROP_FRAME_WIDTH))
while cap.isOpened():
    ret, frame = cap.read()
    cv2.imshow('Resolution: '+str(width)+'x'+str(height), frame)
    if cv2.waitKey(25) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

我知道如果分辨率较高,我会失去较高的帧速率。

有人知道错误的根源可能是什么和/或我如何解决此错误? …

python opencv resolution raspberry-pi4 picamera

1
推荐指数
1
解决办法
1004
查看次数

在 RaspberryPi 上启动时启动 VNC 服务器

我希望 RPi 4 的 VNC 服务器在启动时自动启动(对于本地连接和互联网连接)。我遵循RealVNC 网站的指南。因此我使用了命令:

sudo systemctl enable vncserver-x11-serviced.service
Run Code Online (Sandbox Code Playgroud)

但它不起作用(对于两种连接类型),我超时了。然后我用这样的自动启动文件尝试了这个解决方案:

[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1
StartupNotify=false
Run Code Online (Sandbox Code Playgroud)

但同样,VNC 服务器在重新启动后不会自动启动。SSH 连接工作正常,因此,至少本地 VNC 应该可以工作。即使我使用命令启动VNC服务器,也无法连接。

可能是什么问题?不知道您是否需要更多信息?我正在尝试通过 Windows 上的查看器连接到 VNC 服务器。当我第一次使用 GUI 启动服务器时它正在工作(现在我使用的是没有屏幕的 Pi)。

在此先感谢您的帮助。

vnc vnc-server raspberry-pi raspberry-pi4

1
推荐指数
1
解决办法
8737
查看次数

Raspberry Pi 4 上的大页

我需要有关在运行树莓派操作系统 64 位的树莓派 4 上管理大页的帮助。
我在网上没有找到太多可靠的信息。
首先我重新编译了内核源启用Memory Management options --->Transparent Hugepage Support选项。当我运行命令时:

grep -i huge /proc/meminfo

输出是:

AnonHugePages:    319488 kB
ShmemHugePages:        0 kB
FileHugePages:         0 k
Run Code Online (Sandbox Code Playgroud)

并运行命令:

cat /sys/kernel/mm/transparent_hugepage/enabled
Run Code Online (Sandbox Code Playgroud)

输出是:

[always] madvise never
Run Code Online (Sandbox Code Playgroud)

所以我认为应该设置透明大页(AnonHugePages)。我需要使用 HugePages 使用 mmap 函数、c 代码来映射最大的连续内存块。

mem = mmap(NULL,buf_size,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
Run Code Online (Sandbox Code Playgroud)

查看https://www.man7.org/linux/man-pages/man2/mmap.2.html有两个标志来管理大页:MAP_HUGETLB 标志和 MAP_HUGE_2MB、MAP_HUGE_1GB 标志。

我的问题是:要使用 HugePages,我应该以这种方式映射吗?

mem = mmap(NULL,buf_size,PROT_READ|PROT_WRITE,MAP_SHARED,MAP_HUGETLB,fd,0);
Run Code Online (Sandbox Code Playgroud)

内核配置:

CONFIG_SYS_SUPPORTS_HUGETLBFS=y
CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_HAVE_ARCH_HUGE_VMAP=y
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_TRANSPARENT_HUGE_PAGECACHE=y
# CONFIG_HUGETLBFS is not set
Run Code Online (Sandbox Code Playgroud)

linux linux-kernel huge-pages armv8 raspberry-pi4

1
推荐指数
1
解决办法
4488
查看次数

Laravel API 端点在服务器上“401 未经授权”,但在本地主机上运行良好

背景

我开发了一个使用 Laravel 作为 API 的 React 应用程序。我已经通过 Passport 添加了登录信息,并且非常成功地使用了个人访问客户端方法。我可以添加新用户和令牌,我可以撤销令牌,我可以重置密码...所有 API 调用(登录和注册除外)都由 API 中间件保护并且可以正常工作。如果我从任何这些调用的标头中删除 ,Bearer ${token}由于 ->middleware('auth:api') 包装器,它会返回 401 unauthenticated。

问题

一切都完全按预期进行......直到我将所有内容移至我的 Raspberry Pi 服务器。当我移动所有东西时,问题就开始了。我可以登录并且可以注册,但是一旦我在流程中后续的任何端点调用上使用新的不记名令牌(我从登录或注册调用中收到的),它就会失败并显示 401 未经身份验证,立即地。我运行了php artisan passport:client --personal命令并像往常一样成功地将 id 和密钥输入到我的 .env 文件中。我安装了所有的作曲家和供应商包。我安装了所有的 Passport 包和 CLI 命令。

它仅在使用 auth 中间件的调用上失败

我做了一些挖掘,似乎我能发现的唯一(显着的)变化是 Pi 运行 32 位 PHP,而我的本地主机运行 64 位 PHP。除此之外,它的代码、数据库、Laravel 和 PHP 版本都相同。

我尝试使用该命令php artisan passport:client --personal --name="app-name" --redirect_uri="http://192.168.1.1/"将记录放入“oauth_clients”表中,但将重定向显示为http://localhost/. 然后,我尝试使用 SQL 手动将名为“redirect”的列的值更改为http://localhost/......但更改又没有任何作用。调用仍会返回 401 未经身份验证。

我能发现的唯一可能存在问题的其他事情是:

  1. 事实上,数据库表“oauth_access_tokens”中“redirect”列下的所有令牌都是使用 of …

apache authentication laravel laravel-passport raspberry-pi4

1
推荐指数
1
解决办法
5097
查看次数

pvpn 没有网络

这个问题可能看起来重复,但我已经尝试了所有其他已有多年历史的解决方案,因此请提供帮助。

我在 Raspberry Pi 上设置了 Pivpn,但无法通过 VPN 访问互联网。

运行时ping 1.1.1.1 -I tun0出现 100% 丢包且无响应。从eth0它的作品。甚至ping 127.0.0.1 -I tun0不起作用。

下面是我的日志,pivpn -d没有显示任何错误。

::: Generating Debug Output
::::        [4mPiVPN debug[0m      ::::
=============================================
::::        [4mLatest commit[0m        ::::
Branch: master
Commit: 027f257931d1f169e254def5d1552d55810fefda
Author: 4s3ti
Date: Thu Aug 5 15:12:33 2021 +0200
Summary: Latest Changes update.
=============================================
::::        [4mInstallation settings[0m        ::::
PLAT=Raspbian
OSCN=stretch
USING_UFW=0
IPv4dev=eth0
dhcpReserv=1
IPv4addr=10.10.70.10/24
IPv4gw=10.10.70.254
install_user=pi
install_home=/home/pi
VPN=openvpn
pivpnPROTO=udp
pivpnPORT=50552
pivpnDNS1=8.8.8.8
pivpnDNS2=8.8.4.4
pivpnSEARCHDOMAIN=
pivpnHOST=REDACTED
TWO_POINT_FOUR=1
pivpnENCRYPT=256 …
Run Code Online (Sandbox Code Playgroud)

vpn openvpn raspberry-pi raspbian raspberry-pi4

0
推荐指数
1
解决办法
6823
查看次数