New Product in stock SPO2-CABLE-NELLCOR SENSOR


SPO2-CABLE-NELLCOR-SENSOR is sensor which can be connected to MOD-PULSE pulseoximeter and heart  rate monitor.

New Product in stock: MOD-BMP085 digital barometric pressure sensor


MOD-BMP085 is new Open Source Hardware Digital Barometric pressure sensor breakboard. It comes with UEXT connector and cable so you can connect it to any of our development boards which have UEXT connector, but if you want you can use it also with breadboard as all BMP085 signals are available in two rows at 0.1″  step on the two sides of the PCB.

BMP085 allow you to measure pressure in range 300..1100hPa which corresponds to +9000m .. -500m above sea level.

The board is in stock and cost EUR 9.95

Demo code for OLinuXino in C and Python and for Arduino are available on our web, the Eagle CAD files and schematic is also there.

Cuff-less portable Blood pressure sensor



Nihon University have developed a tiny blood pressure monitor, which you can just touch with your finger, in order to get maximum and minimum (systolic and diastolic) blood pressures,  both average and real-time values, as well as pulse rate and pulse waveform displayed on your smartphone.

Announcement for this method of blood pressure measurement was done at Medica 2012 in Germany.

The innovation is that blood pressure is measured just with LED emitter and receiver using “Phase Shift Method”. Read the original article at

AVR-T32U4 Arduino Leonardo experiments with knock sensor and servo


This is simple fun project which we build for couple of minutes with materials in the office.

What you need: AVR-T32U4 Arduino Leonardo clone, Breadboard-1 for AVR-T32U4, LiPo battery, some JumperWires, Knock sensor, MS-1.3-9 servo motor, some tape and empty carton box.

Tape the servo in the corner and put on it plastic arm which to rise the box lid, tape the knock sensor to the lid. Connect the servo to D9 and Knock sensor to A0 of AVR-32U4.

The code Knock.ino is on GitHub, as you can see it’s pretty simple, once on A0 is detected level above some threshold (you can experiment what this level is in your case as it depend on how you attach the knock sensor to the box) you move the servo motor up wait some time and move it back.

Watch the video in action:

Then one of our practicing students at Olimex decided to make code which will open the box only if you knock in some secret sequence of long and short knocks and the code is also on Github (please be gentle the code is crappy but written by enthusiast with no much experience).

The new video for the password knock is here:

DuinoMite Project: Using LED as light sensor


Everybody knows that LEDs emit light when you apply voltage on them and current flows through them.

Not everybody knows that LEDs do the reversal too, when the LED is irradiated with light they generate voltage.The more bright is the LED the more voltage it generates.

I made small setup to prove this. First you need high-brigthness LED – I got 8000 mCd red LED and connect the cathode to GND and anode to PIN(1) of DuinoMite as on the picture above.

Then wrote this small code:

10 SETPIN 1,1 ‘setup PIN(1) as analog input
20 A = 0 ‘accumulator variable
30 FOR I = 1 TO 5000 ‘do 5000 times
40 A = A + PIN(1) ‘add the PIN(1) readings to Accumulator i.e. I amplify 5000 times the PIN(1) readings this way
60 PRINT A ‘print the result
70 GOTO 20

The 5000 loop is also good to not scroll so fast the print results 🙂

With not irradiated LED the readings are:

> run

If I point it to the red power LED on DuinoMite it reads:
> run

If I point to the yellow LED on Duinomite it reads:
> run

The RED and YELLOW LEDs are with same brightness, then why the readings are different?

The “sensor” LED is most sensitive to the light spectrum it emmits, so when irradiated with RED light it generate more voltage than when irradiated with YELLOW light.

Tomorrow using this feature I will tell you how to teach DuinoMite to recognize colors, using RED, GREEN, BLUE and WHITE LEDs I will build Color-meter and when irradiate the “sensors” with different color light DuinoMite will recognize it and print on the screen.

Now let’s go back to RED only leds and think what else we can do with them. What If I make row of LEDs and scan them sequentially? I will make some low resolution (5 mm dot) scanner.

I make next setup with 4 LEDs wired as “sensors”:


The code nave to be changed to scan for 4 analog inputs:

10 NBR = 100 ‘how much to amplify
20 OPTION BASE 1 ‘option base for the arrays
30 DIM P(4)
40 FOR I = 1 TO 4: SETPIN I,1: NEXT ‘make PIN1-4 as analog inputs
50 CLS
60 FOR I = 1 TO 4: P(I) = 0: NEXT ‘clear the accumulators
70 FOR I = 1 TO NBR ‘read the analog inputs NBR times and add to the accumulators
80 FOR J = 1 TO 4
90 P(J) = P(J) + PIN(J)
100 NEXT J
110 NEXT I
120 FOR I = 1 TO 4 ‘display as graphics bars on the Duinomite VGA screen
130 LINE (I*30,MM.VRES)-(I*30+25,MM.VRES-2*P(I)),1,BF
140 NEXT I
145 PAUSE 200 ‘wait and do it again
150 GOTO 50

When run I can see bar graph which change with the amount of light which fall on the LEDs.

You can see on this video I apply light on the LEDs with RED high intenity LED of same kind, and this generates a lot of response on the “sensor” LEDs.

