Enviar pesquisa
Carregar
ワンコインでIot入門 第二章
•
4 gostaram
•
1,801 visualizações
Makoto Takahashi
Seguir
前回使ったarduino nano cloneに加え、送料込みで200円台で買えるイーサネットモジュール”ENC28J60”を入手して人柱実験。MQTTのPub/Subまで。
Leia menos
Leia mais
Dispositivos e hardware
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 30
Baixar agora
Baixar para ler offline
Recomendados
ワンコインでIot入門
ワンコインでIot入門
Makoto Takahashi
ESP8266をはじめよう
ESP8266をはじめよう
Kei Yoshimura
Esp8266 webserver1
Esp8266 webserver1
MasatoOshikiri
Esp32でiot
Esp32でiot
Yusuke Kon
プログラマの為のESP-WROOM-02開発ボード組み立て
プログラマの為のESP-WROOM-02開発ボード組み立て
Naoto Miyachi
WA-MIKAN(和みかん)説明資料
WA-MIKAN(和みかん)説明資料
三七男 山本
ワイヤレス技術をアタックで検証 by 堀合啓一 - CODE BLUE 2015
ワイヤレス技術をアタックで検証 by 堀合啓一 - CODE BLUE 2015
CODE BLUE
自宅実験環境 Aug 2014
自宅実験環境 Aug 2014
Masaru Oki
Recomendados
ワンコインでIot入門
ワンコインでIot入門
Makoto Takahashi
ESP8266をはじめよう
ESP8266をはじめよう
Kei Yoshimura
Esp8266 webserver1
Esp8266 webserver1
MasatoOshikiri
Esp32でiot
Esp32でiot
Yusuke Kon
プログラマの為のESP-WROOM-02開発ボード組み立て
プログラマの為のESP-WROOM-02開発ボード組み立て
Naoto Miyachi
WA-MIKAN(和みかん)説明資料
WA-MIKAN(和みかん)説明資料
三七男 山本
ワイヤレス技術をアタックで検証 by 堀合啓一 - CODE BLUE 2015
ワイヤレス技術をアタックで検証 by 堀合啓一 - CODE BLUE 2015
CODE BLUE
自宅実験環境 Aug 2014
自宅実験環境 Aug 2014
Masaru Oki
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
nishio
SD WiFi v3基板の説明
SD WiFi v3基板の説明
三七男 山本
150130 edison-ug
150130 edison-ug
Takehiko Tomiyama
GR-CITRUS搭載のRubyファームウェアの説明
GR-CITRUS搭載のRubyファームウェアの説明
三七男 山本
Xeon d
Xeon d
Masaru Oki
Dpdk環境の話
Dpdk環境の話
Masaru Oki
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
CODE BLUE
IoTハンズオン資料(おうちハック)配布用
IoTハンズオン資料(おうちハック)配布用
Takashi Ariyama
Node-RED勉強会(20160826)追補
Node-RED勉強会(20160826)追補
Takashi Ariyama
IoTハンズオン
IoTハンズオン
Takashi Ariyama
Wakayama.rbボード用WiFi基板 Ver1.2の説明
Wakayama.rbボード用WiFi基板 Ver1.2の説明
三七男 山本
続・Webエンジニアのためのスマートホームハック ~ Node.js で IoT プロトコルハック ~
続・Webエンジニアのためのスマートホームハック ~ Node.js で IoT プロトコルハック ~
Futomi Hatano
まずは mini Beakout Kit で使ってみる
まずは mini Beakout Kit で使ってみる
tetrastyle
201104016 osc2011 kobe
201104016 osc2011 kobe
Yamauchi isamu
GR-KOZAKURA完成版Rubyによる超簡単開発環境
GR-KOZAKURA完成版Rubyによる超簡単開発環境
三七男 山本
Running lagopus on Xeon D
Running lagopus on Xeon D
Masaru Oki
オープンソースで始める「超」VPN 構築術
オープンソースで始める「超」VPN 構築術
Masahiko Hashimoto
Webエンジニアのためのスマートホームハック ~ Node.js で家電とArduinoを操作 ~
Webエンジニアのためのスマートホームハック ~ Node.js で家電とArduinoを操作 ~
Futomi Hatano
13apr2013 kernelvm8-main
13apr2013 kernelvm8-main
Shotaro Uchida
20110724 WIZDOM:知識ゼロからのArduino(1)
20110724 WIZDOM:知識ゼロからのArduino(1)
Atsushi ENTA
OpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみた
Hideki Yanagihara
IoTタグで遊んでみよう
IoTタグで遊んでみよう
Yukimitsu Izawa
Mais conteúdo relacionado
Mais procurados
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
nishio
SD WiFi v3基板の説明
SD WiFi v3基板の説明
三七男 山本
150130 edison-ug
150130 edison-ug
Takehiko Tomiyama
GR-CITRUS搭載のRubyファームウェアの説明
GR-CITRUS搭載のRubyファームウェアの説明
三七男 山本
Xeon d
Xeon d
Masaru Oki
Dpdk環境の話
Dpdk環境の話
Masaru Oki
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
CODE BLUE
IoTハンズオン資料(おうちハック)配布用
IoTハンズオン資料(おうちハック)配布用
Takashi Ariyama
Node-RED勉強会(20160826)追補
Node-RED勉強会(20160826)追補
Takashi Ariyama
IoTハンズオン
IoTハンズオン
Takashi Ariyama
Wakayama.rbボード用WiFi基板 Ver1.2の説明
Wakayama.rbボード用WiFi基板 Ver1.2の説明
三七男 山本
続・Webエンジニアのためのスマートホームハック ~ Node.js で IoT プロトコルハック ~
続・Webエンジニアのためのスマートホームハック ~ Node.js で IoT プロトコルハック ~
Futomi Hatano
まずは mini Beakout Kit で使ってみる
まずは mini Beakout Kit で使ってみる
tetrastyle
201104016 osc2011 kobe
201104016 osc2011 kobe
Yamauchi isamu
GR-KOZAKURA完成版Rubyによる超簡単開発環境
GR-KOZAKURA完成版Rubyによる超簡単開発環境
三七男 山本
Running lagopus on Xeon D
Running lagopus on Xeon D
Masaru Oki
オープンソースで始める「超」VPN 構築術
オープンソースで始める「超」VPN 構築術
Masahiko Hashimoto
Webエンジニアのためのスマートホームハック ~ Node.js で家電とArduinoを操作 ~
Webエンジニアのためのスマートホームハック ~ Node.js で家電とArduinoを操作 ~
Futomi Hatano
13apr2013 kernelvm8-main
13apr2013 kernelvm8-main
Shotaro Uchida
20110724 WIZDOM:知識ゼロからのArduino(1)
20110724 WIZDOM:知識ゼロからのArduino(1)
Atsushi ENTA
Mais procurados
(20)
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
SD WiFi v3基板の説明
SD WiFi v3基板の説明
150130 edison-ug
150130 edison-ug
GR-CITRUS搭載のRubyファームウェアの説明
GR-CITRUS搭載のRubyファームウェアの説明
Xeon d
Xeon d
Dpdk環境の話
Dpdk環境の話
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
IoTハンズオン資料(おうちハック)配布用
IoTハンズオン資料(おうちハック)配布用
Node-RED勉強会(20160826)追補
Node-RED勉強会(20160826)追補
IoTハンズオン
IoTハンズオン
Wakayama.rbボード用WiFi基板 Ver1.2の説明
Wakayama.rbボード用WiFi基板 Ver1.2の説明
続・Webエンジニアのためのスマートホームハック ~ Node.js で IoT プロトコルハック ~
続・Webエンジニアのためのスマートホームハック ~ Node.js で IoT プロトコルハック ~
まずは mini Beakout Kit で使ってみる
まずは mini Beakout Kit で使ってみる
201104016 osc2011 kobe
201104016 osc2011 kobe
GR-KOZAKURA完成版Rubyによる超簡単開発環境
GR-KOZAKURA完成版Rubyによる超簡単開発環境
Running lagopus on Xeon D
Running lagopus on Xeon D
オープンソースで始める「超」VPN 構築術
オープンソースで始める「超」VPN 構築術
Webエンジニアのためのスマートホームハック ~ Node.js で家電とArduinoを操作 ~
Webエンジニアのためのスマートホームハック ~ Node.js で家電とArduinoを操作 ~
13apr2013 kernelvm8-main
13apr2013 kernelvm8-main
20110724 WIZDOM:知識ゼロからのArduino(1)
20110724 WIZDOM:知識ゼロからのArduino(1)
Destaque
OpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみた
Hideki Yanagihara
IoTタグで遊んでみよう
IoTタグで遊んでみよう
Yukimitsu Izawa
Mqttの通信を見てみよう
Mqttの通信を見てみよう
Suemasu Takashi
Raspberry pi internet of things
Raspberry pi internet of things
catmoney
20150726 IoTってなに?ニフティクラウドmqttでやったこと
20150726 IoTってなに?ニフティクラウドmqttでやったこと
Daichi Morifuji
IoT時代を支えるプロトコルMQTT技術詳解
IoT時代を支えるプロトコルMQTT技術詳解
Naoto MATSUMOTO
動かしながら学ぶMQTT
動かしながら学ぶMQTT
Eiji Yokota
MQTTでオフィスハック with RasPi
MQTTでオフィスハック with RasPi
Masahiko Kubara
Mqttで始めるIoT
Mqttで始めるIoT
Shintaro Hosoai
ストリーム処理勉強会 大規模mqttを支える技術
ストリーム処理勉強会 大規模mqttを支える技術
Keigo Suda
WebとIoTとMake
WebとIoTとMake
Hirotaka Niisato
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
Dmitriy Samovskiy
デバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoT
Shin-ya Koga
MQTTとAMQPと.NET
MQTTとAMQPと.NET
terurou
Destaque
(14)
OpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみた
IoTタグで遊んでみよう
IoTタグで遊んでみよう
Mqttの通信を見てみよう
Mqttの通信を見てみよう
Raspberry pi internet of things
Raspberry pi internet of things
20150726 IoTってなに?ニフティクラウドmqttでやったこと
20150726 IoTってなに?ニフティクラウドmqttでやったこと
IoT時代を支えるプロトコルMQTT技術詳解
IoT時代を支えるプロトコルMQTT技術詳解
動かしながら学ぶMQTT
動かしながら学ぶMQTT
MQTTでオフィスハック with RasPi
MQTTでオフィスハック with RasPi
Mqttで始めるIoT
Mqttで始めるIoT
ストリーム処理勉強会 大規模mqttを支える技術
ストリーム処理勉強会 大規模mqttを支える技術
WebとIoTとMake
WebとIoTとMake
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
デバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoT
MQTTとAMQPと.NET
MQTTとAMQPと.NET
Semelhante a ワンコインでIot入門 第二章
Japanino Workshop #2
Japanino Workshop #2
Shigeru Kobayashi
CUDA1日(?)体験会
CUDA1日(?)体験会
RinKuriyama
Arduino001
Arduino001
Akifumi Nambu
JavaScript と Arduino でオリジナルデバイスを作ろう
JavaScript と Arduino でオリジナルデバイスを作ろう
Yoshihiro Iwanaga
20181117 arduino basicbeta1
20181117 arduino basicbeta1
Chiehwun
OSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUG
Hideki Aoshima
ULVOの等価回路モデル
ULVOの等価回路モデル
マルツエレック株式会社 marutsuelec
第2回 某社Arduino勉強会 ハンズオン
第2回 某社Arduino勉強会 ハンズオン
Yusuke HIDESHIMA
UVLOの等価回路モデル作成方法
UVLOの等価回路モデル作成方法
Tsuyoshi Horigome
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
aitc_jp
20131011_openstack-neutron-vyattameeting
20131011_openstack-neutron-vyattameeting
Akihiro Motoki
Arduino Unoを使ってLED電気回路の人工方の作器方法
Arduino Unoを使ってLED電気回路の人工方の作器方法
Ken Guinto
20120225 WIZDOM:知識ゼロからのArduino(2)
20120225 WIZDOM:知識ゼロからのArduino(2)
Atsushi ENTA
200625material naruse
200625material naruse
RCCSRENKEI
Arduino jenkins
Arduino jenkins
Kiro Harada
Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編
Masaru Oki
Jetson Nano Lチカ
Jetson Nano Lチカ
NISHIMOTO Keisuke
Semelhante a ワンコインでIot入門 第二章
(17)
Japanino Workshop #2
Japanino Workshop #2
CUDA1日(?)体験会
CUDA1日(?)体験会
Arduino001
Arduino001
JavaScript と Arduino でオリジナルデバイスを作ろう
JavaScript と Arduino でオリジナルデバイスを作ろう
20181117 arduino basicbeta1
20181117 arduino basicbeta1
OSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUG
ULVOの等価回路モデル
ULVOの等価回路モデル
第2回 某社Arduino勉強会 ハンズオン
第2回 某社Arduino勉強会 ハンズオン
UVLOの等価回路モデル作成方法
UVLOの等価回路モデル作成方法
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
20131011_openstack-neutron-vyattameeting
20131011_openstack-neutron-vyattameeting
Arduino Unoを使ってLED電気回路の人工方の作器方法
Arduino Unoを使ってLED電気回路の人工方の作器方法
20120225 WIZDOM:知識ゼロからのArduino(2)
20120225 WIZDOM:知識ゼロからのArduino(2)
200625material naruse
200625material naruse
Arduino jenkins
Arduino jenkins
Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編
Jetson Nano Lチカ
Jetson Nano Lチカ
ワンコインでIot入門 第二章
1.
ワンコインでIoT入門 2章: Arduino nano
clone + 格安Ether ENC28J60の人柱とMQTT makoto
2.
今回のゴール Arduino nano SPI コンセプト - 格安Ethernet モジュール”ENC28J60”(266円)の人柱 - MQTTの基本的なPub/Subまでの確認 ゴール Arduino nano
クローンにENC28J60を接続、DHCPでアドレス を取得してMQTT通信ができることを確認 ENC 28J60 eth MQTT Broker (Linux) MQTT Publish MQTT Subscribe MQTT Publish
3.
必要なハードウエア パソコン: とりあえずOSXを例に。Wind/LinuxでもIDEが動けば何でもOK 半田セット: 2000円ぐらいの安い物でOK
4.
必要なハードウエア ITEM 最安値 価格備考
備考 Arduino nano clone 179円 前回購入 マイコン本体。前回使ったものを利用 USB cable(mini) 100円 前回購入 前回使ったものを利用 LANケーブル 0円 エンジニアなら余るほど持ってるはず ジャンパーコード 各3種類×40本 239円 aliexpress 最安値 オスメス、メスメス、オスメス 全種類。どうせ今後使うので 3種類全部準備 ENC28J60 266円 aliexpress 最安値 イーサネットモジュール 3.3v 電源 70円 3.3vの外部電源が必要なことが判明 種類手配中 ワンコインを超えてる気もするが、とりあえず気にしない
5.
対象者 対象とする者 PCのネットワークの設定には全く困らない程度のTCP/IP知識 MAC/Linuxのコマンドラインの扱いには慣れている 数百円程度の投資ができる 対象としない者 ニーモニック原理主義者 ブルジョアArduino派(Genuino101とか)
6.
トレードオフ・スライダー 低コスト 技術の新しさ 技術の美しさ 技術の簡単さ 重視軽視 電波法順守
7.
なぜArduino uno +
ENC28J60なのか=安いから ArduinoのEthernet実装の選択肢 今回の構成 Ethernet Shield 実装例 Arduino nano クローン(139円〜) +ENC28J60 (266円〜) 正規版 Arduino UNO (3000円ぐらい) + Ethernet Shield(3000円ぐらい) クローン Arduino UNO (270円ぐらい) + Ethernet Shield(551円ぐらい) 利点 安い、小さい 世界的には情報量が多い 半田いらず 情報量が多い 欠点 ピンの半田付け必須 大きい 酔っぱらって触って壊してもいいやと思える程度にお手軽(酒の肴に最適) ワンコインにこだわらなかったらEthernet Shield クローンもアリ
8.
ArduinoとENC28J60との通信:SPI Arduinoと周辺機器とのデジタル通信インターフェースの例 SPI I2C UART トポロジー 概要
SCLK: クロック SOMI: 周辺機器からArduinoへの通信 SIMO: Arduinoから周辺機器への通信 SS: 通信する周辺機器を選択 SCL: クロック SDAI:データ送受信 TX: データ送信 RX:データ受信 特徴 バイナリー通信 Pros:全二重、通信速度が早い Cons,:結線が多い バイナリー通信 周辺機器のアドレスで対象を選択 Pros:結線数が少ない Cons;半二重通信、遅め テキスト通信の利用も多い Pros:全二重そこそこ早い Cons: 通信速度は両端で手動設定 実装例 TFT液晶、イーサネット等の 高速通信 デジタルセンサー、LCD液晶など Arduinoへのスケッチ書き込み ATコマンドやGPSのNMEA、,Log出力等 のテキスト通信 Arduino 周辺機器 周辺機器 SCLK SOMI SIMO SS1 SS2 Arduino 周辺機器 周辺機器 SDA SCL Arduino 周辺機器 TX RX RX TX バス型 バス型 P2P型
9.
なぜMQTTなのか 1. 理由(棒読み) HTTP MQTT トポロジー 通信
1:1のRequest-Responseが基本。 擬似的なPush型通信実現のため、頻繁 にRequestが発生、トラフィック増加 Push型通信をサポート Sub/Pub型のため、容易に1:Nを実現 データ量 扱うデータが小さいのでプロトコルヘッ ダーの割合が相対的に大きい IoTに最適化されているため小さい なんとなくまわりで流行ってて楽しそうだから HTTP Server Client A Client B Response Request Response Request Client A MQTT Broker Client B Client C Request/Response型 Sub/Pub型 2. 理由(本音)
10.
Ether Ubuntu 14.04 MQTT Subscriber MQTT Publisher MQTT Broker 今回実装する概要1:
ArduinoでPublishテスト Arduino nano clone MQTT Subscriber MQTT Publisher ENC 28J60 IP network 1. “output”購読 2. “output”に”Ready”を発行 3. “Ready”受信 シリアルモニタ(UART)へ ログを出力 1. テスト用MQTTクライアントがtopic”output”をsubscribe 2. Arduino起動後、Topic”output”へ”Ready”という文字列をpublish 3. テスト用MQTTクライアントが”Ready”という文字列を受信 (*) 一連の開析のため、テキストログをシリアル通信( UART)へ出力
11.
Ether Ubuntu 14.04 MQTT Subscriber MQTT Publisher MQTT Broker 今回実装する概要2:ArduinoでSubscribeテスト Arduino
nano clone MQTT Subscriber MQTT Publisher ENC 28J60 IP network 1. “input”購読 2. inputに“ping”発行 シリアルモニタ(UART)へ ログを出力 1. Arduinoがtopic”intput”をsubscribe 2. テストクライアントが Topic”input”へ”ping”という文字列をpublish 3. Arduinoが”ping”という文字列を受信 (*) 一連の開析のため、テキストログをシリアル通信( UART)へ出力 3. “Ping”受信
12.
Server側準備 ❖ 環境 ➢ OS:
Ubuntu 14.04 ➢ MQTT: Mosquitto ubuntuデフォルトのパッケージは古いのでNG。PPAで最新 版をインストール $sudo apt-get install software-properties-common $sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa $sudo apt-get update $sudo apt-get install mosquitto $sudo service mosquitto start $sudo apt-get install mosquitto-clients
13.
Server側接続テスト サーバ上にターミナルを2つ立ち上げ、topic”output”経由で文字列”test”が送受信される事 を確認 $mosquitto_sub -d -t
"output" -h localhost Client mosqsub/2308-ip-172-31- sending CONNECT Client mosqsub/2308-ip-172-31- received CONNACK Client mosqsub/2308-ip-172-31- sending SUBSCRIBE (Mid: 1, Topic: output, QoS: 0) Client mosqsub/2308-ip-172-31- received SUBACK Subscribed (mid: 1): 0 Client mosqsub/2311-ip-172-31- received PUBLISH (d0, q0, r0, m0, 'output', ... (4 bytes)) test $mosquitto_pub -t "output" -h localhost -m "test" MQTT Publish Termina1: Subscriber 側 Termina2: Publisher 側
14.
Arduino物理的準備(PINハンダ付け) ❖ 簡単なハンダ付け作業必須 ➢ 道具は2000円のセットで
OK。失敗したとき用に吸い取り線だけはあった方がいい ➢ やってみると思ったより簡単。そう簡単に壊れないし壊れたところで数百円。 Go ahead ピンをハンダ付け ❖ まずは動画でイメージトレーニング ➢ https://www.youtube.com/watch?v=37mW1i_oEpA
15.
RJ45 USB Arduino物理的準 D12 D11 D10 5V
GND D13 SO SCK GND VCC CS SI 動かない 3.3v SI
16.
原因と対策 ● 原因 ENC28J60への電流が予想以上に大きく、実測で140mA,Google先生に聞くと最 大で250mAらしい。Arduinoが供給可能な電流を大きく上回り、3.3v電圧が下降 し、ENC28J60に必要な電圧(3.0-3.6v)を下回る ● 対策 1.
regulator付きの3.3v外部電源が必要。(70円のをポチったけど今手元にない) 2. 今すぐ動かしてみたいので色々やってみた ○ アルカリ電池×2(3.2v)を外部電源に利用 ■ 失敗:電圧が2.7vぐらいまで下降。3本だと逆に電圧高すぎ ○ ニッケル充電電池×3(1.2v×3=3.6v)を外部電源に利用 ■ 成功:電圧の降下ほとんど無く、実測値で3.7v ○ USBからの5v電圧を10オームぐらいの抵抗で分圧 ■ 成功:とりあえずは動いた ○ Arduinoの3.3vピンではなく5vピンで給電 ■ 成功:適度に電圧が下降し動いた。真似するなら壊す覚悟を とりあえず今回はこれで
17.
RJ45 USB Arduino物理的準(3.3v外部電源) D12 D11 D10 5V
GND D13 SO SCK GNDVCC SI 3.3v SI 3.3V GND CS GND 外部電源 乱暴に言えば「3.3v」が電 池でいうプラスでGNDがマ イナス 本来5vのArduinoと3.3vの周辺機器は給電だけでなくデータ線も直接接続できず、レベル変換が必要ですが 28J60のデータ線は5vに耐えられる(5v tolerant)なのでOK
18.
Arduino物理的準備(暫定構成) 充電式ニッケル 単三電池×3=3.6v
19.
開発環境(ソフトウエア) 以下二つのライブラリをダウンロードして取り込む UIPEthernet ENC28J60用のTCP/IPスタック https://github.com/ntruchsess/arduino_uip/archive/master.zip PubSubClient ArduinoのMQTTクライアント https://github.com/knolleary/pubsubclient/archive/master.zip
20.
#include <UIPEthernet.h> #include <PubSubClient.h> byte
mac[] = {0x00,0x01,0x02,0x03,0x04,0x05}; byte server[] = { 192,168,1,1 }; EthernetClient ethClient; void callback(char* topic, byte* payload, unsigned int length); PubSubClient client(server, 1883, callback, ethClient); void setup(){ Ethernet.begin(mac); Serial.begin(9600); Serial.print("IP Address : "); Serial.print(Ethernet.localIP()); Serial.print("/"); Serial.println(Ethernet.subnetMask()); if (client.connect("arduinoClient")) { Serial.println("MQTT PubSub Ready"); client.publish("output","ready"); client.subscribe("input"); }else{ Serial.println("MQTT PubSub failer"); } } void loop(){ client.loop(); } void callback(char* topic, byte* payload, unsigned int length) { byte* pl = (byte*)malloc(length); memcpy(pl,payload,length); if (memcmp(pl, "ping",4)==0) { Serial.println("Payload=ping"); client.publish("output","ok"); } free(pl); } 開発環境(サンプルスケッチ) 「カンマ」区切りの MQTT brokerの IPアドレス MACアドレス手書 きっすか!!
21.
書き込み:シンボリックリンクを作成 ❖ OSXではArduino nanoのUARTのデバイス名に空白文字が含まれ、IDEで正常に 扱えないのでシンボリックリンクを作成 -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 ダメなデバイス名
22.
書き込み:書き込み実効 1. シリアルポートに作成したシンボ リックリンクを選択、マイコンボー ド、プロセッサが正しく設定されて いることを確認 2. シリアルモニタを起動 3.
書き込む 1 3 成功 2 シリアルモニタ
23.
Publishのテスト $mosquitto_sub -d -t
"output" -h localhost Client mosqsub/2308-ip-172-31- sending CONNECT Client mosqsub/2308-ip-172-31- received CONNACK Client mosqsub/2308-ip-172-31- sending SUBSCRIBE (Mid: 1, Topic: output, QoS: 0) Client mosqsub/2308-ip-172-31- received SUBACK Subscribed (mid: 1): 0 Client mosqsub/2311-ip-172-31- received PUBLISH (d0, q0, r0, m0, 'output', ... (4 bytes)) Ready 1.ubuntuで”output”をサブスクライブ 4.文字列”Ready”を受信 2.Arduinoのリセットボタンで再起動 IP Address : 172.16.81.52/255.255.192.0 MQTT PubSub Ready 3.シリアルモニタでDHCOで取得した IPアドレス、MQTT接続を確認
24.
Subscribeのテスト 1.ubuntuから”output”へ文字列”ping”をpublish IP Address :
172.16.81.52/255.255.192.0 MQTT PubSub Ready Payload=ping $mosquitto_pub -t "output" -h localhost -m "ping" 2.受信した事をシリアルモニタで確認
25.
まとめ ENC28J60を使ってMQTTのクライアントの基本的な動作を確認。 ATMegaベースのArduinoはIPベースのGateway母艦としては少々役不足かも 想定外だったこと 1、 消費電力が予想以上に高い ENC28J60の固有ではなくEthernet自体の消費電力がArduinoの 周辺機器としては高い。私が無知でした。Google先生がarduinoからの3.3v 給電で動かしている回路図を紹介してくるのだけどホントだろうか 2、まさかのMACアドレス手書き 3、TCP/IPスタックの消費メモリが大きすぎる たったこれだけの実装で74%(1.5kB)のSRAMを消費(75%を超えるとアラート) これもENC28J60固有の問題ではない(TLSで暗号化とかはまず無理)
26.
次回:WiFiか可視光、赤外線 センサーを何か一つ接続するとして、通信は以下2案で検討中 案1 WiFi ESP wroom 2(ESP8266の電波法OKバージョン)を使ったWiFi シンプル版は扱いにくいしくUSB
Uart付きのやつは高い 案2 赤外線/可視光通信: WiFiは結局高いので赤外線通信か可視光
27.
APPENDIX: Arduino uno
clone編
28.
PC(USB) ← 結線図 RJ45 SO SCK GNDVCC SI CS 13 12
11 10 GND3.3v USB → Hub/Switch
29.
結論:unoなら外部電源も半田も不要(の場合もある) 手順 1. マイコンボードとして”Arduino/Genuino Uno”を選択 2.
あとはnanoと同じMQTT用のスケッチを同じ手順で書き込む 原因 unoもnanoも同じようなレギュレータ。でもunoの3.3vはレギュレータ直なのであと はレギュレータ次第(クローンなので何が実装されるか不明、とりあえず私の持って るuno/nanoは全部AMS1117だった) 追加コスト 324円(Arduino uno と古い形状のUSBケーブルセット
30.
Arduino uno clone uno(上)とnano(下) uno
と ENC28J60
Baixar agora