SlideShare une entreprise Scribd logo
1  sur  78
Overview of pcDuino
www.pcduino.com
learn.linksprite.com
Agenda
 pcDuino: a platform open source software meets open
source hardware
 Programming under Ubuntu (linux)
 Arduino style programming ( C ) for pcDuino
 Python programming for pcDuino
 Java programming for pcDuino
 Go
 Cloud 9 IDE
 Scratch for pcDuino
 Project Showcase
 Programming under Android ICS
 Command line programming
 QT GUI
pcDuino: where open software meets open hardware
 pcDuino = mini PC + Arduino
 pcDuino is a kind of super Arduino with the brain
power of a mini PC.
 Existing Arduino shield can work on pcDuino.
 pcDuino can run Ubuntu. The desktop outputs from
HDMI. User can remotely access its desktop via VNC
(Network or OTG-USB).
 pcDuino has built-in Arduino style IDE environment.
It also supports programming in Python, Cloud 9
IDE, Java, Go-lang, Scratch, etc.
 pcDuino can run full Android ICS, and support
Arduino style hardware programming under Android.
 pcDuino is a server, a WiFi router, a printer
server, a IP-PBX, and more.
pcDuino is a platform where open software meets open
hardware.
pcDuino FamilypcDuino Lite pcDuino Lite WiFi pcDuino v1 pcDuino v2 pcDuino v3
CPU
Allwinner A101GHz
ARM Cortex A8
Allwinner A101GHz
ARM Cortex A8
Allwinner A101GHz
ARM Cortex A8
Allwinner A101GHz
ARM Cortex A8
GPU
OpenGL
ES2.0OpenVG 1.1
Mali 400 core
OpenGL
ES2.0OpenVG 1.1
Mali 400 core
OpenGL
ES2.0OpenVG 1.1
Mali 400 core
OpenGL
ES2.0OpenVG 1.1
Mali 400 core
DRAM 512MB 256MB 1GB 1GB
Storage
NO FlashmicroSD
card (TF) slot for up to
32GB
2GB FlashmicroSD
card (TF) slot for up to
32GB
2GB Flash (4GB after
2/1/2014)microSD
card (TF) slot for up to
32GB
2GB Flash (4GB after
2/1/2014)
microSD card (TF) slot
for up to 32GB
Video HDMI HDMI HDMI HDMI
OS Support
• Lbuntu 12.04
•Android
•Lbuntu 12.04
•Doesn’t support
Android
•Lbuntu 12.04
•Android
•Lbuntu 12.04
•Android
ExtensionInterface 2.54mm headers Arduino (TM) Headers 2.54mm headers Arduino (TM) Headers
NetworkInterface
•10/100Mbps RJ45
•USB WiFi extension
(not included)
WiFi, No Ethernet
•10/100Mbps RJ45
•USB WiFi extension
(not included)
•10/100Mbps RJ45
•WiFi
Power 5V, 2000mA 5V, 2000mA 5V, 2000mA 5V, 2000mA
pcDuino hardware interfaces
Frizting Files
http://www.github.com/pcduino/frizting
pcDuino boot modes
 Default to boot from SD
 If there is no bootable image in SD, it will try to boot
from NAND.
 For Ubuntu OS, the system and data in NAND can be copied
to SD seamlessly.
Programming under Ubuntu (linux)
VNC to pcDuino through its USB-
OTG
 Two flavors
 Command line
 IDE
