Successfully reported this slideshow.
Your SlideShare is downloading. ×

天気予報ガジェットを作りな がら、Pythonを勉強しよう

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 38 Ad

天気予報ガジェットを作りな がら、Pythonを勉強しよう

Download to read offline

天気予報ガジェットの制作を通じてPythonを勉強するための資料です。RaspberryPi上で、インターネットから天気予報情報を取得し、それにしたがってLEDを点灯させるPythonコードを解説しています。

天気予報ガジェットの制作を通じてPythonを勉強するための資料です。RaspberryPi上で、インターネットから天気予報情報を取得し、それにしたがってLEDを点灯させるPythonコードを解説しています。

Advertisement
Advertisement

More Related Content

Similar to 天気予報ガジェットを作りな がら、Pythonを勉強しよう (20)

Recently uploaded (20)

Advertisement

天気予報ガジェットを作りな がら、Pythonを勉強しよう

  1. 1. 天気予報ガジェットを作りな がら、Pythonを勉強しよう @Fablab北加賀屋 2016/1/30 八登浩紀
  2. 2. FabLabとは? • パーソナル・ファブリケーションに必要な機材を備 えた、実験的な市民工房のネットワークです。 • ファブラボ憲章にのっとり、”Do It With Others(DIWO)”, ”Learn Make Share”を実践する場 として機能しています。 • 詳しくは、以下のページをご参照ください。 http://fablabkitakagaya.org/whatsfablab_page/
  3. 3. えんやとは? • ファブラボ北加賀屋の電子工作チームの名前です。 • 現在は以下の3チームにゆるく分かれて活動しています • Arduino • RaspberryPi → 今日はこれ。 • mbed • えんやのfacebookページがありますので、ぜひご参加ください。 https://www.facebook.com/groups/391695280989870/
  4. 4. ものづくりとプログラミング • なぜものづくりにプログラミングが必要なの? • 情報の入力 ← センサー、インターネットなど • 情報の加工 ← プログラミング • 情報の出力 ← LED、サーボモーター、インターネットなど
  5. 5. Pythonとは? • スクリプト型の言語で、コンパイルなしで実行でき る言語です。 • 科学技術計算に強く、CADソフトなどのスクリプ トとしてもよく用いられます(例:Rhinoceros) • Raspberry Pi上で動作するRaspbianという OS(Linux)の標準言語です。
  6. 6. なぜPythonか? • ユーザーが多いです。 www.tiobe.com/index.php/content/paperinfo/tpci/index.html • 機能としてコンパクトで習得がしやすいと言われて います。 • ライブラリが充実していて、機能拡張が容易です (例:文字列処理、ネット処理、数式処理など) • どんなOS上でも使えます(マルチプラットフォーム )
  7. 7. Pythonの言語仕様 • ガベージコレクタによる自動メモリ管理 • 手続き型、オブジェクト指向、関数型など、色々な 書き方のコーディングができる(マルチパラダイム) • 変数の型は自動的に決定される(動的型付け) • 変数の型チェックが自動で行われる(強い型付け)
  8. 8. Raspberry Piとは? • PCライクなマイコンボード。 • キーボード、マウス、モニターを繋いで普通のPC のように使えます。ネット接続も容易です。 • GPIO出力により電子回路に組み込めます。 • OSはLinux(Raspbian), Windows IoT Coreなど。
  9. 9. Raspberry Piのラインナップ • Raspberry Pi:初代ラズパイ • Raspberry Pi 2:CPU4コア+メモリ1GBで 性能強化したラズパイ • Raspberry Pi Zero:5ドルの小さなラズパイ • スペックは以下を参照。 https://ja.wikipedia.org/wiki/Raspberry_Pi
  10. 10. 今回の目標:Pythonと Raspberry Piで天気予報ガジ ェットを作ろう!
  11. 11. 天気予報ガジェットの仕組み Internet 天気予報情報の取得 ラズパイ 天気予報情報の処理 LED点灯信号の出力 ブレッドボードLED
  12. 12. Pythonを勉強しよう
  13. 13. RaspberryPiに ログインしてみよう • Windows • 方法1:SSH 1. TeraTermをインストール 2. TeraTermで以下のサーバにsshで接続 192.168.0.99 ユーザー名: pi, パスワード: raspberry • 方法2:VNC 1. UltraVNCをインストール 2. VNCで以下のサーバに接続 192.168.0.99:5901 パスワード:raspberry
  14. 14. RaspberryPiに ログインしてみよう • Mac • 方法1:SSH ターミナルからsshで以下のサーバにアクセス ssh pi@192.168.0.99 パスワード: raspberry • 方法2:VNC Finder→メニューバーの移動→サーバへ接続 サーバアドレス:vnc://pi@192.168.0.99:5901/ パスワード:raspberry
  15. 15. Pythonの基本文法
  16. 16. 四則演算 • 2.2+5.6 • 3−1 • 3.1*4.2 • 3/4 • (3+4)*10/3
  17. 17. 変数と型 • x = 4 • y = “Python” • z = True • x = “Test” + 5 • y = “Test” + “Python”
  18. 18. 文字列、入出力、コメント • len(“Python”) • “Python” * 10 • print(“Python”)(3.系) print “Python”(2.系) • temp = input(“Temperature is: “) • # ここはコメントです
  19. 19. 条件比較 • 2 == 2, 3 != 10 • “Python” == “Ruby” • 3 >= 10, 3 < 10 • not x == 2 • “P” in “Python”, “1” not in “Python” • x > 3 and y > 2, x > 3 or z < 2
  20. 20. 条件分岐とインデント • if x >= 20: print(“large”) elif x > 5: print(“medium”) else: print(“small”) • if “Python” in “PythonPython”: print(“true”) • if x > 10 and y > 5: print(“Large”)
  21. 21. リスト • list = [ 10, 20, 30, “Python”, “RasPi” ] list[1], list[-1] len(list) list[2:4], list[-4:-2], list[1:] • list.append(100) • list.remove(“Python”) • list.reverse() • numbers = [ 5, 3, 10, 2] numbers.sort() max(numbers), min(numbers)
  22. 22. 辞書型 • a = { ‘First’:”Python”, ‘Second’:”Raspberry Pi” } a[‘First’] • b = {‘First’:”Python”, “Second”:[1,2,3,4,5]} b[‘Second’][2]
  23. 23. ループ • for member in list: print(member) • for i in range(10): print(i) • x = 0 while x < 10: print(x) x = x + 1
  24. 24. 関数 • def sum(a, b): return a + b sum(10, 20) • def multiple(a,b=10): return a*b multiple(5) multiple(5,4)
  25. 25. モジュール、ライブラリ • import math math.sqrt(5) • from math import sqrt sqrt(5) • from math import * sin(pi/2) • import RPi.GPIO as GPIO
  26. 26. PythonでLチカしてみよう • ブレッドボード GND 電源ライン 1列が 導通している
  27. 27. PythonでLチカしてみよう http://raspi.tv/2014/rpi-gpio-quick-reference-updated-for-raspberry-pi-bから引用
  28. 28. PythonでLチカしてみよう #!/use/bin/python3 # -*- coding: utf-8 -*- # モジュールのロード import time import RPi.GPIO as GPIO # GPIOの設定 GPIO.setmode(GPIO.BCM) # 出力LEDのGPIOピン番号 GPIO_LED = 17 # GPIOのピン番号を出力に設定 GPIO.setup(GPIO_LED, GPIO.OUT) try: while(1): GPIO.output(GPIO_LED, GPIO.HIGH) time.sleep(1) GPIO.output(GPIO_LED, GPIO.LOW) time.sleep(1) except KeyboardInterrupt: pass # GPIOの終了処理 GPIO.cleanup()
  29. 29. 天気予報ガジェットの プログラムを見ていこう
  30. 30. 天気予報ガジェットの仕様 • インターネットから一週間分の天気予報情報を取得 します → OpenWeatherMap、Webからの情報 取得 • 天気予報情報から、6時、12時、18時の天気情報を 取り出します → JSON、正規表現 • 分からない部分はWebを検索すればだいたい見つか ります!
  31. 31. 天気予報ガジェットの仕様 • 各時間の天気に応じて以下のようにLEDを光らせる → RPi.GPIO 晴れ:消灯 曇り:暗く点灯 雨、雪:明るく点灯
  32. 32. OpenWeatherMap • http://openweathermap.org/ • APIで世界の各都市の天気を取得できる • 現在の天気と、5日間・3時間ごとの天気を取得可能 • フリーなら、1分60回、1日50,000回まで取得可能 • 以下のURLにアクセスすると、5日分の天気予報情報が返ってく る http://api.openweathermap.org/data/2.5/forecast?q=Osaka- shi,jp&mode=json&appid=4d8be64e277f433755b3db1a42248b0e
  33. 33. Webページからの情報取得 • URLを指定して、そのURLにアクセスしたときに返ってく る情報(ブラウザに表示されるのと同じもの。)を取得で きます。 • 使用例: import urllib.request response = urllib.request.urlopen(url) encoding = response.headers.get_content_charset() line = response.read().decode(encoding)
  34. 34. JSON • 表示の仕様:http://openweathermap.org/forecast5 • Webで情報をやりとりするための形式です。 • 決まった構造を取るので、ライブラリで簡単にPythonの 辞書型に変更して、情報を取得することができます。 • 使用例: decode = json.loads(line) dt_txt = decode[‘list'][0]['dt_txt']
  35. 35. 正規表現 • 文字列を処理するための手法です。 • 文字列の中から、条件に合う部分を抽出できます。 • 使用例: import re pattern = re.compile(r'd+') dt_txt=“2014-07-23 09:00:00” strlist = pattern.findall(dt_txt) strlist[0]:”2014”, strlist[1]:”07”, … • http://www.geocities.jp/m_hiroi/light/python04.html
  36. 36. お天気予報ガジェットのプロ グラム • 実際のコードを見ながら説明します。
  37. 37. Pythonの学び方 • Codeacademy(英語) https://www.codecademy.com/ • ドットインストール(日本語) http://dotinstall.com/lessons/basic_python_v2 • Jessica McKellar http://pyvideo.org/video/1850/a-hands-on- introduction-to-python-for-beginning-p
  38. 38. ご静聴ありがとうござい ました。

×