Articles of 树莓派

保护RPi SD卡在每日电源周期内不被损坏

我将从我的问题开始,因为他们是一般的,并给出一些背景下面… 我的问题: 有没有办法保护SD卡免受意外断电损坏? – 我可以指定文件系统为只读,并为用户程序保留一个区域,并将其作为读写? 通过HDMI-to-DVI连接器连接到显示器的微控制器是否可以向显示器发送电源开/关命令? 任何参考这将不胜感激。 背景: 我有一个Raspberry Pi板 – 从SD的电源Linux启动并运行用户程序。 它连接到显示器,扬声器,GPIO和LED。 该项目要求所有的电力每天都被削减,以节省能源。 发生这种情况的几个月的结果是,SD卡变得腐败。 非常感谢您的帮助, 谢谢。

自动启动midori浏览器不能在树莓派上工作

我正在尝试在启动时在Raspberry Pi中启动浏览器。 这些是我到目前为止所遵循的步骤: 我使用以下命令从根文件夹编辑了.bashrc文件: sudo nano /home/pi/.bashrc 在文件的末尾添加了以下行。 midori -e Fullscreen -a http://www.google.com 我重新启动了树莓派。 sudo重启 它不会在启动时打开浏览器。 如果我手动点击terminal,它会打开浏览器。

Linux:在可能不存在的USB设备上调用open()

我有一个设备连接到树莓派。 Pi正在运行ARCH Linux。 该设备通过USB与Pi通信。 该设备必须通过一个脉冲打开和closures,我有一个继电器控制,从皮,导致这个脉冲。 不过,我永远无法确定设备是开始还是closures。 在我的代码中,我切换继电器,然后推测性地调用设备上的open()(标志为O_RDWR | O_NOCTTY)。 问题是,如果我这样做,当设备closuresopen()调用挂起。 我已经尝试了等待1秒后切换,以解决事情,但没有帮助。 我曾尝试在open()调用之前调用stat(),但是这总是返回零(因此,就stat()而言,设备在那里)。 我已经尝试在open()调用中指定O_NON_BLOCK,但是这会导致它始终失败。 任何人都可以build议(一)我做错了什么或(二)一个可靠的方法呢?

在Raspberry Pi上安装Go软件包

我目前在我的Raspberry Pi Model B +上使用Raspbian。 我已经安装了Go并想安装scollector 。 我试过了 $ go get bosun.org/cmd/scollector 但得到了错误 package net/http/cookiejar: unrecognized import path "net/http/cookiejar" 我也尝试通过ARMv6二进制安装。 我在二进制文件上运行了chmod + x命令,然后尝试使用./scollector-linux-armv6执行它,但是却收到一个错误,提示“文本文件忙”。

双耳节拍在C + +

我正在尝试使用EEGinput构build一个大脑设备,并在“接近实时”的树莓派上输出光脉冲和双耳节拍。 使用WiringPi光输出是没有问题的,但任何audio输出似乎是一个主要的障碍。 计算缓冲区正弦波的math计算很简单,但通过任何标准库在两个频道上播放两个频率似乎是一个非常复杂的过程,我不能拿出任何相关的例子。 我已经成功地打开和closures了一个ALSA设备,这要归功于这个教程 ,它使得我的代码变得非常简单,但是对于ALSA来说却是非常必要的。 如果有人能向我展示在左右声道上播放两种不同计算音调的最简单方法,我将非常感激。 下面的代码是我能find的最简单的ALSA回放示例。 #include <alsa/asoundlib.h> #include <iostream> using namespace std; // Globals are generally a bad idea in code. We're using one here to keep it simple. snd_pcm_t * _soundDevice; bool Init(const char *name) { int i; int err; snd_pcm_hw_params_t *hw_params; if( name == NULL ) { // Try to open […]

Raspberry pi中的Crontab不会运行一个非常简单的脚本

我是Linux的新手,在Raspberry Pi中我一直在这个问题上挣扎了一会儿,但没有成功。 首先,我在/home/myfile.sh写了一个简单的脚本,如下所示: #!/bin/bash clear echo "hi" 然后我做了sudo chmod 755 /home/myfile.sh来授予权限。 最后我用crontab -e修改了crontab : # some comments … * * * * * /home/myfile.sh 问题: 当我手动运行脚本,它工作正常,但是当我在我的crontab设置上述行,什么都没有发生。 我究竟做错了什么?

如何最小化由mysqld写入磁盘的字节数?

