Программно-аппаратный комплекс «Контроль рабочего места ученика» предназначен для наблюдения за параметрами освещенности и температуры на рабочем месте ученика младших классов. В режиме реального времени комплекс отслеживает заданные показатели, постоянно информируя об их текущем значении. В случае, когда контролируемые показатели превышают нормативные или не дотягивают до них, подаются звуковые и видео сигналы.
Реализуется задача на элементной базе электронного конструктора Амперка Йодо AMP-S024. Программы написаны на языке JavaScript в среде Espruino Web IDE.
Требования заданы документом Санитарно-эпидемиологические правила и нормативы СанПиН 2.4.2.2821–10 «Санитарно-эпидемиологические требования к условиям и организации обучения в общеобразовательных учреждениях».
Для кабинетов начальных классов уровень освещенности кабинета должен соответствовать норме от 300 до 500 ЛК (пункт 7.2.4 СанПиН). Температура воздуха в учебных помещениях и кабинетах должна составлять 18-24°С (пункт 6.2 СанПиН).
В аппаратную часть комплекса входят датчики освещенности и температуры, в качестве средства индикации показаний датчиков используется экран компьютера, выходы показателей температуры и освещенности за пределы нормы сопровождаются звуковыми сигналами зуммера и световой индикацией светодиода.
При освещенности ниже нормативного значения светодиод горит непрерывно, при освещенности в пределах нормативных показателей светодиод не горит, при освещенности выше нормы светодиод мигает, включаясь на 0,1 секунды, затем в течение 0,9 секунд находится в выключенном состоянии.
При температуре ниже нормативного интервала зуммер звучит непрерывно, при температуре внутри нормативного интервала зуммер молчит, при температуре выше нормативного интервала зуммер издает прерывистый сигнал, включаясь на 0,2 секунды в течение каждой секунды.
Рис. 1. Внешний вид устройства до сборки в корпус
Рис. 2. Внешний вид устройства, собранного в корпус
var led = require('@amperka/led') .connect(P1); var buzzer = require('@amperka/buzzer') .connect(P5); var sensor = require('@amperka/light-sensor') .connect(A2); var thermometer = require('@amperka/thermometer') .connect(A4); setInterval(function() { var lx = sensor.read('lx').toFixed(0); USB.write(lx + ' lux' + '\r\n'); if (lx < 300) { USB.write('Malo sveta' + '\r\n'); led.turnOn(); } else { if (lx > 500) { USB.write('Mnogo sveta' + '\r\n'); led.blink(0.1, 0.9); } else { USB.write('Norma sveta' + '\r\n'); led.turnOff(); } } var grad = thermometer.read('C'); USB.write('Temperatura' + grad.toFixed(1) + '°C' + '\r\n'); if (grad < 18) { USB.write('Holodno' + '\r\n'); buzzer.turnOn(); } else { if (grad > 24) { USB.write('Jarko' + '\r\n'); buzzer.beep(0.2, 0.8); } else { USB.write('Norma tepla' + '\r\n'); buzzer.turnOff(); } } }, 1000);
Рис. 3. Рабочий стол программы с текстом программы справа и результатами исполнения слева
Рис. 4. Результаты выполнения программы на отдельном экране
Переменная led управляет свечением светодиода, подключенного к разъему Р1:
var led = require('@amperka/led') .connect(P1);
Переменная buzzer управляет звучанием зуммера, подключенного к разъему Р5:
var buzzer = require('@amperka/buzzer') .connect(P5);
Переменная sensor возвращает значение освещенности на разъем А2:
var sensor = require('@amperka/light-sensor') .connect(A2);
Переменная thermometer возвращает значение температуры на разъем А4:
var thermometer = require('@amperka/thermometer') .connect(A4);
Через определенный далее интервал опрашиваются датчики освещенности и температуры, их значения выводятся на экран и включают в различных режимах или выключают зуммер и светодиод:
setInterval(function() {
Переменная lx задается считыванием датчика освещенности:
var lx = sensor.read('lx').toFixed(0);
Значение переменной lx выводится на консоль или экран:
USB.write(lx + ' lux' + '\r\n');
Если освещенность ниже норматива, выводится надпись «Мало света» на экран или консоль и включается непрерывно светодиод:
if (lx < 300) { USB.write('Malo sveta' + '\r\n'); led.turnOn(); }
Если освещенность выше норматива, выводится надпись «Много света» на экран или консоль и включается мигающий светодиод:
else { if (lx > 500) { USB.write('Mnogo sveta' + '\r\n'); led.blink(0.1, 0.9); }
Если освещенность внутри норматива, выводится надпись «Норма света» на экран или консоль и выключается светодиод:
else { USB.write('Norma sveta' + '\r\n'); led.turnOff(); } }
Переменная grad задается считыванием датчика температуры:
var grad = thermometer.read('C');
Значение переменной grad выводится на консоль или экран:
USB.write('Temperatura' + grad.toFixed(1) + '°C' + '\r\n');
Если температура ниже норматива, выводится надпись «Холодно» на экран или консоль и включается непрерывно зуммер:
if (grad < 18) { USB.write('Holodno' + '\r\n'); buzzer.turnOn(); }
Если температура выше норматива, выводится надпись «Жарко» на экран или консоль и включается прерывистый зуммер:
else { if (grad > 24) { USB.write('Jarko' + '\r\n'); buzzer.beep(0.2, 0.8); }
Если температура внутри норматива, выводится надпись «Норма тепла» на экран или консоль и выключается зуммер:
else { USB.write('Norma tepla' + '\r\n'); buzzer.turnOff(); } }
В этой строке задается частота опроса датчиков и вывода результатов в миллисекундах. 1000 – датчики опрашиваются каждую секунду:
}, 1000);