ラズパイを使ってみた話

 ラズパイをこのあいだ買ったので、セットアップとLチカを行いました。

・ハードの準備
 用意したものはコチラ

IMG_1033
 ラズパイ本体です。秋月でRaspberry Pi 3 Model B+を買ってきました。
IMG_1034
 microSDカードです。相性が悪いものがあると聞いたので調べた結果、東芝のものは全部使え、16GBあれば余裕があるとのことだったので、これを買ってきました。秋月で売っているmicroSDはこれだけなのかな?と思います。
 マウスはノパソで使ってたもの、ディスプレイとキーボードはメインPCで使っているものを使いました。キーボードだけ使ってないものがなかったので、メインPCとラズパイの間で抜き差ししながら使うことにしました。

・ソフトの準備
 セットアップの手順は以下の通りでした。
①別のパソコンにmicroSDカードを挿す。
②公式サイトからOSをダウンロードする。
③ダウンロードしてきたファイルを展開する。
④展開したファイルをSDカードに書き込む。
⑤SDカードをラズパイにさす。
⑥ラズパイを起動して画面の手順に従って操作する。
という手順で簡単にできました。
 ここまで終わるとプログラムやオフィスなどのことができる環境が整いました。

・Lチカ
 私は今までPythonを使ったことがなかったので、まずはプログラムではなく、ターミナルでLチカを行うことにしました。

 公式サイトでピンアサインを調べ、GPIO2ピンとGNDにLEDと適当な抵抗を刺します。
 ターミナルに以下の通りに入力します。
 echo 2 > /sys/class/gpio/export
 echo out  > /sys/class/gpio/gpio2/direction
 echo 1  > /sys/class/gpio/gpio2/value
 echo 0  > /sys/class/gpio/gpio2/value
 echo 2 > /sys/class/gpio/unexport
するとそれぞれ、
・ピンを有効化
・アウトプットに設定
・ON
・OFF
・ピンを無効化
というように働くはずです。まだ自分もよくわかってないのでここら辺は間違えているかもしれません。実際に動作させるとこのようになります。

 PythonでもLチカをしてみました。
 以下のプログラムを書き込みます。
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(2, GPIO.OUT)
while True:
    GPIO.output(2, GPIO.HIGH)
    time.sleep(0.1)
    GPIO.output(2, GPIO.LOW)
    time.sleep(0.1)
    GPIO.cleanup()
書き終わってRUNさせるとLチカができます。
このような感じになります。


 今回はこれで以上です。これをやる前に自作VVVFインバータで三相モーターを回すことができなかった事件がありました。しかし、どうせシステムもインバータも期限は大体一緒だと思うから気分転換にこっちをやりました。
 後期始まるまで一週間切ってるんですけど、お金が無くなってきているので働かないといけない上、授業中にラズパイいじるためにディスプレイ買いたいので、バイトしなきゃと思いつつ適当にバイトをしながら進捗を上げればいいなぁと思います。それではまた今度

システムの開発をしなきゃなっていう話

 I2Cとデータの表示の練習として、センサー-Arduino-Arduino-LCDとデータを転送するシステムを作りました。

・システムの詳細
 SlaveのArduino(以下スレイブ)では、MasterのArduino(以下マスター)から要求があった時にセンサーの値を読み取りマスターにそのデータを返します。また、マスターではスレイブにデータの要求をし、帰ってきたデータをLCDに表示します。

・配線
 そのためにまず、スレイブには使うセンサー(今回は半固定抵抗器)をつなぎ、マスターにはLCDと通信するためにArduinoとLCDのSDA,SCL,VCC,GNDをつなぎます。Arduino間はI2C通信を行うためにSDA,SCL,GNDをつなぎます。
 実際に配線するとこんな感じです。キタナイ...
IMG_1013


・プログラム
マスター
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
  LiquidCrystal_I2C lcd(0x3F, 16, 2); // I2C: 0x3F, 16x2 LCD
  long c=0;

void setup() {
  Wire.begin();
  lcd.init(); 
  lcd.backlight();
  Serial.begin(9600);
}

