树莓派新手入门教程

2023-05-16

原文:http://www.ruanyifeng.com/blog/2017/06/raspberry-pi-tutorial.html

作者: 阮一峰

日期: 2017年6月15日

树莓派(Raspberry Pi)是学习计算机知识、架设服务器的好工具,价格低廉,可玩性高。

本文根据我的亲身经验,介绍如何从零开始,搭建一个树莓派服务器,控制 LED 灯。你会看到,树莓派玩起来实在很容易。

我要感谢 100offer 对我提供赞助。100offer 是国内第一流的人力资源服务网站,本文结尾有他们的简介,最近想换工作的朋友可以看一下。

一、型号

树莓派是一个迷你电脑,集成在一块电路板。目前,最新的型号有两个。

(1)Raspberry Pi 3代 B 型

(2)Raspberry Pi zero (含 zero w)

虽然后者便宜,但是少了许多接口(比如只有一个 USB 口),CPU 和内存都比较低,配件也少,因此推荐购买第3代的 B 型。以下都针对这个型号,但大部分内容对 zero 也适用。

二、配件

树莓派本身只是一个主机。要运行起来,必须有配件。

(1)电源

Micro USB 接口的手机充电器,就可以充当电源,但输出必须是 5V 电压、至少 2A 电流。充电宝当电源也没问题。

(2)Micro SD 卡

树莓派不带硬盘,Micro SD 卡就是硬盘。最小容量8G,推荐使用16G和32G的卡。

(3)显示器

树莓派有 HDMI 输出,显示器必须有该接口。如果有 HDMI 转 VGA 的转接线,那么 VGA 显示器也可以。我用的是一个 7 寸的液晶监视器。

不过,显示器只在安装系统时需要,后面可以 SSH 登录,就不需要了。

(4)无线键鼠

树莓派内置蓝牙,USB 或蓝牙的无线键鼠都可以用。

就像显示器一样,如果树莓派已经装好系统,而且只当作服务器,无线键鼠也可以不配。

三、电子元件

除了配件,下面的实验还需要一些电子元件。

(1)面包板(一块)

(2)连接线(若干)

注意,连接线必须一端是公头,一端是母头。

另外,最好也备一些两端都是公头的连接线。

(3)LED 二极管(若干)

(4)270欧姆的电阻(若干)

四、安装系统

如果商家已经装好系统,可以跳过这一步,否则需要自己安装操作系统。

官方提供的操作系统是 Raspbian,这是 Debian 系统的定制版。

官方还提供一个安装器 NOOBS,建议通过它来安装 Raspbian,相对简单一点。

  1. 下载 NOOBS。
  2. 格式化 Micro SD 卡为 FAT 格式(操作指导)。
  3. 解压NOOBS.zip到 Micro SD 卡根目录。
  4. 插入 Micro SD 卡到树莓派底部的卡槽,接通电源,启动系统。

正常情况下,按照屏幕上的提示,一路回车,就能装好系统。

五、SSH 登录

安装系统后,树莓派就可以上网了(Wifi 或者网线)。这时,你要看一下它的局域网 IP 地址,可以使用下面的命令。


$ sudo ifconfig

然后,更改系统设置,打开 SSH 登录(默认是禁止的)。

接着,从另一台电脑 SSH 登录树莓派。下面的命令是在局域网的另一台电脑上执行的。


$ ssh pi@192.168.1.5

上面代码中,192.168.1.5是我的树莓派的地址,你要换成你的地址。树莓派的默认用户是pi

树莓派会提示你输入密码。pi的默认密码是raspberry。正常情况下,这样就可以登录树莓派了。接着,就可以进行各种服务器操作了,比如修改密码。


$ passwd

后面的实验需要将用户加入gpio用户组。


$ sudo adduser pi gpio

上面的代码表示将用户pi加入gpio用户组。

六、安装 Node

为了运行 Node 脚本,树莓派必须安装 Node,可以参考这篇文章。


$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt install nodejs

正常情况下,Node 8.x 版就已经安装成功了。


$ node -v
v8.1.0

七、点亮 LED

树莓派提供了一组对外的 IO 接口,称为 GPIO( 通用 IO 接口,General-purpose input/output)。

它的 40 个脚的定义如下图。

注意,左上角的第1针(3.3V)是一个方块,其他针脚都是圆的。将树莓派翻过来,背后可以看到 GPIO 有一个角是方的,通过这种方法就可以确认哪一个针眼是3.3V。

通过 GPIO ,树莓派可以与其他电子元件连接。下面根据 Jonathan Perkin 的文章,使用树莓派连接 LED 二极管。

这里需要用到面包板。本质上,面包板就是几根导线,上面开了许多可以连到导线的孔。

+极和-极是两根垂直的导线,标着1510这些数字的行,每一行都是一根水平的导线。导线与导线之间互不连接,另外,面包板的左右两半也是互不连接的。

