用 Node.js 玩转树莓派 —— 入门篇

发表于 5年以前  | 总阅读数:1768 次

Raspberry Pi(树莓派),是英国的树莓派基金会所开发的单板计算机,它是由 Eben Upton 以及他的同事设计的,最初的目的是以低价硬件及自由软件促进学校的基础计算机科学教育。

树莓派 Model B+

树莓派 Model B+

在物联网(IoT)高速发展的今天,树莓派以低廉的价格、开放的硬件/软件生态、灵活的通用输入输出(GPIO)接口,成为学习、研究物联网和万维物联网(WoT)的理想设备。

树莓派不是单片机,不同于嵌入式硬件设备,它不是为集成于单一智能产品而设计的。它实际上是一台完整的电脑,只不过这台电脑只有一张 IC 卡片大小,用 5V 直流电源供电,并且有可以用程序来控制逻辑电平输出的通用接口。这意味着,如果你要为单一智能产品设计集成一体的智能电路,那么你应该选择一款可编程的 Arduino 或者其他微控制器芯片(不过树莓派也可以用作辅助开发工具),而如果你想做分布式的传感器和执行器网络,以便实现与万维网连接的智能家居系统,那么树莓派当然是再好不过的选择。

大约三年前我就接触了树莓派,我的同事阿肆更曾经仔细研究过,并分享了文章《在树莓派上使用 node.js 控制步进电机》。

不过我之前一直没怎么研究,直到最近因为翻译一本 WoT 的书加上一些其他原因,而且树莓派经过这些年的发展也更加成熟,于是就重新入手最新版的树莓派 Model B+,开始正式写一些东西玩,比如:操控 LED 灯。

树莓派可以用 Scratch、Python、C/C++ 等各种语言进行编程,而因为我这些年研究最多的语言是 JavaScript,所以也就自然希望使用 JavaScript 作为首选的编程语言。幸运地是,Node.js 在树莓派 Model 3B 下运行表现好的超出我的意料,在树莓派下跑 Node.js 4.4.7 LTS,无论是易用性、稳定性还是性能,都非常出色。

其实除去上面介绍的这些,最关键的一点是:树莓派真的非常有趣,想象一下,你有一台只有一张 IC 卡片大小的低功耗廉价电脑(Model 3B 在京东上的售价是 298 元),它可以跑几乎一切 ARM 6 架构下可以运行的软件,同时还可以拥有操控硬件的能力,你可以用它来控制温度湿度传感器,检测你房间内的温度湿度,并智能指挥你的空调该在什么时候开关机,更进一步,你还可以收集和存储从传感器获得的数据,然后将它用 ECharts 在 浏览器上用好看的图表展现出来!

澄清几个误区

在探索树莓派之前,我们先一一澄清几个常见的误区:

  • 树莓派只是一个单板,入手之后还得给它配置许多外设才能使用。
  • 树莓派安装、配置起来很麻烦,只适合专业人士。
  • 树莓派只有专用软件,和我的PC、移动设备不兼容。
  • 没有必要的硬件知识很难上手树莓派硬件开发。

要购买外设吗?

要运行树莓派,实际上并不需要入手太多外设,我们先大致看一下树莓派(Model 3B)本身集成了哪些资源:

  • CPU 和 GPU: Broadcom BCM2835
  • 内存:1024 MB(LPDDR2)
  • 视频输入: 15-针头 MIPI 相机 (CSI) 界面,可被树莓派相机或树莓派相机(无红外线版)使用
  • 视频输出: HDMI 可接入大多数通用 HDMI 接口的显示设备
  • 音源输入:I²S
  • 音源输出:HDMI 电子输出或I²S
  • 板载存储:MicroSD 卡插槽
  • 板载网卡:10/100Mbps 以太网接口(RJ45接口),支持802.11n无线网络及蓝牙4.1
  • 连接外设:4 个 USB 口,26 个 GPIO(一部分通用,另一部分可复用)
  • 电源输入:5V 电压 (通过 MicroUSB 或经 GPIO 输入)

可以看一下入手树莓派后几个关键的"辅助设备":

首先树莓派电源支持 MicroUSB,绝大多数 Android 手机使用的充电器都可以给树莓派供电,相信很少有人手边没有,因此不需要额外购买此外设。

显示器,其实可以不需要(后面会说),实在想要用显示器的话,大多数支持 HDMI 输入的显示器都可以直接使用。如果想要单独配置的话,可以考虑小型车载高清液晶显示器,好一点一台四五百块钱,效果如下:

树莓派+液晶显示器

我使用一款车载 LCD 显示器作为树莓派显示器

键盘鼠标,其实也可以不需要(后面会说),想要的话,普通的 USB 键盘鼠标就可以。不过树莓派是低功耗的,驱动能力有限,如果接了多台 USB 外设,最好配置自带供电的 USB 集线器,如果要玩硬件开发的话,还是应该把功率留给 GPIO 使用。

