Nonin OEM III

Hey guys,

I am working on a sleep apnea study for my final year thesis. I am using Nonin OEM III module with arduino Uno. I am totally new to arduino. I really need someone's help in interfacing the module with arduino so I could read the data. Thank you in advance.

I really need someone's help in interfacing the module with arduino so I could read the data.

You need us to google the module for you? I don't think so. YOU google it, and post a link!

Hi,
Welcome to the forum.

Please read the first post in any forum entitled how to use this forum.
http://forum.arduino.cc/index.php/topic,148850.0.html

Thanks.. Tom... :slight_smile:

@pauS Thank you replying. Here is the specification file Support - Nonin

And yes, I did check out the forum for a similar problem, a few have tried interfacing but there is no complete solution. I am going to use a UNO board for the project. I have to read the data from the OEM device and write a code to drive an output. Can you guide me through it?

Hi,
Just a trawl around found this, it may give you a seed to starting.

Tom... :slight_smile:

@TomGeorge
hi, Yes, I have seen this post. The person says,

"I currently have left Pin 08,09,10,13 and 14 un-terminated and hooked up the rest. However, would I potentially need to hook into the serial input in order to start communication with the OEM Board? The data doesn't mention anything about I2C or SPI communication so I'm not totally sure how to go about hooking this up..."

1.Is the person using only the OEM chip from page 10 in the specs sheet or the whole board like in the picture?

  1. the pins in page 10 are labelled at j1-01 and so on. What does J1 indicate here?

check the image. Much thanks for the help!

  • Balaji

Hi,
The reddit article used software serial to read the serial output of the OEM.
You use resistors on J1 pin 9 to select the serial information format.
Their is no SPI or I2C comms.
You do not have to send any comms to the OEM, it just blurts it out data on its own.

Tom... :slight_smile:

@TomGeorge
I am so lost. I know that this is a lot to ask, I have just started learning about serial comm. Can you guide with the pin connections between the OEM chip and arduino?

Check the image I have attached. Do i have to do something like this?

Well?
Can someone guide me with the steps? Can i directly connect the ground from the OEM evaluation board to the arduino ground and the serial outout pin from the board to Rx on arduino? I did see the other forum thread with paulS describing the coding, But they have connected the OEM chip and sensor to arduino and have not used the evaluation board.

https://forum.arduino.cc/index.php?topic=50719.30

OEM III Evaluation Kit Instruction Sheet, 4656-000 Rev E.pdf (208 KB)

In a final year project you're meant to LEARN something new, not just get us to design it for you.

Lots of us here have assorted degrees obtained before the internet days, when you were given a reading list and an occasional hint by your supervisor, then left to it.

I think the general silence means that there's loads of information on this site and elsewhere to help you... and the odd hint

try the serial libraries for a start, and read your sensor's datasheet carefully.

ie do some work.

regards

Allan

@allanhurst Hey, thanks for replying. I totally understand what you mean and yes I want to learn. The thing is that I want the hard wiring to be done correctly, I dont want to burn the OEM module by doing something wrong. It is expensive you know. I just want someone to guide me with wiring the sensor to the module. The module has a DB9 connector with only 7 pins.

  1. Do i leave pin 4 and 8 of sensor unconnected?
    2.I dont understand the description of Pin 1 and 6 of the sensor DB9.

Check page 11

OEM III integration guide 4785-000 REV E.pdf (641 KB)

1/ Yes
2/ use 1nF capacitors to ground as recommended in the datasheet .

Allan

@allanhurst

Got it! So pin 1 of DB9 goes to ground and so does pin 12 of the OEM? Because the data sheet says that Pin1 of DB9 and Pin12 of OEM are connected

So, I successfully connected the hardware together.
Here is the code,

#include <SoftwareSerial.h>
SoftwareSerial nss(8,5); // Put your TX and RX pins here, in the correct order, nss represent heartRate

byte vals[3];
int heartRate, oxyLevel;

void setup()
{
  nss.begin(9600); // Or whatever is appropriate
  Serial.begin(9600);
}

void loop()
{
  if(nss.available() >= 3)
  {     
    vals[0] = nss.read(); //represent byte 1
    vals[1] = nss.read(); //represent byte 2
    vals[2] = nss.read(); //represent byte 3
    
    heartRate = 0; // Sets all 8 bits to 0
    oxyLevel = 0; // Sets all 8 bits to 0

    bitWrite(heartRate, 0, bitRead(vals[1], 0)); // Set bit 0
    bitWrite(heartRate, 1, bitRead(vals[1], 1)); // Set bit 1
    bitWrite(heartRate, 2, bitRead(vals[1], 2)); // Set bit 2
    bitWrite(heartRate, 3, bitRead(vals[1], 3)); // Set bit 3
    bitWrite(heartRate, 4, bitRead(vals[1], 4)); // Set bit 4
    bitWrite(heartRate, 5, bitRead(vals[1], 5)); // Set bit 5
    bitWrite(heartRate, 6, bitRead(vals[1], 6)); // Set bit 6
    bitWrite(heartRate, 7, bitRead(vals[0], 0)); // Set bit 7
    bitWrite(heartRate, 8, bitRead(vals[0], 1)); // Set bit 8
      
    oxyLevel = vals[2];
    
  }
  Serial.print("Heart rate: ");
Serial.println(heartRate);
Serial.print("Oxygen level: ");
Serial.println(oxyLevel);
}

The output in serial monitor is nothing but,
Heart rate: 511
Oxygen level: 127
Heart rate: 511
Oxygen level: 127
Heart rate: 511
Oxygen level: 127
Heart rate: 511
Oxygen level: 127

Is it something to do with the code or the hardware setup?

UPDATE: SO, the output remains the same even when I disconnect the sensor from the module. I used a serial to USB (cp2102 silicon labs) to view the data on DOCLIGHT(a serial monitor) and the output in binary is that the bits in BYTE 2 and 3 are always high(except BIT 7 which is always zero). Let me know if you guys have any idea.

Is the unit faulty or your code?

The device is meant to be connected to the serial port on a PC. Does that work?

Allan

I connected the sensor and OEM module to a USB to TTL module and viewed the serial output on my PC. The outputs are still the same, It keeps spitting out the same bytes even when the sensor is not attached.
The power requirement says that the module need 3.3V with a max ripple of 50mV. Could the fault be because of this? Someone else in a different threat encountered the same problem but no one has responded yet. I read the integration document thoroughly from pg 8-11. Still no clue.

OEM III integration guide 4785-000 REV E.pdf (641 KB)

Are you using an approved sensor?

I take it you've contacted Nomin - their lterature implies they're happy to help with any integration issues...

Allan

Hi,
You have got OEM Rx connected to PC/Arduino Tx and OEM TX connected to PC/Arduino RX?

Tom... :slight_smile:

@allanhurst
Yes, I am using Nonin's sensor. And yes, I did contact NONIN but they weren't so helpful. They asked me to check the power requirements properly.

@TomGeorge
I just connected the Tx from OEM to Rx in arduino.

Update: When I Connected the Tx(OEM) to Rx(arduino) and ground(OEM) to ground(arduino) while the OEM and sensor was connected to the evaluation board, it worked.