然后,按照下面的图,将树莓派、面包板、LED 灯、电阻连起来。

上图中,红色导线表示电流的正极,从 GPIO 的第1针(3.3V)连到面包板。黑色导线表示电流的负极,从 GPIO 第三排的第6针(ground)连到面包板。它们连到面包板的哪个眼并不重要,但必须保证能组成一个完整的电路(上图的箭头流向)。注意,LED 二极管也有正负极,长脚表示正极,短脚表示负极。电阻没有正负极。

连接完成后,打开树莓派的电源,LED 应该就会亮起来了。

八、LED 控制脚本

下面,我们使用 Node 脚本控制 LED。

首先,将正极的导线从1号针脚(3.3V)拔出,插到第6排的11号针脚(上图的 GPIO 17)。这个针脚的电流是脚本可以控制的。

然后,在树莓派上新建一个实验目录,并安装控制 GPIO 的 Node 模块rpio。。


$ mkdir led-demo && cd led-demo
$ npm init -y
$ npm install -S rpio

接着,新建一个脚本led-on.js


// led-on.js
var rpio = require('rpio');

// 打开 11 号针脚(GPIO17) 作为输出
rpio.open(11, rpio.OUTPUT);

// 指定 11 号针脚输出电流(HIGH)
rpio.write(11, rpio.HIGH);

运行这个脚本,应该就会看到 LED 灯泡变亮了。


$ node led-on.js

再新建一个led-off.js脚本,只要改一行(完整代码看这里)。


// led-off.js
//...

// 指定 11 号针脚停止输出电流(LOW)
rpio.write(11, rpio.LOW);

运行这个脚本,LED 灯泡应该就会熄灭了。


$ node led-off.js

有了这两个脚本,让 LED 闪烁就轻而易举了。新建一个led-blink.js脚本。


// led-blink.js
var rpio = require('rpio');
rpio.open(11, rpio.OUTPUT);

function blink() {
  rpio.write(11, rpio.HIGH);
  setTimeout(function ledoff() {
    rpio.write(11, rpio.LOW);
  }, 50);
}

setInterval(blink, 100);

上面的脚本让 LED 每秒闪烁10次。


$ node led-blink.js

九、HTTP 服务器

通过控制 LED 可以做很多事,比如架设一个 HTTP 服务器,每当有人访问,LED 就闪烁一下。

首先,在刚才的目录里面装一个服务器模块。


$ npm install -S server

然后,新建一个脚本server.js(完整代码看这里)。


// server.js
var server = require('server');
var { get } = server.router;

// ...

server({ port: 8080 }, [
  get('/' ,  ctx => {
    console.log('a request is coming...');
    blink();
  }),
]);

console.log('server starts on 8080 port');

运行这个脚本。


$ node server.js

然后,再打开一个命令行终端,访问8080端口,LED 就会闪一下。


$ curl http://localhost:8080

好了,今天的教程就到这里。接下来,你可以自己探索,做更多的尝试,比如写一个测试用例脚本,只要测试失败 LED 就会长亮,或者组装一个8位的加法器。

(正文完)

================================

下面是推广时间,向大家推荐求职就业的好帮手----100offer。

如果你对现在工作不甚满意,希望寻找更好的职位,或者你已经有了很多工作邀请,感到无所适从,不知道哪个最合适自己,请尝试一下 100offer。它能让你节省精力,从海量机会中找到最适合自己的那个。

100offer 会对平台上的人才和企业进行严格筛选,让"最好的人才"和"最好的公司"相遇。点击这里注册,提交资料并通过网站对您的评估和配对后,就可以收获 5~10 个满足你要求的好机会。

(完)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派新手入门教程 的相关文章