存储设备,采用 8GB 以上的 MicroSD Card,甚至在很多旧手机上就可以找到。

声音输出,如果用 HDMI 设备,是视频音频集成的,不需要额外的接入。

网卡和蓝牙,Model B/B+ 内置了无线网卡,Model 3B 还集成了蓝牙,所以这些理论上都不需要额外购买。

以上是主要辅助设备,其实基本上都有或者容易找到,那么我们要买些什么呢?如果你要好好玩的话,建议你买:

  • 自带供电的 USB 集线器,如果你想要使用一些 USB 外设的话。
  • 几块散热片(一般几块钱就够了),因为树莓派 Model 3B 的 CPU 和 GPU 运算能力比较强,发热量还是比较高的,可以给它们贴上散热片。
  • 通用的电子元件可以提前准备一些,但是也不是必须的,要做东西的时候再买也可以(这时候有点怀念在深圳的时候,如果在深圳,自己周末可以去华强北逛,随时买各种元件,种类丰富,非常便宜,现在大部分只能网购,送货比较慢)。通用元件大部分都很便宜,各种常用0.25w电阻(几百个也才几块钱),电容、晶体管、LED灯、排线(杜邦线)、面包板、PCB电路板、按键开关等等。剩下的特定元件就等做东西的时候再买,或者提前购买一些也行。
  • 工具箱/收纳盒:因为元件比较散,如果家里没地方放,再买个工具箱放起来是个好习惯。
  • 电工工具:如万用表、电烙铁等

差不多这些就够了,这是对于玩硬件的同学来说购买的东西,如果不打算玩硬件(有的同学拿它做服务器用,其实也可以),最后三条都可以不买。

树莓派系统的安装

树莓派的芯片是 ARM 6 架构的处理器(Broadcom 公司的 BCM2835),在它上面可以跑各种版本为 ARM 6 发布的 Linux 系统。官方推荐的系统是 Raspbian。从它的名字就可以看出,这个系统是 Debian 的一个分支(这意味着足够标准和通用了,Debian 的另一个著名分支是很多人,包括我在内,最喜欢用的 Ubuntu)。

树莓派的系统安装也非常简单,对于熟悉 Linux 系统的同学来说,只不过从官方下载最新的 Raspbian 镜像,然后写入一张空白的 MicroSD 卡里,将这张卡放入树莓派板底部的卡槽里,然后给树莓派接上电源就可以了。

如果你有配 HDMI 显示器和键盘鼠标,你就可以看到系统的启动画面,几秒钟后就能进入 Raspbian 系统的图形化 UI 界面。而事实上,通常我不推荐配置键盘鼠标这样的通用外设(还是把 USB 留给其他用途吧)。我们可以通过网线将树莓派和路由器连接起来,然后查看一下 IP 地址,从电脑上用终端 SSH 登录上树莓派就可以很愉快地玩耍了。

树莓派 Raspbian 系统的默认用户账号是 pi,初始密码是 raspberry

树莓派的软件安装

Rasbian 系统是 Debian 系统的分支,所以支持万能的 apt-get。大多数软件都支持 ARM6 编译,包括 Node.js,所以安装软件不是什么问题。唯一可能的问题大概是树莓派功耗低,I/O 操作较慢,所以一些软件编译的时间长一些。

在树莓派下给 Node.js 安装 npm 软件包的时候,请带上 --production 参数,这样会省掉很多 devDependancies 安装,大大提升速度!

驱动无线网卡

树莓派 Model 3B 板上集成了无线网卡,直接编辑 /etc/wpa_supplicant/wpa_supplicant.conf 配置:

sudo vim /etc/wpa_supplicant/wpa_supplicant.conf

编辑为:

ctrl_interface=/var/run/wpa_supplicant
    ap_scan=1
    network={
        ssid="<wifi名称1>"
        scan_ssid=1
        psk="<wifi密码1>"
        priority=5
    }
    network={
        ssid="<wifi名称2>"
        psk="<wifi密码2>"
        priority=1
    }

如果有多个 wifi 网络,你可以设置多个不同的连接,通过优先级 priority 来指定先连接哪个(数字越大优先级越高),这样做尤其方便你把树莓派带来带去。

连接了 wifi 之后,就可以省掉一条网线,通过无线连接 ssh 登录树莓派进行操作了。

树莓派和 GPIO 编程

树莓派的开发基础是用程序来控制板上的 GPIO 引脚的逻辑值(也就是电平高低)。

树莓派 GPIO

_

这一排中右侧标记为橙色的引脚就是 GPIO

_

