使用nodejs开发树莓派远程控制小车

前言


前些天入手了树莓派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,
  &
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值