ラベル Python の投稿を表示しています。 すべての投稿を表示
ラベル Python の投稿を表示しています。 すべての投稿を表示

2015年3月2日月曜日

ラズパイで液晶ディスプレイに時間を表示させてみた(作成中)

I2C通信の勉強でラズパイに液晶ディスプレイに時間を表示させてみた。
めっちゃ疲れたーーーーwwww
配線間違えて電源入いらんようになったり、パーツ足らずに代用ためしたり、配線の理屈わからなかったり。。。 電子工作険しいww
とりあえず、まとめる

I2C通信とは

I2C通信は周辺機器とシリアル通信する仕組み
具体的にはラズパイがマスタ、周辺機器(温度計、加速度センサ、気圧)がスレーブとなって、データのやり取り(温度取得、加速度取得、気圧取得)ができるようになる
しかも、通信するための線が下の2本だけでできるってのも魅力
  • データのやり取りする線(SDA)
  • タイミング調整する線(SCL)

お買い物リスト

機材個数画像
16文字×2行LCDモジュール
ACM1602N1-FLW-FBW
今回の目玉。2行の文字を表示する
1個
ハンダごて
LCDモジュールをブレッドボードに接続する道具
1個
なまり線
ハンダでLCDの接着するためのもの。接着材みたいなの
5cm
ブレッドボード
ハンダ付けとかせず、
簡単に配線ができるやつ
1個
ジャンパー線(雄雌)
ラズパイのGPIOと
ブレッドボードをつなぐ線
5個
ジャンパー線(雄雄)
ブレッドボード上で配線を するための線
X個
可変抵抗(10kΩ)
抵抗値を変化させられるやつ。今回のクセモノ。てか、軽視しすぎてた
1個
抵抗(1kΩ)
電流を安定させる為に必要
1個
テスター
電流、電圧、抵抗とか調べれる。可変抵抗を調べるときに活躍する
1個

ラズパイでI2C通信をする為の準備

  • モジュールを使えるようにする
  • 読み込みできるように設定。管理者権限がいるので注意
    $ sudo vi /etc/modules
    i2c-dev # これを追記しとく
    
    デフォルトで読み込み拒否設定ファイルにi2cがいるので、コメントアウトしとく
    $ sudo vi /etc/modprobe.d/raspi-blacklist.conf
    # blacklist i2c-bcm2708  # 行頭に#つけてコメントアウト
    
  • モジュールのインストール
  • インストール
    $ sudo apt-get install i2c-tools
    
    モジュール読み込み。ここでI2Cの動作クロック周波数を50kHzにする
    普通は100kHzが標準。でも今回使う液晶が50kHzでないと作動しないのでコレで設定
    $ sudo modprobe i2c-dev
    $ sudo modprobe i2c-bcm2708 baudrate=50000
    
    次回起動時にモジュールが動くように設定
    上で、「i2c-dev」と「i2c-bcm2708」を読みこんだけど、「i2c-bcm2708」は電源入れ直したらまた読み込みし直しになるので、自動で起動するようにする
    $ sudo vi /etc/modprobe.d/i2c.conf # ←このパスに「i2c.conf 」ファイル作って、下記を書いとけばよい
    options i2c_bcm2708 baudrate=50000
    
  • Pythonで制御するライブラリをインストール
  • $ sudo apt-get install python-smbus
    
準備完了!

配線

作成中

実装

作成中

2015年1月20日火曜日

ラズパイでLEDをピカピカさせてみた

勉強会で今期はラズパイの電子工作やってこーってことになったのでガンバる!

手順


・回路図書いてみる
・電子部品のお買い物
・配線
・PythonでLEDの制御

完成図はこんな感じ→



回路図

中学、高校の理科でしかみたことないから四苦八苦(-_-|||)
ラズパイは3.3V,5.0Vの電圧を出力できる。この回路に順電圧2.0V、順電流20mAの赤色LEDを点灯させる。

この回路に20mAの電流を流したい。そのとき、備え付ける抵抗の値をいくつにすればいいのか計算する
直列回路なので、抵抗の電圧は$V=V_1+V_2$から \[ V= 3.3 - 2.0=1.3[V] \] オームの法則( $IR=E$ )から0.02Aにするための抵抗は \[ R =\frac{1.3}{0.02}=65[\Omega] \] なので、65Ω以上の抵抗があれば20mA以下の電流を作れる。今回は100Ωの抵抗を使っていく

お買い物リスト


機材個数画像
ブレッドボード
ハンダ付けとかせず、
簡単に配線ができるやつ
1個
オス-メスジャンパー線
ラズパイのGPIOと
ブレッドボードをつなぐ線
1個
オス-オスジャンパー線
ブレッドボード上で配線を
するための線
1個
LED
光るやつ
赤色
順電圧:2.0V
順電流:20mA 
1個
抵抗(100Ω)
回路に流れる電流を
制御するやつ
1個

配線



ちょっと工事中。。。

LED制御


次にコーディング
ラズビアンはPythonって言語が最初から使える
GPIO用のパッケージ?をインポートすれば簡単に実装できるっぽい
とりあえずディレクトリ作ってその中で作業
$ mkdir gpio
$ cd gpio
$ vi sample.py # pythonは拡張子py
1秒おきにLEDがピカピカするコード
#! usr/bin/env python
# coding: UTF-8

# インポート:GPIO、時間
import RPi.GPIO as GPIO
import time

# BCMタイプ:GPIOピン番号を指定する方法
GPIO.setmode(GPIO.BCM)

# 出力するポート
io_port = 4

# 4番を出力にする
GPIO.setup(io_port, GPIO.OUT)

## ループ処理:付けたり消したりする
for count in range(5):
    GPIO.output(io_port,GPIO.HIGH)
    time.sleep(1)
    GPIO.output(io_port,GPIO.LOW)
    time.sleep(1)

# IOをきれいにする
GPIO.cleanup()

これでおk
実行はルート権限がいる(コレに気づくのに時間かかった。。)
$ sudo python sample.py

ピカピカした!

まぁ最初だしこんなレベルでw

2015年1月19日月曜日

CentOSにPython導入する

CentOS6.4にプログラム言語Pythonを入れてく
実はPythonは最初から入ってるw
$ pythosn --version
Python 2.6.6

でもバージョンが新しくないので、最新バージョンを入れる方法書いてく
Pythonは2系、3系があるんだけど、両方とも同じやり方でバージョンあげれる
まずはここから欲しいバージョンを選択
https://www.python.org/ftp/python/

今回は下のバージョン入れる
2系→2.7.9
3系→3.4.2
それぞれの「tgz」拡張子のリンクアドレスをコピー
インストールする
# 3系で手順示す
$ sudo wget http://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz
$ sudo tar zxvf Python-3.4.2.tgz
$ cd Python-3.4.2
$ sudo ./configure
$ sudo make
$ sudo make install
$ export PATH=$PATH:/usr/local/bin/python3.4
バージョン確認
3系
$ python3 --version
Python 3.4.2

2系
$ python --version
Python 2.7.9

できた!