我在树莓派(raspbian系统)上使用mysql服务器来存储传感器读数。 每分钟一个长度为20个字节的logging被插入到mysql表中。 但是iotop命令显示mysqld进程每分钟写入200K。 我想尽量减less写入SD卡的数据量,以延长其持久性(我已经应用了防止SD卡损坏的修复程序,如日志和其他黑客的tmpfs)。 为什么当只有20B的数据插入到表中时,mysqld写入200K字节? 有没有办法最大限度地减less写在上面的情况下,调整MySQL服务器? 有趣的是,vmstat命令不会在“io / bo”列中显示写入磁盘的数据太多 我使用MySQL服务器版本5.5.33-0 + wheezy1和innoDB表。 更新: 下面的比尔彻底的答案让我意识到,使用mysql服务器是简单的传感器日志logging的矫枉过正。 最终我迁移到SQLite。 对于相同的表结构,sqlite每次写入的字节数比mysqlless6倍(约30kb),这对于RPi sd卡来说更好。 我仍然在进行优化,因为正如我之前所说的,每笔交易只能写入20b的实际数据。

为什么C打印输出较晚?

我目前正在Raspberry Pi电脑上运行一段C代码。 它是一个随机数发生器,从连接到GPIO数字input端18的盖革计数器中读取。它随机化的位(见代码),并以8为一组打印。另外,每隔30秒打印一次观察到的辐射。 代码似乎工作正常,除非辐射源被拿走。 随机数的生成速度较慢,但​​也似乎减慢了其余的任务。 在程序开始时打印的信息不会显示出来,直到生成一个随机数。 发生这种情况时,不显示任何数字,但添加了一个没有数字的换行符。 即使在程序运行时,辐射水平似乎每30秒打印一次,但也是在下一个随机数。 为什么C以错误的顺序执行代码? #include <wiringPi.h>//library for I/O #include <stdlib.h> int main(int argc, char *argv[]) { int lastRead;//if this is first time observing current pulse int pulseCount = 0;//number of total pulses from Geiger counter long timing[4] = {0,0,0,0};//values to compare to produce one bit int bits[8] = {0,0,0,0,0,0,0,0};//the newest […]

一种在Linux内部进行应用程序通信的方法

我目前正在计划阶段,可以帮忙。 我将使用与各种模块插入(i2C,USB等),它可以是任何东西,如测量温度,风速,方向等模块。 这个想法是让每个模块运行自己的守护进程,这个守护进程会根据请求将数据传给主程序,或者主程序可以请求守护进程重启。 所有这一切都将发生在树莓派上,而不是通过任何forms的networking。 我的问题是主程序和守护进程之间的通信。 我一直在阅读关于使用dbus的知识,但是有不less的说法是用它作为最后的手段。 我一直在研究一段时间,不能拿出任何其他(也许更容易)的方式。 在一个侧面说明,把它们分开的想法是因为如果任何模块有问题,我可以很容易地重新启动它,而不影响主程序。

什么是正确的方式来closuresLinux,然后杀死权力?

我使用外部电源在raspberrypi板上运行Linux raspberrypi 3.6.11+。 电源“断开”开关通过GPIO进行控制。 我想做一个“shutdown -h -P now”,等待系统closures(暂停),然后通过运行一个程序(killpower)来切断相应的gpio引脚来closures电源。 我的主要目标是确保文件系统处于断电时不会损坏的状态。 我试图利用运行级别1脚本killproc向每个正在运行的进程发送SIGTERM(和SIGKILL)。 我写了killpower来捕捉SIGTERM,等待20秒,然后发送gpio powerkill序列。 我还修改了killproc脚本,使其不会SIGKILL我的killpower pid,即使它在SIGTERM超时之后仍在运行。 当这不起作用时,我发现在killproc运行后,运行了/init.d/halt SCRIPT,它调用了/ sbin / halt。 / sbin / halt也杀死了SIGKILL的所有进程,所以我希望我的killpower proc在20秒之前被杀死。 现在,我不明白这种方法是如何工作的。 我也看到,init可以作用于一个SIGPWR信号(不推荐),但它可以执行powerwait / powerfail。 此时系统是否处于closures状态? 我似乎无法找出这些程序应该实施什么。 我想在init.d中安装另一个closures脚本,但是我很困惑应该在哪个运行级别停止(级别1或级别0)。 由于closures命令而在执行/ sbin / halt之前就可以closures电源吗? 我纠正一次/ sbin / halt执行,没有别的将永远运行?