GPIO 引脚可以设置为输入和输出两种状态,输出状态即是由程序控制引脚的输出,0表示低电平,1表示高电平(此时该引脚为+3.3V电压)。输入状态是由外接设备给该引脚引入信号,输入状态下的引脚是只读的不可写,可以读取状态。此时的引脚还有上拉或下拉电阻可以设置。

GPIO 编程的基本原理就是这样,本文暂不做太详细的介绍,后续文章里我会详细介绍。

下面我们通过一个直观的例子就可以体会用树莓派控制硬件设备有多简单:

  1. 取一个发光二极管元件
  2. 将它的正极连接 P36 脚(即 GPIO 16),将它的负级接旁边的 P34 脚(GND,接地)
  3. 编写程序 blink.js:
//blink.js
    var Gpio = require("rpio2");
    var led = new Gpio(36);  //创建 P36 引脚

    led.open(Gpio.OUTPUT, Gpio.LOW); //设置为 OUTPUT、默认低电平

    for(var i = 0; i < 10; i++){
        led.toggle();  //切换 led 的电平状态
        led.sleep(500);  //等待 500ms
    }

    led.close();

安装 rpio2 库,执行 node blink.js,就会看到连接的 LED 元件闪烁 5 下,每次闪烁 1s。

总结

不得不说,树莓派是一个很好玩的电子设备,如果你学习做和硬件相关的编程,打算涉足 IoT,或者 WoT(Web of Thing),那么树莓派是一个很好的选择。

你入手树莓派了吗?你用树莓派来玩什么?欢迎在底下评论区讨论。

后续文章里我会详细介绍用 Node.js 开发 GPIO 的细节,除了软件编程外,还包括一些硬件基本概念比如上拉、下拉电阻,系统中断调用,I2C,等等。

让我们一起来玩树莓派吧~

 相关推荐

刘强东夫妇:“移民美国”传言被驳斥

京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。

发布于:1年以前  |  808次阅读  |  详细内容 »

博主曝三大运营商,将集体采购百万台华为Mate60系列

日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。

发布于:1年以前  |  770次阅读  |  详细内容 »

ASML CEO警告:出口管制不是可行做法,不要“逼迫中国大陆创新”

据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。

发布于:1年以前  |  756次阅读  |  详细内容 »

抖音中长视频App青桃更名抖音精选,字节再发力对抗B站

今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。

发布于:1年以前  |  648次阅读  |  详细内容 »

威马CDO:中国每百户家庭仅17户有车

日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。

发布于:1年以前  |  589次阅读  |  详细内容 »

研究发现维生素 C 等抗氧化剂会刺激癌症生长和转移

近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。

发布于:1年以前  |  449次阅读  |  详细内容 »

苹果据称正引入3D打印技术,用以生产智能手表的钢质底盘

据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。

发布于:1年以前  |  446次阅读  |  详细内容 »

千万级抖音网红秀才账号被封禁

9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...

发布于:1年以前  |  445次阅读  |  详细内容 »

亚马逊股东起诉公司和贝索斯,称其在购买卫星发射服务时忽视了 SpaceX

9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。

发布于:1年以前  |  444次阅读  |  详细内容 »

苹果上线AppsbyApple网站,以推广自家应用程序

据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。

发布于:1年以前  |  442次阅读  |  详细内容 »

特斯拉美国降价引发投资者不满:“这是短期麻醉剂”

特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。

发布于:1年以前  |  441次阅读  |  详细内容 »

光刻机巨头阿斯麦:拿到许可,继续对华出口

据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。

发布于:1年以前  |  437次阅读  |  详细内容 »

马斯克与库克首次隔空合作:为苹果提供卫星服务

近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。

发布于:1年以前  |  430次阅读  |  详细内容 »

𝕏(推特)调整隐私政策,可拿用户发布的信息训练 AI 模型

据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。

发布于:1年以前  |  428次阅读  |  详细内容 »

荣耀CEO谈华为手机回归:替老同事们高兴,对行业也是好事

9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI操控无人机能力超越人类冠军

《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI生成的蘑菇科普书存在可致命错误

近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。

发布于:1年以前  |  420次阅读  |  详细内容 »

社交媒体平台𝕏计划收集用户生物识别数据与工作教育经历

社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”

发布于:1年以前  |  411次阅读  |  详细内容 »

国产扫地机器人热销欧洲,国产割草机器人抢占欧洲草坪

2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。

发布于:1年以前  |  406次阅读  |  详细内容 »

罗永浩吐槽iPhone15和14不会有区别,除了序列号变了

罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。

发布于:1年以前  |  398次阅读  |  详细内容 »
 相关文章
为Electron程序添加运行时日志 5年以前  |  20427次阅读
Node.js下通过配置host访问URL 5年以前  |  5915次阅读
用 esbuild 让你的构建压缩性能翻倍 4年以前  |  5819次阅读
 目录