Программно-аппаратный комплекс «Контроль рабочего места ученика»

Программно-аппаратный комплекс «Контроль рабочего места ученика» предназначен для наблюдения за параметрами освещенности и температуры на рабочем месте ученика младших классов. В режиме реального времени комплекс отслеживает заданные показатели, постоянно информируя об их текущем значении. В случае, когда контролируемые показатели превышают нормативные или не дотягивают до них, подаются звуковые и видео сигналы.

Реализуется задача на элементной базе электронного конструктора Амперка Йодо 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);




Раз добрался до этой строки, значит, нашёл тут что-то интересное или полезное. Пользуйся браузером Firefox, который правильно отражает формулы, встречающиеся на страницах. Понравилось содержимое, помоги сайту материально. Отключи на минуту блокираторы рекламы и нажми на пару баннеров вверху страницы. Тебе ничего не будет стоить, а сайту поможешь оставаться на плаву.



Индекс цитирования Яндекс.Метрика Рейтинг@Mail.ru