ODUINO ONE is a package of Arduino Uno R3 and LCD/Keypad/sensor. You can buy this item in this link. (Will be available soon) Arduino Uno R3 schematics [[http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf]] LCD+Keypad shield schematics [[http://dn.odroid.com/ODUINO/schematics-v1.0-dfr0009.pdf]] DHT11 Sensor (Humidity / Temperature sensor) [[http://www.micro4you.com/files/sensor/DHT11.pdf]] Connections are (V)oltage, (S)ignal, (G)round {{en:oduinoone:dht11-humiditytempvsg.jpg}} DHT11 uses one-wire communication and I connected it to the digital Pin#3 of Arduino. Also note that we should add a 10Kohm pull-up resistor on that pin. {{en:oduinoone:oduinoone_side.jpg?600|}} The example code shows the temperature, humidity and pressed keypad information on LCD. It also transmit that information to the host via USB. {{en:oduinoone:oduinoone_top.jpg?600|}} To compile this source code, you need to install the Arduino IDE on your ODROID board or PC. $ sudo apt-get install arduino I could run the Arduino IDE on ODROID with Ubnutu image. The connection node of Arduino USB is "/dev/ttyACM0" or "/dev/ttyACM1". To complete to compile this test code, you must install the library of DHT sensor. Download dht.cpp and dht.h from below link and copy them into "~/sketchbook/libraries/dht". [[http://playground.arduino.cc/Main/DHTLib]] I should restart the Arduino IDE after copying to use the library. #include #include /******************************************************* This program will test the LCD panel, the buttons and the Humidity/Temperature sensor Version : 0.1 Date : 20-Oct-2013 By Hardkernel ********************************************************/ // for Digital Humidity and Temperature sensor (DHT11) dht DHT; #define DHT11_PIN 3 // Global variables unsigned long elapsed_time; // select the pins used on the LCD panel LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // define some values used by the panel and buttons int lcd_key = 0; int adc_key_in = 0; #define btnRIGHT 0 #define btnUP 1 #define btnDOWN 2 #define btnLEFT 3 #define btnSELECT 4 #define btnNONE 5 // read the buttons int read_LCD_buttons() { adc_key_in = analogRead(0); // read the value from the sensor // my buttons when read are centered at these valies: 0, 144, 329, 504, 741 // we add approx 50 to those values and check to see if we are close if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result if (adc_key_in < 50) return btnRIGHT; if (adc_key_in < 195) return btnUP; if (adc_key_in < 380) return btnDOWN; if (adc_key_in < 555) return btnLEFT; if (adc_key_in < 790) return btnSELECT; return btnNONE; // when all others fail, return this... } void setup() { // initialize serial communication at 115200 bits per second: Serial.begin(115200); lcd.begin(16, 2); // start the LCD library lcd.setCursor(0,0); lcd.print(" Hello, ODUINO! "); // print a simple message // 1234567890123456 delay(1500); // Splash for 1.5 second Serial.println("ODUINO TEST PROGRAM "); Serial.println(); Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)"); elapsed_time = millis()/1000; // Returns the number of milliseconds since the Arduino board began running the current program. } void loop() { lcd.setCursor(0,1); // move to the begining of the second line lcd.print("KEY :"); lcd.setCursor(6,1); // move to the begining of the second line lcd_key = read_LCD_buttons(); // read the buttons switch (lcd_key) // depending on which button was pushed, we perform an action { case btnRIGHT: { lcd.print("RIGHT "); Serial.println("RIGHT "); break; } case btnLEFT: { lcd.print("LEFT "); Serial.println("LEFT "); break; } case btnUP: { lcd.print("UP "); Serial.println("UP "); break; } case btnDOWN: { lcd.print("DOWN "); Serial.println("DOWN "); break; } case btnSELECT: { lcd.print("SELECT"); Serial.println("SELECT "); break; } case btnNONE: { lcd.print("NONE "); break; } } // Read & Display the humidity / temperature data every 1 second (approx.) if(elapsed_time != millis()/1000) { elapsed_time = millis()/1000; Serial.print("DHT11, \t"); int chk = DHT.read11(DHT11_PIN); switch (chk) { case DHTLIB_OK: Serial.print("OK,\t"); break; case DHTLIB_ERROR_CHECKSUM: Serial.print("Checksum error,\t"); break; case DHTLIB_ERROR_TIMEOUT: Serial.print("Time out error,\t"); break; default: Serial.print("Unknown error,\t"); break; } // DISPLAY DATA Serial.print(DHT.humidity,0); Serial.print(",\t"); Serial.println(DHT.temperature,0); lcd.setCursor(0,0); // move cursor to second line "1" and 9 spaces over lcd.print("HUMI:"); lcd.print((int)(DHT.humidity)); lcd.print("%"); lcd.print(" TEM:"); lcd.print((int)(DHT.temperature)); lcd.print("C"); } delay(50); // delay 50 msec. } ===== Application ===== ==== Qt(Ubuntu x86) ==== http://dn.odroid.com/ODUINO/binary/Ubuntu_Qt/x86/oduino ==== Qt(Ubuntu arm) ==== http://dn.odroid.com/ODUINO/binary/Ubuntu_Qt/arm/oduino {{http://dn.odroid.com/ODUINO/binary/Ubuntu_Qt/screenshot, 2013-11-04 14:32:15.png?600|}} The binary & source code of PC Application. http://dn.odroid.com/ODUINO/source/Ubuntu_Qt/oduino.zip === How to compile x86 and ARM Application for Ubuntu/Linux === == install packages == $ sudo apt-get install qt4-default qt4-designer libqwt-dev == build the oduino == $ cd oduino $ uic oduin.ui > ui_oduino.h $ qmake $ make == Tip == If you need the application with Qt5, refer this link.\\ http://forum.odroid.com/viewtopic.php?f=90&t=8524#p104675 ==== Android ==== http://dn.odroid.com/ODUINO/binary/Android/Oduino.apk {{http://dn.odroid.com/ODUINO/binary/Android/Screenshot_2013-11-04-14-46-26.png?600|}} The binary & source code of Android Application.\\ http://dn.odroid.com/ODUINO/source/Android/Oduino.zip