Más contenido relacionado La actualidad más candente (20) Similar a ワンコインでIot入門 (20) ワンコインでIot入門 7. なぜArduinoクローンなのか
お手軽なアーキテクチャ一覧
Arduino Linux系ARM mbed互換
実装例 Arduino mini互換
Arduino nano 互換
送料込み150円位〜
Raspbbery PI zero
(600円ぐらい、入手困難)
Orange Pi(1000円強)
C.H.I.P(1000円ぐらい)
Nucleo シリーズ(1500円くら
い)
計算能力 非力
(ATMega8bit/8Mhz〜)
強力(ARM) 強力(ARM)
開発環境 専用IDE(C++的言語) 一般的なLinuxと同じ Web IDE(C++的言語)
備考及
(独断と偏見)
-上記ほか、色々なヘンテ
コで格安ハードウエア実装
あり
Linuxな人はあまり刺激を感じ
ないかも
酔っぱらって触って壊してもいいやと思える程度にお手軽(酒の肴に最適)
10. Arduinoの種類
ワンコインなArduinoクローンたち
Digispark Arduino pro mini
クローン
Arduino nano
クローン
Arduino uno
クローン
NodeMCU
最安値 送料込130円 送料込139円 送料込179円 送料込294円 送料込359円
マイコン ATTiny85(8bit) ATmega168(8bit),
ATmega328P(8bit)
ATmega168(8bit),
ATmega328P(8bit)
ATmega328P(8bit) ESP8266
(32bit +WiFi)
接続
(driver)
micro USB
(libusb)
生UART mini USB
(CH341が多い)
mini USB
(CH341が多い)
micro USB
(CP210x)
IDE Arduino IDE改 Arduino IDE Arduino IDE Arduino IDE ArduinoIDE+liberary
addon
Pros. 最小、最安
USB driverいらず
安価、電圧3.3v版と5v
版あり、小型
情報が多い 情報が多い、ハンダ無
しでも色々できる
WiFiあり
国際的には情報多い
Cons IDEが特殊、
バージョンが低い
USB接続なし
電源とUARTが必要
USB Serialが微妙
今どきmini USB
USB Serialが微妙
私がもってない
技適なし
適切な電波遮断空間
外で使うと違法
今回のオモチャ
12. Arduino基礎知識
❖ OSは無い。電源を入れるとプログラム通りの動作
➢ TCP/IP通信の標準化もなし。いくつかある TCP/IPライブラリから相性のいいのを選ぶ
❖ 接続はUSBだけど内部的にはRS232Cっぽいシリアル通信”UART”が基本。これでプログラ
ムを書き込んだりセンサーと接続したり。
➢ 多くのArduinoはUSBコントローラ内蔵でUSB経由でUART通信+給電を行う
➢ この場合、ArduinはPCからはcomポート、シリアル通信用 USBに見える(teratermでATコマンド等)
➢ 物理的には電圧がRS232Cと比べて低い。Arduinoは5vが基本でマイコンの世界では 3.3vの実装も多い。対
応電圧が違うと壊れる。
zPC
USB
Arduino本体
USB
Controller UART
例:Arduino nano
給電
14. 開発環境
USB ケーブル
Arduino nano本体
パソコン
Arduino IDE
(ソフトウエア)
必要なハード
● パソコン(今回はOSX)
● USBケーブル
(今回は USB miniが必要)
● Arduino nano本体
必要なソフト
● Arduino IDE
● SerialIP Liberary
● SUB uart driver
とりあえず今日は不要
● ハンダセット
● ブレッドボード、配線類
● 抵抗、LED
● センサー類
15. 開発環境(ハードウエア)
● PC(今回はMac)
○ 基本的にはMac/Windows/LinuxならなんでもOKと思われる。
○ 今回使うシリアルIP接続SLIPをMAC/WindowsはサポートしてないのでLinux
とかが必要。USBパススルーができればVMでもOK(今回はそれで)
● USBケーブル
○ arduino nanoはmini USB形状。スマホで使うmicro USBとは違うので注意
○ マイコンの世界ではmini USBもまだ健在なので1本は準備しよう
○ 充電専用の電源以外の結線が無いUSBケーブルがあるので注意
● Arduino nanoクローン
○ マイコンがATmega168と328種類あり。メモリ容量に差。
■ ATmega168: Flash 16KB/SRAM 1KB/ EEPROM 512B/ 180円〜
■ ATmega328: Flash 32KB/SRAM 2KB/ EEPROM 1KB/ 209円〜
○ 通販Aliexpress(http://www.aliexpress.com/)が価格、品揃え的におすすめ
○ Arduinoのマーク付き正規版の価格は10倍+送料ぐらい
こっちが必要
今回は168では
メモリ不足
17. 開発環境:Arduino IDE
❖ Arduino IDE
➢ 下記からダウンロード
➢ https://www.arduino.cc/en/Main/Software
➢ 最新版は1.6.8。zipを解凍して起動すればOK
➢ 下記ダイアログでOKを押すと/User/ユーザ名/Documents/Arduinoという
作業ディレクトリができる
18. ❖ SUB uart driver
➢ http://www.wch.cn/download/CH341SER_MAC_ZIP.html
➢ OSXもWinもドライバーインストールが必要。(ubuntu14は不要だった)
➢ Google先生に聞いたら世界中で使ってる人がそこそこいるので
とりあえずオレも使ってみる。
➢ Arduino nanoを接続すると下記のようなシリアルデバイスとして認識
➢ ひどいデバイス名だ、、と思ったら、、、(後述)
Takahashi-no-MacBook-Pro:~ makotaka$ sudo ls -al /dev/ | grep cu
crw-rw-rw- 1 root wheel 18, 3 4 3 15:24 cu.Bluetooth-Modem
crw-rw-rw- 1 root wheel 18, 1 4 3 15:24 cu.Bluetooth-PDA-Sync
crw-rw-rw- 1 root wheel 18, 93 4 24 14:23 cu.wch ch341 USB=>RS232
開発環境: USB driver
20. ❖ 適切にArduinoの種類を選択
➢ 「ツール」からArduino nanoを選び、適切なプロセッサとシリアルポートを選択
➢ コード(Arduino界ではスケッチと呼ぶ)の意味は
■ 13番目のPINをOUTPUTに設定
(13番目のPINは内蔵LEDにも
接続されている)
■ 電圧をHighにして1秒待つ
■ 電圧をLowにして1秒待つ
■ 以上の無限ループ
Lチカ:とりあえず動かしてみる
22. Lチカ:とりあえず対応してみる
❖ 原因はシリアルデバイス名が空白文字を含んでる事。センスねえ!
❖ という訳で、cu.wchという名のシンボリックリンクを作成して対応
-rw- 1 root wheel 18, 93 4 24 14:23 cu.wch ch341 USB=
$ sudo ln -s "/dev/cu.wch ch341 USB=>RS232 fd120" /dev/cu.wch
Password:
$ ls -al /dev/cu.*
crw-rw-rw- 1 root wheel 18, 3 4 3 15:24 /dev/cu.Bluetooth-Modem
crw-rw-rw- 1 root wheel 18, 1 4 3 15:24 /dev/cu.Bluetooth-PDA-Sync
lrwxr-xr-x 1 root wheel 0 4 24 14:20 /dev/cu.wch -> /dev/cu.wch ch341 USB=>RS232 fd120
crw-rw-rw- 1 root wheel 18, 97 4 24 14:46 /dev/cu.wch ch341 USB=>RS232 fd120 ダメなデバイス名
25. Ping: シリアル通信のライブラリを追加
❖ SerialIP Liberary
➢ シリアルでIP通信をするライブラリ
➢ 以下からダウンロード
■ http://www.shikadi.net/files/arduino/SerialIP-1.0.zip
➢ ダウンロードしたファイルをIDE取り込む
「スケッチ」 → 「ライブラリをインクルード」
→ 「zip形式のライブラリをインストール」から
ダウンロードしたSerialIP-1.0.zipを選択
27. ❖ 原因はSerialIPが最新のIDEに未対応なのでライブラリの編集が必要
❖ ということで3箇所includeファイルを修正
➢ ワークArduino.hの/liberaries/SerialIP/SerialIP.h をひらく
➢ 24行目の WProgram.hをArduino.hに変更
➢ clock-arch.cの21行目,SerialIP.cppの21行目も同様にWProgram.hから
Arduino.hに変更
$vi /Users/ユーザ名/Documents/Arduino/libraries/SerialIP/SerialIP.h
24: #include <WProgram.h> #Befroe
24: #include <Arduino.h> #After
Ping:ライブラリを修正
$vi /Users/ユーザ名/Documents/Arduino/libraries/SerialIP/clock-arch.c
〜略〜
$vi /Users/ユーザ名/Documents/Arduino/libraries/SerialIP1/SerialIP.cpp
〜略〜
30. Ping:ubuntu側の設定、ArudinoへPing成功
$sudo modprobe slip
$sudo slattach -L -s 115200 -p slip /dev/ttyUSB0 & #バックグラウンドで
$sudo fconfig sl0 192.168.5.1 dstaddr 192.168.5.2
$ping 192.168.5.2
PING 192.168.5.2 (192.168.5.2) 56(84) bytes of data.
64 bytes from 192.168.5.2: icmp_seq=1 ttl=64 time=29.8 ms
64 bytes from 192.168.5.2: icmp_seq=2 ttl=64 time=32.8 ms
64 bytes from 192.168.5.2: icmp_seq=3 ttl=64 time=36.5 ms
^C
--- 192.168.5.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 29.850/33.060/36.528/2.740 ms
$ifconfig sl0
sl0 Link encap:シリアルラインIP
inetアドレス:192.168.5.1 P-t-P:192.168.5.2 マスク:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:296 メトリック:1
RXパケット:3 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:3 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:10
RXバイト:252 (252.0 B) TXバイト:252 (252.0 B)