IR Remote is a small shield that allows you to record any infrared command sent by a remote control and resend it from the Internet. It works connected to Arduino and Raspberry Pi, and let us to control any HVAC system including heating, ventilation, air-conditioning and thermostats from the Cloud.

We offer 6 different wireless interfaces to connect Arduino and Raspberry Pi to the Internet: WiFi, 3G, GPRS, Bluetooth and 802.15.4 / ZigBee.

With IR Remote you can easily control our home HVAC system from a laptop, a webserver or even from your smartphone. The shield is compatible with both Arduino UNO and Raspberry Pi so you can choose your favourite platform to automate your home.

Your home's HVAC system includes a number of heating, cooling, and ventilation components controlled with infrared technology that all work together to make your indoor living spaces more comfortable. IR Remote shield allows control these devices through Internet.

IMPORTANT: IR Remote has been developed and programmed in order to work with Arduino UNO. It is Hardware Compatible with most Arduino boards, but there are no available tested codes. Raspberry Pi also support this hardware, although due to kernel priorities IR module does not work correctly with ArduiPi.

IR Remote over Raspberry Pi

2. Infrared technology

The technology known as IrDA (Infrared Data Association), is developed by HP, IBM and SHARP in 1993 and is based on light rays moving in the infrared spectrum (Invisible to human eyes).

Infrared technology is awesome. IR devices can be used for remote control and even basic remote data communication. Using infrared transmitters and receivers (usually LEDs) can comunicate two devices with direct line of vision.

Have you ever needed a cheap way to activate something from across the room? Infrared is still the cheapest way to wireless control device.

On this tutorial, we will show how to use IR Remote as an IR sender and receiver with ArduinoUNO/Raspberry Pi.

How to know if our device works with infrared technology

Using your mobile phone, you can see infrared radiation. Visible light and infrared are both forms of electromagnetic radiation but with different wavelengths. Visible light has a wavelength of between 400nm and 700nm. We can only āseeā the EM radiation in this range. At 700nm and longer, we enter the realm of infrared radiation.

The lack of infrared filter is one reason photographs taken on mobile phones donāt look as good as those taken on proper digital cameras but it also provides us with an opportunity to use our mobiles to āseeā in infrared.

On your phone, start the Camera app, and point the camera at the LED on one IR Remote control device.

As you look at the phone screen, press some buttons on the device. For example, a TV remote control. Your eye can't see the IR light, but now you will see the IR light appear in the viewfinder as a bright white light.

This method can verify that the module is working properly as emitter.

2.1 IR Sensor (receiver)

IR detectors are little microchips with a photocell that are tuned to listen to infrared light. They are almost always used for remote control detection. IR Remote use TSOP38238 infrared receiver and it can be used to read the signals from common IR remote controls. It is useful for receiving consumer remote control IR signals.

The TSOP1238 is an Infrared signal receiver which can be powered from 2.5 V to 5.5 V. This receiver is ready to be connected to a micro-controller and is capable of receiving signals at 38Khz, the same frequency that use several infrared devices. We used a receiver centered at 38kHz, but it will work over a larger range of frequencies at a reduced distance. You can use from about 35 KHz to 41 KHz but the sensitivity will drop off.

This circuit is recommended by the datasheet:

The IR sensor has just three pins: signal, Vcc and GND. The sensor connects to pin 2 to record the code allowing use interrupt feature in Arduino UNO and Raspberry so we can detect the start of IR activity.

2.2 IR Diode (emitter)

The Infrared Emitter is used to transmit infrared signals. An infrared LED or emitter is used to transmit signals. An infrared LED is like any other LED, with its color centered around 940nm. We can use the emitter not only to transmit data or commands, but also to emulate remotes to control your home appliance. Along with an IR receiver they can be used for remote control and even basic remote data communication.

The transmitter is connected to digital PWM pin 3. The PWM makes it easy to create infrared pulses at frequencies visible to IR receivers. The circuitry is simple: an IR LED is connected to pin 3 to transmit the code.

3. Main application: HVAC IR Remote control

We use infrared technology every day but... is too much effort to press the buttons! Surely are there better ways to control a device? Can we turn off our air conditioning in the supermarket? The main IR Remote application is to capture the IR sequences and then using the ArduinoUNO/Raspberry Pi send them using different inputs (buttons, wireless signals...).

