цифровая электроника
вычислительная техника
встраиваемые системы

 

Система оповещения о зависании компьютера на Arduino

Автор: Mike(admin) от 2-03-2020, 05:15

Этот проект представляет собой систему оповещения (сигнализации) на основе Arduino для мониторинга работы компьютера. В случае зависания компьютера она издаст звуковой сигнал предупреждения.


Система оповещения о зависании компьютера на Arduino

Проект состоит из двух частей: программы, которая запускается на компьютере, и аппаратно-программной части платформы Arduino, подключенной через USB-порт.


Компьютерная программа отправляет предопределенный символ в Arduino с интервалом в 1 секунду. Arduino читает этот символ из данных, отправленных с компьютера. Если он не получает никакого символа в течение 10 секунд, он издает звук из зуммера, подключенного к контакту 10. Принципиальная схема подключения очень проста и выглядит следующим образом.


Система оповещения о зависании компьютера на Arduino

Компьютерная программа написана на Visual Basic. Это простое приложение Windows Forms, содержащее форму (Form1), метку (Label1) и таймер (Timer1).


Интервал таймера Timer1 установлен на 1000 мс.


Исходный код компьютерной программы приведен далее.



Imports System.IO.Ports

Public Class Form1

    Dim port As SerialPort

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        port = New SerialPort("COM4", 9600)
        port.Open()
    End Sub

    Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
        port.Close()
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        On Error GoTo error1
        port.Write("1")
        Label1.Text = Now() & " - Sent ""1"" on COM4 baud 9600 - Success!"
        Exit Sub

error1:
        Label1.Text = Now() & " - " & ErrorToString()
    End Sub
	
End Class

Код скетча Arduino:



char incomingChar = 0; // для входящих последовательных данных
int NoSignalCounter = -60; // время запуска компьютера

void setup() {
  Serial.begin(9600); // открываем последовательный порт, устанавливаем скорость передачи данных 9600 бит/с
}

void loop() {
  while (Serial.available() > 0) {
    NoSignalCounter = 0;
    incomingChar = Serial.read();
    if (incomingChar == '1') { // '1' это символ, ожидаемый от компьютера
      noTone(10);
    }
    else {
      tone(10, 2400); // тревога: символ, отправленный с компьютера, отличается от ожидаемого
    }
  }
  NoSignalCounter++;
  if (NoSignalCounter >= 10) { // тревога: за последние 10 секунд с компьютера не было получено ни одного символа
    NoSignalCounter = 0;
    tone(10, 2400); //(контакт, частота)
  }
  delay(1000);
}



© digitrode.ru


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий