忘備録など

忘備録として

うさちゃんロボットを作る①('ω')ノ

彼氏がセリアでかわいいうさぎ型のタンブラーを見つけて買ってきてくれました('ω')ノ

 

でも使わんやろこれ、、どうやって使うんですかね?

いらないので動かしていきたいと思います('ω')ノボディは別の容器を使います('ω')ノ

f:id:riderid:20210712124452j:plain

左がうさぎさんタンブラー

 

目の所に穴をあけてLEDを埋め込むことにします('ω')ノ

f:id:riderid:20210712124623j:plain

f:id:riderid:20210712124653j:plain

 

前回の記事を使って、人感センサでLEDを光らせていきます('ω')ノ

あと、目が光るのと同時に首が回るようにもしたいと思います('ω')ノ

riderid.hatenablog.com

 

サーボを取り付けていきます。蓋に穴をあけて、ホーンを取り付けます

こんな感じでサーボを付けます('ω')ノ

 

f:id:riderid:20210712124930j:plain

 

プラスチックコップとスーパーカップの蓋を組み合わせて土台にして、ボディの容器の中に入れます('ω')ノ

f:id:riderid:20210712124956j:plain

 

サーボを動かすプログラムはこんな感じです

丁寧に書くと見やすいかと思ったけどそうでも無いですね

0°→60°→0°とスッキリ書いた方がよかった

f:id:riderid:20210712125203j:plainf:id:riderid:20210712125313j:plain

#include<Servo.h> でサーボを使う準備をします

#define H_SERVO 3 で3ピンを信号ピンにします

そのあとは0‐60°まで少しずつ首を回していきます('ω')ノ

 

これを前回の人感センサでLEDが光るプログラムと組み合わせます

プログラムはこんな感じです('ω')ノ

f:id:riderid:20210712213032j:plain

 

f:id:riderid:20210712125749g:plain

センサに手を近づけるとくるくる~~&ぴかぴか~~

ここまでできました('ω')ノでもブレッドボードにLEDをつけたままじゃ目の所にLEDをはめられません。。

ということでユニバーサル基盤にはんだ付けします('ω')ノ

続きは次回('ω')ノでは('ω')ノ

riderid.hatenablog.com

  

Arduino UNOで人感センサを使ってみる('ω')ノ

今日は人感センサを使ってみたいと思います('ω')ノ

使用するのはこれ

f:id:riderid:20210711145827j:plain

 
人感センサは赤外線で、人の動きを感知するセンサーです('ω')ノ
このセンサーが動いているかをLEDを使って確認します
 
このように電源、信号、GNDの3つのピンがあります

f:id:riderid:20210711150816j:plain

 これをこのように接続します

電源は5V、信号は2ピンにしています('ω')ノ

f:id:riderid:20210711151004j:plain

 

LEDも同様につなぎます('ω')ノ信号は7ピンです('ω')ノ

f:id:riderid:20210711151112j:plain

 

プログラムを書いていきます('ω')ノ

f:id:riderid:20210711151210j:plain

pinMode(sensorPin, INPUT) でセンサーから信号を受け取ります

pinMode(ledPin, OUTPUT) でLEDへ信号を送ります

loop()ではdigitalRead(sensorPin)で信号を読み取ります

if文を使い、読み取れればdigitalWrite(ledPin, HIGH)でLEDを光らせます

 

実行すると。。。

f:id:riderid:20210711151647g:plain

手を近づけるとピカ~~~~!!!!

やったー!できました('ω')ノ

ArduinoとラズパイをI2C通信でつなぐ('ω')ノ

今日はArduinoとラズパイをつないでみたいと思います('ω')ノ

 

実はMyoWare(筋電センサ)が届いたのですが、ラズパイにはAD変換器がついてないのでそのままでは使えないのです。

f:id:riderid:20210710002210j:plain

 

ということで、AD変換器がついているArduinoにMyoWareをつけて、ラズパイの方にデータを送るという方法で筋電データを取りたいと思います('ω')ノ

 

今日はそのラズパイとArduinoをつなぐところまでやっていきます('ω')ノ

USBでつなぐ方法もありますが、ここではI2Cシリアル通信をしてみます

I2CはInter-Integrated Circuitの略で、通信プロトコルの一種です

シリアルデータ(SDA)とシリアルクロック(SCL)の2本の通信線を用います('ω')ノ

 

シリアルデータ:Arduino[A4] ラズパイ[GPIO2]

シリアルクロック:Arduino[A5] ラズパイ[GPIO3]

それとGND同士をつなぎます('ω')ノ

f:id:riderid:20210710003029j:plain

 

I2Cの接続のためにまずArduinoにプログラムを書き込みます('ω')ノ

f:id:riderid:20210710003513j:plain

Arduinoには ic2用のライブラリがあるので#include<Wire.h>を書いて使用します

Wire.begin(アドレス)…7ビットのスレーブアドレスを指定。無ければマスターとしてバスに参加する

Wire.onReceive(関数名)…スレーブデバイスがマスターからの送信を受信したときに呼び出される関数を登録する。ここでのスレーブデバイスArduino、マスターはラズパイです('ω')ノ

ここでは信号を受け取ったらreceive関数へ飛ぶようにしています

receiveではWire.read()で受信したバイトを読み取ります

’A’を受け取るとled関数が呼び出されて、ledが光ります('ω')ノ

f:id:riderid:20210710003549j:plain

 

次にラズパイのほうにいきます('ω')ノ

設定(Preferences)からラズパイの設定を押します