The main purposes of a Heating, Ventilation, and Air-Conditioning (HVAC) system are to help maintain good indoor air quality through adequate ventilation with filtration and provide thermal comfort. HVAC systems are among the largest energy consumers in homes. Whether you wish to improve the efficiency of your existing heating and cooling systems or are considering upgrading to a new system, IR Remote shield is the best option.

One of the first steps you should consider in your facility before upgrading your heating and cooling system is to reduce your load (i.e. how much heating and cooling you actually use). Using IR Remote shield your facility's load allows existing systems to operate less frequently. We can control ventilation to improve occupant comfort and save energy.

IR Remote shield is a simple hack easy and cheap to use. This shield includes everything you need to start playing around with HVAC IR Remote control systems.

NOTE: Unfortunately there are almost as many infrared protocols as devices that use them. Some manufacturers encode their infrared signals privately so it may not be possible to copy their IR codes easily.

3.1 IR Remote on Arduino UNO

Record and playback IR signals

It is very easy to use this shield. However, if you want to integrate IR Remote shield into an existing infrared remote system, then you need to identify the protocol in use. The first step is to capture that protocol. Here are some guidelines on how to start.

The sketch provides a simple example of how to receive and re-send an IR code:

To copy a IR code, simply point your remote control in front of the IR Remote shield connected in Ardunio (for example) and press the button on the remote control you want to copy. Use "Receive" button on the module to copy the code and "Send" button to re-send it.

When you press the "Receive" button, the blue LED on the other shield should blink. In this moment the module is waiting IR signal. When IR Remote shield just copy IR code, the orange LED blink too. Now we process the codes slightly and put them in an array.

Once a IR code has been copied, you can use "Send" button to re-send many times as we want. The orange LED indicates that the message has been sent.

NOTE: In order to work with Arduino MEGA you'll need to change in our codes to PINE not PIND and IRpin 4 for digital 2 on the mega. You should use the following mod for use with the Mega 2560:

How to receive

We cant use normal digitalread() function because it is so slow to read the fast IR signal. So we must use special reading procedures. With this method we can easily read codes.

