latte panda workshop_japan

45
LattePanda workshop Note : https://goo.gl/oB7jZN CAVEDU Education Email[email protected] FENG-CHIH,HSU

Upload: cavedu-education

Post on 21-Jan-2018

344 views

Category:

Education


0 download

TRANSCRIPT

LattePanda workshop Note : https://goo.gl/oB7jZN

CAVEDU Education

Email:[email protected]

FENG-CHIH,HSU

About us

Outline

• LattePandaの主な機能、活用

• 東京の温度データを取得する

• LEDを制御:ArduinoIDEを開く

• 天気アラート

Outline

• LattePandaの主な機能、活用

• 東京の温度データを取得する

• LEDを制御:ArduinoIDEを開く

• 天気アラート

LattePandaの主な機能

スペック(1)

• CPU: Intel Cherry Trail Z8350 Quad Core Processor

• メイン周波数: 1.44GHz (1.92GHz Burst Frequency)

• OS: Windows 10 Home Edition (アンアクティベート)

• RAM: 4GB DDR3L

• ストレージ容量: 64GB

• GPU: Intel HD Graphics, 12 EUs @200-500Mhz, single-channel memory

• USB 3.0 x 1, USB 2.0 x 2

• Wi-Fi 802.11n 2.4G

• Bluetooth 4.0

スペック(2)

• ビルトインArduinoコプロセッサ: ATmega32u4 (Arduino Leonardo) • ビデオ出力: HDMI and MIPI-DSI • オンボードタッチパネルオーバーレイコネクタ • (Onboard touch panel overlay connector) • 100Mbps イーサネット サポート • Intel(Cherry Trail)プロセッサ GPIO x 6pins • Atmega プロセッサ GPIO x 20pins • Gravity インターフェースコネクタ x 6pins • 電源: 5V@2A • ボード寸法: 88 x 70mm / 3.46 x 2.76" • パッケージ寸法: 110 x 94 x 30 mm/4.33 x 3.70 x 1.18” • 内容量: 55g • 総重量: 100g

LattePandaを活用したアプリ

• 3Dプリンタを制御するスクリーンへの接続

LattePandaを活用したアプリ

• ロボットアームの制御

LattePandaを活用したアプリ

• ウェアラブルデバイス [文字認識] by TKU Cilab

本日のゴール

• お天気APIを利用して東京の温度を取得する

• 一定の温度を超えたら、LEDが点灯する

Outline

• LattePandaの主な機能、活用

• 東京の温度データを取得する

• LEDを制御:ArduinoIDEを開く

• 天気アラート

明日の東京の天気

• 日本の温度取得のチュートリアル (JSON)

– http://weather.livedoor.com/weather_hacks/webservice

• 東京の温度のデータ取得のAPI

– http://weather.livedoor.com/forecast/webservice/json/v1?city=130010

※今回はlivedoorAPIを利用します。

JSONを扱うのに便利なwebsite

• http://jsoneditoronline.org/

JSON フォーマット

• 1. object(オブジェクト)

– EX:{collection, collection ,…}

• 2. collection(コレクション)

– EX: {name:value}

• 3. Array(配列)

– EX: [collection, collection]

東京の温度データを取得する

• ソフトウェアを開く:IDLE(PythonGUI)を開いてください

• FileOpenC:/Desktop/workshop/opendata_jp_ver1.py

• モジュールを起動:[RunModule][Run][Run Module]

東京の温度データを取得する

1

2

3

4

5

6

東京の温度データを取得する

• 1. エンコーディング方式:UTF-8

• 2. モジュールをインポート:

– json: 東京の温度データのフォーマット方式

– urllib:URLのレスポンスを読み取れるようにする、 urllib.urlopen(url): URLのデータを読み取る

• 4. json.loads(response.read()): JSONフォーマットをパースしてPythonのコンパイルフォーマットにする

東京の温度データを取得する

東京の温度データを取得する

• 5. data_list*‘forecasts’+[1]*‘dateLabel’++data_list*‘title’++data_list*‘forecasts’+[1]*‘telop’+を出力します。

['forecasts'][1]

['dateLabel'] =明日

東京の温度データを取得する

• 5. data_list*‘forecasts’+[1]*‘dateLabel’++data_list*‘title’++data_list*‘forecasts’+[1]*‘telop’+を出力します。

data_list*‘title'+ =東京都 東京 の天気

東京の温度データを取得する

• 5. data_list*‘forecasts’+[1]*‘dateLabel’++data_list*‘title’++data_list*‘forecasts’+[1]*‘telop’+を出力します。

['telop'] =曇り

data_list['forecasts'][1]

東京の温度データを取得する