The same principle is used in this video, it uses 8×8 LED matrix as multi touch touchscreen device, too bad I have no 8 Analog inputs on DuinoMite as if I had I would duplicate this project 🙂

Similar projects are also THIS and THIS

You could even make on the same principle Interractive LED table like THIS

DouniMite Project: Knock Knock Knocking on heavens door!


everybody knows this song 🙂

Today I decided to experiment a little bit with pizzo sensors and DuinoMite. We used to produce car alarm systems 20 years ago and I have plenty of piezzo disks in my bin, they are with 20 mm diameter and we used them to produce shock sensors which detect impact on car’s body.

I carefully soldered 1Mohm resistor in parallel with the piezzo disk and with two wires connected between GND and PIN.1 on DuinoMite-Mini.

Then used pvc tape to attach to my desktop, so the sensor will vibrate with every desktop vibration. Piezzo sensors generate electricity when subject to physical force, as usual Wiki is good reference if you want to learn more about them

generally you should think for the Piezzo sensor as capacitor, this is the reason to add the 1Mohm resistor in parallel to discharge the Piezzo once it generates the voltage when vibrating.

I looked at the generated signal with oscilloscope and the amplitude of the generated voltage was about 0.05V with light knocks near it, up to 3-5V when hit directly on the sensor. The 1Mohm resistor discharge it for about 25-40 milli seconds.

Now I’m ready to read it and wrote this small code:

10 SETPIN 1,1 ‘setup PIN(1) as analog input
20 DO WHILE PIN(1) < 0.01: LOOP ‘wait until you detect voltage above 0.01V
40 PAUSE 60 ‘wait enough to discharge the piezzo
50 GOTO 20 ‘endless loop

run the code and the result was as expected, the sensor was detecting every of my knocks around it.

here is video demonstrating how DuinoMite detects knocks

Now this is good ground for other fun projects like – electric door which you open by knocking with secret knock sequence like on this video:, or stairs which light on when you step on them like on this video:

Measuring temperature in range -55C +150C with Duinomite and KTY81,110

ImageKTY81,110 is low cost PTC thermistor from NXP. it changes the resistance dependant on the temperature positively i.e. increase with the temperature increase. It’s very nice solution for not so precisely temperature measurement and it’s very cheap.

I evaluate it as potential candidate for Solar Water Heating controller temperature sensor as it works in nice teperature range -55C to +150C.

The NXP datasheet for KTY181,110 is at NXP site as you can see there is table with approximate values at different temperature, the resistance / temperature is not linear but can be easily calculated with DuinoMite.

To measure the temperatuere we connect KTY181.110 in series with 3300 ohm resistor to +3.3V and will measure the temperature with PIN(1) analog input.

Here is the table with the temperature, KTY81.110 resistance and measured voltage

t R V
-55 490 0.42665
-50 515 0.44548
-40 567 0.48386
-30 624 0.52477
-20 684 0.56657
-10 747 0.60912
0 815 0.65358
+10 886 0.69847
+20 961 0.74426
+25 1000 0.76744
+30 1040 0.79078
+40 1122 0.83731
+50 1209 0.88483
+60 1299 0.93209
+70 1392 0.97903
+80 1490 1.02651
+90 1591 1.07346
+100 1696 1.12026
+110 1805 1.16680
+120 1915 1.21179
+125 1970 1.23359
+130 2023 1.25416
+140 2124 1.29226
+150 2211 1.32395

the code is pretty simple, we store the table in DATA and read it to T() and V() arrays which hold the temperature and voltage at the reference points

10 DATA -55,0.42665,-50,0.44548,-40,0.48386,-30,0.52477,-20,0.56657,-10,0.60912,0,0.65358,+10,0.69847
20 DATA +20,0.74426,+25,0.76744,+30,0.79078,+40,0.83731,+50,0.88483,+60,0.93209,+70,0.97903,+80,1.02651
30 DATA +90,1.07346,+100,1.12026,+110,1.16680,+120,1.21179,+125,1.23359,+130,1.25416,+140,1.29226,+150,1.32395
40 DIM T(23),V(23)
50 FOR I = 0 TO 23: READ T(I): READ V(I): NEXT I

then we setup PIN(1) as analog input:

60 SETPIN 1,1

as the temperature is read pretty fast and we don’t need so fast measurement we read the temperature 1000 times then average it for better precision 😉

70 NRD = 1000 ‘number of times to read
100 ‘read temperature
110 VOL = 0
120 FOR I = 1 TO NRD: VOL = VOL + PIN(1): NEXT I: VOL = VOL / NRD

then check if the voltage is in the range we expect i.e. -55 +150C and if not generate error

130 IF VOL < V(0) OR VOL > V(23) THEN 180

then we search in the table for near higher temperature reference point

140 I = 0
150 DO
160 IF VOL > V(I) THEN I = I + 1 ELSE GOTO 200
170 UNTIL (I=23)

then calculate exact temperature

200 TEMP = T(I)-(V(I)-VOL)*(T(I)-T(I-1))/(V(I)-V(I-1))
220 GOTO 100

here you can see screenshot of the program running in my office


Next Newer Entries