{
"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
}