void loop() {
  Wire.requestFrom(8,1);
  while (Wire.available()) {
    c = Wire.read();
    Serial.println(c);
  }
  lcd.setCursor(0, 0);
  if(c >99){
  lcd.print(c);}
  else{
    if(c >9){
    lcd.print(" ");//LCDの出力を整えるための空白
    lcd.print(c);}
    else{
    lcd.print("  ");//LCDの出力を整えるための空白
    lcd.print(c);
    }}
  delay(100);
}


スレイブ
#include <Wire.h>
int val1=0;

void setup() {
  Serial.begin(9600);
  Wire.begin(8);
  Wire.onRequest(requestEvent);
}

void loop() {
  delay(100);
}

void requestEvent() {
  val1=analogRead(0)/4;
  Serial.println(val1);
  Wire.write(val1);
}

・動作
 実際の動作の様子はこんな感じです。マスター、スレイブ、LCDの値がずれることなく同期できています。



 今回はこんな感じで、今まで通信系のことを一切やっていなかったので勉強になりました。まあ、サークルとかで使うかもしれないのでその時に生かせたらいいな...と。

 後期が始まるまで二週間切ってしまったので、制作実験用の期待の改良をやんないとなぁと思いつつ机の上にあってジャマな三相モーターも動かせるようにならないとなぁと思っています。それではまた今度

なんとなくLCDを点けた話

 なんか家に謎のLCDがあったので使ってみました。

 実物がこれです
IMG_0988

IMG_0990
 なんか裏にモジュールがついていました。自分ではんだ付けした覚えはないので元からはんだ付けして在ったやつでしょうたぶん。調べたところ付いてるのはI2CモジュールらしくI2C入力を入れれば簡単に動く便利なものでした。

Arduino IEDでライブラリを持ってきて適当にプログラムを書きました。
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2); // I2C: 0x3F, 16x2 LCD

void setup() {
  lcd.backlight();
  lcd.init(); 
}

void loop() {
  lcd.setCursor(0, 0);
  lcd.print("Hello, world!");//一行目
  lcd.setCursor(0, 1);
  lcd.print("by Chisato");//二行目
}

このプログラムで光った様子がこちら

IMG_0991

 モジュールを使っているからワイヤーの本数が少ないこと以外はごく普通の動作をしました。

今回は短いけどこれ以上やることないのでそれではまた今度

