diff --git a/Documentation/IAQ_Wired_Sensor_Datasheet.pdf b/Documentation/IAQ_Wired_Sensor_Datasheet.pdf index d0fffaf..8ef5687 100644 Binary files a/Documentation/IAQ_Wired_Sensor_Datasheet.pdf and b/Documentation/IAQ_Wired_Sensor_Datasheet.pdf differ diff --git a/Documentation/IAQ_Wired_Sensor_Datasheet.tex b/Documentation/IAQ_Wired_Sensor_Datasheet.tex index d2710ae..2ab1eb9 100644 --- a/Documentation/IAQ_Wired_Sensor_Datasheet.tex +++ b/Documentation/IAQ_Wired_Sensor_Datasheet.tex @@ -79,12 +79,12 @@ Fully open-source ecosystem: sensor hardware, case, firmware and connected Pytho \begin{tabular}{|p{5cm}|p{2cm}|p{1cm}|p{1cm}|p{1cm}|p{1cm}|} \hline \rowcolor{lightgray}\textbf{Parameter} & \textbf{Symbol} & \textbf{Min.} & \textbf{Typ.} & \textbf{Max.} & \textbf{Unit} \\ \hline -Input voltage & $V_{DD}$ & 5 & 12 & 24 & V \\ \hline -Average supply current & $I_{DD}$ & & 50 & & mA \\ \hline -RS485 Single-Ended Output High & $V_{OH}$ & 2.2 & & & V \\ \hline -RS485 Single-Ended Output Low & $V_{OL}$ & & & 0.8 & V \\ \hline -RS485 Differential Output & $V_{OD}$ & 2.0 & & & V \\ \hline -RS485 Receiver Differential Threshold Voltage & $V_{TH}$ & -200 & -105 & -10 & mV \\ \hline +Input voltage & $\mathrm{V_{DD}}$ & 5 & 12 & 24 & V \\ \hline +Average supply current & $\mathrm{I_{DD}}$ & & 50 & & mA \\ \hline +RS485 Single-Ended Output High & $\mathrm{V_{OH}}$ & 2.2 & & & V \\ \hline +RS485 Single-Ended Output Low & $\mathrm{V_{OL}}$ & & & 0.8 & V \\ \hline +RS485 Differential Output & $\mathrm{V_{OD}}$ & 2.0 & & & V \\ \hline +RS485 Receiver Differential Threshold Voltage & $\mathrm{V_{TH}}$ & -200 & -105 & -10 & mV \\ \hline \end{tabular} \normalsize \caption{Electrical Specifications} @@ -178,7 +178,7 @@ Stop Bits & 1 \\ \hli \section{Communication Specification} -For physical layer RS-485 is used. This enables communication to be robust and resistant to EMI (electro-magnetic interference). As a data link layer, Modbus RTU is used. This protocol is widely supported by number of PLCs and other devices. To interface with PC (or any computer with USB port) USB to RS485 converter may be used in comjunction with Veles Sensors python library. +For physical layer RS-485 is used. This enables communication to be robust and resistant to EMI (electro-magnetic interference). On top of physical layer Modbus RTU is used as a data link layer. This protocol is widely supported by number of PLCs and other devices. To interface with PC (or any computer with USB port) USB to RS485 converter may be used in conjunction with Veles Sensors python library. \subsection{Physical Layer - RS485} @@ -190,6 +190,8 @@ Modbus is well-tested, openly-published and royalty free data communications pro Limitation of Modbus-based buses is that there is no arbitration in case of address conflict. This means that nodes should be either added one by one or node addresses should be configured beforehand. +Address 0 can be used as a broadcast message (e.g. instructing all sensors to turn off LED). No slave response is generated. + (TODO note: random address assignment command?) \subsubsection{Modbus register space} @@ -227,18 +229,18 @@ Input registers contain measured values. They are read-only and 16-bit in size. Temperature & 30011 & °F & \\ \hline Relative humidity & 30012 & \% & \\ \hline $\mathrm{CO_2}$ concentration & 30013 & ppm & \\ \hline - VOC index & 30014 & VOC index & see Note 1 \\ \hline + VOC index & 30014 & VOC index & see \hyperref[inputReg:note1]{Note 1} \\ \hline VOC ticks & 30015 & raw VOC ticks & Raw value from VOC sensor \\ \hline Temperature from $\mathrm{CO_2}$ sensor & 30028 & °C & \\ \hline Temperature from $\mathrm{CO_2}$ sensor & 30029 & °F & \\ \hline RH from $\mathrm{CO_2}$ sensor & 30030 & \% & \\ \hline \end{tabular} - \caption{Modbus register space} - \label{tab:modbus_register_space} + \caption{Modbus input registers for \sensor{}} + \label{tab:modbus_input_registers} \end{table} \paragraph{Note 1} - +\label{inputReg:note1} VOC index has range 1-500 with 100 being the average. After sensor start-up VOC index is 0 until sufficient amount of data has been measured. \subsubsection{Holding registers} @@ -248,36 +250,46 @@ Holding registers can be written to by master node. Sensor \sensor{} offers foll \begin{table}[h] \scriptsize \centering - \begin{tabular}{|p{4cm}|p{2cm}|p{4cm}|} + \begin{tabular}{|p{4cm}|p{2cm}|p{6.5cm}|} \hline - \rowcolor{lightgray} \textbf{Register name} & \textbf{Register address} & \textbf{Note} \\ \hline + \rowcolor{lightgray} \textbf{Register name} & \textbf{Address} & \textbf{Note} \\ \hline LED on & 40001 & set to 0 to turn off LED; set to 1 to turn LED on \\ \hline LED brightness & 40002 & range from 0 (off) to 100 (full intensity) \\ \hline LED smooth & 40003 & see \hyperref[holdingReg:note1]{Note 1} \\ \hline $\mathrm{CO_2}$ alert limit 1 & 40004 & see \hyperref[holdingReg:note2]{Note 2} \\ \hline $\mathrm{CO_2}$ alert limit 2 & 40005 & see \hyperref[holdingReg:note2]{Note 2} \\ \hline - SCD4x temperature offset & 40006 & see \hyperref[holdingReg:note2]{Note 3} \\ \hline + $\mathrm{CO_2}$ temperature offset & 40006 & see \hyperref[holdingReg:note2]{Note 3} \\ \hline Device Modbus address & 40007 & see \hyperref[holdingReg:note2]{Note 4} \\ \hline Modbus baudrate & 40008 & see \hyperref[holdingReg:note2]{Note 5} \\ \hline Reset device & 40100 & see \hyperref[holdingReg:note2]{Note 6} \\ \hline \end{tabular} - \caption{Modbus register space} - \label{tab:modbus_register_space} + \caption{Modbus holding registers for \sensor{}} + \label{tab:modbus_holding_registers} \end{table} \paragraph{Note 1} \label{holdingReg:note1} -Setting LED smooth register to 1 will turn on LED color interpolation, meaning LED will have color in continuous spectrum from green to red according to $\mathrm{CO_2}$ level. Setting this register to 0 will turn off interpolation and set LED to semaphore (tri-state) mode. Depending on $\mathrm{CO_2}$ level LED color will than be either green, yellow or red. +Setting LED smooth register to 1 will turn on LED color interpolation, meaning LED will have color in continuous spectrum from green to red according to $\mathrm{CO_2}$ level. Setting this register to 0 will turn off interpolation and set LED to semaphore (tri-state) mode. Depending on $\mathrm{CO_2}$ level LED color will then be either green, yellow or red. \paragraph{Note 2} \label{holdingReg:note2} -Registers $\mathrm{CO_2}$ alert limit 1 and 2 set threshold for LED color change (see \ref[holdingReg:note1]{Note 1}). Limit 1 is threshold between green and yellow color, limit 2 is threshold betweek yellow and red color. +Registers $\mathrm{CO_2}$ alert limit 1 and 2 set threshold for LED color change (see \hyperref[holdingReg:note1]{Note 1}). Limit 1 is threshold between green and yellow color, limit 2 is threshold betweek yellow and red color. \paragraph{Note 3} \label{holdingReg:note3} -SCD4x is $\mathrm{CO_2}$ sensor +SCD41 is $\mathrm{CO_2}$ sensing device used in \sensor{} sensor. It is also able to measure temperature, however it may be subject to offset due to internal heating of SCD41. This register allows user to compensate this offset. +\paragraph{Note 4} +\label{holdingReg:note4} +Device Modbus address may be changed by writing to this register. Allowed values are in range from 1 to 247. Device will start using new address immediately and cease to respond at previous address. Reset is not needed. It is the responsibility of a user to prevent address collisions on a bus. +\paragraph{Note 5} +\label{holdingReg:note5} +Modbus baudrate in bits/s. May be one of: 4800, 9600, 14400, 19200, 28800, 38400, 57600, 76800, 115200. Please be aware that lower baudrates are more reliable for long distance communication. + +\paragraph{Note 6} +\label{holdingReg:note6} +Writing magical constant 0xABCD to this device will instruct device to soft-reset. \section{Mechanical Dimesions} \end{document} \ No newline at end of file