Arduino style programming ( C )
Arduino IDE
Arduino IDE
Arduino IDE
Arduino IDE
Arduino IDE
ArduBlock
C Command line
Setup (one time)
If not already done, set up git. Do this using the command:
ubuntu@ubuntu:~$ sudo apt-get install git
Make sure you’re in your home folder by typing
ubuntu@ubuntu:~$ cd
ubuntu@ubuntu:~$ pwd
/home/Ubuntu
Now download the distribution from github by typing
ubuntu@ubuntu:~$ git clone https://github.com/pcduino/c_enviroment
C Command line
C Command lineChange into the c_enviroment folder:
ubuntu@ubuntu:~$ cd c_enviroment
ubuntu@ubuntu:~/c_enviroment$ ls
Makefile hardware libraries output sample
Now run make to make the libraries and the examples with the following command:
ubuntu@ubuntu:~/c_enviroment$ make
Make[1]: Leaving directory `/home/ubuntu/c_enviroment/sample'
The resulting binary files are found in the output/test folder
ubuntu@ubuntu:~/c_enviroment$ cd output/test
ubuntu@ubuntu:~/c_enviroment/output/test$ ll
total 660
drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 27 06:59 ./
drwxrwxr-x 3 ubuntu ubuntu 4096 Apr 27 06:49 ../
-rwxrwxr-x 1 ubuntu ubuntu 13868 Apr 27 06:58 adc_test*
-rwxrwxr-x 1 ubuntu ubuntu 28284 Apr 27 06:58 adxl345_test*
-rwxrwxr-x 1 ubuntu ubuntu 14209 Apr 27 06:58 interrupt_test*
-rwxrwxr-x 1 ubuntu ubuntu 13726 Apr 27 06:58 io_test*
-rwxrwxr-x 1 ubuntu ubuntu 13712 Apr 27 06:59 linker_button_test*
-rwxrwxr-x 1 ubuntu ubuntu 13907 Apr 27 06:59 linker_buzzer_test*
-rwxrwxr-x 1 ubuntu ubuntu 13689 Apr 27 06:59 linker_hall_sensor_test*
-rwxrwxr-x 1 ubuntu ubuntu 13760 Apr 27 06:59 linker_joystick_test*
-rwxrwxr-x 1 ubuntu ubuntu 13769 Apr 27 06:59 linker_led_bar_test*
-rwxrwxr-x 1 ubuntu ubuntu 13690 Apr 27 06:59 linker_led_test*
-rwxrwxr-x 1 ubuntu ubuntu 14290 Apr 27 06:59 linker_light_sensor_test*
““
C Command lineTo view the contents of a sample sketch, (this
example we’ll look at the contents of
linker_led_test.c) type:
ubuntu@ubuntu:~/c_enviroment/sample$ cat
linker_led_test.c
/*
* LED test program
*/
#include <core.h>
int led_pin = 1;
void setup()
{
if(argc != 2){
goto _help;
}
led_pin = atoi(argv[1]);
if((led_pin < 0) || (led_pin > 13)){
goto _help;
}
pinMode(led_pin, OUTPUT);
return;
_help:
printf("Usage %s LED_PIN_NUM(0-13)n", argv[0]);
exit(-1);
}
void loop()
{
digitalWrite(led_pin, HIGH); // set the LED
on
delay(1000); // wait for a second
digitalWrite(led_pin, LOW); // set the LED
off
delay(1000); // wait for a second
}
Creating Your Own Sketch
ubuntu@ubuntu:~/c_enviroment/sample$ nano button_led.c
An empty nano screen should appear.
Copy and paste the following code into it. (Remember to paste in nano at the cursor,
just right click the mouse button).
#include <core.h> // Required first line to run on pcDuino
int ledPin = 8;
int buttonPin = 7;
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}
Creating Your Own Sketch
void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
Creating Your Own Sketch
Modify the Makefile and Compile
ubuntu@ubuntu:~/c_enviroment/sample$ nano Makefile
You will see a section that lists all the OBJS something like:
OBJS = io_test adc_test pwm_test spi_test adxl345_test serial_test liquidcrystal_i2c
liquidcrystal_spi interrupt_test tone_test
OBJS += linker_led_test linker_potentiometer_test linker_tilt_test linker_light_sensor_test
linker_button_test
OBJS += linker_touch_sensor_test linker_magnetic_sensor_test linker_temperature_sensor_test
linker_joystick_test
OBJS += linker_rtc_test linker_sound_sensor_test linker_buzzer_test linker_hall_sensor_test
linker_led_bar_test linker_relay_test
OBJS += pn532_readAllMemoryBlocks pn532readMifareMemory pn532readMifareTargetID
pn532writeMifareMemory
Creating Your Own SketchWe’re going to add a line to the end of this with the name of the
scketch we just created:
OBJS += button_led
Save the file and exit nano using <CTRL>X with a y and <enter>.
We now run make by typing:
ubuntu@ubuntu:~/c_enviroment/sample$ make
You should see a whole bunch of text with the end being:
button_led.c -o ../output/test/button_led ../libarduino.a
If all went well, you can go to the output/test folder and find your executable you have created:
ubuntu@ubuntu:~/c_enviroment/sample$ cd ../output/test/
ubuntu@ubuntu:~/c_enviroment/output/test$ ll
total 676
drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 27 07:51 ./
drwxrwxr-x 3 ubuntu ubuntu 4096 Apr 27 06:49 ../
-rwxrwxr-x 1 ubuntu ubuntu 13868 Apr 27 07:51 adc_test*
-rwxrwxr-x 1 ubuntu ubuntu 28284 Apr 27 07:51 adxl345_test*
-rwxrwxr-x 1 ubuntu ubuntu 13668 Apr 27 07:51 button_led*
“..(not showing rest of listing here)
Creating Your Own SketchRun Your Sketch
To run it, once you have wired up a switch and led to the right pins, type:
ubuntu@ubuntu:~/c_enviroment/output/test$ ./button_led
To stop the program, <Ctrl>C
A Quick Re-Cap
Add #include <core.h> to the top of your sketch.
Create your sketch in the samples folder (if your familiar with linux,
makefiles, and compiling code, you could set up your own)
Add the filename to the Makefile in the samples folder in the OBJS section
without the .c
Run make
Run the executable from the output/test folder.
You can introduce command line arguments into your sketch to make it more
transportable.
pcDuino
Hardware Experiments
Potentiometer
LED Dimmer (PWM)
7-seg LED
8x8 LED Matrix
Analog Temperature Sensor
4 Digits 7-segment LEDs
16x02 Character LCD
Digital Humidity and Temperature
Sensor
LED controlled by LDR
Serial Port of pcDuino
Extends to 4 UARTS
http://jbvsblog.blogspot.com/2013/09/pcduino-extends-to-4-
uarts.html
Ultrasonic Sensor
Stepper
RF Servo
Relay
NFC Shield
Cottonwood:UHF ultra-distance RFID Reader
GPS Shield
Cellular Shield
Powerline Communication
Python
ubuntu@ubuntu:~/python-pcduino/Samples/blink_led$ more blink_led.py
#!/usr/bin/env python
# blink_led.py
# gpio test code for pcduino ( http://www.pcduino.com )
#
import gpio
import time
led_pin = "gpio2"
def delay(ms):
time.sleep(1.0*ms/1000)
def setup():
gpio.pinMode(led_pin, gpio.OUTPUT)
def loop():
while(1):
gpio.digitalWrite(led_pin, gpio.HIGH)
delay(200)
pcDuino as Networked Device to
feed data to Xively (Internet of
Things)
Smart Garage powered by pcDuino
OpenCV
OpenCV
def process(infile):
image = cv.LoadImage(infile);
if image:
faces = detect_object(image)
im = Image.open(infile)
path = os.path.abspath(infile)
save_path = os.path.splitext(path)[0]+"_face"
try:
os.mkdir(save_path)
except:
pass
if faces:
draw = ImageDraw.Draw(im)
count = 0
for f in faces:
count += 1
draw.rectangle(f, outline=(255, 0, 0))
a = im.crop(f)
file_name =
os.path.join(save_path,str(count)+".jpg")
# print file_name
a.save(file_name)
drow_save_path =
os.path.join(save_path,"out.jpg")
im.save(drow_save_path, "JPEG", quality=80)
else:
print "Error: cannot detect faces on %s" %
infile
if __name__ == "__main__":
process("./opencv_in.jpg")
OpenCV
#!/usr/bin/env python
#coding=utf-8
import os
from PIL import Image, ImageDraw
import cv
def detect_object(image):
grayscale = cv.CreateImage((image.width, image.height), 8, 1)
cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY)
cascade = cv.Load("/usr/share/opencv/haarcascades/haarcascade_frontalface_alt_tree.xml")
rect = cv.HaarDetectObjects(grayscale, cascade, cv.CreateMemStorage(), 1.1, 2,
cv.CV_HAAR_DO_CANNY_PRUNING, (20,20))
result = []
for r in rect:
result.append((r[0][0], r[0][1], r[0][0]+r[0][2], r[0][1]+r[0][3]))
return result
Go Langpackage main
import (
"fmt"
"./gpio"
"time"
)
func main() {
g, err := gpio.NewGPIOLine(7,gpio.OUT)
if err != nil {
fmt.Printf("Error setting up GPIO %v: %v", 18, err)
return
}
blink(g, 100)
g.Close()
}
func blink(g *gpio.GPIOLine, n uint) {
fmt.Printf("blinking %v time(s)n", n)
for i := uint(0); i &lt; n; i++ {
g.SetState(true)
time.Sleep(time.Duration(1000) * time.Millisecond)
g.SetState(false)
time.Sleep(time.Duration(1000) * time.Millisecond)
}
}
Cloud 9 IDE
 Cloud9 IDE is an online development environment
for Javascript and Node.js applications as well
as HTML, CSS, PHP, Java, Ruby and 23 other
languages.
 You're programming for the web, on the web.
Teams can collaborate on projects and run them
within the browser. When you're finished,
deploy it—and you're done!
Cloud 9 IDE
QT on pcDuino
QT on pcDuino
Scratch for pcDuino
Scratch
$sudo apt-get install pcduino-scratch
Run SNAP on pcDuino
Blink LED (Scratch for
pcDuino)
Press Button to Turn on LED
(Scratch for pcDuino)
Touch the Finish Line (Scratch for
pcDuino)
Play Pong with Scratch for
pcDuino
pcDuino as banaba piano using
Scratch for pcDuino
Showcase
Home Automation:IP controllable LED
 Many users are asking if the hardware part can be
programmed together with the Ubuntu linux?
 Sure. This is the beauty of pcDuino. The Arduino compatible hardware is a native part
of the OS.
 pcDuino includes Ethernet port, USB Wifi dongle, so there is no
need for Ethernet shield, Ethernet shield , USB host shield, MP3
shields and so on.
Now, we are going to implement a TCP/IP
socket server on pcDuino to listen to the
data coming from client.
When it receives character ’O', it will
turn on the LED, and when it receives ‘F‛,
it will turn on the LED. No actions if
receive something else.
Home Automation:IP controllable LED#include ‚sys/socket.h‛
#include ‚netinet/in.h‛
#include ‚arpa/inet.h‛
#include ‚sys/types.h‛
int led_pin = 2;
int listenfd = 0, connfd = 0;
int n;
struct sockaddr_in serv_addr;
char sendBuff[1025];
time_t ticks;
void loop()
{
n = read(connfd, sendBuff, strlen(sendBuff) );
if(n>0)
{
if(sendBuff[0]=='O') digitalWrite(led_pin,
HIGH); // set the LED on
if(sendBuff[0]=='F') digitalWrite(led_pin,LOW);
// set the LED off
}
}
void setup()
{
led_pin = 2;
pinMode(led_pin, OUTPUT);
listenfd = socket(AF_INET, SOCK_STREAM, 0);
memset(serv_addr, '0', sizeof(serv_addr));
memset(sendBuff, '0', sizeof(sendBuff));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(5000);
bind(listenfd, (struct sockaddr*) serv_addr, sizeof(serv_addr));
listen(listenfd, 10);
connfd = accept(listenfd, (struct sockaddr*)NULL, NULL);
}
Home Automation by Z-wave
SDR on pcDuino
pcDuino as 3D printer control
console
Programming under Android ICS
Two flavors to program under Android
 There are two flavors to program under
Android:
 Command line
 QT5 GUI
Command line
QT5 GUI
We can copy the apk though pcDuino OTG or
SD card to pcDunio and install it there.
Connect with pcDuino
Facebook.com/linksprit
e

Contenu connexe

Tendances

Cassiopeia Ltd - ESP8266+Arduino workshop
Cassiopeia Ltd - ESP8266+Arduino workshopCassiopeia Ltd - ESP8266+Arduino workshop
Cassiopeia Ltd - ESP8266+Arduino workshoptomtobback
 
Rdl esp32 development board trainer kit
Rdl esp32 development board trainer kitRdl esp32 development board trainer kit
Rdl esp32 development board trainer kitResearch Design Lab
 
IOT Talking to Webserver - how to
IOT Talking to Webserver - how to IOT Talking to Webserver - how to
IOT Talking to Webserver - how to Indraneel Ganguli
 
[5]投影片 futurewad樹莓派研習會 141218
[5]投影片 futurewad樹莓派研習會 141218[5]投影片 futurewad樹莓派研習會 141218
[5]投影片 futurewad樹莓派研習會 141218CAVEDU Education
 
Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Dobrica Pavlinušić
 
Interacting with Intel Edison
Interacting with Intel EdisonInteracting with Intel Edison
Interacting with Intel EdisonFITC
 
Hardware hacking for software people
Hardware hacking for software peopleHardware hacking for software people
Hardware hacking for software peopleDobrica Pavlinušić
 
Esp8266 - Intro for dummies
Esp8266 - Intro for dummiesEsp8266 - Intro for dummies
Esp8266 - Intro for dummiesPavlos Isaris
 
NodeMCU ESP8266 workshop 1
NodeMCU ESP8266 workshop 1NodeMCU ESP8266 workshop 1
NodeMCU ESP8266 workshop 1Andy Gelme
 
Arduino 習作工坊 - Lesson 1 燈光之夜
Arduino 習作工坊 - Lesson 1 燈光之夜Arduino 習作工坊 - Lesson 1 燈光之夜
Arduino 習作工坊 - Lesson 1 燈光之夜CAVEDU Education
 
Esp8266 NodeMCU
Esp8266 NodeMCUEsp8266 NodeMCU
Esp8266 NodeMCUroadster43
 
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernelsMainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernelsDobrica Pavlinušić
 
Introduction to ESP32 Programming [Road to RIoT 2017]
Introduction to ESP32 Programming [Road to RIoT 2017]Introduction to ESP32 Programming [Road to RIoT 2017]
Introduction to ESP32 Programming [Road to RIoT 2017]Alwin Arrasyid
 
IoT Hands-On-Lab, KINGS, 2019
IoT Hands-On-Lab, KINGS, 2019IoT Hands-On-Lab, KINGS, 2019
IoT Hands-On-Lab, KINGS, 2019Jong-Hyun Kim
 
Adafruit Huzzah Esp8266 WiFi Board
Adafruit Huzzah Esp8266 WiFi BoardAdafruit Huzzah Esp8266 WiFi Board
Adafruit Huzzah Esp8266 WiFi BoardBiagio Botticelli
 
JavaScript Robotics #NodeWeek
JavaScript Robotics #NodeWeekJavaScript Robotics #NodeWeek
JavaScript Robotics #NodeWeekSuz Hinton
 

Tendances (20)

Cassiopeia Ltd - ESP8266+Arduino workshop
Cassiopeia Ltd - ESP8266+Arduino workshopCassiopeia Ltd - ESP8266+Arduino workshop
Cassiopeia Ltd - ESP8266+Arduino workshop
 
Rdl esp32 development board trainer kit
Rdl esp32 development board trainer kitRdl esp32 development board trainer kit
Rdl esp32 development board trainer kit
 
IOT Talking to Webserver - how to
IOT Talking to Webserver - how to IOT Talking to Webserver - how to
IOT Talking to Webserver - how to
 
[5]投影片 futurewad樹莓派研習會 141218
[5]投影片 futurewad樹莓派研習會 141218[5]投影片 futurewad樹莓派研習會 141218
[5]投影片 futurewad樹莓派研習會 141218
 
Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !
 
Interacting with Intel Edison
Interacting with Intel EdisonInteracting with Intel Edison
Interacting with Intel Edison
 
Hardware hacking for software people
Hardware hacking for software peopleHardware hacking for software people
Hardware hacking for software people
 
Esp8266 - Intro for dummies
Esp8266 - Intro for dummiesEsp8266 - Intro for dummies
Esp8266 - Intro for dummies
 
Remote tanklevelmonitor
Remote tanklevelmonitorRemote tanklevelmonitor
Remote tanklevelmonitor
 
NodeMCU ESP8266 workshop 1
NodeMCU ESP8266 workshop 1NodeMCU ESP8266 workshop 1
NodeMCU ESP8266 workshop 1
 
Arduino 習作工坊 - Lesson 1 燈光之夜
Arduino 習作工坊 - Lesson 1 燈光之夜Arduino 習作工坊 - Lesson 1 燈光之夜
Arduino 習作工坊 - Lesson 1 燈光之夜
 
Esp8266 basics
Esp8266 basicsEsp8266 basics
Esp8266 basics
 
Esp8266 NodeMCU
Esp8266 NodeMCUEsp8266 NodeMCU
Esp8266 NodeMCU
 
Let's begin io t with $10
Let's begin io t with $10Let's begin io t with $10
Let's begin io t with $10
 
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernelsMainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
 
Introduction to ESP32 Programming [Road to RIoT 2017]
Introduction to ESP32 Programming [Road to RIoT 2017]Introduction to ESP32 Programming [Road to RIoT 2017]
Introduction to ESP32 Programming [Road to RIoT 2017]
 
IoT Hands-On-Lab, KINGS, 2019
IoT Hands-On-Lab, KINGS, 2019IoT Hands-On-Lab, KINGS, 2019
IoT Hands-On-Lab, KINGS, 2019
 
lwM2M OTA for ESP8266
lwM2M OTA for ESP8266lwM2M OTA for ESP8266
lwM2M OTA for ESP8266
 
Adafruit Huzzah Esp8266 WiFi Board
Adafruit Huzzah Esp8266 WiFi BoardAdafruit Huzzah Esp8266 WiFi Board
Adafruit Huzzah Esp8266 WiFi Board
 
JavaScript Robotics #NodeWeek
JavaScript Robotics #NodeWeekJavaScript Robotics #NodeWeek
JavaScript Robotics #NodeWeek
 

Similaire à pcDuino Presentation at SparkFun

Lab Handson: Power your Creations with Intel Edison!
Lab Handson: Power your Creations with Intel Edison!Lab Handson: Power your Creations with Intel Edison!
Lab Handson: Power your Creations with Intel Edison!Codemotion
 
arduino
arduinoarduino
arduinomurbz
 
Ardx eg-spar-web-rev10
Ardx eg-spar-web-rev10Ardx eg-spar-web-rev10
Ardx eg-spar-web-rev10stemplar
 
Using arduino and raspberry pi for internet of things
Using arduino and raspberry pi for internet of thingsUsing arduino and raspberry pi for internet of things
Using arduino and raspberry pi for internet of thingsSudar Muthu
 
Starting Raspberry Pi
Starting Raspberry PiStarting Raspberry Pi
Starting Raspberry PiLloydMoore
 
Ch_2_8,9,10.pptx
Ch_2_8,9,10.pptxCh_2_8,9,10.pptx
Ch_2_8,9,10.pptxyosikit826
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitSulamita Garcia
 
Cassiopeia Ltd - standard Arduino workshop
Cassiopeia Ltd - standard Arduino workshopCassiopeia Ltd - standard Arduino workshop
Cassiopeia Ltd - standard Arduino workshoptomtobback
 
Python-in-Embedded-systems.pptx
Python-in-Embedded-systems.pptxPython-in-Embedded-systems.pptx
Python-in-Embedded-systems.pptxTuynLCh
 
Tac Presentation October 72014- Raspberry PI
Tac Presentation October 72014- Raspberry PITac Presentation October 72014- Raspberry PI
Tac Presentation October 72014- Raspberry PICliff Samuels Jr.
 
ESP32 WiFi & Bluetooth Module - Getting Started Guide
ESP32 WiFi & Bluetooth Module - Getting Started GuideESP32 WiFi & Bluetooth Module - Getting Started Guide
ESP32 WiFi & Bluetooth Module - Getting Started Guidehandson28
 
DeviceHub - First steps using Intel Edison
DeviceHub - First steps using Intel EdisonDeviceHub - First steps using Intel Edison
DeviceHub - First steps using Intel EdisonGabriel Arnautu
 
Embedded Android
Embedded AndroidEmbedded Android
Embedded Android晓东 杜
 
Arduino and Circuits.docx
Arduino and Circuits.docxArduino and Circuits.docx
Arduino and Circuits.docxAjay578679
 
9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_trainingvideos
 

Similaire à pcDuino Presentation at SparkFun (20)

Lab Handson: Power your Creations with Intel Edison!
Lab Handson: Power your Creations with Intel Edison!Lab Handson: Power your Creations with Intel Edison!
Lab Handson: Power your Creations with Intel Edison!
 
arduino
arduinoarduino
arduino
 
Ardx eg-spar-web-rev10
Ardx eg-spar-web-rev10Ardx eg-spar-web-rev10
Ardx eg-spar-web-rev10
 
Using arduino and raspberry pi for internet of things
Using arduino and raspberry pi for internet of thingsUsing arduino and raspberry pi for internet of things
Using arduino and raspberry pi for internet of things
 
Ardu
ArduArdu
Ardu
 
How to Hack Edison
How to Hack EdisonHow to Hack Edison
How to Hack Edison
 
Starting Raspberry Pi
Starting Raspberry PiStarting Raspberry Pi
Starting Raspberry Pi
 
Ch_2_8,9,10.pptx
Ch_2_8,9,10.pptxCh_2_8,9,10.pptx
Ch_2_8,9,10.pptx
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer Kit
 
Cassiopeia Ltd - standard Arduino workshop
Cassiopeia Ltd - standard Arduino workshopCassiopeia Ltd - standard Arduino workshop
Cassiopeia Ltd - standard Arduino workshop
 
Python-in-Embedded-systems.pptx
Python-in-Embedded-systems.pptxPython-in-Embedded-systems.pptx
Python-in-Embedded-systems.pptx
 
Tac Presentation October 72014- Raspberry PI
Tac Presentation October 72014- Raspberry PITac Presentation October 72014- Raspberry PI
Tac Presentation October 72014- Raspberry PI
 
ESP32 WiFi & Bluetooth Module - Getting Started Guide
ESP32 WiFi & Bluetooth Module - Getting Started GuideESP32 WiFi & Bluetooth Module - Getting Started Guide
ESP32 WiFi & Bluetooth Module - Getting Started Guide
 
DeviceHub - First steps using Intel Edison
DeviceHub - First steps using Intel EdisonDeviceHub - First steps using Intel Edison
DeviceHub - First steps using Intel Edison
 
Embedded Android
Embedded AndroidEmbedded Android
Embedded Android
 
Arduino
ArduinoArduino
Arduino
 
Arduino and Circuits.docx
Arduino and Circuits.docxArduino and Circuits.docx
Arduino and Circuits.docx
 
Hardware hacking
Hardware hackingHardware hacking
Hardware hacking
 
9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training
 
Arduino
ArduinoArduino
Arduino
 

Dernier

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Dernier (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

pcDuino Presentation at SparkFun

  • 2. Agenda  pcDuino: a platform open source software meets open source hardware  Programming under Ubuntu (linux)  Arduino style programming ( C ) for pcDuino  Python programming for pcDuino  Java programming for pcDuino  Go  Cloud 9 IDE  Scratch for pcDuino  Project Showcase  Programming under Android ICS  Command line programming  QT GUI
  • 3. pcDuino: where open software meets open hardware  pcDuino = mini PC + Arduino  pcDuino is a kind of super Arduino with the brain power of a mini PC.  Existing Arduino shield can work on pcDuino.  pcDuino can run Ubuntu. The desktop outputs from HDMI. User can remotely access its desktop via VNC (Network or OTG-USB).  pcDuino has built-in Arduino style IDE environment. It also supports programming in Python, Cloud 9 IDE, Java, Go-lang, Scratch, etc.  pcDuino can run full Android ICS, and support Arduino style hardware programming under Android.  pcDuino is a server, a WiFi router, a printer server, a IP-PBX, and more. pcDuino is a platform where open software meets open hardware.
  • 4. pcDuino FamilypcDuino Lite pcDuino Lite WiFi pcDuino v1 pcDuino v2 pcDuino v3 CPU Allwinner A101GHz ARM Cortex A8 Allwinner A101GHz ARM Cortex A8 Allwinner A101GHz ARM Cortex A8 Allwinner A101GHz ARM Cortex A8 GPU OpenGL ES2.0OpenVG 1.1 Mali 400 core OpenGL ES2.0OpenVG 1.1 Mali 400 core OpenGL ES2.0OpenVG 1.1 Mali 400 core OpenGL ES2.0OpenVG 1.1 Mali 400 core DRAM 512MB 256MB 1GB 1GB Storage NO FlashmicroSD card (TF) slot for up to 32GB 2GB FlashmicroSD card (TF) slot for up to 32GB 2GB Flash (4GB after 2/1/2014)microSD card (TF) slot for up to 32GB 2GB Flash (4GB after 2/1/2014) microSD card (TF) slot for up to 32GB Video HDMI HDMI HDMI HDMI OS Support • Lbuntu 12.04 •Android •Lbuntu 12.04 •Doesn’t support Android •Lbuntu 12.04 •Android •Lbuntu 12.04 •Android ExtensionInterface 2.54mm headers Arduino (TM) Headers 2.54mm headers Arduino (TM) Headers NetworkInterface •10/100Mbps RJ45 •USB WiFi extension (not included) WiFi, No Ethernet •10/100Mbps RJ45 •USB WiFi extension (not included) •10/100Mbps RJ45 •WiFi Power 5V, 2000mA 5V, 2000mA 5V, 2000mA 5V, 2000mA
  • 7.
  • 8. pcDuino boot modes  Default to boot from SD  If there is no bootable image in SD, it will try to boot from NAND.  For Ubuntu OS, the system and data in NAND can be copied to SD seamlessly.
  • 10. VNC to pcDuino through its USB- OTG
  • 11.  Two flavors  Command line  IDE Arduino style programming ( C )
  • 18. C Command line Setup (one time) If not already done, set up git. Do this using the command: ubuntu@ubuntu:~$ sudo apt-get install git Make sure you’re in your home folder by typing ubuntu@ubuntu:~$ cd ubuntu@ubuntu:~$ pwd /home/Ubuntu Now download the distribution from github by typing ubuntu@ubuntu:~$ git clone https://github.com/pcduino/c_enviroment
  • 20. C Command lineChange into the c_enviroment folder: ubuntu@ubuntu:~$ cd c_enviroment ubuntu@ubuntu:~/c_enviroment$ ls Makefile hardware libraries output sample Now run make to make the libraries and the examples with the following command: ubuntu@ubuntu:~/c_enviroment$ make Make[1]: Leaving directory `/home/ubuntu/c_enviroment/sample' The resulting binary files are found in the output/test folder ubuntu@ubuntu:~/c_enviroment$ cd output/test ubuntu@ubuntu:~/c_enviroment/output/test$ ll total 660 drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 27 06:59 ./ drwxrwxr-x 3 ubuntu ubuntu 4096 Apr 27 06:49 ../ -rwxrwxr-x 1 ubuntu ubuntu 13868 Apr 27 06:58 adc_test* -rwxrwxr-x 1 ubuntu ubuntu 28284 Apr 27 06:58 adxl345_test* -rwxrwxr-x 1 ubuntu ubuntu 14209 Apr 27 06:58 interrupt_test* -rwxrwxr-x 1 ubuntu ubuntu 13726 Apr 27 06:58 io_test* -rwxrwxr-x 1 ubuntu ubuntu 13712 Apr 27 06:59 linker_button_test* -rwxrwxr-x 1 ubuntu ubuntu 13907 Apr 27 06:59 linker_buzzer_test* -rwxrwxr-x 1 ubuntu ubuntu 13689 Apr 27 06:59 linker_hall_sensor_test* -rwxrwxr-x 1 ubuntu ubuntu 13760 Apr 27 06:59 linker_joystick_test* -rwxrwxr-x 1 ubuntu ubuntu 13769 Apr 27 06:59 linker_led_bar_test* -rwxrwxr-x 1 ubuntu ubuntu 13690 Apr 27 06:59 linker_led_test* -rwxrwxr-x 1 ubuntu ubuntu 14290 Apr 27 06:59 linker_light_sensor_test* ““
  • 21. C Command lineTo view the contents of a sample sketch, (this example we’ll look at the contents of linker_led_test.c) type: ubuntu@ubuntu:~/c_enviroment/sample$ cat linker_led_test.c /* * LED test program */ #include <core.h> int led_pin = 1; void setup() { if(argc != 2){ goto _help; } led_pin = atoi(argv[1]); if((led_pin < 0) || (led_pin > 13)){ goto _help; } pinMode(led_pin, OUTPUT); return; _help: printf("Usage %s LED_PIN_NUM(0-13)n", argv[0]); exit(-1); } void loop() { digitalWrite(led_pin, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(led_pin, LOW); // set the LED off delay(1000); // wait for a second }
  • 22. Creating Your Own Sketch ubuntu@ubuntu:~/c_enviroment/sample$ nano button_led.c An empty nano screen should appear. Copy and paste the following code into it. (Remember to paste in nano at the cursor, just right click the mouse button). #include <core.h> // Required first line to run on pcDuino int ledPin = 8; int buttonPin = 7; // variables will change: int buttonState = 0; // variable for reading the pushbutton status void setup() { // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); }
  • 23. Creating Your Own Sketch void loop(){ // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); // check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (buttonState == HIGH) { // turn LED on: digitalWrite(ledPin, HIGH); } else { // turn LED off: digitalWrite(ledPin, LOW); } }
  • 24. Creating Your Own Sketch Modify the Makefile and Compile ubuntu@ubuntu:~/c_enviroment/sample$ nano Makefile You will see a section that lists all the OBJS something like: OBJS = io_test adc_test pwm_test spi_test adxl345_test serial_test liquidcrystal_i2c liquidcrystal_spi interrupt_test tone_test OBJS += linker_led_test linker_potentiometer_test linker_tilt_test linker_light_sensor_test linker_button_test OBJS += linker_touch_sensor_test linker_magnetic_sensor_test linker_temperature_sensor_test linker_joystick_test OBJS += linker_rtc_test linker_sound_sensor_test linker_buzzer_test linker_hall_sensor_test linker_led_bar_test linker_relay_test OBJS += pn532_readAllMemoryBlocks pn532readMifareMemory pn532readMifareTargetID pn532writeMifareMemory
  • 25. Creating Your Own SketchWe’re going to add a line to the end of this with the name of the scketch we just created: OBJS += button_led Save the file and exit nano using <CTRL>X with a y and <enter>. We now run make by typing: ubuntu@ubuntu:~/c_enviroment/sample$ make You should see a whole bunch of text with the end being: button_led.c -o ../output/test/button_led ../libarduino.a If all went well, you can go to the output/test folder and find your executable you have created: ubuntu@ubuntu:~/c_enviroment/sample$ cd ../output/test/ ubuntu@ubuntu:~/c_enviroment/output/test$ ll total 676 drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 27 07:51 ./ drwxrwxr-x 3 ubuntu ubuntu 4096 Apr 27 06:49 ../ -rwxrwxr-x 1 ubuntu ubuntu 13868 Apr 27 07:51 adc_test* -rwxrwxr-x 1 ubuntu ubuntu 28284 Apr 27 07:51 adxl345_test* -rwxrwxr-x 1 ubuntu ubuntu 13668 Apr 27 07:51 button_led* “..(not showing rest of listing here)
  • 26. Creating Your Own SketchRun Your Sketch To run it, once you have wired up a switch and led to the right pins, type: ubuntu@ubuntu:~/c_enviroment/output/test$ ./button_led To stop the program, <Ctrl>C A Quick Re-Cap Add #include <core.h> to the top of your sketch. Create your sketch in the samples folder (if your familiar with linux, makefiles, and compiling code, you could set up your own) Add the filename to the Makefile in the samples folder in the OBJS section without the .c Run make Run the executable from the output/test folder. You can introduce command line arguments into your sketch to make it more transportable.
  • 35. Digital Humidity and Temperature Sensor
  • 37. Serial Port of pcDuino
  • 38. Extends to 4 UARTS http://jbvsblog.blogspot.com/2013/09/pcduino-extends-to-4- uarts.html
  • 42. Relay
  • 48. Python ubuntu@ubuntu:~/python-pcduino/Samples/blink_led$ more blink_led.py #!/usr/bin/env python # blink_led.py # gpio test code for pcduino ( http://www.pcduino.com ) # import gpio import time led_pin = "gpio2" def delay(ms): time.sleep(1.0*ms/1000) def setup(): gpio.pinMode(led_pin, gpio.OUTPUT) def loop(): while(1): gpio.digitalWrite(led_pin, gpio.HIGH) delay(200)
  • 49. pcDuino as Networked Device to feed data to Xively (Internet of Things)
  • 50. Smart Garage powered by pcDuino
  • 52. OpenCV def process(infile): image = cv.LoadImage(infile); if image: faces = detect_object(image) im = Image.open(infile) path = os.path.abspath(infile) save_path = os.path.splitext(path)[0]+"_face" try: os.mkdir(save_path) except: pass if faces: draw = ImageDraw.Draw(im) count = 0 for f in faces: count += 1 draw.rectangle(f, outline=(255, 0, 0)) a = im.crop(f) file_name = os.path.join(save_path,str(count)+".jpg") # print file_name a.save(file_name) drow_save_path = os.path.join(save_path,"out.jpg") im.save(drow_save_path, "JPEG", quality=80) else: print "Error: cannot detect faces on %s" % infile if __name__ == "__main__": process("./opencv_in.jpg")
  • 53. OpenCV #!/usr/bin/env python #coding=utf-8 import os from PIL import Image, ImageDraw import cv def detect_object(image): grayscale = cv.CreateImage((image.width, image.height), 8, 1) cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY) cascade = cv.Load("/usr/share/opencv/haarcascades/haarcascade_frontalface_alt_tree.xml") rect = cv.HaarDetectObjects(grayscale, cascade, cv.CreateMemStorage(), 1.1, 2, cv.CV_HAAR_DO_CANNY_PRUNING, (20,20)) result = [] for r in rect: result.append((r[0][0], r[0][1], r[0][0]+r[0][2], r[0][1]+r[0][3])) return result
  • 54. Go Langpackage main import ( "fmt" "./gpio" "time" ) func main() { g, err := gpio.NewGPIOLine(7,gpio.OUT) if err != nil { fmt.Printf("Error setting up GPIO %v: %v", 18, err) return } blink(g, 100) g.Close() } func blink(g *gpio.GPIOLine, n uint) { fmt.Printf("blinking %v time(s)n", n) for i := uint(0); i &lt; n; i++ { g.SetState(true) time.Sleep(time.Duration(1000) * time.Millisecond) g.SetState(false) time.Sleep(time.Duration(1000) * time.Millisecond) } }
  • 55. Cloud 9 IDE  Cloud9 IDE is an online development environment for Javascript and Node.js applications as well as HTML, CSS, PHP, Java, Ruby and 23 other languages.  You're programming for the web, on the web. Teams can collaborate on projects and run them within the browser. When you're finished, deploy it—and you're done!
  • 60. Scratch $sudo apt-get install pcduino-scratch
  • 61.
  • 62. Run SNAP on pcDuino
  • 63. Blink LED (Scratch for pcDuino)
  • 64. Press Button to Turn on LED (Scratch for pcDuino)
  • 65. Touch the Finish Line (Scratch for pcDuino)
  • 66. Play Pong with Scratch for pcDuino
  • 67. pcDuino as banaba piano using Scratch for pcDuino
  • 69. Home Automation:IP controllable LED  Many users are asking if the hardware part can be programmed together with the Ubuntu linux?  Sure. This is the beauty of pcDuino. The Arduino compatible hardware is a native part of the OS.  pcDuino includes Ethernet port, USB Wifi dongle, so there is no need for Ethernet shield, Ethernet shield , USB host shield, MP3 shields and so on. Now, we are going to implement a TCP/IP socket server on pcDuino to listen to the data coming from client. When it receives character ’O', it will turn on the LED, and when it receives ‘F‛, it will turn on the LED. No actions if receive something else.
  • 70. Home Automation:IP controllable LED#include ‚sys/socket.h‛ #include ‚netinet/in.h‛ #include ‚arpa/inet.h‛ #include ‚sys/types.h‛ int led_pin = 2; int listenfd = 0, connfd = 0; int n; struct sockaddr_in serv_addr; char sendBuff[1025]; time_t ticks; void loop() { n = read(connfd, sendBuff, strlen(sendBuff) ); if(n>0) { if(sendBuff[0]=='O') digitalWrite(led_pin, HIGH); // set the LED on if(sendBuff[0]=='F') digitalWrite(led_pin,LOW); // set the LED off } } void setup() { led_pin = 2; pinMode(led_pin, OUTPUT); listenfd = socket(AF_INET, SOCK_STREAM, 0); memset(serv_addr, '0', sizeof(serv_addr)); memset(sendBuff, '0', sizeof(sendBuff)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(5000); bind(listenfd, (struct sockaddr*) serv_addr, sizeof(serv_addr)); listen(listenfd, 10); connfd = accept(listenfd, (struct sockaddr*)NULL, NULL); }
  • 73. pcDuino as 3D printer control console
  • 75. Two flavors to program under Android  There are two flavors to program under Android:  Command line  QT5 GUI
  • 77. QT5 GUI We can copy the apk though pcDuino OTG or SD card to pcDunio and install it there.