If you upload next code and open serial monitor while pointing a remote control and pressing the ON button you will get the IR code. You can copy it and use it in other programs. Do not copy the first delay [delayMicroseconds(#)] because it is the time spent to detect the IR code.

How to send

IR Remote shield uses an infrared LED connected to output pin 3 to send a IR code. The module turn on and off the LED very fast in the proper code sequence.

We can also send hand-copied IR code, putting it in the section indicated in the program.

Code:

/*
* IR Remote Module
*
* Copyright (C) Libelium Comunicaciones Distribuidas S.L.
* http://www.libelium.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* a
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
* Version: 1.0
* Design: David GascĆ³n
* Implementation: Luis Martin
*/
int IRledPin = 3; // IR emitter LED connected to digital pin 3
int orangeLedPin = 7; // Orange LED connected to digital pin 7
int buttonPin1 = 4; // "Send" push-button connected to digital pin 4
int buttonState1 = 0;
void setup() {
// Initialize the Orange LED pin as an output
pinMode(orangeLedPin, OUTPUT);
// Initialize the "Send" push-button pin as an input
pinMode(buttonPin1, INPUT);
// Initialize the IR digital pin as an output
pinMode(IRledPin, OUTPUT);
// Set uart baudrate
Serial.begin(9600);
}
void loop() {
// Read the state of the "Send" push-button value
buttonState1 = digitalRead(buttonPin1);
if (buttonState1 == HIGH) {
Serial.println("Sending IR signal");
digitalWrite(orangeLedPin, HIGH);
delay(200);
digitalWrite(orangeLedPin, LOW);
delay(200);
SendIRCode();
//delay(15); // wait 15 milliseconds before sending it again
//SendIRCode(); // repeat IR code if it is neccesary
delay(5000); // wait 5 seconds to resend the code
}
}
// This procedure sends a 38KHz pulse to the IRledPin for a certain # of microseconds.
void pulseIR(long microsecs) {
cli(); // Turn off any background interrupts
while (microsecs > 0) {
// 38 kHz is about 13 microseconds high and 13 microseconds low
digitalWrite(IRledPin, HIGH); // 3 microseconds
delayMicroseconds(10); /* hang out for 10 microseconds,
you can also change this to 9 if its not working */
digitalWrite(IRledPin, LOW); // 3 microseconds
delayMicroseconds(10); /* hang out for 10 microseconds,
you can also change this to 9 if its not working */
// So 26 microseconds altogether
microsecs -= 26;
}
sei(); // Turn them back on
}
void SendIRCode() {
/**************************
* COPY YOUR IR CODE HERE *
* ************************/
}

NOTE: Some devices need to receive the code duplicate, so you have to send it two times.

3.2 IR Remote on Raspberry Pi

NOTE: Operating with IR commands requires an strict timing control. On Raspberry pi there are many user space applications running at the same time and the kernel scheduler must deal with all of them. For this reason the IR user space applications are not as reliable as on arduino.

/*
* IR Remote Module
*
* Copyright (C) Libelium Comunicaciones Distribuidas S.L.
* http://www.libelium.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* a
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
* Version: 1.0
* Design: David GascĆ³n
* Implementation: Luis Martin
*/
#include "arduPi.h"
void SendIRCode();
int IRledPin = 3; // IR emitter LED connected to digital pin 3
int orangeLedPin = 7; // Orange LED connected to digital pin 7
int buttonPin1 = 4; // "Send" push-button connected to digital pin 4
int buttonState1 = 0;
void setup() {
// Initialize the Orange LED pin as an output
pinMode(orangeLedPin, OUTPUT);
// Initialize the "Send" push-button pin as an input
pinMode(buttonPin1, INPUT);
// Initialize the IR digital pin as an output
pinMode(IRledPin, OUTPUT);
// Set uart baudrate
Serial.begin(9600);
}
void loop() {
// Read the state of the "Send" push-button value
buttonState1 = digitalRead(buttonPin1);
if (buttonState1 == HIGH) {
printf("Sending IR signal\n");
digitalWrite(orangeLedPin, HIGH);
delay(200);
digitalWrite(orangeLedPin, LOW);
delay(200);
SendIRCode();
//delay(15); // wait 15 milliseconds before sending it again
//SendIRCode(); // repeat IR code if it is neccesary
delay(5000); // wait 5 seconds to resend the code
}
}
// This procedure sends a 38KHz pulse to the IRledPin for a certain # of microseconds.
void pulseIR(long microsecs) {
while (microsecs > 0) {
// 38 kHz is about 13 microseconds high and 13 microseconds low
digitalWrite(IRledPin, HIGH); // 3 microseconds
/* hang out for 10 microseconds,
you can also change this to 9 if its not working */
delayMicroseconds(10);
digitalWrite(IRledPin, LOW); // 3 microseconds
/* hang out for 10 microseconds,
you can also change this to 9 if its not working */
delayMicroseconds(10);
// So 26 microseconds altogether
microsecs -= 26;
}
}
void SendIRCode() {
/****************************************************
* COPY THE CODE GENERATED BY COPY APPLICATION HERE *
****************************************************/
}
int main (){
setup();
while (1) loop();
return 0;
}

3.3 Control air conditioning and heating systems through Internet via WiFi

The simplicity of the procedure enables us to combine with different wireless communications protocols. Only we must copy IR codes and use them in our main program.

Thanks to many communications modules can send data over several transmission protocols.

We will use the wifi module Roving RN-171. This module fits in the XBee socket of our Communication Shield and allows to connect your ArduinoUNO/RasberryPi shield to a WiFi network.

The messages that come from the WIFI module are quite big, for this reason, if you want to debug your program and check those messages, go to /.../arduino-0022/hardware/arduino/cores/arduino and modify HardwareSerial.cpp then make SERIAL_BUFFER_SIZE value set to 512.

This sketch provides a simple example of how to re-send a IR code using WiFi module:

3.4 Control air conditioning and heating systems through Internet via 3G / GPRS

GPRS Quadband Module for Arduino/Raspberry (SIM900) offers GPRS connection to your ArduinoUNO/RasberryPi board. You can send your data by SMS or do missed calls from your Arduino UNO to mobile devices... or to another ArduinoUNO/RasberryPi connected to this module.

The code example and the connection picture shown below are used to copy and re-send a IR code using GPRS module. A lost call activate the "send" function.

The new 3G shield for ArduinoUNO/Raspberry enables the connectivity to high speed WCDMA and HSPA cellular networks in order to make possible the creation of the next level of worldwide interactivity projects inside the new "Internet of Things" era.

The code example and the connection picture shown below are used to re-send a IR code using GPRS module. Data send through TCP connection activate the "send" function.

3.6 Control air conditioning and heating systems through Bluetooth

Bluetooth Modules for ArduinoUNO/Raspberry are able to be plugged into the XBee Shield and get a serial communication between the computer and an ArduinoUNO/RasberryPi board through Bluetooth protocol.

Bluetooth module PRO for Arduino UNO supports Serial Port Profile (SPP) to exchange data with other devices. This profile allows to create connections to another device using the same profile (p2p connection). It sends data to the specified device. This device is the one which the connection has been created to.

We can send hand-copied IR code putting it in the section indicated in the program, using a Bluetooth module. The command used to carry out a device discovery is āINQUIRY {timeout}ā. Timeout can be a number between 1 and 48 and it will determine time spent searching for devices. The module will answer with a list of discovered devices and if Arduino UNO detects our phone, send the IR command.

4. More IR applications

There are many others different IR remote controls. There are the typical TV and Stereo remotes.

All of these may have different encoding methods and number of physical buttons, and different codes received when a button is pressed.

IR Remote shield lets a great number of possible applications.

4.1 Nikon cameras control (intervalometer)

An intervalometer is a device that sends out a signal at regular intervals. When hooked up to a camera, they can be used to take time lapse images, bracket exposure lengths and precisely time long exposure images. Luckily the cameras, Nikon especially, tend to have a IR trigger.

IR Remote shield is your solution if you was searching a way to automatically trigger your camera , and make time lapse photography.

We can use some dedicated library or use the copy method on the activation code for the camera.

NOTE: The library described on this page was originally written for an extremely old version of the Arduino software. This version works with Arduino 18: Nikon Remote library. Download and unzip in your libraries directory to use.

4.2 IR Remote control library

There is a library for arduino with many features that will allow us to work with a lot of infrared devices. This IR remote library lets you both send and receive IR remote codes in multiple protocols. It supports NEC, Sony SIRC, Philips RC5, Philips RC6, and raw protocols. If you want additional protocols, they are straightforward to add. The library can even be used to record codes from your remote and re-transmit them, as a minimal universal remote.

If you download the library and then unzip it to your Arduino/Libaries directory (older versions, I think its Arduino/hardware/libaries). The library assumes that your phototransistor/ IR receiver is on digital pin 11 and your IR diode is on digital pin 3. Typically you want a IR receiver with a 38Khz range. We should change the IR receiver sensor to the pin 3 in the code.

This infrared remote library consists of two parts: IRsend transmits IR remote packets, while IRrecv receives and decodes an IR message. IRsend uses an infrared LED connected to output pin 3. To send a message, call the send method for the desired protocol with the data to send and the number of bits to send.

The library supports multiple IR protocols, each with its own slight complications:

Sony codes can be recorded and played back directly. The button must be held down long enough to transmit a couple times, as Sony devices typically require more than one transmission.

The common NEC protocol is complicated by its "repeat code". If you hold down a button, the remote transmits the code once followed by multiple transmissions of special repeat code.

The RC5 and RC6 protocols handle repeated transmissions differently. They use two separate codes for each function, differing in a "toggle bit".

NEC Infrared Transmission Protocol

In this case we will focus on the NEC protocol used in TV universal remotes.

The NEC IR transmission protocol uses pulse distance encoding of the message bits. Each pulse burst is 562.5Āµs in length, at a carrier frequency of 38kHz (26.3Āµs). Logical bits are transmitted as follows:

Logical '0' ā a 562.5Āµs pulse burst followed by a 562.5Āµs space, with a total transmit time of 1.125ms

Logical '1' ā a 562.5Āµs pulse burst followed by a 1.6875ms space, with a total transmit time of 2.25ms

We can copy our television signals or control our project using a universal remote.

5. Other applications

5.1 IR Remote digital I/O

IR Remote shield has several digital inputs and outputs available for use in the program. Its main function is to copy and re-send IR codes but can be configured for other functions.

Loading the following program can check correct operation.

Code:

/*
* IR Remote Module
*
* Copyright (C) Libelium Comunicaciones Distribuidas S.L.
* http://www.libelium.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* a
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
* Version: 1.0
* Design: David GascĆ³n
* Implementation: Luis Martin
*/
int orangeLedPin = 7; // Orange LED connected to digital pin 7
int buttonPin1 = 4; // "Send" push-button connected to digital pin 4
int blueLedPin = 6; // Blue LED connected to digital pin 6
int buttonPin2 = 5; // "Receive" push-button connected to digital pin 5
int buttonState1 = 0;
int buttonState2 = 0;
void setup() {
// Initialize the Orange LED pin as an output
pinMode(orangeLedPin, OUTPUT);
// Initialize the "Send" push-button pin as an input
pinMode(buttonPin1, INPUT);
// Initialize the Orange LED pin as an output
pinMode(blueLedPin, OUTPUT);
// Initialize the "Send" push-button pin as an input
pinMode(buttonPin2, INPUT);
// Set uart baudrate
Serial.begin(9600);
}
void loop(){
// Read the state of the "Send" push-button value
buttonState1 = digitalRead(buttonPin1);
Serial.println(buttonState1);
// Read the state of the "Send" push-button value
buttonState2 = digitalRead(buttonPin2);
Serial.println(buttonState2);
if (buttonState1 == HIGH) {
// Turn LED on:
digitalWrite(orangeLedPin, HIGH);
}
else {
// Turn LED off:
digitalWrite(orangeLedPin, LOW);
}
if (buttonState2 == HIGH) {
// Turn LED on:
digitalWrite(blueLedPin, HIGH);
}
else {
// Turn LED off:
digitalWrite(blueLedPin, LOW);
}
}

5.2 Control your projects with infrared technology

We can use small TV remote control to control our projects through infrared signals. For example:

Control the LED state is a simple example of application. This can then be applied to more difficult projects. This is especially good for remote control of a small robot, using the arrow buttons.

Code:

/*
* IR Remote Module
*
* Copyright (C) Libelium Comunicaciones Distribuidas S.L.
* http://www.libelium.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* a
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
* Version: 1.0
* Design: David GascĆ³n
* Implementation: Luis Martin
*/
#include <IRremote.h>
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
// Set uart baudrate
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(13,OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
int readValue = results.value;
Serial.println(readValue, HEX);
// If remote control button pressed, turn on the led.
if(readValue == 0x80C){
digitalWrite(13,HIGH);
}
// If remote control button pressed, turn off the led.
if(readValue == 0xC){
digitalWrite(13,LOW);
}
irrecv.resume(); // Resume receiver
}
}

NOTE: Most handheld remotes are shipped with a small clear plastic piece in the battery compartment that must be removed to activate it. You can usually just pull it out.

5.3 Add IR Remote control feature

What happens if we have a device that does not have infrared technology? A IR Socket is suitable for any electronic device you want to control by infrared signals.

How to use

Plug the IR socket into a main external or wall socket, and put the IR receiver in the suitable location that can receive the signal from remote control. Point the remote control at IR receiver and send any code that you want to use it to control IR socket on the remote control once then the IR socket LED will flash quickly and OFF.That means code is set. Re-send the selected code on the remote control once,the IR socket works.Push once the power is ON and push again the power is OFF.

Clearing codes

In off situation, press ON/OFF switch on the socket continuously for 3 seconds ,when the LED flashes from quickly to once per second,that means clearing code is successful.You can set the other code again.

Get the IR Remote Kits

If you are interested in Internet of Things (IoT) or M2M projects check our open
source sensor platform Waspmote
which counts with more than 100 sensors available to use 'off the shelf', a complete API with hundreds of ready to use codes and a low consumption mode of just 0.7µA to ensure years of battery life.

Customer Service

My Account

Subscribe to Our Newsletter

When you (āYOUā) use LIBELIUMĀ“s websites, fill in any form supplied by LIBELIUM or deliver your business card to our sales force, YOU consent to the use of your personal information by us in the manner specified in this Privacy Policy. This Policy may change periodically, so YOU should check back from time to time.

All references made in this Privacy Policy to specific Articles shall be deemed made to Regulation (EU) 2016/679 of the European Parliament and of the Council of 27 April 2016, on the protection of natural persons with regard to the processing of personal data and on the free movement of such data (āthe Regulationā).

Personal Data Collection

Following the Regulation and Spanish Regulations on Data Protection, LIBELIUM hereby informs its Customers and websites users (collectively, āUsersā) that any personal data supplied shall be recorded in an automated file named āCUSTOMERSā for which LIBELIUM is the Controller and also the Processor and located at LIBELIUMĀ“s registered address at c/ EscatrĆ³n 16. 50014 Zaragoza, Spain.

The Processors are the following: a) Amazon Web Services Inc., located at EU (Ireland), only for purposes of storing personal data; and b) Openbravo, LIBELIUMĀ“s ERP supplier, located at EU (Spain), for the purpose of managing our data bases. All personal data are sent encrypted to Amazon.