ライントレーサーの改良をしたかった話

 前回、前々回でちょっと触れたライントレーサーの改良について失敗したのでその話でも。

 そもそも前回作ったモノは、「ラインが途切れているとき」「ラインが交差しているとき」の二点で自分の中では十分とは言えない性能でした。公益財団法人ニューテクノロジー振興財団のロボトレース協議規定( https://www.ntf.or.jp/mouse/micromouse2013/kitei_trace_since2013.html )ではラインが途切れることはないんですけど、昔NXTでなにかの大会に出たときはラインが途中で途切れてたりラインの上に障害物が置いてあったりしたので、ラインがなくてもある程度は動けるようにしようとしていました。

 実際のシステムは、前に作った時の回路の演算部を下の論理回路に置き換えることで実現させることにしました。
line v3 ronri
実際に素子で表すと以下のようになります。
LINE ronri_回路図v2

これをブレッドボードで作って動作させてみた様子がこちら。


 この時点ではうまくいっているように見えたが、主にOR回路の電圧降下が大きいことが今考えると問題であったのかもしれない


 これらの実験の結果、予測された入力に対して要求している通りの出力を得ることができたので配線図を書きました。

LINE ronri(boad)_プリント基板
 この基板を書く時には二層基板にしないと車体に乗らないことが分かっていたので二層にすることを前提に描いたのですが、すごく見づらい図になってしまいました。あと、間違えて左右反転して作ってしまっています。

 この配線図の通りにユニバーサル基板に配線し実験してみたのですが、入力のA/D変換に使ったコンパレータの出力電圧が過去に行った実験や前回のトレーサーでは5v出力されていたのに今回の回路では最大でも1.5v程度しか出ず、後々の演算部での電圧降下がそれよりも大きいため出力が想定通りに出ませんでした。

 まあその結果うまく動かずに失敗となったわけですが、まあいつか改良をしようと思ってます。後期の授業で制作実験というものがあり、その授業ではライントレーサを作るのでそれまでにはきちんと動くものを作ろうと思います。
 しかし、せっかくスライダックと三相モーターを買ったのでそれを使いたいという欲求が高まってきているのと、それらを買ったせいでお金がないので様々な素子が買えないという問題があります。それなので、しばらくはバイトを集中的にやりお金をためて、VVVFインバータなどのパワエレの勉強をやってきたいと思っています。

論理回路の話

 こんにちは。前回、論理回路をやると言っていた通り論理回路についていろいろやったのでその記録でも。


1, まず、ICを一切使わずにそれぞれの基本的な論理回路を作ることにしました。
 最初に適当な回路図をfritzingで描きました。(そろそろちゃんとした回路図の作成ソフト使えるようにならないとなぁ...と思いつつ)
論理回路_回路図



 それぞれの論理回路の入出力の様子はこちら
キャプチャ


 作った回路の動作がこちら

 まあここら辺は色々参考にしているので普通に動作します。


2, 次にロジックICを使ってみました。
NAND,NOR,XOR回路を、それぞれ専用のICのSN74HC00N,SN74HC02N,SN7486Nを使って作成し、動作させてみました。
 実際の動作の様子がこちら

 それぞれのICでピンアサインが違うことに注意すれば簡単に動作します。


おまけ
 RSフリップフロップ回路をNOR回路を使って作ってみました。

フリップフロップ
入出力はこのようになります。
RSFF

 このような回路を作り動作をさせました。動作の様子はこちら





 今回は基礎的な論理回路について学びました。これは、前回のロボトレースの改良をするために行ったものなので、次は改良をしたいと思います。

マイコンを使わないライントレースカーを作った話

 お久しぶりです。ちさとです。夏休みが始まり、ある程度時間ができたので、前回少し言っていた「マイコンを使わないライントレースカー」をつくりました。

 ライントレースカー自体はNXTとかArduinoとかで何回か作ったことがありました。前回今年の5月26日に作った時にプログラムがすごく簡単だったので、マイコンを使わなくてもできると思い今回製作しました。

 今回製作するにあたり、機体本体は前回使用したものを改良して使うことにし、各基板を新規製作することにしました。基板は二枚製作し、センサー基板と演算,出力基板に分けて製作しました。

 今回実際に制作したものの回路図は以下のようになっており、上からセンサー部、演算部、出力部となっています。

LINE 説明
 センサー部では、フォトリフレクタの値がセンサーに帰ってくる線量に応じて下図青線のようにアナログ出力されます。
 この出力をそのまま今回使われたモータードライバである「TA7291P」に入れてしまうとうまく動作しないが、これを解決するために演算部が必要になります。今回はコンパレータである「lm393」を利用し、半固定抵抗によって決めた任意の電圧より入力電圧が高いか否かを判定し下図赤線のように出力しました。
Desktop Screenshot 2018.08.06 - 18.17.56.66 (3)
 出力部では、演算部の出力とタイマーICである「NE555P」で発振させたVrefを「TA7291P」に入力させモーターを回しています。

NE555pによるduty比変更の様子



 実物
・センサー基板
0VWNiNDa

・演算,出力基板
DurCqLeD

・全景
bNIzeVdk
r-PQaB4q


実際に動かしたときの様子はこちら



 今回作ったモノではラインが途切れていたり、ラインがクロスしているものではうまく走ることができないです。これは、「センサーが黒いラインに反応しているときに動くようになっているので、途切れたら進まないしこと」「一番左と右のセンサーが同時に反応してしまうとブレーキがかかってしまうこと」がそれぞれの原因だとわかっています。次回作るときはこれらを改良してより複雑なコースで走れるようにしたいです。 



 動画編集が面倒くさすぎて無音無編集動画なのは許してください。
 次回はたぶん論理回路についてになると思います。改良に必要なので。

初めまして。

 初めまして、芝浦工業大学工学部電気工学科1年の「ちさと」というものです。

 大学では、SRDC(http://srdc.info/profile.html)とReUs(http://www.team-reus.net/)に所属しています。

 今までは創ったモノをTwitter(https://twitter.com/chisao_62)にあげるだけでまとめておく場所がなかったので、今回ブログを始めることにしました。

 これまでに作ってきたもの(VVVFインバータ,コイルガン,ライントレーサー,etc)についてもそのうちかけるといいかな~と思っています。

 それでは、よろしくお願いします(*・ω・)ノ



(最後に作成中の基盤でも)
CbEl2aWU




アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

読者登録
LINE読者登録QRコード