Raspberry Pi

概述

树莓派(Raspberry Pi)在极客领域可谓大名鼎鼎,它的官网是:

https://www.raspberrypi.org/

从型号来看,它可以分为三大类型:

1)B型。面向开发者和学生。

2)A型和Zero型。面向批量制造类的客户。

从技术角度来说,树莓派虽然优秀,然而有实力制作这样开发板的公司,没有一千,也有几百。但世界范围内,只有Raspberry Pi和Arduino这两款开发板取得了成功。

Arduino是一款微控制器,主要用于电子工程领域,比如工业设备、传感器控制等。程序设计偏单片机风格,价格低廉,计算能力有限。它的官网:

https://www.arduino.cc/

而Raspberry Pi的定位是一个廉价的PC。其计算能力和目前的智能手机相当,但操作系统却和普通的桌面系统类似,因此,普通的PC应用可以很方便的移植过来。

Raspberry Pi官方OS是Raspbian,这是一个基于Debian的Linux发行版。除此之外,还有几个Ubuntu定制版。甚至微软也为此专门推出了Windows 10 IOT,其地址为:

https://developer.microsoft.com/en-us/windows/iot

这一点是很有象征意义的,这表明Raspberry Pi及其社区的影响力,已经到了MS这样的巨头也不能无视的地步了。

Raspberry Pi的成功之道

嵌入式开发板这种东西,在国内已经有十多年的历史。我至今仍然记得,2007年的时候,公司的一套类智能手机的开发板,居然要3000元。所以宝贝的不得了,不相干的人根本没机会把玩。

从知名度来说,友善之臂和周立功,算是国内开发板卖的比较好的了,但前者日子过得一般,后者的主要业务也转向工控领域。

那么Raspberry Pi的成功之道是什么呢?我个人总结起来,有以下几点:

1.把握住了市场对于廉价计算的需求。单片机讲究价格便宜,性能够用就好,而PC追求功能强大。因此,在单片机和PC之间,存在一个巨大的细分市场。这个市场既需要强大的计算能力,也需要便宜的价格。Raspberry Pi很好的满足了这一点。

2.通用的计算平台。很多手机开发板的计算能力和Raspberry Pi类似,但为什么Raspberry Pi取得了成功呢?因为,手机OS主要面向普通用户,对于程序开发不太友好,而Raspberry Pi则更多强调它是一个功能完整的PC。

它使用了普通的桌面Linux,集成了完整的开发环境,对于小程序,甚至可以直接在Raspberry Pi上编译执行,就和在PC上一样。

一般的服务器应用,如Apache等,也可以像在PC上那样安装运行。这些都使得它的应用场景较手机平台有了极大的扩展。

而国内的开发板,很多仍然停留在手机开发板的阶段,对于通用计算,理解支持都不到位。

3.开放的态度。Raspberry Pi的开放不仅体现在它使用了很多开源软件,更在于它的软硬件都是开源的。这样,也就给了极客群体扩展使用它的机会,反过来又促进了Raspberry Pi的发展。Raspberry Pi和极客群体之间的互动,使得它突破了产品或平台的限制,而构成了一个有机的生态系统。

反观国内的开发板生产商,或曰“解决方案提供商”,实际上陷入了一个怪圈。它们为了推销自己的硬件或者软件,而有意对某些部分闭源。但实际上,生态那么差,你就算免费我都懒得用。因为,嵌入式平台都是专有平台,需要程序员投入额外的精力,去理解一些离开该平台就用不到的知识,而这是需要成本的。

Raspberry Pi成立之初的非营利性质,反而帮助它们赚到了这个细分市场中最多的钱,这对于国内众解决方案提供商,真是一个莫大的讽刺。

4.完善的服务。很多国内厂商提供的所谓服务,无非也就是建个网站,让人下载一些资料而已。这样的等级实在太低了。

Raspberry Pi建有专门的软件仓库,安装软件就和PC上的Ubuntu一样方便。

