From ab07f2960379d3aac9b46e70e94383e6baf154e6 Mon Sep 17 00:00:00 2001 From: Cooper Maa Date: Wed, 14 Jan 2015 11:53:30 +0800 Subject: [PATCH] First commit --- Dockerfile | 15 ++++++++++ README.md | 60 ++++++++++++++++++++++++++++++++++++++ virtualbox-serialport.png | Bin 0 -> 36461 bytes 3 files changed, 75 insertions(+) create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 virtualbox-serialport.png diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e16e45e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM dockerfile/python +MAINTAINER coopermaa77@gmail.com + +# arduino for Arduino IDE distribution +# picocom for serial communication +# ino is a command line toolkit for working with Arduino hardware +RUN apt-get update && \ + apt-get install -y arduino picocom && \ + pip install ino + +WORKDIR /app + +# Define entry point and default command. +ENTRYPOINT ["ino"] +CMD ["--help"] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..3ecd578 --- /dev/null +++ b/README.md @@ -0,0 +1,60 @@ +# docker-ino + +Ino is a command line toolkit for working with Arduino hardware. + +The docker image helps you to run ino in docker to serve the purpose. + +## Quickstart + +Use coopermaa/ino image in an alias to deal with ino: + + $ alias ino='docker run --privileged \ + -v /dev/ttyS1:/dev/ttyS1 \ + -v $(pwd):/app \ + coopermaa/ino' + +Notes: You can save the alias setting in ~/.profile or ~/.bashrc + +Create a simple project and use blink as a project template which will create a simple sketch for LED blinking on pin 13: + + $ mkdir blink + $ ino init -t blink + +If you look at the contents of your testproject directory, you should see a lib and a src directory. Within src, there will be a file called sketch.ino + +Let's build it and upload it: + + $ ino build + $ ino upload -p /dev/ttyS1 + +When the job is done, Arduino flashes with its buil-in LED on pin 13. + +## Tweaking parameters + +All examples were done in assumption that you have Arduino Uno. +If you have Arduino Mega 2560 and it is available on port /dev/ttyACM1. +We have to specify this for our build steps as command-line switches (You have to update the alias setting too): + + $ ino build -m mega2560 + $ ino upload -m mega2560 -p /dev/ttyACM1 + +See [official ino documentaio](http://inotool.org/quickstart) for more information. + +## For boot2docker user on Windows + +First, get the serial port number associated with your Arduino board (use Device Manager). + +Shutdown your VM if you still have it open. Don't save the state - completely shut it down: + + $ boot2docker halt + +Now navigate to VirtualBox, select the VM "boot2docker-vm" and then click settings. +Select the "Serial Ports" option on the left hand side. + +Click the "Port 2" tab, and then select "Enable Serial Port". For the Port Number, set to COM2. +This tells VirtualBox to have the Arduino board mounted at /dev/ttyS1. For the Port Mode, select "Host Device". +For "Port/File Path:", Enter in COM#. The colon needs to be there. + +![screencut](virtualbox-serialport.png) + +That's it for configuring VirtualBox. Bring your VM back up and start to play ino. diff --git a/virtualbox-serialport.png b/virtualbox-serialport.png new file mode 100644 index 0000000000000000000000000000000000000000..8259a54c41f8d35327a5d30796e75b8d3cde5117 GIT binary patch literal 36461 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 L(8@V$egA&}Y8}mW literal 0 HcmV?d00001