読者です 読者をやめる 読者になる 読者になる

『入る学科間違えた高専生』の日記

プログラミングのコードを書いたりする予定です。あとは日記等。あといつまで高専生やねん

RaspberryPi2 Bを買って電子工作した話

はじめに

実はこの記事を書くのは2回目なのでまた同じことを書くのは本当に嫌なので
飛ばし飛ばし書きます.Safariが固まってウィンドウ消してまた書こうと思ったらプライベートブラウズしてたから
データがすべて消え去りました.

とてもつらい

アジェンダ

  • 室温管理
  • Lチカ・Lピカ
  • 赤外線リモコン化

室温管理

買ったもの

akizukidenshi.com

akizukidenshi.com

akizukidenshi.com

akizukidenshi.com

akizukidenshi.com

akizukidenshi.com

回路

f:id:nanashinodonbee:20160321184559p:plain

なにをしたか

設定などはいろんなサイトで探すとあると思うので探してください.
本来なら書いてたんですが,2回目を書く気が起こらないです.ごめんなさい

f:id:nanashinodonbee:20160322023145p:plain

雑で申し訳ないがこんな感じ.

またもや我ら「らりょす教」の id:raryosu 教祖が写り込んでますね.

簡単に説明すると自分が「室温」というキーワードを含んだツイートをすると
ラズパイで動いているPython + Tweepy(TwitterStreamingAPI)が条件分岐で拾って
現在の室温を取得してツイートする!といった形

プログラム

#!/usr/bin/env python3
# coding: utf-8

from tweepy.streaming import StreamListener, Stream
from tweepy.auth import OAuthHandler
from tweepy.api import API
from datetime import timedelta , datetime
import os

def get_oauth():
  consumer_key = "************************"
  consumer_secret = "************************"
  access_key = "************************"
  access_secret = "************************"
  auth = OAuthHandler(consumer_key, consumer_secret)
  auth.set_access_token(access_key, access_secret)

  return auth

def tweet_temperature(api):
  f = open("/sys/bus/w1/devices/28-00000723a709/w1_slave" , "r")
  degree = str(float(int(f.read().split("t=")[1]) / 1000 - 9))[:6]
  tweet_str = datetime.now().strftime("%Y/%m/%d %H時%M分%S秒") + "現在の室温は" + str(degree) + "℃です!"
  api.update_status(status = tweet_str)

class AbstractedlyListener(StreamListener):
  def on_status(self, status):
    if '室温' in status.text and status.source != '室温ツイートするやつ':
      tweet_temperature(api)

if __name__ == '__main__':
  auth = get_oauth()
  api = API(auth)
  stream = Stream(auth, AbstractedlyListener(), secure=True)
  stream.filter(follow=['1137201750'])
  stream.userstream()

Lチカ・Lピカ

1つ目のツイートでよくわからん!って言ったことは以下コマンドを実行することで解決できました.

$ sudo rpi-update

買ったもの

ラズパイ + ケース + ブレッドボード + ジャンパーコード + 抵抗は省略

akizukidenshi.com

akizukidenshi.com

回路

f:id:nanashinodonbee:20160321203301p:plain

100Ω x1

なにをしたか

だいたいこんな感じなのをTwitterで指定した特定ユーザがツイートしたらLピカさせるといった話
さっきと図は変わらないので省略

プログラム

#!/usr/bin/env python3
# coding: utf-8

from tweepy.streaming import StreamListener, Stream
from tweepy.auth import OAuthHandler
from tweepy.api import API
import RPi.GPIO as GPIO
import time

def led_short():
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(24, GPIO.OUT)
  GPIO.output(24, GPIO.HIGH)
  time.sleep(0.3)
  GPIO.output(24, GPIO.LOW)
  GPIO.cleanup()
  time.sleep(1)
  
def led_long():
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(24, GPIO.OUT)
  GPIO.output(24, GPIO.HIGH)
  time.sleep(0.9)
  GPIO.output(24, GPIO.LOW)
  GPIO.cleanup()
  time.sleep(1)

def high():
  # T(ー)
  led_long()
        
  # W(・ーー)
  led_short()
  led_long()
  led_long()
  
  # E(・)
  for i in range(2):
    led_short()
  
  # T(ー)
  led_long()

def get_oauth():
  consumer_key = "************************"
  consumer_secret = "************************"
  access_key = "************************"
  access_secret = "************************"
  auth = OAuthHandler(consumer_key, consumer_secret)
  auth.set_access_token(access_key, access_secret)
  return auth

class AbstractedlyListener(StreamListener):
  def on_status(self, status):
    if (status.author.screen_name == 'LoveLive_staff' or status.author.screen_name == 'lovelive_SIF'):
      led.high()

if __name__ == '__main__':
  auth = get_oauth()
  api = API(auth)
  stream = Stream(auth, AbstractedlyListener(), secure=True)
  stream.filter(follow=['347849994', '1346933186'])
  stream.userstream()

赤外線リモコン化

買ったもの

以下同文

akizukidenshi.com

akizukidenshi.com

回路

f:id:nanashinodonbee:20160321204309p:plain

100Ω x1

なにをしたか

「なにをしたか」というより「なにをしたいか」に繋がるんですが,ビジョンとしては,
今までのようにTwitterに「エアコン起動」とかツイートして制御するようにしても良いんですが,
Streamingがよくしらない間にダウンしてたりするのでiOSアプリでも作ってラズパイのWebサーバにPOSTして制御でもしようかな?って思っています.
iOSアプリは実際にリリースとかはできないんですが,実機ビルドしてなんとか使えそうなのでそれのほうが良いかなぁ?っていう感じです.内容としては「AFNetworking3.xを使ってPHPにPOSTして上げる」と言ったモノ
入社前課題で予習はしているのですぐにできそうなので暇ができたらやろうかと思います.

最後に

これはさっきと同じようなことをちゃんと書こうと思います.
覚えている限り

ラズパイで電子工作をするほかは,Nginxを入れてWebサーバ構築したり,Samba入れてNASサーバ構築したり...

Sambaはなすくん(id:nascola)の記事がわかりやすかったです

nascola.hatenablog.com

あと,全く関係のない話.
先日,無事に無落単ストレートで高専卒業することができました!!

それに伴い,このブログ名をどうにかしたいなぁって考えてます.
なのでいい案があれば教えてくださると幸いです.最悪このままでもいいんですけどね!

関連記事

nnsnodnb.hatenablog.jp

nnsnodnb.hatenablog.jp

nnsnodnb.hatenablog.jp

nnsnodnb.hatenablog.jp

入る学科間違えたと気付いた時にはもう遅かった

地獄を生きていくこのサバイバル高専生活果たしてどう生きていく