随机推荐

  • 【目录】瑞芯微RV1126/RV1109学习笔记

    目录 瑞芯微RV1126 RV1109学习笔记 基础篇 RV1126 RV1109学习笔记 基础篇 xff08 1 xff09 资料与简介 RV1126 RV1109学习笔记 基础篇 xff08 2 xff09 基础入门使用 RV1126
  • word文档转html利器

    有需求 xff0c 就会有相应的技术出现 xff0c 以前知道word可以用来书写html网页 xff0c 那自然就可以转成html页面 xff0c 难道我们要用word开发html页面吗 xff1f 你可能会问 xff0c 我为什么要把w
  • 【RV1126/RV1109学习笔记】#RockX篇#(3)人脸检测

    文章目录 一 概述 二 流程 三 API说明 四 实现代码 一 概述 人脸检测是人脸识别 人脸属性分类 人脸编辑 人脸跟踪等任务必不可少的早期步骤 其性能直接影响到人脸识别等任务的有效性 尽管在过去的几十年里 不受控制的人脸检测取得了巨大的
  • 【RV1126/RV1109学习笔记】#RockX篇#(2)API说明

    文章目录 基础API 人脸相关API 基础API span class token comment brief 创建Rockx模块 param handle out 创建的模块的句柄 param m in RockX模块的枚举 ref Ro
  • 【问题解决】python安装bs4后,仍然报错 ModuleNotFoundError: No module named ‘bs4‘

    问题 我这里是windows上使用出现的问题 xff1a 代码中使用了 from bs4 span class token function import span BeautifulSoup span class token commen
  • 【问题解决】python报错 IndexError: list index out of range

    问题 list 遍历时报错 xff1a IndexError list index out of range 分析 可能是 xff1a list 下标 index 超出范围list 为空 解决 try span class token pu
  • 机械+固态双硬盘时机械硬盘卡顿问题解决

    机械 43 固态双硬盘时机械硬盘卡顿问题解决 参考文章 xff1a xff08 1 xff09 机械 43 固态双硬盘时机械硬盘卡顿问题解决 xff08 2 xff09 https www cnblogs com xia weiwen p
  • IDM下载百度资源出现403的解决方法

    IDM下载百度资源出现403的解决方法 参考文章 xff1a xff08 1 xff09 IDM下载百度资源出现403的解决方法 xff08 2 xff09 https www cnblogs com aucy p 9567375 html
  • _tcsrchr 的用法

    tcsrchr 查找字符串中某个字符最后一次出现的位置 两个参数 第一个参数 xff1a 字符串 第二个参数 xff1a 查找的字符 返回值 xff1a 指向最后一次在字符串中出现的该字符的指针 xff0c 如果要查找的字符再串中没有出现
  • 航模无人机中PWM信号频率浅谈

    航模中执行机构 xff1a 动力电调 xff0c 舵机等基本都是通过PWM信号来驱动的 xff0c 但不同的电机或电调输入的信号频率和占空比又是不一样的 xff0c 这个是由什么决定的呢 xff1f 今天就以我的理解来简单讲一讲 最早的航模
  • 公网IP TCP服务器调试

    在MCU上调试4G等模块时 xff0c 为了验证和平台TCP通信是否顺畅 xff0c 很多时候需要一个公网的IP环境能够直接和4G模块通信 xff0c 一些网络调试工具只能提供局域网内的TCP Server 博主找到一个好的网站提供这个功能
  • windows环境下安装opendr

    pip install opendr会报下面的错误 应该先安装glfw glfw是opengl的一个框架 xff0c pip install glfw 即可安装 下载 https github com polmorenoc opendr 后
  • DockerFile创建及案例

    DockerFile dockerfile是用来构建docker镜像的文件 xff0c 命令脚本参数脚本 xff01 构建步骤 编写一个dockerfile文件docker build 构建成为一个对象docker run 运行镜像dock
  • 结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程

    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程 一 xff0c 实验目标 以fork和execve系统调用为例分析中断上下文的切换分析execve系统调用中断上下文的特殊之处分析fork子进程启动执行时进程上下文的特殊之
  • SPI、UART、RS232、RS485、IIC 5种嵌入式经典通信总线协议

    文章目录 一 UART1 通信基础 并行和串行并行通信串行通信 2 通信基础 单工和双工3 通信基础 比特率4 通讯基础 异步和同步5 UART硬件连接6 UART控制器串口控制器工作原理介绍 xff1a FIFO模式及其作用 7 IO操作
  • 基于Modbus协议的C#串口工具开发

    xff08 Tips 本人纯萌新小白一枚 xff0c 文章只为记录自己的编程历史 xff0c 温故而知新 xff0c 能帮助到大家倍感荣幸 xff0c 有错误的地方劳烦指点 xff01 xff09 不多废话直接进入主题 xff01 本文旨在
  • MySQL中的mysqldump命令使用详解

    MySQL 有很多可以导入数据的方法 xff0c 然而这些只是数据传输中的一半 xff0c 另外的一般是从 MySQL 数据库中导出数据 有许多的原因我们需要导出数据 一个重要的原因是用于备份数据库 数据的造价常常是昂贵的 xff0c 需要
  • xrdp完美实现Windows远程访问Ubuntu 16.04【包括多人桌面与原生桌面】

    xrdp完美实现Windows远程访问Ubuntu 16 04 前言 xff1a 在很多场景下 xff0c 我们需要远程连接到Linux服务器 本文是Ubuntu xff0c 传统的连接主要分为两种 第一种 xff1a 通过SSH服务 xf
  • 蓝牙协议栈(Bluetooth stack)简介

    1 前言 本文只要对蓝牙协议栈做一个简单介绍 xff0c 包含hci层 acl链路 1 l2cap层 xff0c sdp服务及几个常见的profile xff0c 让初学蓝牙协议栈的人 对整个蓝牙协议栈有一个整体框架的了解 2 HCI层 H
  • 树莓派新手入门教程

    原文 xff1a http www ruanyifeng com blog 2017 06 raspberry pi tutorial html 作者 xff1a 阮一峰 日期 xff1a 2017年6月15日 树莓派 xff08 Rasp