f:id:riderid:20210710004834j:plain

 

インターフェイスからI2Cを有効にします('ω')ノ

f:id:riderid:20210710005129j:plain

 

Arduinoときちんと接続できているかを確認します

i2cdetect -y 1 とコマンドを入力します

f:id:riderid:20210710005210j:plain

 

これで設定したアドレスが表示されていたらOKです('ω')ノ

0x8がちゃんと表示されてます

f:id:riderid:20210710005501j:plain

 

ラズパイのプログラムです

f:id:riderid:20210710005629j:plain

smbus(システム管理バス)モジュールをインポートします

bus = smbus.SMBus(1) で引数に1を指定する。

input()で文字を入力させる

もしsakusakuと入力させると、bus.write_byte(0x8, ord('A'))で1バイト’A’を送信します

※write_byte(int addr, char val)

※ord()メソッドは文字をUnicode値に変更する

 

ということで、sakusakuを入力すると’A’が送信されて。。。

f:id:riderid:20210710011416j:plain

 

点灯しました('ω')ノやったー

f:id:riderid:20210710011504j:plain

 

ということでi2c通信ができました('ω')ノ

次回はセンサから値を読み取ってみたいと思います('ω')ノ

Arduino UNOでLチカしてみる('ω')ノ

Arduinoが届きました('ω')ノ初めて使う( 'ω')

まずはここから!ということでArduino UNOでLチカしてみます

環境はubuntuです('ω')ノ

f:id:riderid:20210708122331j:plain

 

プログラムはこちら

出力を2にして、highとlowで1000msごとにちかちかさせます('ω')ノ

ここら辺はラズパイと同じですね

f:id:riderid:20210709214043j:plain

 

シリアルポートは”/dev/ttyACM0(Arduino uno)”を選択('ω')ノ

f:id:riderid:20210709202857j:plain

 

✔押してコンパイル、→でマイコンに読み込み!しかしエラー。。

can't open device "/dev/ttyACM0" permission denied が出ました(´;ω;`)

このサイトを参考にコマンド入力('ω')ノ

www.blue-weblog.com

 

sudo usermod -a -G dialout [username]

→ユーザー変更を設定します

 -aオプション…-Gオプションで指定したグループをセカンダリーグループに追加する

 -Gオプション…セカンダリーグループの変更等

sudo chmod a+rw /dev/ttyACM0

パーミッション変更

 全ての対象に読み取りと書き込みの権限追加

f:id:riderid:20210709203720j:plain

 

成功('ω')ノ

f:id:riderid:20210709203913j:plain

 

f:id:riderid:20210709203957g:plain

ちかちか成功~

次はラズパイとつなげてみます('ω')ノ

ロボットハンド('ω')ノ

8月のTOEIC申し込みました。。悔しかったのでリベンジします(´;ω;`)

 

ロボットハンド('ω')ノとりあえずこんな感じ('ω')ノ

f:id:riderid:20210627062339j:plain

 

出力('ω')ノ

PLA弱すぎてすぐバキバキになっちゃう。。とりあえずマスキングテープで仮止めしました

f:id:riderid:20210627062437j:plain

 

動作確認('ω')ノちゃんと指が曲がったのでOK!

f:id:riderid:20210627063031g:plain

 

これから改良していきます('ω')ノ

【Linux】カーネルモジュール読み込みのためのコマンド('ω')ノ

忘備録として('ω')ノ

 

Linuxシステム上でハードウェアを認識させるなどの処理を行う場合、カーネルモジュールを読み込む必要があります('ω')ノ

 

lsmodコマンド…読み込まれているカーネルモジュールを一覧表示する

 

modinfo モジュール名…指定したカーネルモジュールの情報を表示する

 

insmod ファイル名カーネルモジュールを読み込み、有効にする

rmmod モジュール名カーネルモジュールを削除し、無効にする

※依存関係のあるモジュールがあった場合はロード、アンロード不可能

 

modprobe モジュール名…カーネルモジュールを読み込むもしくは削除する

           (-rオプションでモジュールを削除)

※依存関係のあるモジュールがあってもOK

 

f:id:riderid:20210622151916j:plain

 

 

ubuntuの導入方法('ω')ノ

新しいパソコンにubuntuを導入していきます('ω')ノ

ubuntuLinuxディストリビューションの一つで、初心者にも使いやすいOSです('ω')ノ

とりあえずインストールしていきます('ω')ノ

 

まずはubuntu japanese team のサイトからubuntuをPCにインストールします

https://www.ubuntulinux.jp/

f:id:riderid:20210616192340j:plain

 

わたしはダウンロードに数時間かかりました。。。(´;ω;`)

そのあと、Rufusをダウンロードします

https://rufus.ie/ja/

 

上書き可能なUSBを差し込みます('ω')ノ

f:id:riderid:20210616192649j:plain

 

バイスに選択したUSB、ブートにisoファイルを設定します

その後スタートボタンをクリックして書き込み開始('ω')ノ

f:id:riderid:20210616192629j:plain

 

書き込み終わったら取り外して、設定から更新とセキュリティ→回復→PCの起動をカスタマイズする→再起動

再起動するとオプションの選択が表示されるので、トラベルシューティングから詳細オプション→UFFI

起動のUSBをスペースで上位に動かし、終了

 

ubuntuきました('ω')ノ

 

ここからは画面の指示通りに進んでいきます('ω')ノ

f:id:riderid:20210616195526j:plain

 

できた!('ω')ノやったー!