Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
en:c1_tinkering [2016/02/25 15:28] brian.kim [Linux] |
en:c1_tinkering [2017/03/27 09:38] (current) brian.kim [Python example] |
||
---|---|---|---|
Line 2: | Line 2: | ||
{{http://dn.odroid.com/homebackup/C-Breadboard1H.jpg?500|}} | {{http://dn.odroid.com/homebackup/C-Breadboard1H.jpg?500|}} | ||
- | You're probably itching to make some fun embedded computer projects with **ODROID-C1**. 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-C1** super easy. | + | You're probably itching to make some fun embedded computer projects with **ODROID-C**. 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-C** super easy. |
This kit comes with below many items. | This kit comes with below many items. | ||
Line 21: | Line 21: | ||
[[http://www.hardkernel.com/main/products/prdt_info.php?g_code=G141637532784|Where to buy]] | [[http://www.hardkernel.com/main/products/prdt_info.php?g_code=G141637532784|Where to buy]] | ||
- | ===== DIY light level meter project ===== | + | ====== DIY light level meter project ====== |
+ | Configuration tinkering kit such as below schematic. | ||
- | ==== Linux ==== | + | Please refer to below links for ODROID-C2 user or details related to gpio mapping. |
- | 1. Configuration tinkering kit such as below schematic.\\ | + | |
- | Light Level Meter schematic | + | [[en:c1_hardware#expansion_connectors | C1 Expansion Connectors]]\\ |
+ | [[en:c2_hardware#expansion_connectors | C2 Expansion Connectors]] | ||
{{:en:c1:tinkering.jpg?500|}} | {{:en:c1:tinkering.jpg?500|}} | ||
- | 2. Get the wiringPi library compatible **ODROID-C1** | + | ===== Linux ===== |
- | <code> | + | ==== C example ==== |
- | # git clone https://github.com/hardkernel/wiringPi | + | 1. Get the wiringPi library compatible **ODROID** |
- | </code> | + | |
- | 3. Build the library | + | git clone https://github.com/hardkernel/wiringPi |
- | <code> | + | |
- | # cd wiringPi | + | |
- | # ./build | + | |
- | </code> | + | |
- | 4. Compile and run the example source code. | + | 2. Build the library |
- | <file c example-led.c> | + | cd wiringPi |
- | //------------------------------------------------------------------------------------------------------------ | + | ./build |
- | // | + | |
- | // ODROID-C GPIO(LED) / ADC Test Application. | + | 3. Compile and run the example source code. |
- | // | + | |
- | // Defined port number is wiringPi port number. | + | {{http://dn.odroid.com/source_peripherals/ctinkeringkit/example-led.c|example-led.c}} |
- | // | + | wget http://dn.odroid.com/source_peripherals/ctinkeringkit/example-led.c |
- | // Compile : gcc -o <create excute file name> <source file name> -lwiringPi -lwiringPiDev -lpthread | + | gcc -o example-led example-led.c -lwiringPi -lwiringPiDev -lpthread |
- | // Run : sudo ./<created excute file name> | + | sudo ./example-led |
- | // | + | |
- | //------------------------------------------------------------------------------------------------------------ | + | ==== Python example ==== |
- | #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_ADC1 0 // ADC.AIN0 | + | |
- | + | ||
- | static int adcValue = 0; | + | |
- | + | ||
- | //------------------------------------------------------------------------------------------------------------ | + | |
- | // | + | |
- | // LED: | + | |
- | // | + | |
- | //------------------------------------------------------------------------------------------------------------ | + | |
- | static int ledPos = 0; | + | |
- | + | ||
- | const int ledPorts[] = { | + | |
- | 24, // GPIOX.BIT0(#97) | + | |
- | 23, // GPIOX.BIT11(#108) | + | |
- | 22, // GPIOX.BIT3(#100) | + | |
- | 21, // GPIOX.BIT4(#101) | + | |
- | 14, // GPIOX.BIT8(#105) | + | |
- | 13, // GPIOX.BIT9(#106) | + | |
- | 12, // GPIOX.BIT10(#107) | + | |
- | 3, // GPIOX.BIT18(#115) | + | |
- | 2, // GPIOX.BIT19(#116) | + | |
- | 0, // GPIOY.BIT8(#88) | + | |
- | 7, // GPIOY.BIT3(#83) | + | |
- | + | ||
- | 1, // GPIOY.BIT7(#87) | + | |
- | 4, // GPIOX.BIT7(#104) | + | |
- | 5, // GPIOX.BIT5(#102) | + | |
- | 6, // GPIOX.BIT6(#103) | + | |
- | 10, // GPIOX.BIT20(#117) | + | |
- | 26, // GPIOX.BIT2(#99) | + | |
- | 11, // GPIOX.BIT21(#118) | + | |
- | 27, // GPIOX.BIT1(#98) | + | |
- | }; | + | |
- | + | ||
- | #define MAX_LED_CNT sizeof(ledPorts) / sizeof(ledPorts[0]) | + | |
- | + | ||
- | //------------------------------------------------------------------------------------------------------------ | + | |
- | //------------------------------------------------------------------------------------------------------------ | + | |
- | // | + | |
- | // 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; | + | |
- | + | ||
- | // adc value read | + | |
- | if((adcValue = analogRead (PORT_ADC1))) { | + | |
- | ledPos = (adcValue * MAX_LED_CNT * 1000) / 1024; | + | |
- | ledPos = (MAX_LED_CNT - (ledPos / 1000)); | + | |
- | } | + | |
- | 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 ; | + | |
- | } | + | |
- | + | ||
- | //------------------------------------------------------------------------------------------------------------ | + | |
- | //------------------------------------------------------------------------------------------------------------ | + | |
- | </file> | + | |
- | == Python example == | ||
* [[https://github.com/hardkernel/WiringPi2-Python|WiringPi2-Python repository for ODROID]] | * [[https://github.com/hardkernel/WiringPi2-Python|WiringPi2-Python repository for ODROID]] | ||
- | **Prerequisites**: You must have //python-dev// and //python-setuptools// installed If you manually rebuild the bindings with swig-python wiringpi.i | ||
+ | **Prerequisites**: You must have //**python-dev**// and //**python-setuptools**// installed If you manually rebuild the bindings with swig-python wiringpi.i | ||
+ | |||
+ | sudo apt-get install python-dev python-setuptools swig3.0 | ||
+ | | ||
1. Get/setup WiringPi 2 for Python repository | 1. Get/setup WiringPi 2 for Python repository | ||
+ | |||
<code> | <code> | ||
- | # git clone https://github.com/hardkernel/WiringPi2-Python.git | + | git clone https://github.com/hardkernel/WiringPi2-Python.git |
- | # cd WiringPi2-Python | + | cd WiringPi2-Python |
- | # git submodule init | + | git submodule init |
- | # git submodule update | + | git submodule update |
</code> | </code> | ||
2. Build & install | 2. Build & install | ||
- | <code> | + | swig3.0 -python -threads wiringpi.i |
- | # sudo python setup.py install | + | sudo python setup.py build install |
- | </code> | + | |
- | + | ||
- | 3. Run the example source code | + | |
- | <file python example-led.py> | + | |
- | #!/usr/bin/python | + | |
- | import wiringpi2 as wpi | + | |
- | import time | + | |
- | + | ||
- | leds = [24, 23, 22, 21, 14, 13, 12, 3, 2, 0, 7, 1, 4, 5, 6, 10, 26, 11, 27] | + | |
- | + | ||
- | 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) | + | |
- | + | ||
- | # Read the adc value | + | |
- | adcValue = wpi.analogRead(0) | + | |
- | + | ||
- | # Set the LEDs | + | |
- | ledPos = (adcValue * len(leds) * 1000) / 1024 | + | |
- | ledPos = len(leds) - (ledPos / 1000) | + | |
- | for x in leds: | + | 3. Get/Run the example source code |
- | wpi.digitalWrite(x, 0) | + | |
- | for x in xrange(ledPos): | + | {{http://dn.odroid.com/source_peripherals/ctinkeringkit/example-led.py|example-led.py}} |
- | wpi.digitalWrite(leds[x], 1) | + | wget http://dn.odroid.com/source_peripherals/ctinkeringkit/example-led.py |
- | </file> | + | sudo python example-led.py |
- | ==== Android ==== | + | ===== Android ===== |
This process explains how to make an Android app which can access IO ports.\\ | This process explains how to make an Android app which can access IO ports.\\ |