前段时间集团举行前端IOT比赛,借此机会熟悉了树莓派相关的东西,特此记录一些相关的文档和开发指南。javascript
先介绍一些树莓派的入门教程html
微雪电子-树莓派硬件中文官网java
ssh连接树莓派node
ssh pi@dd.dd.dd.dd(ip)
密码:raspberrylinux
设置显示设备git
推荐选购3.5吋或者5吋的HDMI显示设备,我第一次买的3.2吋的串口显示器,占用了我20个串口的针脚。github
设备连接见这里npm
使用3.5吋显示器浏览器
cd /boot/LCD-show/
./LCD35-show
使用HDMI输出
cd /boot/LCD-show/
./LCD-hdmi
设置旋转屏幕
设置显示方向
安装完触摸驱动后,能够经过运行如下命令修改屏幕旋转方向。
旋转0度:
cd /boot/LCD-show/
./LCD35-show 0
旋转90度:
cd /boot/LCD-show/
./LCD35-show 90
旋转180度:
cd /boot/LCD-show/
./LCD35-show 180
旋转270度:
cd /boot/LCD-show/
./LCD35-show 270
声音设置为非HDMI输出
Bash
sudo amixer cset numid=3 1
须要注意的是若是你是浏览器播放声音。。拔掉显示器后貌似浏览器就进入后台模式不播放声音了。
介绍一些相关的nodejs的库
https://github.com/rwaldron/j...
一个适配各类板子的串口的基础库,当你须要点亮LED小灯泡的时候须要用到它
Raspi-io
Raspi-io is a Firmata API compatible library for Raspbian running on the Raspberry Pi that can be used as an I/O plugin with Johnny-Five.
和上面一个库搭配使用。
rpio
https://github.com/jperkin/no...
This is a high performance node.js addon which provides access to the Raspberry Pi GPIO interface, supporting regular GPIO as well as i²c, PWM, and SPI.
一个控制打开某个串口针脚的基础库。
serialport
https://github.com/EmergingTe...
一个连接控制硬件的基础库,好比控制USB串口,和连接USB串口的设备进行通讯等,他有不少版本,树莓派的版本见这里
https://www.npmjs.com/package...
安装有点,麻烦。我折腾了3小时、、、、
点亮一个LED灯
LED灯分为简单的两个针脚的二极管灯,点亮见前面阮一峰博客,下面重点介绍一下RGB的LED灯
如上所示。这样的灯点亮的教程比较少。
第一步选择对应的串口针脚,首先不要把插针脚2,即:+5V口那个。
我插了两个分别是RGB为:[29,31,33],[36,38,40]
代码以下
var five = require("johnny-five"); var Raspi = require('raspi-io') var rpio = require('rpio'); var isLED1On=false; var isLED2On=false; var LED = { LED1:null, LED2:null, init(LED1=[29,31,33],LED2=[36,38,40]){ var board = new five.Board({ io:new Raspi({enableSoftPwm:true}) }); this.LED1=LED1; this.LED2=LED2 board.on('ready',function(){ return new Promise(function(resolve,reject){ var led1 = new five.Led.RGB({ pins: { red: `P1-${LED1[0]}`, green: `P1-${LED1[1]}`, blue:`P1-${LED1[2]}`, } }) var led2 = new five.Led.RGB({ pins: { red: `P1-${LED2[0]}`, green: `P1-${LED2[1]}`, blue:`P1-${LED2[2]}`, } }) // 打开 11 号针脚(GPIO17) 做为输出 rpio.open(LED1[0], rpio.OUTPUT); rpio.open(LED1[1], rpio.OUTPUT); rpio.open(LED1[2], rpio.OUTPUT); rpio.open(LED2[0], rpio.OUTPUT); rpio.open(LED2[1], rpio.OUTPUT); rpio.open(LED2[2], rpio.OUTPUT); rpio.open(LED1[0], rpio.HIGH); rpio.open(LED1[1], rpio.HIGH); rpio.open(LED1[2], rpio.HIGH); resolve(board); }) }) }, openLED1(){ console.log('led1'+JSON.stringify(this)) rpio.write(this.LED1[0], rpio.HIGH); rpio.write(this.LED1[1], rpio.HIGH); rpio.write(this.LED1[2], rpio.HIGH); isLED1On=true; }, openLED2(){ rpio.write(this.LED2[0], rpio.HIGH); rpio.write(this.LED2[1], rpio.HIGH); rpio.write(this.LED2[2], rpio.HIGH); isLED2On=true; }, closeLED1(){ console.log('led1'+JSON.stringify(this)) rpio.write(this.LED1[0], rpio.LOW); rpio.write(this.LED1[1], rpio.LOW); rpio.write(this.LED1[2], rpio.LOW); isLED1On=false; }, closeLED2(){ rpio.write(this.LED2[0], rpio.LOW); rpio.write(this.LED2[1], rpio.LOW); rpio.write(this.LED2[2], rpio.LOW); isLED2On=false; }, flashLED1(){ if(isLED1On){ return; } var self = this; self.openLED1(); setTimeout(function () { self.closeLED1(); },3000); }, flashLED2(){ if(isLED2On){ return; } var self = this; self.openLED2(); setTimeout(function () { self.closeLED2() },3000); }, } module.exports={ led:LED }
更多内容详见个人博客