前言
前些天入手了树莓派3代,为了能在raspberry Pi 上用上node.js,克服了各种坑,完成了一些配置,希望新手共勉。
项目概要
本项目可以实现远程控制小车实现前进后退及转弯,后续项目会实现许多传感器数据回送,我们先来看一下怎么实现远程控制。
图片
配置树莓派
更新系统
为了能直接下载node,建议更新系统
sudo apt-get update
sudo apt-get upgrade
安装node
用最新的官方镜像raspbian自带node,省去下面步骤
sudo apt-get install node
安装npm包管理工具
sudo apt-get install npm
安装gpio-admin
因为js本身并不能直接操控硬件及io口,所以要安装系统层面的库,这里使用gpio-admin,这里贴上官方github:https://github.com/rakeshpai/pi-gpio
这个步骤非常关键,其中有几处坑,按照网上的教程(都是几年前的)会出现错误,我已进行适当更改
mkdir gpio //自行创建文件夹
cd gpio //打开该文件夹
git clone git://github.com/quick2wire/quick2wire-gpio-admin.git
//用git工具下载gpio源码
cd quick2wire-gpio-admin
make //编译
这个步骤还没有完,因为这个库最后一次更新是四年以前了,那时还没有树莓派三代,所以直接在 make后就用sudo make install 命令,之后的程序运行时,gpio-admin会报错:错误提示为:error : Error when trying to open pin 16 gpio-admin : could not flush data to /sys/class/gpio/export : Device or resource busy
在这里要修改原C文件中的内容再安装。步骤如下:
cd quick2wire-gpio-admin //打开刚刚下载的文件夹
ls //列出文件夹内容
cd src //打开src目录
vim gpio-admin.c //修改原文件
找到这一行:
int size = snprintf(path, PATH_MAX, "/sys/devices/virtual/gpio/gpio%u/%s", pin, filename);
用这一行代替:
int size = snprintf(path, PATH_MAX, GPIO_CLASS_PATH "gpio%u/%s", pin, filename);
退出并保存,然后安装。
cd .. //退回quick2wire-gpio-admin目录
sudo make install //安装
大功告成,来看代码实现。
代码实现
一些思路
本次实验是基于websocket实时通讯并配合着前端的键盘事件完成的,所以要安装socket.io,jquery。但是在我的项目中还引入了其他的一些前端框架比如angularjs 和bootstrap这些是为了以后的项目做的所以大家如果只是为了实现本次实验可以不引入这么多库。本实验也可以通过ajax轮询方式实现,但是websocket更为方便。
先看一下依赖
{
"name": "car",
"version": "0.0.1",
"private": true,
&