SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Raspberry Piでラズベリーパイを
おいしいプログラム開発 テキスト
DELiveWorkshop
秘密結社オープンフォース
今日の予定
●
ログイン
●
動作モニター
●
カチカチしてみる
●
アナログを測ってみる
●
室温を測る
●
内部温度を測る
●
プログラム作る
●
クッキング!
●
食べる!!
DELive
●
珪藻土などの高断熱素材を使った石窯
●
イベントに運び入れて組み立てて使用
● ピザが500℃で90秒
● パイが300℃で180秒
ログイン
● 石窯DELiveに
● sshで!
● コントローラにRaspberry Piを使っている
● ユーザ名 pi
● パスワード raspberry
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
温度を測る
●
アナログは扱えないため
● MCP3008
●
通信
● SPI
サーミスタ
●
温度によって抵抗値が変わる
●
あまり高温は測れない
– ここで使用しているのは最大125℃
●
計算式
R=Ro×e^(B(1/T)-(1/To))
– Ro :基準温度 To における抵抗値
● ここでは10kΩ (25℃ ・・・298K)
– R : 測りたい温度 T における抵抗値
– B : サーミスタの種類による定数
● ここでは3380 (25〜50 )℃
抵抗を求めるには?
● 5Vの値をRとTH
の抵抗の割合で分圧
R 10kΩ
5V
ここの電圧がいくらか?
TH(サーミスタ)
25℃のときに10kΩ
温度が高くなると抵抗が下がる
電圧を測るには?
● MCP3008で電圧の
値を測ることができる
● 0~5Vを0~1024の値で
表現する
● MCP3008とRaspberry Pi
とはSPIで接続する
R 10kΩ
5V
ここの電圧がいくらか?
サーミスタ
25℃のときに10kΩ
温度が高くなると抵抗が下がる
熱電対
●
異なる2種の金属を接すると温度差で発電する
● クロメル・アルメルという合金を使ったのがK型熱
電対
● 最高1250℃
● 約40.7μV/℃
●
非常に微弱
●
温度差しかわからない
熱電対で温度を測るには
●
非常に微弱
● オペアンプで100倍に増幅
● 約40.7μV/℃→ ???
● 500℃差だと ???
●
温度差しかわからないので
●
???
いろんな言語
● C
● bash
● Python
● java
● JavaScript
● Scratch
WiringPi
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
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);
}
Python
● cf.,
● 「Raspberry Pi 電子工作レシピ」
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
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
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
Scratch
● cf.,
Raspberry Piではじめるどきどきプログラミング
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);
}
電圧
● MCP3008
● チャンネル0 サーミスタ
● チャンネル1〜3 空き
● チャンネル4 ヒータ上側の熱電対の電圧 x 100倍
● チャンネル5 ヒータ下側の熱電対の電圧 x 100倍
● チャンネル6 予備の熱電対の電圧 x 100倍
● チャンネル7 空き
食べよう!!

Contenu connexe

Plus de Yoshimasa Kawano

Plus de Yoshimasa Kawano (17)

20181220 pcba3days
20181220 pcba3days20181220 pcba3days
20181220 pcba3days
 
20181020 opticalsystem
20181020 opticalsystem20181020 opticalsystem
20181020 opticalsystem
 
20181020 iotl tinshenzhen
20181020 iotl tinshenzhen20181020 iotl tinshenzhen
20181020 iotl tinshenzhen
 
20180414 shenzen 20180512
20180414 shenzen 2018051220180414 shenzen 20180512
20180414 shenzen 20180512
 
C89.360°映像システムをつくる
C89.360°映像システムをつくるC89.360°映像システムをつくる
C89.360°映像システムをつくる
 
20171124 startupweekendtokyo
20171124 startupweekendtokyo20171124 startupweekendtokyo
20171124 startupweekendtokyo
 
how to five sense with raspberry pi
how to five sense with raspberry pihow to five sense with raspberry pi
how to five sense with raspberry pi
 
20170130 r114
20170130 r11420170130 r114
20170130 r114
 
20170914 wildlife
20170914 wildlife20170914 wildlife
20170914 wildlife
 
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
 
20160227 de live-scratch
20160227 de live-scratch20160227 de live-scratch
20160227 de live-scratch
 
Scrirty conference20160410
Scrirty conference20160410Scrirty conference20160410
Scrirty conference20160410
 
20160218 devsumi
20160218 devsumi20160218 devsumi
20160218 devsumi
 
20150919 raspistable (bis)
20150919 raspistable (bis)20150919 raspistable (bis)
20150919 raspistable (bis)
 
Ikuijxit20150701
Ikuijxit20150701Ikuijxit20150701
Ikuijxit20150701
 
実装機
実装機実装機
実装機
 
Pcb20140111
Pcb20140111Pcb20140111
Pcb20140111
 

De workshop text20150704