2018年1月18日木曜日

かんたんなSCRATCH体験

SCRATCH
事前にGPIO出力の設定ができているあRaspberryPiを利用して2時間程度で完成します

次はスクラッチを起動して上記課題を作成せよ 注意:GPIOの番号でなくPIN番号で組立表示する点に注意

スクラッチの利用方法

「ScrachGPIO7」をダブルクリックすることで起動して利用できるようになります

「遠隔センサ接続が有効になりました」と表示されますので「OK」ボタンをクリックします。


スクラッチの起動初期画面です各部の名称は以下のようになっておりますのでこの呼び名でお話を進めていきます。


スクラッチは左上の「カテゴリ」(動きや制御など左側に表示される命令一覧)を選択して、左側の「ブロックパレット」内の命令を「スクリプトエリア」にドラッグ&ドロップすることでブロックを配置する。
「スクリプトエリア」に配置しながらプログラムを作成していきます。
「ステージ」にはプログラムの実行結果が表示されます、例えば猫が動いたり話したりあなたの思い道理に動きます。。
「スプライトリスト」利用するキャラクターなどを表示します。


タクトスイッチの操作でLEDを点灯するプログラムを作ってみましょう

早速、行くぞー
「カテゴリー」制御を選択
「ブロックパレット」スタートになる緑の旗をドラック&ドロップで「スクリプトエリア」の先頭に持っていきます。


次に信号を入れるスイッチに今回は、小型のタクトスイッチを利用して押したときにON信号を入力するようにしましょう。
入力端子ををどこにするか決めましょう。これはRaspberrypiのIOインターフェースであるGPIOの端子を決め、その端子を信号入力に決めます。
「▼を送る」命令ブロックを「スクリプトエリア」にドラック&ドロップ
▼「新規/編集」をクリックします


メッセージの編集ができるので、GPIOの15番=pin番号で言うと10番を信号入力端子に決めますので
 Config10in 
と入力して「OK」

ここで注意、RaspberrypiのGPIO端子番号は1~26がばらばらに配置されています。
pin端子番号は1~40本のピン番号を上から順に数えていきます、ということはそれぞれに対応するGPIO番号とpin番号を間違うと電源端子に信号を入れたりすると壊れる可能性がありますので注意!



pin10を信号入力にした後に
こんどはLEDを点滅させる出力端子をpin16(GPIO23番)にしします。


pin10番端子に信号を検出するための条件を設定します、ここが最初はどないしてええのかちょっと難しいですね
「ずっと」「もし  なら、ずっと」をつないでいきます
そこへはめ込んでいきます

「カテゴリ」演算に変更して条件式をドラック&ドロップします


またまた「カテゴリ」調べるの中から「スライダー▼センサーの値」を入れ込みます、条件を合うように設定していきます
慣れてきましたか?


さあ、要領がわかってきましたね、どんどん進めていきましょう


こんな感じで良いとも!

動かすのは「ステージ」右上のスタートの旗、ストップの赤丸をクリックしてください。
今回はLEDを点滅させるので、ブレッドボードに回路を組んで確認してみましょう。


ゲーム感覚でプログラムができるスクラッチのすごさに感動しましたか。

ブレッドボードの配線は黒板を参考にしてください
スクラッチでの信号入力はプルダウン抵抗を入れますのでご注意ください

参考:GPIO端子表へ





かんたんなpython3体験教材

RaspberryPi3で 2時間程度の実習課題をお試しください  
1、プログラム言語python3 を利用してみよう


2、SCRATCHから体験するほうが体験者からは好評でした


pythonでLEDの点滅プログラムから初めよう
その1、以下のプログラムを入力します

入力方法はスクロールして順に行ってください




入力方法

左上のスタート→ 「プログラミング」 ⇒ 「Python3」

又はスタート 「アクセサリ」→「LXTerminal」起動画面で次を入力  sudo idle & [Enter]
idle起動画面のメニューから「File」→「New File」ここにプログラムを入力します



Python Shell 画面が開きますのでプログラミングする新しい画面をさらに開きます
File ⇒ New File 
そうすると右側に真っ白の新規画面が開きます。

新規作成、ここにプログラムを書いていきます。
すでに作成済みの場合や編集する場合は File ⇒ Open 目的のファイルを選びます



