Arduino 与树莓派 Raspberry Pi 相比各自有什么优缺点
你好,
RPi 和 Arduino 两个完全不同运算水平的平台。毕竟 RPi 使用的是一颗运行在 700MHZ 的 ARM11 CPU;而常用的 Arduino UNO 则是一颗在工业控制领域常见的 8-bit ATmega328,最高运行频率仅 20MHz。
RPi 可以运行完整的操作系统,如 Debian 等常见 Linux 发行版 - RPi Distributions。这意味着你可以使用你熟练的语言(如 Python、Java)和熟悉的库来进行开发,同时后台运行多个进程也毫无压力。而 Arduino 作为一款真正传统意义上的单片机系统,一次只能运行一个你烧进去的程序,功能也相对单一。
RPi 自带的接口比较全面,USB-host、RJ45、HDMI、SD读卡器等常用接口都有;而 Arduino 比较单纯,与外部设备打交道需要另外采购接口板。
RPi 因为是一个相对完整的「电脑」,其成本肯定比 Arduino 高,目前 B 版在淘宝普遍 280 元左右;而常用的 Arduino UNO 40 元搞定。
RPi 拥有更完整的操作系统,这也意味着每次复电后所需的启动时间很长,而且还不能保证重启后你写的相关服务都能正常启动(Linux 大拿可能会觉得是我技术渣);但 Arduino 因为用途单一,重启速度超快,而且重启结束后立即就在运行你让它做的事。
综合考虑后,我的选择是:
RPi 作为家居中央控制服务器,负责与互联网的通信、采样存储 Arduino 上报的状态数据、处理数据量大的工作(如音频、视频、相关)、提供 API 给 iOS 及 Android 以方便用手机控制家居。RPi 与 Arduino 间通过以太网和 Zigbee 进行数据传输。
Arduino 负责家居传感器采样,如光线强度、温度、人体红外感应等。有的模块比较独立,比如人体感应的夜间走廊灯,单个 Arduino 可以自己实现监控加控制,就不需要上报数据给 RPi 了。需要上报和接收数据的 Arduino ,通过 Zigbee 及以太网和 RPi 进行通信。
这样的好处就是投资小,而且把计算任务都放在了 RPi 上,算是物尽其用。
目前还不能安装树莓派系统。
树莓派已经是自制计算的冠军之一,它是许多家庭自动化项目、媒体服务器的支柱,也是经典游戏的完美模拟站。然而,树莓派所有者选择走安卓路线的情况并不多见。开发者 Konsta 一直负责将安卓系统移植到以前的机型上,他们最新的努力是将安卓 12L 移植到 Raspberry Pi 4 Model B 上。
首先执行更新,我之前就是没执行更新,导致后续操作错误,下载安装时会提示404 找不到文件
sudo apt-get update
更新一番之后继续执行,安装Cups
sudo apt-get install cups
配置用户
sudo usermod -a -G lpadmin pi
下面替换CUPS的配置文件,首先停止服务
sudo service cups stop
备份原有文件
sudo mv /etc/cups/cupsdconf /etc/cups/cupsdconfbak
从服务器上下载新的配置文件
cd /etc/cups/
sudo wget http://jxeenotk/local--files/blog:raspberry-pi:print-server/cupsdconf
完成,现在可以启动服务了
sudo service cups start
下一步设置打印机,首先将打印机连接到树莓派上,然后在浏览器中输入 https://ip:631 进入配置界面 打开的是一个网站,在上面菜单栏中找到Administrator,会提示你用户名和密码,输入树莓派的用户名和密码即可
登录后,在Printers栏目中点击Add Printer
显示的Local Printers会有你连接上的那台打印机,选中它点击continue
在这个界面Name是打印机的名字,以后用来在URL中确定打印机,所以短一些比较好、
勾选Sharing,别的不用变,点Continue
下一个界面选择驱动程序,如果在Model栏目中有打印机的型号就最好了,否则可以上传打印驱动程序
最后就设置完成了,复制最后一个界面的URL,也就是类似于http://ip:631/printers/打印机名 就可以在其他电脑上添加共享打印机了
使用scp命令拷贝文件非常好用,我们可以通过scp命令把本地文件上传到树莓派,也可以把树莓派里的文件拷贝到本地。
本地系统: MacOS
树莓派的IP地址: 192168123159
树莓派用户名: pi
本地文件夹位置: /Users/yushengtan/desktop/
树莓派文件夹位置: /home/pi/download/Desktop/
假如我们要把本地桌面上的文件1txt拷贝到树莓派服务器桌面上,可以使用命令: scp <本地文件夹及文件> <远程用户名>@<远程ip>:<远程文件夹>
执行命令后按要求输入ssh登录密码即可;
支持文件夹拷贝,只需在scp 后添加一个 -r 参数即可。
加入我们要把树莓派桌面上的文件2txt拷贝到本地,可以使用命令: scp <远程用户名>@<远程ip>:<远程文件夹> <本地文件夹及文件>
scp同样支持文件夹拷贝,只需在scp 后添加一个 -r 参数即可,
如把本地桌面目录拷贝到远程树莓派桌面:
使用Screen(虚拟终端管理器)让它在后台管理终端界面,这样SSH断开后就不用怕正在进行的操作中断了。
一、安装:
sudo apt-get update
sudo apt-get install screen
二、使用:
1、创建一个虚拟终端:
登录树莓派,然后执行:screen -S XXX这样就创建好一个名为XXX的终端了,然后就可以执行其它消耗时间比较长的工作,像运行服务器等。
2、保存一个终端
按ctrl+a后再按d这样就保存好一个虚拟终端了,系统会提示deatached,此时SSH就算是断开了,执行的命令 。
3、访问已经创建好的终端
screen -ls可以列出已经创建的正在后台运行的终端
screen -r 终端名称就可以打开终端了,比如screen -r XXX
4、彻底退出
如果一个虚拟终端中的程序执行完毕了,screen -r进入这个终端后再执行exit就完全退出了。
这样以后通过SSH编译内核之类的长时间工作时,再也不怕因为断网造成的操作中断了。
分析/验证对比常见局域网服务发现协议在Windows/Linux/Mac等不同系统下的支持和表现
在使用不同系统的智能硬件时,如常见的树莓派/Openwrt路由器/Debian/Fedora/Windows/Mac等系统是,系统间相互发现以及
网络共享本应是系统的基础服务,无需用户过多参与不过现实旺旺和理想之间的差距让我们惊讶,不同系统相互之间的发现以及
共享并没有那么轻松
开发的硬件设备无法在常见系统的网络邻居正确的现实出来,实在是很丧气的事情
那么,就系统来看看局域网服务发现协议在不同系统上的支持及表现
想要访问局域网网络里面的设备,远没有应有的轻松 每次新装系统或者设备入网,总是有这样或者那样的问题,哎,我的服务器啊,你在哪里
先看看最简单和常用的ping工具,这么简单和实用的工具,简单的搜索竟然有 三千八百万 条记录
大名鼎鼎的树莓派,用起来想来应该更简单一些,可事实往往触目惊心,仅仅是ping通的问题,也有 三百万 的记录
![pdnas-raspberry-pi-ping]]( https://upload-imagesjianshuio/upload_images/14465021-53d02e74e1936079jpgimageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )
再来看看最常见的文件共享服务,也有 两千万 之巨
这都2120年了,为什么这么常见的服务还有这么多为问题呢
干货放前面 各系统网络邻居正常工作的协议汇总:
Linux和Macos比较相似,但是实现起来还是有明显的差异,下文会具体描述
Windows一如既往的走在自己的路上,网络邻居发现协议自搞一套
Web Services Dynamic Discovery (WS-Discovery) WS-Discovery
下图是此协议的抓包
此协议和UPnP极其相似,都是基于SSDP协议衍生的XML表达的,如果不支持此协议,则无法在Windows10 的网络邻居里面显示为PC,无法直接点击访问共享
支持此协议后,Windows10的网络邻居里面会在计算机类型的里面显示设备
UPnP 是早期路由器常用的协议,目前从不同系统的验证来看,仅有Windows默认在文件浏览器里面支持,Ubuntu和MacOS都需要单独配置或者应用程序才能浏览
这个协议目前各种路由器基本都能支持,不过其安全问题频出,作用并不明显
此协议在Windows系列里面基本都能支持,会在网络邻居里面显示出设备的信息
MAC整体表现和Linux比较接近,双方使用的协议也是类似,只是在细节处理上有些区别
mDNS 协议本身应用比较广泛,MAC比较早就支持在Mac新版本里面,网络邻居默认可以发现mDNS设备
因为历史原因,早期的AFP协议升级后已经没有开源协议可以完美支持,因此使用avahi的mDNS服务时,如果还使能了AFP业务的话,MAC会显示为大问号
使用配置好的服务文件,MAC可以正常显示设备
在调试过程中,还看到了网络邻居显示为PC的图标,有知道显示为这个图标的条件的小伙伴吗
Server Message Block SMB 是MS家
的协议,奇怪吧:<>
Samba是nix系统上的一个SMB协议的实现,是早期为了和Windows兼容文件共享而做的功能目前MAC已经全面放弃自己的AFP协议转而投向SMB协议
设备仅支持SMB协议而没有mDSN协议辅助的话,MAC也可以识别此系统,不过会显示为超级古老的图标
Ubuntu系统的网络邻居可以自动发现mDNS服务并展示为不同的图标 在Ubuntu 2004里面,除去图标的不同,还增加了每个服务的描述
同样的,Ubuntu系统天然支持SMB协议,但是SMB协议需要mDNS协议的支撑,否则无法显示在网络邻居里面
除去前面流行并且工作的协议外,还有一些曾经使用但是已经废弃或者即将废弃的协议,在设备设计时,如果考虑兼容性,也同时需要支持
SSDP是一个基础协议,UPnP以及WS-Discovery 都是基于这个协议来实现的
Apple Filing Protocol AFP
Apple家的私有协议,开源有 netatalk 实现 AFP升级加密后,netatalk也不能和新版本的MAC兼容
苹果已经全面投向SMB的怀抱,AFP基本上可以忽略了
Network Basic Input/Output System NetBIOS 这个是Windows 9x/Me/XP等早期系统支持的名称解析协议,
类似于mDNS,新的Windows 10已经不建议支持此协议
Link-Local Multicast Name Resolution LLMNR , 这个也是和mDNS竞争的失败者,主要聚焦于局域网的名称解析,可以直接忽略了
一、关于树莓派动机如之前在某篇文章最后写的,发现了可以用ipv6做反向代理,以及树莓派可以安装Ubuntu 1404后,原本只是感兴趣的树莓派瞬间就提上了购买的日程。购买树莓派、外壳和散热片买了树莓派2B和一个外壳以及散热片。HDMI转DVI转接口因为显示器不支持HDMI,然后考虑到比较流行的HDMI转VGA是从数字信号转为模拟信号,转接口内部用芯片实现,且对于树莓派而言对于HDMI转VGA口选择无源还是有源的争论不绝于耳;所以直接上HDMI转DVI,不需要用到芯片转换,可靠方便多了。注意DVI口也有多种型号,注意显示器的支持。电源关于电源的问题,正好我有个SONY的15A电源适配器,就直接拿来用了。不过收到的树莓派里说明书中写着要求电源为大于18A的,但鉴于我不怎么用USB口,15A的树莓派运转起来还算良好。microSD卡microSD卡就是坑了,最开始搜到的树莓派需要用哪种内存卡,看到有人说是全尺寸的SD卡我就打算直接用闲置的SD卡了,class 10的应该能满足了;收到货等到要插卡的时候才发现需要的是microSD卡,真不知道是谁说的是全尺寸的SD卡。于是又下单等了一天收到microSD卡和读卡器。USB HUB因为本身出发点是做迷你服务器用,所以买了个带电源的USB HUB,供带动移动硬盘。二、安装Ubuntu 1404 LTS安装Ubuntu1404完全遵照的Ubuntu wiki中的步骤。下载并写入镜像照着wiki中提供的地址下载,下载完后解压img供写入。写入到microSD卡安装树莓派官方提供的软件和步骤。将microSD卡插入读卡器,然后插入电脑;打开Win32DiskImager,选择刚才解压的img镜像,选择microSD卡的盘符,然后write。安装设置Ubuntu注意这个Ubuntu镜像并不包含openssh,所以这是必须直连树莓派。插上键盘,接上显示器,然后接上电源,树莓派就开始工作了。Ubuntu启动完毕后,登录用户名密码都是ubuntu。开启root账户对于这个需要折腾的Ubuntu来说,直接用root账户会方便不少。sudo passwd root然后输入当前用户的密码,就是ubuntu了;然后输入两次root的新密码。su root输入root密码就进入root账户啦。使用全部分区空间此时Ubuntu并没有利用到全部SD卡的空间,需要手动设置。1fdisk /dev/mmcblk0删除第二分区:按d,再按2重建第二分区:按n,再按p,再按2,再按enter,再按enter,再按w然后重启Ubuntu1reboot输入resize2fs /dev/mmcblk0p2这样Ubuntu就使用到了全部SD卡的空间。更新源这是必须的步骤了apt-get updateapt-get upgrade设置SWAP此Ubuntu本身没有SWAP,需要手动建立,不过这里有个自动完成SWAP设置的软件,此软件会默认设置RAM两倍大小的SWAP分区,所以树莓派中会生成2G大小的SWAP分区。apt-get install dphys-swapfile安装并设置完成后,SWAP即设置完成。安装SSH服务器这个是必装的了,允许SSH访问apt-get install openssh-server这样就算初始化设置完成了,因为这个镜像相当于是Ubuntu的最小镜像,所以很多软件或依赖都没有安装,所以可能很多apt-get install都会顺带安装一大堆依赖。
0条评论