Waspmote is based on a modular architecture. The idea is to integrate only the modules needed in each device. These modules can be changed and expanded according to needs.
The modules available for integration in Waspmote are categorized in:
* Temporary extreme temperatures are supported. Regular recommended usage: -20, +60 ºC.
Data signals:
Power signals:
Operational values:
Absolute maximum values:
Waspmote can communicate with other external devices through the using different input/output ports.
Sensor connector:
Auxiliary SPI-UART connector:
Waspmote has 7 accessible analog inputs in the sensor connector. Each input is directly connected to the microcontroller. The microcontroller uses a 10-bit successive approximation analog to digital converter (ADC). The reference voltage value for the inputs is 0 V (GND). The maximum value of input voltage is 3.3 V which corresponds with the microcontroller's general power voltage.
To obtain input values, the function analogRead(analog input)
is used, the function's input parameter will be the name of the input to be read "ANALOG1, ANALOG2..." (see sensor connector figure). The value obtained from this function will be an integer number between 0 and 1023, 0 corresponds to 0 V and 1023 to 3.3 V.
The analog input pins can also be used as digital input/output pins. If these pins are going to be used as digital ones, the following correspondence list for pin names must be taken into account:
Analog pin | Digital pin | |
---|---|---|
ANALOG1 | => | 14 |
ANALOG2 | => | 15 |
ANALOG3 | => | 16 |
ANALOG4 | => | 17 |
ANALOG5 | => | 18 |
ANALOG6 | => | 19 |
ANALOG7 | => | 20 |
{
val = analogRead(ANALOG1);
}
Waspmote has digital pins which can be configured as input or output depending on the needs of the application. The voltage values corresponding to the different digital values would be:
LOW
: 0 V for logic 0HIGH
: 3.3 V for logic 1The instructions for control of digital pins are:
{
// set DIGITAL3 pin as input and read its value
pinMode(DIGITAL3, INPUT);
val = digitalRead(DIGITAL3);
// set DIGITAL3 pin as output and set it LOW
pinMode(DIGITAL3 ,OUTPUT);
digitalWrite(DIGITAL3, LOW);
}
DIGITAL1 pin can also be used as output PWM (Pulse Width Modulation) with which an analog signal can be "simulated". It is actually a square wave between 0 V and 3.3 V for which the proportion of time when the signal is high can be changed (its working cycle) from 0% to 100%, simulating a voltage of 0 V (0%) to 3.3 V (100%).The resolution is 8 bit, so up to 255 values between 0-100% can be configured. The instruction to control the PWM output is analogWrite(DIGITAL1, value)
; where value is the analog value (0-255).
{
analogWrite(DIGITAL1, 127);
}
There are 2 UARTs in Waspmote: UART0 and UART1. Besides, there are several ports which might be connected to these UARTs through 2 different multiplexers, one for each UART.
{
Utils.setMuxAux1(); // set Auxiliar1 socket
Utils.setMuxAux2(); // set Auxiliar2 socket
Utils.setMuxGPS(); // set GPS socket
Utils.setMuxSocket1(); // set Socket1
}
The I2C communication bus is also used in Waspmote where several devices are connected in parallel: the accelerometer, a crypto-authentication memory and the RTC. In all cases, the microcontroller acts as master while the other devices connected to the bus are slaves.
The SPI port on the microcontroller is used for communication with the micro SD card. All operations using the bus are performed clearly by the specific library. The SPI port is also available in the SPI/UART connector and Socket0.
USB is used in Waspmote for communication with a computer or compatible USB devices. This communication allows the microcontroller's program to be loaded.
For USB communication, microcontroller's UART0 is used. The FT232RL chip carries out the conversion to USB standard.
Waspmote has a built in Real Time Clock - RTC, which keeps it informed of the time. This allows Waspmote to be programmed to perform time-related actions such as:
"Sleep for 1h 20 min and 15sec, then wake up and perform the following action.."
Or even programs to perform actions at absolute intervals, e.g.:
"Wake on the 5th of next month at 00:20 and perform the following action.."
All RTC programming and control is done through the I2C bus.
Alarms:
Alarms can be programmed in the RTC specifying day/hour/minute/second. That allows total control about when the mote wakes up to capture sensor values and perform actions programmed on it. This allows Waspmote to be in the saving energy modes (Deep Sleep and Hibernate) and makes it wake up just at the required moment.
As well as relative alarms, periodic alarms can be programmed by giving a time measurement, so that Waspmote reprograms its alarm automatically each time one event is triggered.
The RTC chosen is the Maxim DS1337C, which operates at a frequency of 32.768 kHz (a second divisor value which allows it to quantify and calculate time variations with high precision).
The RTC is powered by the battery. When the battery is connected, the RTC is powered on. However, the user must keep in mind that if the battery is removed or out of load, then time data will be not maintained. This is the reason we suggest to use RTC time as 'relative' and not 'absolute' (see Programming Guide for more info).
A coin or button battery is not needed. They have a limited life and therefore Waspmote can have a much longer power life expectancy. This is so because the RTC is powered from the "main" battery which has a much bigger charge.
The RTC is responsible for waking Waspmote up from sleep modes like Deep Sleep and Hibernate. This makes possible to use its battery to just power the RTC in sleep modes. The RTC controls when the device has to wake up and perform a particular action. This permits a consumption of 7 uA in the Hibernate mode. Please refer to "Energy System" section for more information.
Related API libraries: WaspRTC.h, WaspRTC.cpp
All information about their programming and operation can be found in the RTC Programming Guide.
All the documentation is located in the Development section in the Libelium website.
The Waspmote LEDs are:
Please refer to Waspmote Utilities guide for more information.