プログラムの動作を確認するときは
まず Save As 名前をつけて保存します。
ファイル名.py  拡張子は必ず.py

それではプログラムを実行する前に配線をしましょう
直接 RaspberryPi3 にジャンパ接続せずに ブレッドボード へ取り出しから工作しています。
接続間違いが少なく助かっています。

参考:GPIO端子表







GPIO25からLED点滅回路と、タクトスイッチ入力でLED点灯回路の例です、参考に!



Run ⇒ Run Module
エラーが出たらプログラムを点検して直します

訂正して Run ⇒ Run Module
を行うと上書きを自動で行います


最初はエラーで悩まされます。
4文字の字下げ、空白の入れ方間違いが多いですね、C言語では(かっこ)で区切るので空白の文字数はプログラムを見てわかりやすいようにずらせば良かったのに、空白は何らエラーには関係がありませんが。ただし//日本語コメント記入後に気付かず、全角の空白スペースがプログラムに挿入してしまうことがあり悩まされますが。
Pythonでは(かっこ)を省略でき、とても見やすいプログラムになる代わりに、「4文字下げ」を見ているために起こるエラーです。



何はともあれ、うまく動作したらプログラムファイルは宝物です最初からわかりやすい名前を付けて保存しましょう。
プログラム内にもコメントを沢山入れておくと後で思い出すのに便利です。
ほんとに忘れやすいのは人の常。



赤い矢印部、動作完了、またはプログラムの停止は 「Ctrl」 + C  同時に押します
実行中のプログラムが停止します
プログラムによれば停止時のブレイク処理を書いていない場合はエラーがでるのでプログラムを修正します、また動作の途中で停止します。

上記はサーボを動かしました、動作試験がうまくいけば上書き保存します
File ⇒ Save As 
ファイル名.py 拡張子は必ず .py を付けて保存すること、しつこいですがうっかりミスには注意!

 

参考、IOインターフェースピン対応図

今回のプログラムはGPIO番号でプログラムが書かれていますのでPIN番号と勘違いしてジャンパすると危険です。
特に入力信号を入れる場合は電源がそのまま端子に入ると壊れることがありますので再注意


その2 プログラム停止時にリセット処理を入れました

一部追加訂正して入力後実行してみよう
どこが違うかな


スイッチ操作でLED制御

タクトスイッチを追加して入力信号を与えてLEDに反応を返しています
応用範囲の広いプログラム例です


課題(タクトスイッチ動作で)

1、LEDを4個すべてを点滅せよ GPIO18 GPIO23 GPIO24 GPIO25 GPIOの出力に注意
2、2個のタクトスイッチ操作でLEDを色々なパターンで点滅させよ



SCRATCH

次はスクラッチを起動して上記課題を作成せよ 注意:GPIOの番号でなくPIN番号で組立表示する点に注意

次ページへ



2018年1月16日火曜日

WebIOPIの設定



ダウンロードページから進みましょう
http://webiopi.trouch.com/DOWNLOADS.html
上のように現在の最新版が 0.7.1 でしたRaspberryの Download フォルダにダウンロードできますの解凍してインストールします

現在はどこにいるでしょうか確認して
pwd
/home/pi

ダウンロードしたフォルダに移動して解凍します
cd Downloads
tar xvzf WebIOPi-0.7.1.tar.gz

解凍したフォルダに移動してインストールし、パッチを当てます、少し時間が掛かります

cd WebIOPi-0.7.1
wget https://raw.githubusercontent.com/neuralassembly/raspi2/master/webiopi-pi2bplus.patch
    注意:wgetk ~ .patch 上の行が改行して表示している場合は一行ですよ
patch -p1 -i webiopi-pi2bplus.patch
sudo ./setup.sh

インターネット経由で接続しますか?と聞いてきますが今回はnでインストール終了します
Do you want to access WebIOPi over Internet ? [y/n]
n

下図はフォルダ内のダウンロードファイルを解凍したところです



さらに移動して入れます
cd /etc/systemd/system/

sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service

よっしゃ、毎回起動させるのは大変なのとリモートする場合は自動起動の有効化のコマンドを入れときましょう。 
無効化も参考に

自動起動の有効化
sudo systemctl enable webiopi
無効化
sudo systemctl disable webiopi

この後 /etc/webiopi/config 内の myscript = 起動するpythonプログラムリンク先を変更するたびにコマンド起動が必要になりますので以下も必要です

