Skip to content

Sketch for Arduino Nano/Uno for Argus Monitor OpenHardware Project

Notifications You must be signed in to change notification settings

openfancontrol/arguscontroller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Argus Controller

  • Argus Monitor supports Open Hardware circuits to use additional custom temperature sensors and fan control channels within the program.
  • We call these devices Argus Controller.
  • At least Argus Monitor version 5.0.4 is required for these.

Description

We have made an example to demonstrate such a device with the help of the very common Arduino Nano or Arduino Uno platform.
The example demonstrates the creation and set-up of temperature channels and fan control channels.
We show here a hardware solution for the popular Dallas DS18B20 temperature sensors and for connecting 4-pin pwm controlled fans.
With additional circuitry and software changes, you could control 3-pin voltage controlled fans also or use different temperature sensors.

You can adapt the hardware to your needs, built it around a completely different microcontroller, change the number of temperature and fan control channels and so on.
Each hardware device can have up to 6 temperature channels and 6 fan control channels.
Argus Monitor will detect and use any such device as long as the serial communication protocol (see below) is respected.

⚠️ This code is just an example

This github code is only an example for a specific Arduino, in this case for the Arduino Nano.
We use it to describe the SW interface - to get sensor values from self-made electronics into Argus and to get a fan control option from Argus to external self-made electronics.

You can use any embedded controllers, sensor devices and circuitry you like as long as you obey the protocoll.

This whole project here is an option for makers, please note that you should know what you are doing, we can't give support for user developments.

HW/SW description

🇺🇸 Detailed HW/SW description (English)

🇩🇪 Detaillierte HW/SW Beschreibung (Deutsch)

Pictures of test setup

pic

pic

Communication protocol

Command Argus Monitor request Argus Controller answer
ProbeDevice AA 02 01 crc8 C5 [byteCnt] 01 [DEVICE_ID] [TEMP_COUNT] [FAN_COUNT] crc8
GetTemp AA 02 20 crc8 C5 [byteCnt] 20 [TEMP_COUNT] temp0_H temp0_L temp1_H temp1_L temp2_H temp2_L temp3_H temp3_L crc8
GetFanRpm AA 02 30 crc8 C5 [byteCnt] 30 [FAN_COUNT] rpm0_H rpm0_L rpm1_H rpm1_L crc8
GetFanPwm AA 03 31 [channel] crc8 C5 [byteCnt] 31 [channel] [pwm] crc8
SetFanPwm AA 04 32 [channel] [pwm] crc8 C5 [byteCnt] 32/FF crc8 # answer byte2: 32 = ok, FF = error
EEReadByte AA 04 40 crc8 C5 40 <VALUE_COUNT> crc8
EEWriteByte AA 05 41 crc8 C5 41/FF crc8 # answer byte2: 41 = ok, FF = error
  • All numbers are hex.

  • The second bytes is always the count of remaining bytes in this message, beginning with the next (third) byte.

  • Data formats

    • temperature: int16_t, scaled by 10
    • rpm: uint16_t
    • pwm: uint8_t [0..100 %]
  • Communication parameters

    • 57600 Baud, 8N1
  • Only for the ProbeDevice command, Argus Monitor expects the answer from the device within 200msec.

  • If the 'Argus Controller hardware support' option in Settings/Stability is enabled, Argus Monitor will probe the specified COM-Ports for Argus Controller devices. It will use the first 4 devices (if specified and available) as additional HW Monitor sources within the application.

  • CRC8 calculation

uint8_t crc8(uint8_t crc, uint8_t data)
{
    crc = crc ^ data;
    for (uint8_t i = 0; i < 8; i++) {
        if (crc & 0x01)
            crc = (crc >> 1) ^ 0x8C;
        else
            crc >>= 1;
    }
    return crc;
}

Lizenz

Creative Commons BY-SA
Give Credit, ShareAlike

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

About

Sketch for Arduino Nano/Uno for Argus Monitor OpenHardware Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published