这里,我们可以拿友善之臂的Nano PC作为一个对比。

两者的设计风格和外设接口,基本一致。Nano PC T2的硬件略好于Raspberry Pi 3B,好得不多,价钱也基本相当。

但是,资料、软件、生态,完全没得玩啊。你就算再便宜50块钱,我也会选择Raspberry Pi。新手绝对不推荐Nano PC!

唯一值得欣慰的是,友善之臂也开始在Github上创建自己的代码仓库,并借助了Debian的软件仓库,这在一定程度上,挽回了一些劣势。

卡片PC

常见的卡片PC,除了Raspberry Pi之外,还有Intel的NUC。但是后者除了体积小之外,售价和普通PC相当,不适合当玩具。

Raspberry Pi的成功案例(不定期更新)

http://dcaoyuan.github.io/papers/rpi_cluster/component.html

这是一个Raspberry Pi的集群。

Raspberry Pi 3B初体验

采购的Raspberry Pi 3B,今天(2016.5.10)终于到货了,比想象中要小巧一些。这里需要注意的是,35美元(或者类似价钱的RMB),除了板子之外,什么都没有。你必须自己准备电源和TF卡,好在这些东西都是标准件,并不难找。

安装OS

官方推荐使用NOOBS,但其实直接烧镜像更简单快捷。这里我使用的是Raspbian OS。

登录Raspberry Pi

1.串口登录

Raspberry Pi 3B的GPIO接口图如下所示:

其中,串口和树莓派的连线方式如下:

串口 树莓派
VCC +3.3V
RX TXD
TX RXD
GND Ground

这里我犯了一个错误,将VCC接到+5V上,差点将串口转接板烧掉。用户如果无法判断自己串口设备的VCC,建议先接上+3.3V试试。

然而这样做之后,串口并不稳定,无法顺利登录设备。原因在于:

http://ju.outofmemory.cn/entry/245310

2.网口登录

Raspberry Pi默认支持SSH登录。这里我使用putty作为SSH客户端。

首先,用网线将Pi和PC连接到同一个局域网中。然后进入路由器的界面,如下图:

“客户端列表”如下图:

其中raspberrypi就是Pi的hostname。

选择对应的IP地址,进行SSH登录。Pi的默认用户名是pi,密码为raspberry。需要注意的是,putty首次登录不会成功,需要关闭会话,并再次登录,才能获得相关密钥,并登录成功。

3.远程桌面登录

VNC或者MS远程桌面都能登录Pi,这里使用VNC协议。

Raspbian和Ubuntu一样,使用apt-get来安装软件包。但它默认使用的是国外的软件源,因此速度很慢。

我们首先在下面的网页中,查找适合的镜像软件源:

http://www.raspbian.org/RaspbianMirrors

国内的话,一般推荐清华和中科大的源。东软的源,虽然支持的开源软件数量最多,但速度完全不敢恭维。

http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/

http://mirrors.ustc.edu.cn/raspbian/raspbian/

修改源的方法:

sudo vi /etc/apt/sources.list

安装TightVncServer:

sudo apt-get install tightvncserver

首次运行tightvncserver,会让你设置远程访问的密码。

相应的客户端下载地址:

http://www.tightvnc.com/download.php

打开TightVncViewer,在Remote Host中填入Raspberry Pi的IP地址,注意IP后需要加“:1”,否则连接不上。

文件传输

Raspberry Pi默认支持SFTP协议。打开FileZilla,主机一栏填写:

sftp://192.168.1.102 (换成您的树莓派的IP地址。前面的sftp://一定要加)

填入登录的用户名、密码,点击快速连接即可。

扩展系统分区

官方镜像中,root分区只有2~3GB,这个对于较大的TF卡来说,是一个很大的浪费。因此,需要扩展系统分区。

方法一如下图所示:

方法二:

sudo raspi-config

VNC进阶教程

开机自动启动

https://github.com/antkillerfarm/antkillerfarm_crazy/blob/master/other/vncserver