停止
sudo service webiopi stop
起動
sudo service webiopi start

実際にプロセス動作しているか試してみました
ps ax | grep webiopi
27901 pts/0    S+     0:00 grep --color=auto webiopi 
 
これ動作していませんので、停止、起動してみます

sudo service webiopi stop
sudo service webiopi start

ps ax | grep webiopi

27961 ?        Ssl    0:00 /usr/bin/python3 -m webiopi -l /var/log/webiopi -c /etc/webiopi/config
27968 pts/0    S+     0:00 grep --color=auto webiopi

うおーー動いてた

設定したラズベリーパイ本体から確認してみましょう。ブラウザから
「 http://localhost:8000/ 」にアクセスします

同じLAN内の他のPCからアクセスする場合は、ラズベリーパイのIPアドレスをifconfigコマンドで確認してから
「http://(IPアドレス):8000/」にアクセスするのだ




初期のユーザー名は「webiopi
パスワードは「raspberry」となっています。
ログインすると以下の初期画面が表示されます

パスワードを削除する方法
/etc/webiopi/config
その中の「passwd-file = /etc/webiopi/passwd]
行の先頭に「#」を挿入してコメントアウトします

パスワード変更は
sudo webiopi-passwd   コマンドを実行して
ログイン名
パスワードを2回入力
変更できます




一番上の「GPIO Header」のリンクから以下の制御画面が表示されればOK
灰色の「IN」はGPIO端子の信号入力に設定されている状態を表します、クリックすると「OUT」出力信号端子に変更できます、出力信号端子にしたピン番号をクリックすると黒色番号はLOW出力、からオレンジ色HIGH出力に変更できます。

これ本当に便利です。
リモートで出力を簡単に制御可能です、面白くなってきました。 


それではオリジナルのプログラムをいれてPCやタブレットから動作試験をしてみます、ファイルをラズベリーパイへ転送して表示させるディレクトリが一般ユーザ権限では書き込めないので権限を書き換えます

sudo chown -R pi /usr/share/webiopi/htdocs

/usr/share/webiopi/htdocs ディレクトリ内にファイルを転送して動作試験をしてみます

動作試験ファイルを変更する方法

sudo vi /etc/webiopi/config
ファイル内のコメント行を変更します
#myscript = /home/pi/webiopi/examples/scripts/macros/script.py

python のプログラムへのリンクを記載する
例:script.py を起動させる場合
myscript = /usr/share/webiopi/htdocs/試験ファイル script.py

2018年1月10日水曜日

サーボをコントロールしてみよう

参考HPを記載しています
 WebIOPi によるサーボモータ制御

制御プログラムの作成 & htmlの作成

ここが重要
 https://raspi-wannabe.com/webiopi_servo/



http://raspibb.blogspot.jp/2015/01/pc.html



https://yuki-sato.com/wordpress/2014/08/13/raspberrypi%E3%81%A8%E3%82%B5%E3%83%BC%E3%83%9C%E3%83%A2%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%A7%E5%AE%B6%E3%81%AE%E3%83%89%E3%82%A2%E3%82%92iphone%E3%81%8B%E3%82%89%E9%96%8B%E3%81%91%E3%82%8B/



http://essence.cambrianrobotics.com/contents/Nodejs%E3%81%8B%E3%82%89%E3%82%B5%E3%83%BC%E3%83%9C%E3%83%A2%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99/15


http://iot-makers.webolha.com/2016/09/10/camera-servo/





スクラッチで始めるロボットプログラミング:サーボモーターでロボットアーム







https://raspi-wannabe.com/%E3%81%A7%E3%81%8D%E3%81%9F%E3%81%81%EF%BC%81-webiopi-%E3%81%AB%E3%82%88%E3%82%8B%E3%82%B5%E3%83%BC%E3%83%9C%E3%83%A2%E3%83%BC%E3%82%BF%E5%88%B6%E5%BE%A1/

https://raspi-wannabe.com/%E5%BE%8C%E3%82%82%E3%81%86%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%EF%BC%81-webiopi-%E3%81%AB%E3%82%88%E3%82%8B%E3%82%B5%E3%83%BC%E3%83%9C%E3%83%A2%E3%83%BC%E3%82%BF%E5%88%B6%E5%BE%A1/

https://raspi-wannabe.com/webiopi_servo/