raspberry pi

Raspberry Pi体积小,功耗低,因此受到电子爱好者和教育工作者的欢迎。 因此,它与“制造商”场景相关联,有时Arduino (和Arduino风格的嵌入式微控制器)与Pi之间的界限变得模糊。

事实是,Raspberry Pi和Arduino是非常不同的设备,即使它们经常在同一工作台上同时出现。 Arduino在某些项目中很有意义,但对于其他项目,Pi实际上可能是更好的选择(例如,如果您触发复杂的多媒体事件)。 但是,如果您期望Pi可以替代Arduino,那么您会感到有些意外。 我在不同的Craft.io项目中都使用了Arduino和Pi,有时是因为一个显然是另一个的正确选择,而有时是因为我手上只有一个而不是另一个。 如果您已经习惯了Arduino(或者您已经读了很多,并且不清楚它和Pi的不同之处),那么这里是我在获得Pi时发现的额外步骤与微型PC相比,其作用更像嵌入式微控制器。

通用输入输出

人们了解Arduino的第一件事是,除非您有足够的知识来连接它,否则它就不会有用。 您需要输入传感器和输出设备,或者您正在对微控制器进行编程而无任何控制。 Pi是与之相反的极性。 它所做的大部分工作可能完全基于软件,因此连接舷外电子设备的趋势不太常见。 但这不是必须的。

Raspberry Pi具有许多GPIO引脚(具体数量取决于型号),可以检测输入或发送输出信号。 与Arduino不同,所有这些引脚都是数字 IO,这意味着它们知道两种状态:开和关。 大多数Arduino开发板还具有模拟引脚,可以检测状态的程度 ,其实际应用是能够连接温度传感器,光传感器或电位计等用于任意输入的功能。

只要您可以使用二进制输入和输出,Pi的GPIO引脚就非常有用。 但是,与Arduino不同的是,不能通过软件访问这些引脚。 要与GPIO引脚通信,必须安装GPIO库。 提供了两个开发库:

RPi.GPIO Python

RPi.GPIO是一个Python库,可为您提供从GPIO引脚读取和输出的功能。 就Arduino用户的期望而言,这是一个相当高级的接口,因此没有SPI或串行功能。 但是对于简单的项目,它工作得很好。 您可以打开和关闭LED,启动电动机等等。

接线图

WiringPi是用C语言编写的GPIO访问库。使用Arduino系统的任何人都会熟悉它的语法和一般设计,并且它是一个低级库,它甚至包含允许您使用外部板卡的模块(例如Arduino)或类似设备)作为模拟输入。

原始WiringPi项目的贡献者为Python,Ruby,Perl,Java等编写了包装器。

实时表现

与Arduino不同,使用GPIO库不能提供实时性能。 Python库具有Python的开销,它需要定期在后台执行内存管理任务,甚至WiringPi都受Linux内核的调度决定的约束。 实际上,除非您要构建非常依赖实时性能的设备,否则这实际上对您而言并不重要。 在准备一个基于Pi的多媒体项目时,我做了一些测试,试图使用安全性限制来提高性能,但是它们都失败了(我从来没有去重新编译内核,因此没有帮助)。 最终,我发现该项目(一个音乐界面要接受不可预测的输入,并且确实需要某种即时响应感),绝对不会错过任何节奏,但您的里程可能会因项目而异。

开机启动

由于Arduino是嵌入式系统,因此您一直将刷新到其芯片上的程序运行。 您打开Arduino的电源,程序开始运行,不断循环,直到关闭电源。 Pi不会那样做。 在为Pi供电时,它将加载操作系统,然后耐心地等待您登录或执行某些操作。

如果您需要嵌入式行为,则实际上需要告诉Pi在启动时自动启动应用程序。 更好的是,您可以删除不需要的进程,以便加快启动时间。 你不必做这种方式(你可以只设置你的皮的桌面自动登录,然后设置启动应用程序),但如果你处理郫县作为伪嵌入式设备和不需要一个桌面,为什么要使用资源来运行一个? 为什么引入作为变量,明知来讲演示-ING冷静新的机器人(或任何你正在建设),任何事情如果有问题, 总会出错?