• 6. “最高気温は”+str(data_list*‘forecasts’+[1]*‘temperature’+*‘max’+*‘celsius’])+‘°C’ と出力します。

['temperature']['max']

data_list['forecasts'][1]

['celsius']=27

(参考)Python 3.X系の場合のソースコード

#!/usr/bin/python

#-*- coding: UTF-8 -*-

import urllib.request, json

url = “http://weather.livedoor.com/forecast/webservice/json/v1?city=130010”

response = urllib.request.urlopen(url)

data_list = json.loads(response.read())

print (data_list[‘forecasts’][1][‘dateLabel’]+data_list[‘title’]+data_list[‘forecasts’][1][‘telop’])

print (“最高気温は”+str(data_list[‘forecasts’][1][‘temperature’][‘max’][‘celsius’]+’℃’))

Outline

• LattePandaの主な機能、活用

• 東京の温度データを取得する

• LEDを制御:ArduinoIDEを開く

• 天気アラート

LattePanda/Arduino Pin

LattePanda/Arduino

LEDとは?

Ground

Highpotential (高電位)

Example 1:LEDチカ

LEDを制御:ArduinoIDEを開く

• 1. Arduino IDEを開きます

Example_1 : LEDチカ

• ファイルを開きます:FileExampleBasicsBlink

Outline

• LattePandaの主な機能、活用

• 東京の温度データを取得する

• LEDを制御:ArduinoIDEを開く

• 天気アラート

Example_2 :天気アラート

• ファイルを開きます: FileOpenC:/Desktop/ weather_tokyo/workshop/ weather_tokyo.ino

• Setup(),…- – Set the シリアル通知の速度を9600に設定

– ピン出力を13に設定

Example_2 :天気アラート

1

2

3

Example_2 :天気アラート

• loop() ,…- – (1)Serial.available() – “Serial”データがまだ読めないとき Serial.available()>0

– (2) read_meg = read_meg + char(Serial.read()); – Serial.read()で、一度に1バイトのデータを読み取り、それを文字型(char型)に変換します。

– (3) read_meg.trim();

– 最初と末尾のスペースを取り除いた形の文字列を取得します。

Example_2 :天気アラート

4

5

Example_2 :天気アラート

Example_2 :天気アラート

• loop() ,…-

– (4) if (read_meg.equals("1c"))

– pin LED読み取った文字列が”1c”であれば13ピンのLEDを消灯します。

– (5) if (read_meg.equals("1o"))

– pin LEDpin LED読み取った文字列が”1o”であれば13ピンのLEDを点灯します。

Example_2 :天気アラート

• ソフトウェアを開く:IDLE(PythonGUI)を開いて下さい。

• FileOpenC:/Desktop/workshop/opendata_jp_ver2.py

Example_2 :天気アラート

• モジュールを起動する : [RunModule][Run][Run Module]

1

2

Example_2 :天気アラート

Python:天気アラート

• 1. print If int(data_list['forecasts'][0]['temperature']['max']['celsius']) >30: – data_list*‘forecasts’+[0]*‘temperature’+*‘max’+*‘cels

ius’+=東京都の最高気温

• 2. 30度以上になったら – “1o”を送信し、LEDを点灯します。

– 30度以下になったら”1c”を送信し、LEDを消灯します。

(参考)Python 3.X系の場合のソースコード

#!/usr/bin/python

#-*- coding: UTF-8 -*-

import urllib.request, urllib.parse, urllib.error, json, serial

ser = serial.Serial(“COM5”, 9600) // COMportはボードによって変わります

url = “http://weather.livedoor.com/forecast/webservice/json/v1?city=130010”

response = urllib.request.urlopen(url)

data_list = json.loads(response.read())

print(data_list['forecasts'][0]['dateLabel']+data_list['title']+data_list['forecasts'][0]['telop'])

print("最高気温は"+str(data_list['forecasts'][0]['temperature']['max']['celsius']+'℃'))

if int(data_list['forecasts'][0]['temperature']['max']['celsius'])>30:

ser.write(b'1o\r')

else:

ser.write(b'1c\r')

> conda install –c anaconda pyserial=2.7

(1) C:\Program Files\Anaconda3 にアクセス権限を付ける

(2)pyserialをインストール

(3)以下のソースコードを作成して実行

(参考)実行時

> python opendata_jp_ver2.py

(4) IDLEではなくコマンドプロンプトから直接pythonコマンドで実行する

※IDLEだとpyserialを参照できないためエラーになります。

※2.X系のソースコードを3.Xに変換するときは2to3 コマンドを使うと便利です。 (ただし、pyserialについては対応されません。)

Thank for your attention