Мониторинг 4-канального модуля дискретного входа по шине 1-WIRE на базе модема SYREMO 1-WIRE/GSM

Данное устройство является подчиненным устройством для сети 1-WIRE, которое управляется мастером сети. Особенностью модуля реле является его возможность удаления от опрашивающего устройства до 300 метров. Модуль имеет 4 дискретных входа. Вход замыкается на минут. На примере к модулю подключим 4 герконовых датчиков открытия двери. И нарисуем картинку комнаты с 4 дверьми.

Модуль опрашивает свои входы около 100 раз в секунду, т.е. будут фиксироваться достаточно короткие замыкания. В индивидуальном порядке возможно изменить прошивку, при которой модуль будет определять замыкания более 1 секунды или 5 секунд, например.

Пример кода для микроконтроллера для чтения состояний дискретных входов по шине 1-wire:

w1_init(); //reset
w1_write(0x55);
w1_write(rom_codes[devices][0]); //для модуля входов rom_codes[0]=0x20
w1_write(rom_codes[devices][1]); //для модуля входов rom_codes[1]=0x16
w1_write(rom_codes[devices][2]); //для модуля входов rom_codes[2]=0x16
w1_write(rom_codes[devices][3]);
w1_write(rom_codes[devices][4]);
w1_write(rom_codes[devices][5]);
w1_write(rom_codes[devices][6]);
w1_write(rom_codes[devices][7]);
w1_write(0xAA);
w1_write(0x00);
w1_write(0x00);
crc=0;counter=0;
read1=w1_read();crc=crc8(crc,read1); //байт изменений состояний входов.
//Сброс командой w1_init();w1_write(0xСС);w1_write(0x22);
read1=w1_read();crc=crc8(crc,read1); //байт состояний входов в момент чтения
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read();crc=crc8(crc,read1);
read1=w1_read(); //чтение crc от датчика. read1 должно быть равно crc