将上面的脚本放到/etc/init.d/vncserver中。

然后执行以下命令:

sudo chmod +x /etc/init.d/vncserver

sudo update-rc.d vncserver defaults

sudo service vncserver start

调整分辨率

vncserver -geometry 1440x900 :1

并不是所有的分辨率Pi都支持。Pi的默认分辨率是800x600,其他支持的分辨率还有1440x900。(不全,有兴趣的自己慢慢试)

修改hostname

默认的hostname是raspberrypi。将/etc/hostname和/etc/hosts中的相应字段,改成你想要的名字,保存重启即可。

UPNP(二)

upnp-inspector

upnp-inspector是一个局域网内的UPNP协议的嗅探分析器。可充当DMC,推送多媒体数据到相关DLNA设备。安装方法如下:

sudo apt-get install upnp-inspector

upnp-inspector的功能包括:

1.列出局域网内的UPNP设备。

2.列出UPNP设备所支持的UPNP服务。

3.列出UPNP服务所支持的函数,并可发送相关函数。(左键双击树状列表中的函数名即可)

upnp-inspector是coherence的一部分。后者是一个Python语言写的DLNA框架。它的官网:

http://coherence-project.org/

upnp-inspector的代码地址:

https://github.com/coherence-project/UPnP-Inspector

libmcupnp

libmcupnp是一个基于libupnp的Control Point实现,用C++写的。从代码来看,明显参考了libupnp里的demo示例。

https://sourceforge.net/projects/libmcupnp/

gupnp

这是GNOME项目的upnp库,使用libsoup处理HTTP,libxml处理XML。它的官网是:

https://wiki.gnome.org/Projects/GUPnP

Scala

官网:

http://www.scala-lang.org/

教程:

http://www.runoob.com/scala/scala-tutorial.html

sbt

sbt是scala的构建工具,其作用类似于Java的Ant和Maven。

官网:

http://www.scala-sbt.org/

教程:

https://github.com/CSUG/real_world_scala/blob/master/02_sbt.markdown

安装

echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt

参见:

http://www.scala-sbt.org/release/docs/Installing-sbt-on-Linux.html

常用命令

sbt有一个和scala类似的命令行交互界面,可以输入相关的命令。其中常用的有:

  • compile

  • package

  • run

GUI

scala的GUI方案和Java完全一致,只要Java能用的GUI,scala都能用。这里仅以JavaFX为例讨论scala的GUI开发。

方法一:采用一般的scala调用Java的方式。参见:

http://alvinalexander.com/scala/scala-javafx-hello-world-example

正如上面网页指出的,这里的main函数实际上是有一定技巧在里面的,写起来并不简洁,而且代码风格更像是Java,而不是scala。

方法二:ScalaFX

ScalaFX是对JavaFX的封装,风格更接近于scala。

官网:

http://www.scalafx.org/

sbt支持:

libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.92-R10"

