2016年5月10日火曜日

Johnny-Fiveでマイコン制御5 - 超音波距離センサー

○使用部品

○超音波距離センサー制御端子
Arduino 0~13、A0~A5
Raspberry Pi(※) GPIO04~026

○基本回路/プログラム

◇Arduino
・PingFirmataのインストール
 Arduinoで以下の超音波距離センサーモジュールを使用するには、「PingFirmata」を書き込む必要があります。

・SR04 or HCSR04
・SRF05
・Parallax Ping
・SeeedStudio Ultrasonic Range
・Grove - Ultrasonic Ranger

 「PingFirmata」のソースをコピーして、Arduino IDEから書き込んでください。

・配線
 

・プログラム
http://johnny-five.io/examples/proximity-hcsr04/(デジタル入力端子使用の場合)
http://johnny-five.io/examples/proximity-hcsr04-analog/(アナログ入力端子使用の場合)

◇Raspberry Pi
Raspberry Piでは、Johnny-Fiveを使って超音波距離センサーモジュールを制御することができないため、代替えの方法を紹介します。

・「r-pi-usonic」と「math-statistics」モジュールのインストール
 次のように操作して、「r-pi-usonic」と「math-statistics」モジュールをインストールします。
①ターミナルを起動し、作業用のフォルダに移動します。
②「npm install r-pi-usonic math-statistics [Enter]」と入力します。

・配線
 

・プログラム

var usonic = require('r-pi-usonic');
var statistics = require('math-statistics');
var print = function (distances) {
var distance = statistics.median(distances);
process.stdout.clearLine();
process.stdout.cursorTo(0);
if (distance < 0) {
process.stdout.write('Error: Measurement timeout.\n');
} else {
process.stdout.write('Distance: ' + distance.toFixed(2) + ' cm');
}
};
var initSensor = function (config) {
var sensor = usonic.createSensor(config.echoPin, config.triggerPin, config.timeout);
console.log('Config: ' + JSON.stringify(config));
var distances;
(function measure() {
if (!distances || distances.length === config.rate) {
if (distances) {
print(distances);
}
distances = [];
}
setTimeout(function () {
distances.push(sensor());
measure();
}, config.delay);
}());
};
var echoPin = 24; // GPIO24(18pin)
var triggerPin = 23; // GPIO23(16pin)
var timeout = 750; // μs
var delay = 60; // ms
var rate = 5; // per sample
usonic.init(function (error) {
if (error) {
console.log("error");
} else {
initSensor({
echoPin: echoPin,
triggerPin: triggerPin,
timeout: timeout,
delay: delay,
rate: rate
});
}
});
view raw usonic.js hosted with ❤ by GitHub

 

0 件のコメント:

コメントを投稿