Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

De workshop text20150704

  • Login to see the comments

De workshop text20150704

  1. 1. Raspberry Piでラズベリーパイを おいしいプログラム開発 テキスト DELiveWorkshop 秘密結社オープンフォース
  2. 2. 今日の予定 ● ログイン ● 動作モニター ● カチカチしてみる ● アナログを測ってみる ● 室温を測る ● 内部温度を測る ● プログラム作る ● クッキング! ● 食べる!!
  3. 3. DELive ● 珪藻土などの高断熱素材を使った石窯 ● イベントに運び入れて組み立てて使用 ● ピザが500℃で90秒 ● パイが300℃で180秒
  4. 4. ログイン ● 石窯DELiveに ● sshで! ● コントローラにRaspberry Piを使っている ● ユーザ名 pi ● パスワード raspberry
  5. 5. GPIO ● ON/OFFすると ● ランプが点滅 ● ヒーターも点滅 ● ヒーターをチカチカしてみよう ● sudo gpio write 0 1 で上側ヒータON ● sudo gpio write 1 1 で下側ヒータON ● sudo gpio write 0 0 で上側ヒータOFF ● sudo gpio write 1 0 で下側ヒータOFF
  6. 6. 温度を測る ● アナログは扱えないため ● MCP3008 ● 通信 ● SPI
  7. 7. サーミスタ ● 温度によって抵抗値が変わる ● あまり高温は測れない – ここで使用しているのは最大125℃ ● 計算式 R=Ro×e^(B(1/T)-(1/To)) – Ro :基準温度 To における抵抗値 ● ここでは10kΩ (25℃ ・・・298K) – R : 測りたい温度 T における抵抗値 – B : サーミスタの種類による定数 ● ここでは3380 (25〜50 )℃
  8. 8. 抵抗を求めるには? ● 5Vの値をRとTH の抵抗の割合で分圧 R 10kΩ 5V ここの電圧がいくらか? TH(サーミスタ) 25℃のときに10kΩ 温度が高くなると抵抗が下がる
  9. 9. 電圧を測るには? ● MCP3008で電圧の 値を測ることができる ● 0~5Vを0~1024の値で 表現する ● MCP3008とRaspberry Pi とはSPIで接続する R 10kΩ 5V ここの電圧がいくらか? サーミスタ 25℃のときに10kΩ 温度が高くなると抵抗が下がる
  10. 10. 熱電対 ● 異なる2種の金属を接すると温度差で発電する ● クロメル・アルメルという合金を使ったのがK型熱 電対 ● 最高1250℃ ● 約40.7μV/℃ ● 非常に微弱 ● 温度差しかわからない
  11. 11. 熱電対で温度を測るには ● 非常に微弱 ● オペアンプで100倍に増幅 ● 約40.7μV/℃→ ??? ● 500℃差だと ??? ● 温度差しかわからないので ● ???
  12. 12. いろんな言語 ● C ● bash ● Python ● java ● JavaScript ● Scratch
  13. 13. WiringPi
  14. 14. bash ● WiringPiを使う ● 下準備 ● spiはラッパーを使う ポートを読み込みモードに gpio mode 0 read ポートを書き込みモードに gpio mode 0 write ポート全部の確認 gpio readall ポートの読み込み gpio read 0 ポートに書き込み gpio write 0 spi使う 256KBバッファ確保 gpio load spi 256
  15. 15. C ● WiringPiを使う 下準備 #include <wiringPi.h> ポートを読み込みモードに pinMode(0,INPUT); ポートを書き込みモードに pinMode(0,OUTPUT); ポートの読み込み hogehoge = digitalRead(0); ポートに書き込み digitalWrite(0,HIGH); spi使う 256KBバッファ確保 #include <wiringPiSPI.h> wiringPiSetup(); if ( -1 == wiringPiSPISetup(0,1000000) ) { printf("SPI setup error!"); exit(1); }
  16. 16. Python ● cf., ● 「Raspberry Pi 電子工作レシピ」
  17. 17. php ● 準備 wiringPiSetup(); ポートを読み込みモードに pinMode(0,INPUT); ポートを書き込みモードに pinMode(0,OUTPUT); ポートの読み込み hogehoge = digitalRead(0); ポートに書き込み digitalWrite(0,HIGH); spi使う 256KBバッファ確保 if ( -1 == wiringPiSPISetup(0,1000000) ) { printf("SPI setup error!"); exit(1); } ● インストール apache2, php5, php5-dev などをインストールしておき適切に設定しておく git clone --recursive https://github.com/WiringPi/WiringPi-PHP.git cd WiringPi-PHP ./build.sh sudo ./install.sh
  18. 18. java ● pi4j ● http://pi4j.com/ ● sudo apt-get install oracle-java8-jdk ● curl -s get.pi4j.com | sudo bash ● lircを無効にしておく ● sudo /etc/init.d/lirc stop ● sudo rmmod lirc_rpi ● sudo rmmod lirc_dev ● コンパイル ● javac -classpath .:classes:/opt/pi4j/lib/'*' -d . ControlGpioExample.java ● 実行 ● sudo java -classpath .:classes:/opt/pi4j/lib/'*' ControlGpioExample
  19. 19. JavaScript ● Node.js + WiringPiを使う ● wget http://node-arm.herokuapp.com/node_latest_armhf.deb ● とすると、v0.11.12が入手できるが ● WiringPiがまだ対応出来ていない 設定方法 nodebrewからインストールはうまくいかなかった。 http://node-arm.herokuapp.com よりダウンロード wget http://node-arm.herokuapp.com/node_0.10.36_armhf.deb sudo dpkg -i node_0.10.36_armhf.deb sudo npm install -g node-gyp sudo npm install -g wiring-pi 動作確認 $ node -v v0.12.1 $ npm -v 2.5.1
  20. 20. Scratch ● cf., Raspberry Piではじめるどきどきプログラミング
  21. 21. SPI ● MCP3008の通信方法は、データシートを見て プログラムします。 ● Cのプログラムは以下の通り ● MCP3008.c(./MCP3008)というプログラムを呼び 出してもOK int MCP3008Read( int channel ){ int spireturn,data; spidata[0]= 1; spidata[1]= ( 0x80 | channel << 4 ) ; spidata[2]= 0; spireturn = wiringPiSPIDataRW( 0, spidata , SPIBUFFSIZE ); data = ((spidata[1]&3) << 8) + spidata[2]; return(data); }
  22. 22. 電圧 ● MCP3008 ● チャンネル0 サーミスタ ● チャンネル1〜3 空き ● チャンネル4 ヒータ上側の熱電対の電圧 x 100倍 ● チャンネル5 ヒータ下側の熱電対の電圧 x 100倍 ● チャンネル6 予備の熱電対の電圧 x 100倍 ● チャンネル7 空き
  23. 23. 食べよう!!

×