{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "オリジナルの作成:2014/07/06" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 0B-Windowsへのinoのインストールと使い方\n", "## Windowsでinoを使う\n", "[0A-MacOSXへのinoのインストールと使い方](http://nbviewer.jupyter.org/github/take-pwave/letsArduino/blob/master/0A-ino-install-MacOSX.ipynb)\n", "に続いて、 Windowsでinoを使う方法を調べて見ました。\n", "\n", "## inoのインストール\n", "Windowsでinoを使うには、以下のソフトが必要です。\n", "\n", "- Arduino IDE Windows版\n", "- cygwin\n", " - python27\n", " - python-setuptools\n", " - make\n", " - gcc-core\n", " - nano(テキストエディタ)\n", "- picocom\n", "\n", "以下では、Arduino IDEがインストールされ、動いているものとして説明を進めます。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### cygwinのインストール\n", "Cygwinの以下のサイトから、お使いのWindowsに合ったsetup-xxxx.exeをダウンロードしてください。 私は、古いXPにインストールしたので、setup-x86.exeをダウンロードしました。\n", "\n", "cygwinのインストールで分かりにくいのが、このsetup-x86.exeのセットアップです。 以下の手順にそってインストールして下さい。\n", "\n", "- ネットワークにアクセスできるようにして、ダウンロードしたsetup-x86.exeをダブルクリック\n", "- Cygwin Net Release Setup Programの画面で、「次へ」ボタンを押す\n", "- Choose A Download SourceでInstall from Internetを選択し、「次へ」ボタンを押す\n", "- Select Root Install DirectoryとSelect Local Package Directoryは、そのまま「次へ」ボタンを押す\n", "- Select Your Internet Connectionは、Direct Connectionを選択し、「次へ」ボタンを押す\n", "- Choose A Download Siteでは、http://ftp.iij.ad.jp を選択し、「次へ」ボタンを押す\n", "\n", "次が一番の難関のパッケージ選択画面です。\n", "\n", "\n", "\n", "- Select Packages画面から\n", " - Develをクリックし、makeとgcc-coreをクリックし、バージョン番号を表示\n", " - Pythonをクリックし、pythonをクリックし、バージョン番号を表示\n", " - Editorsをクリックし、nanoのSkipをクリックし、バージョン番号を表示\n", "- 最後に次にボタンを押すと、ダウンロードとインストールが実行されます(最初は時間がかかります)\n", "- 完了ボタンをおして終わりです" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Arduino IDEの移動\n", "準備ができたので、inoのインストールに進みます。\n", "\n", "最初に、Arduino IDEをProgram FilesからC:\\user\\shareという名前のディレクトリを作成し、そこにArduinoという名前で 移動します。\n", "\n", "\n", "\n", "デスクトップのArduinoショートカットでArduino IDEが使えるようにショットカットの プロパティを以下の様に変更します。\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### inoのインストールとセットアップ\n", "Cygwin Terminalのショートカットをダブルクリックし、Cygwin Terminalを起動します。\n", "\n", "最初にArduino IDEへのシンボリックリンクを作成し、inoをインストールします。\n", "\n", "```bash\n", "$ ln -s /cygdrive/c/usr/share/Arduino/ /usr/share/arduino\n", "$ easy_install ino\n", "```\n", "\n", "### picocomのインストール\n", "以下のpicocomのダウンロードサイトからpicocom-1.7.tar.gzをダウンロードし、C:\\cygwin\\homeの下の ユーザのディレクトリに保存します。\n", "\n", "- [picocomダウンロードサイト](https://code.google.com/p/picocom/downloads/list)\n", "Cygwin Terminalで以下の様に展開し、makeコマンドを実行します。\n", "\n", "```bash\n", "$ tar xzvf picocom-1.7.tar.gz\n", "$ cd picocom-1.7\n", "$ make\n", "$ cp picocom.exe /usr/local/bin/\n", "```\n", "\n", "## inoの動作確認\n", "準備ができたので、inoの動作確認をします。\n", "\n", "```bash\n", "$ mkdir sample\n", "$ cd sample\n", "$ ino init -t blink\n", "$ ls -R\n", ".:\n", "lib src\n", "\n", "./lib:\n", "\n", "./src:\n", "sketch.ino\n", "$ ino build -m atmega328\n", "Searching for Board description file (boards.txt) ... /usr/share/arduino/hardware/arduino/boards.txt\n", "Searching for Arduino lib version file (version.txt) ... /usr/share/arduino/lib/version.txt\n", "Detecting Arduino software version ... 1.0.5 (1.0.5)\n", "途中省略\n", "Linking libarduino.a\n", "Linking firmware.elf\n", "Converting to firmware.hex\n", "```\n", "\n", "上記のように無事firmware.hexが作成されればインストールは完了です。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### スケッチのアップロード\n", "inoは、LinuxやMacOSXなどのUNIXベースの環境を前提にしているため、inoのuploadコマンドは 使えません。\n", "\n", "その代わりにアップロードスクリプトを用意します。 テキストエディタnanoを使って以下のテキストを入力(コピー&ペースト)してください。 Ctrl-Oで書き込み、Ctrl-Xで終了します。\n", "\n", "```bash\n", "$ nano upload.sh\n", "#!/bin/sh\n", "MODEL=uno\n", "MCU=atmega328p\n", "PORT=COM3\n", "SPEED=115200\n", "case $# in\n", "4) MODEL=$1; MCU=$2; SPEED=$3; PORT=$4 ;;\n", "0) ;;\n", "*) echo \"Usage: upload.sh MODEL MCU SPEED PORT\"; exit 1 ;;\n", "esac\n", "\n", "/usr/share/arduino/hardware/tools/avr/bin/avrdude \\\n", "-C /usr/share/arduino/hardware/tools/avr/etc/avrdude.conf \\\n", "-p $MCU -P $PORT -b $SPEED -c arduino \\\n", "-D -U \"flash:w:.build/$MODEL/firmware.hex:i\"\n", "```\n", "\n", "作成したスクリプトを/usr/local/bin/コピーします。\n", "\n", "```bash\n", "$ chmod +x upload.sh\n", "$ cp upload.sh /usr/local/bin/\n", "```\n", "\n", "upload.shの引数は、C:\\usr\\share\\Arduino\\hardware\\arduinoのboards.txtを見て 調べて下さい。 私の持っているArduino Duemilanoveだと以下の様になっていました。 ここから、次の値をメモします。MODEL名には、list-modelsのモデル名を使用します。\n", "\n", "- atmega328.build.mcu\n", "- atmega328.upload.speed\n", "\n", "```\n", "##############################################################\n", "\n", "atmega328.name=Arduino Duemilanove w/ ATmega328\n", "\n", "atmega328.upload.protocol=arduino\n", "atmega328.upload.maximum_size=30720\n", "atmega328.upload.speed=57600\n", "\n", "atmega328.bootloader.low_fuses=0xFF\n", "atmega328.bootloader.high_fuses=0xDA\n", "atmega328.bootloader.extended_fuses=0x05\n", "atmega328.bootloader.path=atmega\n", "atmega328.bootloader.file=ATmegaBOOT_168_atmega328.hex\n", "atmega328.bootloader.unlock_bits=0x3F\n", "atmega328.bootloader.lock_bits=0x0F\n", "\n", "atmega328.build.mcu=atmega328p\n", "atmega328.build.f_cpu=16000000L\n", "atmega328.build.core=arduino\n", "atmega328.build.variant=standard\n", "\n", "##############################################################\n", "```\n", "\n", "以下の様にしてアップロードします。\n", "\n", "```bash\n", "$ upload.sh atmega328 atmega328p 57600 COM10\n", "$ upload.sh atmega328 atmega328p 57600 COM10\n", "\n", "avrdude.exe: AVR device initialized and ready to accept instructions\n", "\n", "Reading | ################################################## | 100% 0.02s\n", "\n", "avrdude.exe: Device signature = 0x1e950f\n", "avrdude.exe: reading input file \".build/atmega328/firmware.hex\"\n", "avrdude.exe: writing flash (1076 bytes):\n", "\n", "Writing | ################################################## | 100% 0.55s\n", "\n", "avrdude.exe: 1076 bytes of flash written\n", "avrdude.exe: verifying flash memory against .build/atmega328/firmware.hex:\n", "avrdude.exe: load data flash data from input file .build/atmega328/firmware.hex:\n", "avrdude.exe: input file .build/atmega328/firmware.hex contains 1076 bytes\n", "avrdude.exe: reading on-chip flash data:\n", "\n", "Reading | ################################################## | 100% 0.53s\n", "\n", "avrdude.exe: verifying ...\n", "avrdude.exe: 1076 bytes of flash verified\n", "\n", "avrdude.exe done. Thank you.\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### シリアルポートの使い方\n", "piccomは、Cygwinの/dev/ttySnを使って通信します。nには、COMの番号-1の値をセットします。 COM10の場合には、/dev/ttyS9を指定します。\n", "\n", "```bash\n", "$ ino serial -p /dev/ttyS9\n", "picocom v1.7\n", "\n", "port is : /dev/ttyS9\n", "flowcontrol : none\n", "baudrate is : 9600\n", "parity is : none\n", "databits are : 8\n", "escape is : C-a\n", "local echo is : no\n", "noinit is : no\n", "noreset is : no\n", "nolock is : yes\n", "send_cmd is : sz -vv\n", "receive_cmd is : rz -vv\n", "imap is :\n", "omap is :\n", "emap is : crcrlf,delbs,\n", "\n", "Terminal ready\n", "0\n", "999\n", "1999\n", "3000\n", "4000\n", "5000\n", "6000\n", "7001\n", "8001\n", "9001\n", "10002\n", "\n", "Thanks for using picocom\n", "term_exitfunc: reset failed for dev /dev/pty0: Resource temporarily unavailable\n", "```\n", "\n", "残念ながら、ttyのリセットで失敗するようで、終了後\n", "\n", "```bash\n", "$ stty echo \n", "```\n", "\n", "で文字が表示できるようになりますが、改行キーの後にもどらない現象が残ります。\n", "\n", "ここは、今後の課題です。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }