问题标签 [raspberry-pi-zero]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Raspberry Pi Zero 上的时间跳跃
我在 Raspberry Pi Zero W 上的 python 应用程序中使用了这种简单的日志记录方法:
这个 Python 应用程序在启动时自动运行。今天我有几毫秒的短暂电池故障,Pi 重新启动。当我检查日志文件时,我发现了一件奇怪的事情——重启后的日志条目出现在日志文件中,时间戳为“旧”:
我想知道什么可能导致这种行为,以及如何解决它。我的主要猜测是 Pi 在启动时会启动一些时间调整实用程序来更新系统时钟。在我的特殊情况下,这导致时钟稍微倒退了一点。但不知道有没有办法验证这个预感。
c++ - Raspberry Pi 零 - 变成虚拟鼠标在 Windows 10 build 1809 上无法正常工作(光标快速回到左上角)
我有一个 Raspberry Pi Zero,我把它变成了一个虚拟键盘和虚拟鼠标。我已经使用 github 上的这个惊人的(谢谢 SeongTae Jeong!)repo - rasp_vusb完成了它。简要总结一下它的工作原理:
- 您通过 USB 电缆将 PI Zero 连接到另一台计算机,然后使用以太网电缆将其连接到 Internet。
将其连接到计算机后,它会在设备管理器 (Windows) 中创建 3 个新设备:
- 人机接口设备
- USB输入设备
- 键盘
- HID 键盘设备
- 鼠标和其他指点设备
- HID 兼容鼠标(绝对位置 + 按钮)
- HID 兼容鼠标(相对位置 + 滚轮)
- 人机接口设备
在 PI 零上运行一个“服务器”(代码在 repo 的 rasp_vusb_server 中找到),它接受您的命令,然后将它们作为鼠标命令或键盘命令发送到您通过 USB 连接的设备。
您可以通过连接到它的 IP 并发送正确的数据,将命令从另一台计算机发送到 PI 零(服务器)。您可以在我提供的位于地图InputController中的 repo 中使用已经内置的程序
现在这在 Windows 10 build 1803 和 build 1903 上完美运行。它也适用于 Mac,但我没有在 Mac 上测试过键盘功能。当 Pi Zero 连接到 Windows 10(专业版或家庭版)版本 1809 时,会出现奇怪的问题。
键盘命令、相对鼠标命令(含义:将光标从您在 atm 上的位置向右移动 +50 像素)和鼠标按钮(单击)命令工作正常,但绝对鼠标命令(含义:将光标移动到X = 50, Y = 50 在屏幕上)和滚轮命令不起作用-光标一直在左上角捕捉(坐标,X=0,Y=0)。
我在许多不同的计算机和 Windows 版本、不同的显示器(有些有触摸屏,有些没有)、不同的 Pi 零上尝试过这个。该问题仅出现在 Windows 10 build 1809 上。我尝试在网上搜索类似的问题,但所有答案都会导致一些触摸屏问题,但正如我所说,在我的情况下,触摸屏不是问题,因为它适用于不同的版本。
(我实际上不确定这是否与问题有关,因为这是我们发送到 PI 零然后 PI 零将其发送到连接的设备的代码/命令)我开始挖掘代码,我发现发送绝对鼠标命令时发送的是长度为 15 的字节数组。我将举例说明,以便更好地理解:
假设您要发送绝对鼠标命令,即要将光标移动到屏幕上的X=50和Y=100 。正如 repo 的自述文件中所述,您必须根据您的屏幕分辨率进行一些计算。假设我们有一个1920x1080的分辨率。然后我们发送 X=(50 * 32767 / 1920) = 853 和 Y=(100 * 32767 / 1080) = 3033。然后你必须调用一个函数byte[] ConvertToMouseCommands("853 3033")
。它位于InputController/MouseDevice.cs或Demo/MouseDevice.cs的 repo 中。此函数将数字转换为字节数组,如下所示: (EDIT*) 我将把发送相对鼠标命令(如 (X=+50, Y=+50))时创建的字节数组放在其旁边以进行比较。
这些是我们发送到 PI 零的字节数组。当 PI 零接收到它们时,它使用两个函数(取决于它是相对鼠标命令还是绝对鼠标命令)进一步发送它们。这两个函数是void MouseDevice::SendRelative(int fd, char *mouseInput, int keyLen)
和void MouseDevice::SendAbsolute(int fd, char *mouseInput, int keyLen)
。它们可以在rasp_vusb_server/MouseDevice.cpp的 repo 中找到。我不想在这里粘贴代码,因为这篇文章已经足够长了,但本质上它们发送 X 坐标、Y 坐标、如果单击按钮或鼠标上的滚轮已经旋转 - 看起来很简单大部头书。
正如我所说,该代码在其他 Windows 版本上完美运行,它只是在 1809 版本上失败。老实说,我什至不知道如何开始调试这样的东西。该版本中是否发生了某些变化-我应该发送的字节有所不同吗?是否有一些神奇的解决方案,例如禁用驱动程序或其他东西(一厢情愿)?我是否应该尝试更旧的 Windows 10 版本以查看它是否有效?
我将非常感谢您提供的任何信息。谢谢!
linux - 用 bluealsa 连接到树莓派的蓝牙扬声器烦躁地睡着了
我正在开发用于在蓝牙扬声器上播放音频的软件,到目前为止,它适用于树莓派 0 w,使用 blue-alsa,但问题是过了一会儿扬声器进入睡眠模式,然后我需要再次唤醒它手动。
有没有办法避免扬声器进入睡眠模式?
python - 有没有办法在 RPI 零上使用已编译的 keras 模型?
我正在为机器人开发一个字母识别应用程序。我使用我的家用 PC 来训练模型,并希望使用已经训练的模型在 RPI 零 W 上进行识别。
我有一个 HDF 模型。当我尝试在 RPI 零上安装 Tensorflow 时,它会抛出一个哈希错误,据我发现这是由于 TF beeing 用于 64 位机器。当我尝试安装 Tensorflow Lite 时,安装库存和崩溃。
为了保存我使用的模型:
那是预测线:
我也尝试通过 Nuitka 编译 python 脚本,但由于 RPI 是 ARM 并且 nuitka 不提供交叉编译,这种可能性感觉出来了。
linux - 树莓派零接口与 gsm/gprs 模块
我是树莓派零的新手,我想将它与 gsm 模块连接以实现 gprs 连接。我买了 sim800a gsm 模块,但它的 LED 甚至一次都不闪烁我能够在 pi 零上打开 UART 并通过 ssh 通过 USB 电缆连接它。如果 sim800a 不够好,任何人都可以帮助我如何实现我想要的并且还建议为 gprs 提供更好的 gsm 模块
bluetooth - 树莓派零,蓝牙通过 ttyS0 或 Serial0
在配置中我使用过
dtoverlay=pi3-miniuart-bt
我还想用蓝牙连接
如何设置蓝牙以使用 ttyS0 而不是 ttyAMA0
一位医生说
还需要编辑 /lib/systemd/system/hciuart.service 并将 ttyAMA0 替换为 ttyS0
但是 hciuart.service 中没有 ttyAMA0 这样的东西
python - PiZero W 连接到两个外设(GPIO 和 USB):如何同时连续读取两者?
我有一个覆盆子 pizero W,它通过 GPIO 引脚连接到流量计和 USB 连接到条形码扫描仪。我有 python 脚本,它使用回调函数在感应到 GPIO 输入时发出警报。这个 python 脚本需要在 pizero 上持续运行,以便识别何时激活流量计并处理输入。
问题是我还有一个通过 USB 连接到 pizero 的条形码扫描仪。我希望 pizero 也能识别何时扫描条形码并处理该输入。
然后,pizero 应该发送一条消息,该消息包含来自流量计的信息和来自条形码扫描仪的信息。
有没有办法在同一个 python 脚本中做到这一点?如何让 pizero 同时监听和处理两个输入?将其分成两个不同的脚本是否更容易实现,如果是这样,我可以同时运行它们并以某种方式统一它们在第三个连续运行的脚本中提供的信息吗?
谢谢!
每个评论的一些澄清(感谢您的输入):
- 流量计的输入引脚
GPIO 17
是 SPI 连接 - 还连接了一个 5V 电源和接地引脚。
该脚本需要在系统启动时运行。我会看,systemctl
因为在提到它之前我还没有听说过。
当流量计未连接时,Pi 通常将扫描的条形码识别为键盘输入(即一系列数字后跟换行符)。
当我发送包含流量计和条形码信息的消息时,我需要从 python 发送一个 JSON 对象,其中包括信息片段和接收信息的时间戳。
此 JSON 对象将通过 wifi 发送到具有静态 ip 的树莓派服务器,该服务器与 pizero 位于同一家庭网络上。树莓派服务器可以访问 Django 数据库,该数据库应该将 JSON 对象信息合并到数据库中。
c++ - c++循环不断检查变量的速度有多快
我正在使用繁忙的循环来检查条件何时为真并拍照,但是当条件为真时以及当我的循环检测到它时,我需要有少于 10 毫秒的延迟。这个循环可行吗?
这是在缓慢的树莓派零上运行的。
我希望采用的完整代码: https ://github.com/WiringPi/WiringPi/blob/master/examples/isr.c
python-3.x - PiZero W 连接到 (GPIO):如何在 Mac OS X 上使用 GPIO 输入模拟 PiZero
我有一个 Raspberry PiZero W,它通过 GPIO 引脚连接到流量计。这台机器正在工作,我希望能够调试我对流量计代码的尝试,这在这篇 SO 帖子中得到了很好的建议:PiZero W 连接到两个外围设备(GPIO 和 USB):如何从两者中连续读取同时?在家的时候。我不太关心模拟机器上是否有 wifi 和网络连接,模拟 Pi 的 GPIO 输入是最关键的功能。
关于系统的一些细节: PiZero W 在 32 位 ARM 上运行 Buster OS。流量计通过 SPI 连接的 GPIO 17 连接到 PiZero W。我正在使用的流量计代码的基本版本可以在这里找到:https ://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/hall.py
我想用一个模拟的流量计来模拟这个设置,该流量计实际上是向我家用机器上的 Pizero 发送信号:Mac OS X 10.13.6 x86_64。我也安装了 VirtualBox,但不确定这是否是最佳选择。
这可能吗?任何建议将不胜感激!谢谢你。
macos - Qemu:在 MacOS X 上使用 Buster OS 模拟 Raspberry pi(CLI 有效,但屏幕空白)
试图弄清楚为什么我在 Qemu 中运行 Buster OS 的 Raspberry Pi 有一个空白屏幕,但确实有一个函数 CLI?这是我运行的:
最后得到一些失败消息:
不知道与什么vpb_sic_write: Bad register offset 0x2c
有关,[FAILED] Failed to start Load Kernel Modules.
但我很好,[FAILED] Failed to start rng-tools.service.
因为我认为rng-tools
与随机数生成有关,我不需要。
起初我认为缺少显示是由于附加选项中没有指定控制台,但在启动脚本中我确实看到了以下内容,这让我相信这不是问题所在。
有什么建议吗?谢谢!