By filling any form in LIBELIUMĀ“s websites, Users consent: (i) to the processing of their personal data by LIBELIUM for the purposes mentioned below; (ii) to receive promotional offers of LIBELIUMĀ“s and its suppliers and partnersā Products and Services; and (iii) to the fact that LIBELIUM may make such data available to its partners or suppliers to the sole purpose of enabling service provision.

USERĀ“s rights (Articles 12 to 22):

Any request by Users in connection with their rights mentioned below, shall be answered by LIBELIUMĀ“s Data Protection Officer within a month.

3.1.Transparency and Information (Articles 12-14):

a. What type of personal data do we collect?: the forms in our websites only collect name, email address and country or origin. The forms in our marketplaces collect additional information, such as address, telephone and credit card number. Disclosure of these data is compulsory for making any purchase through our marketplaces. LIBELIUM does not collect any sensitive data (Articles 9&10) from Users through the forms in its websites. Please refer to LIBELIUMĀ“s Terms and Conditions of Sale and Use for MySignals Products (https://libelium.com/downloads/MySignals-Terms-and-Conditions.pdf), to learn about collection and processing of CustomerĀ“s data on health. LIBELIUM may record any or all telephone conversations with YOU and store them in the above-mentioned āCustomersā file. By phoning to LIBELIUMĀ“s customer service telephone numbers, YOU consent to the recording of these conversations.

b. Why do we collect your personal data? LIBELIUM warrants that the purposes of this personal data processing shall be lawful at all times, namely: (a) to provide You access to LIBELIUMĀ“s websites, marketplaces, products and services; (b) to respond to Your requests for information; (c) to send You information on LIBELIUMĀØs products and services; (d) to allow those of our partners who help us provide and improve our products and services, send You tailored information on related products or services, or provide you access to additional services; (e) for R&D purposes, allowing LIBELIUM develop new products and services or improve the existing ones; (f) to collect YOUR consent to the terms of use of forums and other sections in LIBELIUMĀ“s websites; and (g) if applicable, to consider Your application for employment with us.

c. What do we do with your personal data? Our processing shall be the following:

Collection, always with your consent, either by filling our forms, by delivering your business card to our salesforce, or by entering a contractual relationship with LIBELIUM by purchasing our products and/or services. LIBELIUM shall not process any personal data not directly obtained from YOU. Any User feeling that his/her personal data have been disclosed to us without his/her consent, may contact our DPO to ascertain the source from which his/her personal data originate, and to exercise any of the rights mentioned below. LIBELIUM reserves its right to exclude from any service for which prior registration is required, any User having provided false or inaccurate data, notwithstanding any other legal action to which LIBELIUM may be entitled.

Storage: our supplier is Amazon Web Services Inc., whose servers are located in Ireland. As already mentioned, our data bases are sent encrypted to Amazon.

Structuring of Users data by market, product, service, etc.

Recording: LIBELIUM may record phone conversations with Users, to have an evidence of their requests (of info, services, assistanceā¦).

Pseudonymisation meaning the processing of personal data in such a manner that the personal data can no longer be attributed to a specific data subject without the use of additional information,
provided that such additional information is kept separately. This is what we do with any data concerning health and obtained through MySignals products and services, which are obtained only to provide MySignals Customers access to their historical.

Profiling: LIBELIUM shall not make any profiling by using personal data.

Disclosure by transmission to some of LIBELIUMĀ“s service providers or partners (Recipients), who help us provide the services you enjoy by using our websites or purchasing our products and services.

Cross-border transfer: Cross-border transfer of data may exist, as LIBELIUMĀ“s service providers and partners may be either in the European Union or in third countries, always within a Privacy Shield Framework

Consultation and use by Libelium, for the purposes explained above.

Restriction, erasure or destruction, as per your request, or when the term of data processing, as explained below, comes to an end.

Personal data shall be processed by using the security measures requested by the Regulation to avoid any personal data breach (meaning a breach of security leading to the accidental or unlawful destruction, loss, alteration, unauthorised disclosure of, or access to, personal data transmitted, stored or otherwise processed). Users may nevertheless be aware of the fact that the existing security measures for computer systems on the Internet are not entirely trustworthy.

d. For how long do we store your personal data? personal data will be stored for the period strictly needed to serve the purposes described above and in connection with each kind of processing, for instance: (i) for the term of the contractual relationship entered with LIBELIUM and six years following its termination, according to Spanish Accountancy Regulations; (ii) as long as YOU do not exercise your right to erasure; (iii) for six years after your last statement of interest.

e. How can YOU exercise your rights? Please contact LIBELIUMĀ“s Data Protection Officer (DPO), by email (privacy@libelium.com) or at the following address: LIBELIUM COMUNICACIONES DISTRIBUIDAS, S.L. Attn. Data Protection Officer, C/ EscatrĆ³n 16. 50014 Zaragoza (Spain). Users may request from the DPO at any time access to and rectification or erasure of personal data or restriction of processing concerning their data, as well as data portability; Users may, at any time, withdraw consent without affecting the lawfulness of processing based on consent before its withdrawal; Users may at any time lodge a complaint with the Spanish Agency on Data Protection (www.agpd.es) or with any other Supervisory Authority;

3.2. Right of Access (Article 15)

Users shall have the right to obtain from our DPO confirmation as to whether or not personal data concerning him or her are being processed, and, where that is the case, access to their personal data. Our DPO shall provide a copy of the personal data undergoing processing. For any further copies requested by User, the DPO may charge a reasonable fee based on administrative costs. Where User makes the request by electronic means, the information shall be provided in a commonly used electronic form.

3.3. Right to Rectification and Erasure (āright to be forgottenā, Articles 16-17)

Users shall have the right to obtain from the DPO without undue delay the rectification of inaccurate personal data concerning him or her, and to have incomplete personal data completed, including by means of providing a supplementary statement.

Users shall also have the right to obtain from the DPOr the erasure of personal data concerning him or her without undue delay, in the circumstances set forth in Section 17 of the Regulation.

3.4. Right to restriction of processing (Articles 18-19)

Users shall have the right to obtain from the DPO restriction of processing in the circumstances set forth in section 18 of the Regulation.

3.5. Right to data portability (Article 20)

Subject to the restrictions in Section 20 of the Regulation, Users shall have the right to receive their personal data in a structured, commonly used and machine-readable format and have the right to transmit those data to another controller without hindrance from the controller to which the personal data have been provided, where:

(a) the processing is based on consent previously granted; and

(b) the processing is carried out by automated means.

In exercising his or her right to data portability Users shall have the right to have the personal data transmitted directly from one controller to another, where technically feasible.

3.6. Right to object and automated individual decision-making (Articles 21-22)

Users shall have the right to object at any time to processing of personal data for direct marketing purposes, for scientific or historical research purposes or statistical purposes pursuant to Article 89(1) of the Regulation.

Moreover and subject to the limitation in Section 22 of the Regulation, Users hall have the right not to be subject to a decision based solely on automated processing, including profiling, which produces legal effects concerning him or her or similarly significantly affects him or her.

Website navigation and Cookies

By navigating on LIBELIUMĀ“s websites you accept our using āCookiesā, unique identifiers that we transfer to your device to enable our systems to recognize your device and to:

Identify you when you sign-in to our sites, allowing us to provide you with product recommendations and display personalized content;

Conduct research and diagnostics to improve LIBELIUM's content, products and services;

Prevent fraudulent activity;

Improve security.

YOU may visit LIBELIUMĀ“s websites without disclosing your identity or any personal data, unless YOU voluntarily choose to disclose such information by filling the forms in our websites. LIBELIUMĀ“s servers may only collect domain names and IP addresses but not email addresses of their visitors. This kind of information is used to elaborate reports on visit statistics, the time spent in our websites, websites accessed, the general origin of visitors (through āFavoritesā, search engines, links from other websites, etc.) to the sole purposes of getting information on how our websites are used and improving their contents and services.

LIBELIUMĀ“s websites may provide links to other sites but LIBELIUM assumes no liability on the privacy policies adopted by the linked sites, directly or indirectly. Links to other sites are provided as a suggestion only and do not imply LIBELIUMĀ“s warranty or liability concerning their quality, accuracy or contents of the information provided therein.

LIBELIUM does not warrant the veracity or accuracy of the information disclosed by its suppliers, partners, developers or third parties whose products or services are offered through LIBELIUMĀ“s websites, their origin, ownership or the use or practical implementation made by Users.