为了使Pi表现得像嵌入式OS,首先要剥离不需要的服务。 这些服务是什么取决于您的项目。 如果您的项目不需要网络,请禁用网络服务。 如果您的项目不需要图形界面,请从系统中丢失X11软件包。 查看启动时正在运行的服务,并尽可能地禁用它们。

您还希望Pi自动登录。 如何执行此操作取决于您正在运行的Pi发行版。

没有系统

Pi的大多数现代发行版都将Systemd用于初始化过程(启动过程),但有些却没有。 要在不使用Systemd的系统上激活自动登录,请编辑(具有sudo权限) / etc / inittab文件并更改此行:


1 : 2345 :respawn: / sbin / getty 38400 tty1 

对此:


1 : 2345 :respawn: / sbin / getty --autologin your-username-here 38400 tty1 

在此处您的用户名替换为您要自动登录的用户的用户名。 您的Pi可能是pi的默认用户,但您可能已经创建了一个新用户。 如果不确定,请使用whoami查找您的用户名。

进行更改后,请重新启动以确保它可以工作。 Pi应该启动到外壳程序提示符(而不是登录提示符)。

要在成功启动后立即运行您的应用程序,请将您的应用程序作为命令添加到文件/etc/rc.local的最后一行上方(应显示为exit 0 )。 例如,这是我的示例项目的最后两行:

$ sudo tail -n / etc / rc.local
/ usr / local / bin / robotnix / robotnix.py
exit 0

确保rc.local是可执行的,并且要启动的应用程序是可执行的:

$ sudo chmod a+x / etc / rc.local
$ sudo chmod a+x / usr / local / bin / robotnix / robotnix.py

成功重新登录后,再次重新启动以测试您的应用程序是否启动。

在CentOS,Pidora和其他系统上运行

在使用Systemd的发行版(例如CentOS)上,该过程类似,但是发生在一组不同的配置文件中。

对于自动登录过程,编辑文件> /usr/lib/systemd/system/getty@.service并注释掉以下行:


ExecStart =- / sbin / agetty --noclear % I 38400 

并用以下变体替换它:

## old line ## ExecStart=-/sbin/agetty --noclear %I 38400
## new command
ExecStart = / sbin / agetty --autologin your-username-here --noclear % I 38400

这个Systemd文件产生了该过程,这与使用inittab的传统UNIX方法不同。

重新启动您的Pi以测试自动登录。

假设自动登录按预期工作(Pi应该启动到外壳提示符,而不是登录提示符),下一步是为您的应用程序创建自动启动规则。 整个Internet都建议在rc.local中放置命令应该可以工作(因为从理论上讲,Systemd会执行rc.local的向后兼容性执行),但是我在这方面取得了一些成功。 自定义Systemd规则除成功外别无其他。

要编写Systemd规则,请创建一个具有sudo特权的文件,名为/etc/systemd/system/robotnix.service (您可以随意命名;我使用robotnix,因为这是我生成的示例项目的名称对于本文)。

文件内容:

[ Unit ]
Description =Robot Script Startup

[ Service ]
Type =idle
ExecStart = / usr / local / bin / robotnix / robotnix.py

[ Install ]
WantedBy =multi-user.target


现在启用该服务以在启动时发生:


$  sudo systemctl enable robotnix.service 

再次重新启动Pi,以确保您的应用程序正在自动启动。

Pi还是Arduino?

它们都小巧,功能强大,并且都用于电子爱好项目,但是Raspberry Pi不是Arduino。 但是,Pi可以在紧要关头发挥出色的作用。 也就是说,如果您还没有并且对此感到好奇,请不要害怕尝试使用Arduino。 它们都是您工具包中的绝佳工具。 使用本文中的技巧,您可以将Pi用作将来Arduino项目的测试平台,也可以在一台设备上同时兼顾两者。

无论您在下一个硬件项目中最终使用什么,请保持打开状态并保持乐趣。

翻译自: https://opensource.com/life/16/3/how-configure-raspberry-pi-microcontroller

raspberry pi

