We're no longer updating This wiki!!

Introduction

You're probably itching to make some fun embedded computer projects with ODROID-XU4. What you need is an add on prototyping T-breakout board, which can break out all those tasty power, GPIO, I2C, ADC pins from the 40 pin header onto a solderless breadboard. This set will make “cobbling together” prototypes with the ODROID-XU4 super easy.

This kit comes with below many items.

  • Assembled T-breakout PCB - 40Pin GPIO Breakout board
  • Breadboard - 630 Tie-points with dual power lanes
  • 40pin Ribbon cable - IDC Flat cable 100mm
  • 40pin Male-to-Male Dupont jumper Wire 170mm
  • 7 x Green LED 3mm
  • 7 x Yellow LED 3mm
  • 7 x Red LED 3mm
  • 2 x Photo Cell (CdS Light sensor)
  • 6 x Tact Switchs
  • 50 x 330 Ohm 1/6W resister
  • 50 x 10K Ohm 1/6W resister

Where to buy

DIY light level meter project

Linux

1. Configuration tinkering kit such as below schematic.
Light Level Meter schematic

2. Get the wiringPi library compatible ODROID

# git clone https://github.com/hardkernel/wiringPi

3. Build the library

# cd wiringPi
# ./build

4. Compile and run the example source code.

example-led.c
//------------------------------------------------------------------------------------------------------------
//
// ODROID-C GPIO(LED) / ADC Test Application.
//
// Defined port number is wiringPi port number.
//
// Compile : gcc -o <create excute file name> <source file name> -lwiringPi -lwiringPiDev -lpthread
// Run : sudo ./<created excute file name>
//
//------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
 
#include <unistd.h>
#include <string.h>
#include <time.h>
 
#include <wiringPi.h>
#include <wiringPiI2C.h>
#include <wiringSerial.h>
#include <lcd.h>
 
//------------------------------------------------------------------------------------------------------------
//
// Global handle Define
//
//------------------------------------------------------------------------------------------------------------
 
#define DATA_UPDATE_PERIOD  100 // 100ms
 
//------------------------------------------------------------------------------------------------------------
//
// ADC:
//
//------------------------------------------------------------------------------------------------------------
#define PORT_ADC   0   // ADC.AIN0
#define MAX_ADC_VALUE	4095
 
//------------------------------------------------------------------------------------------------------------
//
// LED:
//
//------------------------------------------------------------------------------------------------------------
const int ledPorts[] = {
	7,
	0,
	2,
	3,
	12,
	13,
	14,
	21,
	22,
	23,
};
 
#define MAX_LED_CNT (sizeof(ledPorts) / sizeof(ledPorts[0]))
#define ADC_UNIT	(MAX_ADC_VALUE / MAX_LED_CNT)
 
//------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------
//
// system init
//
//------------------------------------------------------------------------------------------------------------
int system_init(void)
{
    int i;
 
    // GPIO Init(LED Port ALL Output)
    for(i = 0; i < MAX_LED_CNT; i++)    pinMode (ledPorts[i], OUTPUT);
 
    return  0;
 }
 
//------------------------------------------------------------------------------------------------------------
//
// board data update
//
//------------------------------------------------------------------------------------------------------------
void boardDataUpdate(void)
{
    int i, adcValue, ledPos;
 
    // adc value read
    if((adcValue = analogRead (PORT_ADC)))    {
	ledPos = adcValue / ADC_UNIT;
    }
    else
        ledPos = 0;
 
    //  LED Control
    for(i = 0; i < MAX_LED_CNT; i++)    digitalWrite (ledPorts[i], 0); // LED All Clear
    for(i = 0; i < ledPos;      i++)    digitalWrite (ledPorts[i], 1); // LED On
}
 
//------------------------------------------------------------------------------------------------------------
//
// Start Program
//
//------------------------------------------------------------------------------------------------------------
int main (int argc, char *argv[])
{
    static int timer = 0 ;
 
    wiringPiSetup ();
 
    if (system_init() < 0)
    {
        fprintf (stderr, "%s: System Init failed\n", __func__);     return -1;
    }
 
    for(;;)    {
        usleep(100000);
        if (millis () < timer)  continue ;
 
        timer = millis () + DATA_UPDATE_PERIOD;
 
        // All Data update
        boardDataUpdate();
    }
 
    return 0 ;
}

Python example

0. Requrements install

# sudo apt update
# sudo apt install python-dev python-setuptools swig3.0

1. Get/setup WiringPi 2 for Python repository

# git clone https://github.com/hardkernel/WiringPi2-Python.git
# cd WiringPi2-Python
# git submodule init
# git submodule update

2. Build & install

# ./build.sh

Or

# swig3.0 -python -threads wiringpi.i
# sudo python setup.py build install

WiringPi Pin Map

3. Run the example source code

example-led.py
#!/usr/bin/python
import wiringpi2 as wpi
import time
 
leds = [7, 0, 2, 3, 12, 13, 14, 21, 22, 23]
wpi.wiringPiSetup()
 
# GPOI pin setup
for x in leds:
	wpi.pinMode(x, 1)
	wpi.digitalWrite(x, 0)
 
adc_unit = 4095 / len(leds)
while True:
	time.sleep(0.05)
	adcValue = wpi.analogRead(0)
	ledPos = adcValue / adc_unit
	for x in leds:
		wpi.digitalWrite(x, 0)
 
	for x in xrange(ledPos):
		wpi.digitalWrite(leds[x], 1)
en/tinkering_kit_light_level_meter_with_driver.txt · Last modified: 2017/04/01 08:29 by odroid
CC Attribution-Share Alike 3.0 Unported
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0