Raspberry Pi, UPNP(二), Scala相关推荐

  1. openhd 树莓派_玩转树莓派Raspberry Pi 篇二:XBMC篇

    玩转树莓派Raspberry Pi 篇二:XBMC篇 2014-04-14 11:23:51 543点赞 737收藏 114评论 大家好,又见面了. 知乎上有人问"给 PC 装黑苹果的人是什 ...

  2. 【Raspberry Pi 3试用体验】搭建minidlna服务器(结项二

    传送门:[Raspberry Pi 3试用体验]搭建Samba服务器(结项一) http://bbs.elecfans.com/jishu_900387_1_1.html [Raspberry Pi ...

  3. 智能垃圾桶(十二)——电路图软件fritzing+raspberry pi pico(树莓派pico)

    文章目录 一.起因 二.raspberry pi pico元件库 三.小试牛刀 一.起因 总是看到这种图,却一直不知道叫啥,上午搜索半天才知道是电路图软件fritzing,找了找官网,发现不是免费,伤 ...

  4. 适用于树莓派Raspberry Pi的嵌入式QT平台(二) -- 在Windows下用Qt Creator开发编译Raspberry Qt 5应用程序...

    接着上篇 "交叉编译安装Qt Embedded 5.5",我们已经成功在Windows上交叉编译了Raspberry Pi的嵌入式Qt 5.5.那么我们就可以开始开发基于Qt 5的 ...

  5. VLOG丨树莓派Raspberry Pi 3安装PLEX并挂载USB硬盘打造最牛的微型家庭影音服务器2018...

    视频介绍 树莓派3安装目前最流行的PLEX服务器,实现既能最大限度降低功耗,也能随时随地观看分享影片. 一.在树莓派下安装PLEX媒体服务器 1.在终端,将你的树莓派更新至最新 sudo apt up ...

  6. raspberry pi_通过串行蓝牙从Raspberry Pi传感器单元发送数据

    raspberry pi 介绍 (Introduction) When building portable sensors we often want to calibrate and double- ...

  7. 微软的.NET Core开始支持Raspberry Pi 3

    微软的 .NET Core 正在向 Raspberry Pi 3 发展,并且适用于 ARM 设备的官方 .NET 2.0 核心将于今年晚些时候发布.微软最近开放了 .NET 核心的编程框架,目前的 A ...

  8. 使用Linux,Python和Raspberry Pi酿造啤酒

    十多年前,我开始酿制自己的啤酒. 像大多数自家酿制的啤酒一样,我从我的厨房开始做基于提取物的啤酒. 这需要最少的设备,仍然可以酿出真正可口的啤酒. 最终,我使用了一个大冷却器来制作麦芽糖糊,进行全谷物 ...

  9. raspberry pi_Linux Foundation安全徽章,Raspberry Pi成功,白宫工具等

    raspberry pi 在本周的开源新闻摘要中,我们介绍了Linux Foundation的新安全徽章程序,Raspberry Pi成功,白宫政府的新工具以及更多开源新闻! 2015年8月22日至2 ...

最新文章

  1. springBoot 打war包 程序包com.sun.istack.internal不存在的问题
  2. centos7安装Samba服务
  3. 电感和磁珠的区别及应用场合和作用
  4. 计算机组成与结构第二章ppt,计算机组成原理(华科版)第二章 运算方法与运算器.ppt...
  5. jQuery中ajax的触发时机,javascript - 如何在启动Ajax查询的jQuery中触发方法change() - 堆栈内存溢出...
  6. 响应文件是不是标书_什么是标书?投标书有哪些分类?标书和投标书的不同?...
  7. ABAP web service schema node的处理
  8. 极限学习机原理(含公式推导透彻)
  9. 如何用犀牛自带的电池快速制作tekla自定义截面
  10. 英尺英寸和厘米的换算_英尺米换算(英尺英寸与厘米换算器)
  11. 远程计算机怎么桌面显示不全,桌面显示不全怎么设置
  12. 异常检测时间序列_神经病学时间序列/异常检测:分层时间记忆
  13. 伸展树(一) - 图文解析与C语言实现
  14. React中的PureComponent,refs
  15. CREO5.0.6.0基本操作与导出常用图保姆级教程
  16. kettle将文件路径定义为_Kettle 文件操作
  17. 华为设备无线环境中的MAC认证
  18. 贝尔宾九种团队角色理论总结(转)
  19. Acrel-2000E/B配电室综合监控系统的应用
  20. win10系统U盘安装详细经验附系统软件

热门文章

  1. php 地图两点距离计算,计算地图上两点间的距离PHP类
  2. Bootstrap模态框遮罩问题
  3. net start mysql 发生系统错误2 系统找不到指定的文件
  4. 迭代器自定义遍历对象
  5. css 设置背景图片模糊,内容不模糊
  6. echarts生成json地图最简单代码
  7. 三维重建:深度传感技术的中外差异
  8. OpenCV视频进度播放控制
  9. IOS调试移动端弹窗遮罩input框focus和click事件失效
  10. 猫狗分类--Tensorflow实现