raspberry pi_如何将Raspberry Pi配置为微控制器相关推荐

  1. raspberry pi_如何使用Raspberry Pi构建WiFi相框

    raspberry pi 数码相框非常好,因为它们可以让您欣赏照片而不必打印出来. 此外,添加和删除数字文件比打开传统框架并在要显示新照片时在内部交换图片要容易得多. 即便如此,从数码相框中取出SD卡 ...

  2. raspberry pi_如何使用Raspberry Pi构建数字针Kong相机

    raspberry pi 在2015年末,Raspberry Pi Foundation通过发布小型Raspberry Pi Zero震惊了整个世界. 而且,他们在MagPi杂志的封面上免费赠送了它 ...

  3. raspberry pi_如何使用Raspberry Pi设置个人Web服务器

    raspberry pi 个人Web服务器是"云",除了您拥有并控制它而不是大型公司. 拥有一点云有很多好处,包括自定义,免费存储,免费Internet服务,通向开源软件的路径,高 ...

  4. raspberry pi_如何制作Raspberry Pi游戏手柄

    raspberry pi 我不时地怀念80年代末和90年代孩童时期玩的电子游戏. 尽管我的大多数旧计算机和游戏机已不复存在,但我的Raspberry Pi可以完成我的复古游戏修复. 我喜欢Raspbi ...

  5. raspberry pi_如何在Raspberry Pi上使用NetBSD

    raspberry pi 您是否有旧的Raspberry Pi散布着灰尘,也许是在最近的Pi升级之后? 您对BSD Unix感到好奇吗? 如果您对这两个问题都回答"是",您将很高兴 ...

  6. raspberry pi_如何在Raspberry Pi上创建盒装Internet

    raspberry pi 如果您是家庭学校的父母或预算有限的老师,那么框选式Internet可能正是您想要的. 它的硬件要求非常适中(Raspberry Pi 3.64GB microSD卡和电源), ...

  7. raspberry pi_如何购买Raspberry Pi

    raspberry pi 本系列中有关Raspberry Pi入门的第一篇文章就应该购买哪种型号提供了一些建议. 现在您已经有了所需的版本,让我们了解如何获得一个版本. 最明显(可能也是最安全和最简单 ...

  8. raspberry pi_如何使用Raspberry Pi测量颗粒物

    raspberry pi 我们在东南亚的学校定期测量空气中的颗粒物. 这里的值非常高,尤其是在2月到5月之间,那时天气非常干燥和炎热,许多田野都燃烧着. 这些因素会对空气质量产生负面影响. 在本文中, ...

  9. raspberry pi_如何进行Raspberry Pi聚会

    raspberry pi Raspberry Jam是Raspberry Pi聚会的名称-它们有许多不同的格式. 一些类似于传统的技术用户组,但是许多是家庭友好型活动,为孩子们提供了学习编码和制作东西 ...

最新文章

  1. 记录一下HALCON基于可变形,利用CAD画dxf模板进行模板匹配(二)
  2. S4:装饰模式 Decorator
  3. PAT甲级1153 Decode Registration Card of PAT :[C++题解]结构体、哈希表、排序、类似数据库查询题、好题
  4. 微信的充值页面为啥长这样?(多图)
  5. 迅雷(XUNLEI)的工作原理揭密
  6. Oracle查看正在执行的存储过程的sid
  7. 如何通过鸿蒙生态赚钱?
  8. 账户体系、支付服务设计第一版
  9. Kubernetes详解(十九)——Kubernetes Pod控制器
  10. JS实现静默发送邮件功能(选择填报提交后发送、数据查询后发送参考前者)
  11. itunes卸载工具_iTunes卸载麻烦
  12. Android使用google breakpad之minidump_stackwalk
  13. matlab封闭曲线拟合 (针对一些列离散点)
  14. QEMU同步脏页原理
  15. 蒙特卡洛思想(Monte Carlo思想)
  16. Pocket PC 基础知识
  17. World Locking Tools for Unity (一)指南部分
  18. Lucene.net和盘古分词使用小结
  19. 我的世界java版怎么分开物品_我的世界手机版怎么拆分物品
  20. 9.1 爬虫及爬行方式

热门文章

  1. mongodb常用操作语句
  2. ElasticSearch之基于地理位置的搜索
  3. python常见排序算法解析
  4. [转] 2018年冬流感通知
  5. 20172303 2018-2019-1《程序设计与数据结构》第7周学习总结
  6. 剥开比原看代码15:比原是如何转帐的
  7. hbase hbck的参数使用
  8. 需求迭代:迭代需求矩阵
  9. 模型图像ASM(Active Shape Model) 主动形状模型总结
  10. IIFP之牛刀小试(初识篇)