(十九)樹莓派3B+ 遠程操作GPIO端口

準備

在之前的博客《(七)樹莓派3B+ 花生殼內網穿透》中介紹了花生殼的使用,這樣我們就可以訪問內網中的樹莓派了。
但是之前只是特定的22端口,也就是遠程連接上樹莓派。那麼我們能不能遠程控制樹莓派的GPIO呢?實際是可以的。花生殼的6元體驗版本給我們提供了1個域名2個端口,之前我們使用了一個花生殼分配的端口映射到樹莓派的22端口,現在我們使用花生殼提供的另外一個端口映射到3000端口,這樣我們可以外網訪問樹莓派上的node.js 項目。
希望看過我之前的Node.js 博客

操作

打開3000端口

  1. 安裝ufw
    apt-get installufw
  2. 啓用ufw
    ufw enable
    ufw default deny
  3. 開啓3306、22(ssh端口)端口
    ufw allow 3306
    ufw allow 22
    注意:如果不開啓22端口,下次啓動樹莓派時,系統的22端口會禁用,不能使用ssh登錄樹莓派。
    原文鏈接:《樹莓派安裝mysql並開啓遠程訪問(開啓3306端口)》

編寫代碼實現

如果看過我的Node.js 博客樹莓派學習記錄的應該可以看懂下面的代碼。


var express = require('express');
var router = express.Router();
var rpio = require('rpio');
var LED_PIN = 29;
rpio.open(LED_PIN, rpio.OUTPUT,rpio.LOW);

// 打開LED
function turnOn() {
	rpio.write(LED_PIN, rpio.HIGH);
}
// 關閉LED
function turnOff() {
	rpio.write(LED_PIN, rpio.LOW);
}

router.all('/raspberry/index', function(req, res, next) {
	var param = req.query || req.params; 
	let status = param.status;
	if (status === '1') {  // 開
		turnOn();
		res.end(JSON.stringify({
			msg: '開燈成功',
			status: 100,
		}));
	} else { // 關
		turnOff();
		res.end(JSON.stringify({
			msg: '關燈成功',
			status: 100,
		}));
	}
})
module.exports = router;

啓動項目

之前的《(二)樹莓派3B+ Node.js/pm2/git/nginx的安裝》這裏安裝的pm2 就開始起作用了,其實不用pm2 也可以的。
pm2啓動項目:pm2 start ./bin/raspberry bin目錄下啓動文件。
npm 啓動項目: npm start

訪問接口

瀏覽器地址欄輸入一下地址:這個是打開LED,
http://樹莓派分配的域名:樹莓派分配的端口/raspberry/index?status=1

總結

其實我們也可以看見其實這個操作並不難也不復雜,就是把之前node.js 項目和樹莓派端口操作簡單的結合了一下,但是需要有明確的思路和目的,然後就是把之前和各種知識結合使用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章