Недавно я приобрел «знаменитый» набор инструментов, который включает в себя чашечный анемометр, дождемер и прибор для направления ветра. Код продукта - SEN-08942, он довольно популярен в известных магазинах прототипов.
Подробное руководство python можно найти здесь
Поскольку я предпочитаю javascript, я соответственно изменил код и заставил его работать в node js. Вот пример (я также добавил некоторые улучшения, например, преобразование масштаба bf) на случай, если кому-то это понадобится (любые лучшие идеи / улучшения приветствуются):
const Gpio = require("onoff").Gpio;
const moment = require("moment");
const beaufort = require("beaufort-scale");
const button = new Gpio(5, "in", "falling", { debounceTimeout: 10 });
/* A variable to store clicks */
let clicks = 0;
/* How often to get measurements */
let interval = 10000;
/* Anemometer radius in cm - the distance from the centre to the edge of one of the cups */
let radius = 9;
/* Anemometer adjustment parameter */
let adjustment = 2.4;
/* Watch the button for changes */
button.watch((err, value) => {
/* Increase the click counter variable */
clicks++;
});
/* Get measurements */
setInterval(() => {
/* Get speed in km/h */
let speed = calculateSpeed(interval, clicks, radius, adjustment);
/* Convert to beaufort scale*/
let bf = beaufort(speed, {lang: 'en', int: true});
console.log({ speed: speed, beaufort: bf.grade, description: bf.desc });
/* Reset clicks */
clicks = 0;
}, interval);
/**
* Calculates wind speed in km/h
* @param {int} interval
* @param {int} clicks
* @param {float} radius
* @param {float} adjustment
*/
const calculateSpeed = (interval, clicks, radius, adjustment) => {
/* Find circumference in cm */
let circumference = 2 * Math.PI * radius;
/* Find rotations */
let rotations = clicks / 2;
/* Find distance in km */
let distance = (circumference * rotations) / 100000;
/* Find speed (km per second) */
let speedPerSec = distance / (interval / 1000);
/* Find speed (km per hour) */
let speed = speedPerSec * 3600 * adjustment;
return speed;
};
Что я хотел бы знать, и кто-то может помочь Если у вас точно такой же набор, какое значение регулировки вы использовали (значение коэффициента анемометра). В учебнике в URL написано 1.18, но я подозреваю, что это значение не является идеальным, поскольку, даже если я резко раскручиваю анемометр, я никогда не получу высокие показания!
В ожидании ваших мыслей / идей!