Miho's Memory

組込みとアートとまぜまぜ

RasPi のプログラムを自動起動に!その2 systemd 編

RasPi Python 自動起動 第二弾!

今回は systemd を使います.

準備するもの:

・自動実行させたい Python プログラム(※1)
Pythonプログラムを実行する 単一プログラム  .shファイル(※2)
・/etc/systemd/system/xxx.service ファイル(※3)

※1
今回は print文 のみ記述したものを用意した.
でも,いっこ注意が必要! init や systemd から起動されたプログラムの場合,print の出力はコンソールではなく,ログファイルに記録されるようになっているので画面に出ないのだ.画面にだしたい場合は,Python のプログラムの方でコンソールを open したり,ごにょごにょ.

※2
systemd の ExecStart には引数などの指定はできなくないんだけど,トラブルの原因になるから,できるだけ単一プログラムが良い ^^*

※3
xxx のところは好きに変えて良いよ ^^

さあ,じゃあつくろう!

ちょっとまったぁー!
Python プログラムも単一プログラムもどこに作ろうとしてる?!

ここ /opt の下がいいよ!

なぜなら,Filesystem Hierarchy Standard(http://www.pathname.com/fhs/)で決まっているので,起動時にマウントされていることが保証されているからなんですって💛
ということで,システム固有のプログラムというかディストリビュータ以外のサードベンダープログラムは /opt の下に置くのがまぁ正しいのです ^^

ということで

pi@raspberrypi:~ $ sudo mkdir /opt/mybin

/opt の下に オリジナルな mybin ディレクトリを作りました.
そしてこの中に,自動実行させたい Pythonプログラムと,それを実行するための単一プログラムを作りましょう!

pi@raspberrypi:/opt/mybin $ cat Hello_RasPiGirl.py
print "Hi! RaspberryPi Girls. I'm Miho."

pi@raspberrypi:/opt/mybin $ cat autoRasPiGirl.sh
#!/bin/sh
/usr/bin/env python /opt/mybin/Hello_RasPiGirl.py

 

それぞれのファイルの実行属性を見てみましょう

pi@raspberrypi:/opt/mybin $ ls -al
-rw-r--r-- 1 root root 44 10月 29 23:49 Hello_RasPiGirl.py
-rw-r--r-- 1 root root 61 10月 29 23:52 autoRasPiGirl.sh

 

.sh ファイルには 実行属性を付けておきましょう

pi@raspberrypi:/opt/mybin $ sudo chmod 755 autoRasPiGirl.sh
pi@raspberrypi:/opt/mybin $ ls -al
-rw-r--r-- 1 root root 44 10月 29 23:49 Hello_RasPiGirl.py
-rwxr-xr-x 1 root root 61 10月 29 23:52 autoRasPiGirl.sh

 

ちな,.sh を実行すると,Hello_RasPiGirl.py が実行されます.
pi@raspberrypi:/opt/mybin $ sh autoRasPiGirl.sh
Hi! RaspberryPi Girls. I'm Miho.

 

準備は整ったので,いよいよ systemd を使って自動起動をやってみる!

pi@raspberrypi:/etc/systemd/system $ cat autoexecRasPiGirl.service
[Unit]
Description = AutoBootProgram_Test     ← お好きにどうぞ ^^#

[Service]
ExecStart=/opt/mybin/autoRasPiGirl.sh  ← 実行したいプログラムのフルパス
Restart=no
Type=simple

[Install]
WantedBy=multi-user.target

 

再読み込みをしておこう!
pi@raspberrypi:/etc/systemd/system $ sudo systemctl daemon-reload
特に何の音沙汰もない

続けて,起動時にサービスが自動で起動するように設定しましょう
pi@raspberrypi:/etc/systemd/system $ sudo systemctl enable autoexecRasPiGirl
Created symlink from /etc/systemd/system/multi-user.target.wants/autoexecRasPiGirl.service to /etc/systemd/system/autoexecRasPiGirl.service.

systemd を使ってサービスを起動させる
pi@raspberrypi:/etc/systemd/system $ sudo LANG=C systemctl start autoexecRasPiGirl.service
特に何の音沙汰もない

出力はログにでるので以下を実行して確認してみよう!pi@raspberrypi:/etc/systemd/system $ sudo LANG=C systemctl status -l autoexecRasPiGirl.service
* autoexecRasPiGirl.service - AutoBootProgram_Test
Loaded: loaded (/etc/systemd/system/autoexecRasPiGirl.service; enabled)
Active: inactive (dead) since Mon 2017-10-30 00:16:41 JST; 2min 12s ago
Process: 8662 ExecStart=/opt/mybin/autoRasPiGirl.sh (code=exited, status=0/SUCCESS)
Main PID: 8662 (code=exited, status=0/SUCCESS)

Oct 30 00:16:41 raspberrypi systemd[1]: Started AutoBootProgram_Test.
Oct 30 00:16:41 raspberrypi autoRasPiGirl.sh[8662]: Hi! RaspberryPi Girls. I'm Miho.

みえてるよ!!実行されてるよ!!
最後の行だよ!!^^#

では,RasPi を 再起動させてみましょう♪

f:id:MihoN:20171030002756p:plain
.bashrc のようにコンソールにはでてきません.
けど,ログファイルを見て!

f:id:MihoN:20171030003152p:plain
ちゃんと実行されてることが分かります ^^#

つぎは,コンソールに出力されるようにするにはどうするか,
そして,今回print文が書かれた .py の自動起動だったけど,無限ループの .py ならどうしたらいいのかを書いていきます ^^#

最後に,
自動起動をやめたい場合は

pi@raspberrypi:~ $ sudo systemctl disable autoexecRasPiGirl.service

で OK です.

これで自動実行 2個 制覇 ^^v

今回参考にさせていただいたのはお友達のこのサイトです!

qiita.com

もう少しこのサイトを参考にして試したいことがあるんだいっ ^^#

RasPi のプログラムを自動起動に!その1 .bashrc 編

最近また らぴろん(Rapiro ロボット)のからっぽのあたまんなかに,RasPi をいれて らぴろんの魂よみがえり!計画がすすんでる.

それやってると思うんだよね.
「このプログラム,パイ起動時に起動してくれると楽なんだけど」って.

いろんなところで目にする /etc/rc.local ← これちっとも動かなかった.
Raspbian のバージョンの違いかな.

今回ためした Pi3 のOSのバージョンなんだっけw
uname -a コマンド で Kernel Version を
cat /etc/issue コマンドで raspbian の Version をみてみた.


pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.4.50-v7+ #970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l GNU/Linux
pi@raspberrypi:~ $ cat /etc/issue
Raspbian GNU/Linux 8 \n \l


ただ,本当にやりたいのは Pi2 の 2017-4-10-raspbian-jessie 環境での 特定プログラム の自動起動.これはあとで試してみよう.
とりあえず,メモとして,Pi3 で動いた自動起動のときの記録を残しとこ ^^

まず,
Python のパスを確認しよう!

 pi@raspberrypi:~/Mi $ which python
/usr/bin/python

補足
もちろんこんなのもあり
pi@raspberrypi:~ $ which ls
/bin/ls
ls コマンドは /bin にあることがわかる.
ということは,lsコマンドをフルパスで書いて実行すると,こう.
pi@raspberrypi:~/Mi $ /bin/ls
MyCam Orphe PianoHAT RasPi-Girl.py TTS misound

つぎに,
自動起動用のサンプルPythonプログラム(RasPi-Girl.py)を用意しよう!
中は 単純に print文 ^^

pi@raspberrypi:~/Mi $ cat RasPi-Girl.py
print "RaspberryPi Girls Hello"

ホームディレクトリにもどりましょ

pi@raspberrypi:~/Mi $ cd ~
pi@raspberrypi:~ $ pwd
/home/pi

cd の うしろのは ニョロ/チルダ ね ^^

ホームディレクトリには .bashrc があるよね?

pi@raspberrypi:~ $ pwd
/home/pi
pi@raspberrypi:~ $ ls -al .bashrc
-rw-r--r-- 1 pi pi 3580 10月 17 00:06 .bashrc

.bashrc ファイルを ごにょごにょ します

pi@raspberrypi:~ $ vi .bashrc

一番最後の行に一行追加します

/usr/bin/python /home/pi/Mi/RasPi-Girl.py

RasPi を再起動してみましょう♬
Last login: Sat Oct 28 21:05:01 2017
RaspberryPi Girls Hello
pi@raspberrypi:~ $

RaspberryPi Girls Hello の文字でてきてる!^^#

ということで成功です ^^#

今回,TeraTermSSH でつないだから CUI 画面なので,

RaspberryPi Girls Hello

の文字すぐ見えてきたけど,RasPi をモニタにつないで,モニタ見てる人は GUI がめんたちあがっちゃうからわかりにくいかも.
でもそんなときは,CUI 画面で起動に変えられるから,変えてみて ^^*
手順は今から書くね ^^

RasPi を CUI 起動にする(そして自動起動も確認する ^^

RasPi の電源をいれ,今ソース画面から

pi@raspberrypi:~ $ sudo raspi-config

して,RasPi の設定画面を起動します.

Boot Options を選びます ^^

f:id:MihoN:20171029094825p:plain

B1 Desktop / CL1 を選びます ^^

f:id:MihoN:20171029094912p:plain

B2 Console Autologin Text console, automatically logged in as 'pi' user を選びます ^^

f:id:MihoN:20171029095022p:plain

Finish して,reboot を言ってくるので reboot します ^^

f:id:MihoN:20171029095132p:plain

f:id:MihoN:20171029095205p:plain

RasPi を モニタにつないでても,CUI 画面で起動してきて,
ほら「RaspberryPi Girls Hello」が見えたよ ^^#

f:id:MihoN:20171029095634j:plain


あとは,今回のように実行してプログラムがすぐ終わるものはいいけど,無限ループのようなものを自動実行させたときはもう少し考えないといけないかな...

とりあえず,今回は記憶を記録に ^^#

RasPiを簡単にネットにつないじゃお♡

RasPi,おうちにいるときは有線で家のルータにつないでとか,無線でつないでとか,そんな感じで,まぁ簡単にネットにつないで,SSHもおんなじネットワークだし簡単に接続できて,わーい(*´▽`*) だろうけど,一歩外にでたら,そんなことはねぇ.
いろんな見えない敵が邪魔してうまくつなげられないときがある.そんなとき,これを知ってらとっても便利!ってのを教えてあげる ^^#

RasPi を簡単にネットにつなげられて,SSHもなんのその~!

今回はそこに至るまでの手順をいちから書いていきます.
なので,「そこは設定済みだよ」ってところは飛ばしてね.
そして,今回は,Raspbian はインストールしておいてね

◆ 用意するもの

- RaspberryPi2 ModelB(今回はたまたまこれを使っただけ)
- 電源(Pi2 は 2A のアダプタがいいと聞く)
- LANケーブル
- USB LANアダプタ(ノートPCに有線LANの口がないから)

◆ Raspbiian インストールがおわったらやること

- SSH を有効にします
- 固定IPアドレスをふります

では,まず SSH を有効にしましょう.
むかしは何にもしなくてもよかったのに,いつかしらからか SSH はデフォルト無効になっています.
Raspbian の GUI 画面からの設定画面の中から操作可能ですが,今回は CUI での環境の画面を付けときます.

f:id:MihoN:20170817205227p:plain

f:id:MihoN:20170817205240p:plain

「Interfacing Options」を選んで「Select」

f:id:MihoN:20170817205302p:plain

SSH」を選んで「Select」

f:id:MihoN:20170817205409p:plain

「enabled?」って聞かれるので「はい」
再起動を言ってきたら再起動しましょう♪

これで SSH の設定はおわり ^^

次は,固定IPアドレスを振ります.

まったぁ~!!昔は,

/etc/network  の下の  interfaces ファイルに書き書きしたらよかったけど,最近の新しい環境の Raspbian ではそれでは固定IPアドレスはふれませんw

ついでに自分の RasPi の環境を見ておきましょう♪

uname -a  コマンドが「Kernel Version」を知るコマンド.
cat /etc/issue  コマンドが「raspbian(RaspberryPi)のバージョン」を知るコマンドです.

ちな,その時のわたし

f:id:MihoN:20170817210204p:plain

この環境も,interfaces ファイルへの 書き書きでは 固定IP設定むりw でした.

で最近はこう.

/etc/dhcpcd.conf  に書き書きします.
そしてその時に  IPアドレスは  

192.168.137.2  

にしておくのが今日のポイントです ^^#
なぜならあとで ノートPC でちょこっと設定するんですが,その時ノートPCは自動的に 192.168.137.1 になるんです.
SSH するんだし,同じネットワークがいいでしょ(^^♪

では,/etc/dhcpcd.conf  に書き書きしましょう♪

f:id:MihoN:20170817211137p:plain

「interface eth0」は,有線LANってこと.
「ip_address = 」は,RasPi のための 固定IP アドレス
「routers = 」は,デフォルトゲートウェイ のアドレス
「domain_name_servers = 」は,DNSサーバのアドレス.ゲートウェイと同じでOK.
「domain_search = 」よくわかんないから コメントアウト (笑)

っていうか,この設定まねっこでだいじょうぶ ^^*

そして,dhcdcd.conf の設定を有効にするために

f:id:MihoN:20170817211857p:plain

そしたら

dhcpcd[1334]: sending signal HUP to pid 449

って出てきたらOK!

せっかくなので ifconfig コマンドも実行して IPアドレス ふれてること確認してみてね ^^*

と,ここまでが RasPi 側の設定です.

次はノートパソコンを用意します!
WiFi しかついてないノートパソコンには,RasPi との接続のために必ず「Ether アダプター(USB LANアダプター)」をつけてね.
こんな感じ.

f:id:MihoN:20170817213122j:plain

そして「ネットワーク接続」の画面を開きます.

f:id:MihoN:20170817213828p:plain

ちゃんと Ether みえてます(わたし USB2.0 の LANアダプタ).
そして見えている WiFi アイコンを右クリック「プロパティ」画面を開きます.
そして,「共有」タブを選びます.
さらに,「ネットワークのほかのユーザに***」ってとこに Check いれます!

f:id:MihoN:20170817214006p:plain

設定はこれでおわりです ^^*
では,RasPi の LAN の 口にケーブルを ぷすっ♪
USB LAN アダプタを介して,PC と LANケーブルでつなげましょう(^^♪

f:id:MihoN:20170817214417j:plain

では,RasPi の電源も入れ,ノートPCから SSH できることを確認しましょう!

f:id:MihoN:20170817214851p:plain

f:id:MihoN:20170817214911p:plain

大成功 ( ๑❛ᴗ❛๑)۶♡٩(๑❛ᴗ❛๑ )

ネットにつながるかやってみよう♪
ping www.yahoo.co.jp

でつながってること確認できるハズ ^^
もちろん,外で テザリング でも大丈夫だよ ^^#

これは なかなか便利だと思うのでまた是非やってみてね ^^#

おわり

あっちむいてほいっ♪
~勝ったらミサイルぶち込め編~
           ミサイル発射台 が Dragon に!

2016年12月にも ミサイル 飛ばしたw
その時の ミサイル発射台 は RasPi !
今回,とっても強そうな Dragon Board 410C がおうちにやってきたので,RasPi から Dragon に変えてみることにしたの.
強そうな,この Dragon 実はちょっとした弱点?があったんです...
それは...
Doragon の GPIO(I2Cとかも?)1.8v なんですw
そう,ギアボックスつなぐだけではミサイル飛ばへんやんw

ちなみに あっちむいてほいっ♪ の部分は,2016年12月の記事で紹介してますのでそちらをご覧ください ^^#

なので今回はここからー

f:id:MihoN:20170721224405p:plain

あそび相手の らぴろん かんせ~♡
けど...

f:id:MihoN:20170721224456p:plain

そうだ!

f:id:MihoN:20170721224512g:plain

わたし,すっごい強そうなモノもってるやん(^^♪

f:id:MihoN:20170721225029g:plain

でもこの Doragon GPIO 1.8v ... どうやってミサイル飛ばそう...
そうだ!

f:id:MihoN:20170721225153g:plain

今回の ミサイルぶち込む 秘密はこちら!

f:id:MihoN:20170721225258p:plain

そして ぶち込む様子はこちら!


あっちむいてほいっ TOPPERS on PSoC & DragonBoard

最後に,今回 DoragonPython で GPIO アクセスするための環境を作るのにとっても参考になったサイトを記載します ^^# ありがとうございました!

uepon.hatenadiary.com

やっぱり らぴろん は可愛いなぁ ^^#
今日も読んでくれてありがとう!

はじめての F (⋈◍>◡<◍)。✧♡ ~ ソフトウェア編 ~

はじめての F (⋈◍>◡<◍)。✧♡
        ~ ソフトウェア編 ~

さ.

ここからは,『はじめての F (⋈◍>◡<◍)。✧♡ ~ ハードウェア編 ~』で作った基板を用いて,FRAM のデバイスIDを読みだしてみましょう(^^♪

サンプルプログラムやライブラリは Toyomasa Watarai さんが作られものを使います(^^♪

そして今回は mbed 環境で行っていくので,皆さん mbed へのユーザ登録は済ませておいてくださいね ^^

Watarai さんのプログラムたちはここ↓↓にいます.

https://developer.mbed.org/users/MACRUM/activity/

じゃまずは SPI から ^^#

Fujitsu SPI FRAM MB85RSxx を探して ↓↓ クリック ^^#

https://developer.mbed.org/components/Fujitsu-SPI-FRAM-MB85RSxx/

すると 下のような画面に飛びます(びゅん

f:id:MihoN:20170505112318p:plain

ここでは『Hello World』と『Library』の2つが見えてきます.
今回は『Hello World』のほうを選びましょう.


すると 下のような画面に飛びます(びゅん

f:id:MihoN:20170505112310p:plain

Home タブを見ると,

- MB85RSxx_SPI.lib
- main.cpp
- mbed.bld

main.cpp が 見えます.main を書いてくれてそう(^^♪
これはらくちんです ^^# そのまんま 自分のとこにもってきたら動きそう♬ 

Web 画面の 右上のこんな オレンジのボタン を見つけたらクリック!

f:id:MihoN:20170505112701p:plain

すると mbed Compiler Workspace Management につながり
下のような画面がでてきます.

f:id:MihoN:20170505112952p:plain

main.cpp ファイルはすでに用意してくれてるので,Program  を Import  で大丈夫!
Import Name などは自分がわかりやすいものに変更してネ ^^

自分のところにもってこれましたか? ^^# こんな感じ.

f:id:MihoN:20170505114025p:plain

プログラムワークスペース に import してきたプログラムが確認できます.
画面の右上では 現在のターゲットボード が確認できます.

続けてコンパイルしちゃいましょ.画面上の『コンパイル』ボタンを ぽちっとな(^^♪

f:id:MihoN:20170505114010p:plain

Success! という表示が見え,〇×△.bin というファイルが ダウンロードされたら おっけー (^_-)-☆

いよいよ実行してみましょう(^^♪ ハードウェア編で作成した基板に刺した,LPC1768 の miniUSB のポートと,パソコンの USB ポートをケーブルで接続します.
すると,大容量デバイス として mbed 見えてきましたか? ^^# 

f:id:MihoN:20170505115532p:plain

サンプルプログラムは FRAM の デバイスID がターミナルに吐き出されるプログラムです.なのでターミナルソフトを用意して!わたしはいつも TeraTerm ^^#

そしたら,デバイスマネージャで COM ポート を確認して!

あれっ?!COMポート で見えてこない...

そーなんです!これだけでは ダメ なんです!

Windows serial configuration をインストー

します! ここ ↓↓

https://developer.mbed.org/handbook/Windows-serial-configuration

windows10 でも問題なくインストールできます!

f:id:MihoN:20170501140020p:plain
でも

注意が ひとつ!!

基板とパソコンが繋がれた状態で Windows serial configuration をインストールしてください!そうじゃないとドライバーがインストールされません!!

そうするとどうでしょう!COMポート 見えてきましたか? ^^#

f:id:MihoN:20170501131726p:plain

そしたら,TeraTerm を起動します.

f:id:MihoN:20170501135517p:plain

さっき確認した シリアルポート になっていることを確認してね.
そして OK !

f:id:MihoN:20170501135602p:plain

ボー・レート を 115200 に設定!

f:id:MihoN:20170501135701p:plain

改行コードの 受信 を AUTO にします!

LPC1768 の 真ん中のおへそ(リセットボタン)をおして見てね!

f:id:MihoN:20170501135856p:plain

どう?デバイスID や メモリの中身 見えてきたかな?^^#

ひとまずこれで完成です ^^#

I2C も同様にやってみてね! ^^#

Fujitsu I2C FRAM MB85RCxx

https://developer.mbed.org/components/Fujitsu-I2C-FRAM-MB85RCxx/

 

でわでわ ここで ソフトウェア編 おわりー ^^#

読んでくれてありがとう(^^♪ 

 

はじめての F (⋈◍>◡<◍)。✧♡ ~ ハードウェア編 ~

はじめての F (⋈◍>◡<◍)。✧♡
        ~ ハードウェア編 ~

F ?

エフ? F が付くものって...

日本人なら,まず Fuji !Mt. Fuji !
ほかには??
FUJIYAMA ! ...  富士急ハイランドの絶叫マシンね.
Fukuya ! ... あー明太子やさんね...

F と言えば,FRAM!
今回は FRAM mbed 環境で使ってみましょう (^^♪ 
の まずはハードウェア編.

今回は,FRAM を mbed マイコンに繋げる基板から作ってみましょう♪

f:id:MihoN:20170426204608j:plain

■ 用意するものっ

・mbed NXP LPC1768
・ピンソケット(メス)20P 2個:mbed 抜き差しできる用
・両面スルーホール・ガラス・ユニバーサル基板 Bタイプ
    http://akizukidenshi.com/catalog/g/gP-03232/
・SOP8 DIP 変換基板 金フラッシュ(9枚入り)
    http://akizukidenshi.com/catalog/g/gP-05154/
・丸ピンICソケット(8P)
    http://akizukidenshi.com/catalog/g/gP-00035/
・連結ソケット(両端オスピン)8P 
    http://akizukidenshi.com/catalog/g/gP-00264/
・FRAM(SPI,I2C)
・ハンダメッキ線(電源周りの配線に使用)or 部品の足 ^^
・ジュンフロン線(0.12mm) or UEW線
・電源用パスコンコンデンサ 0.1uF(RPER11H104K2K1A01B)2本
・抵抗 プルアップのため 2.2kΩ 2本

 

★ 写真も載せとこ (^_-)-☆

*ユニバーサル基板

f:id:MihoN:20170424233106j:plain

*SOP8 DIP 変換基板

f:id:MihoN:20170424233224j:plainf:id:MihoN:20170424233235j:plain

*丸ピンICソケット(8P)

      f:id:MihoN:20170424233358j:plain          f:id:MihoN:20170424233421j:plain

*連結ソケット(両端オスピン)8P

    f:id:MihoN:20170424233629j:plain   f:id:MihoN:20170424234557j:plain

*FRAM

f:id:MihoN:20170426211052p:plain

今回は
SPI インターフェースの MB85RS64V ,MB85RS2MT
I2C インターフェースの MB85RC256V ,MB85RC1MT 
を用意したよ ^^

ちょっとまったぁ~ FRAM ってなになに?

FRAM は Ferroelectric Access Memory のこと.電源を切ってもデータが消えない不揮発性メモリです.不揮発性メモリと言えば,EEPROM .そう EEPROM も不揮発性メモリ.でもこの子はデータの書き込みに少し時間がかかるんです.なので,瞬停時などは,この子がデータを書き終えるまでの時間を保障するために,キャパシタなどを用意しておきます.データも消去してから書くのも時間がかかる理由の一つ.
でも FRAM は ” 目にも止まらぬ早業 ”(なんかこんな歌あった で,データを書けちゃうんです(ns)^^*
データを書くスピードが速いメモリとして有名なのは SRAM ^^
でもこの子は電池がないと生きていけないんです...
そしてこの FRAM データ容量は 4Mb ! バイトじゃないんです.bit です.
4Mbit 単位は bit になります.ちっぽけw と思うかもしれませんが,それは使い方次第!
FRAM のデータ書換え回数はなんと 10兆回 !
10兆円と聞くとその大きさを誰でも感じる.そう,一生生きてられるんじゃね?というくらい限りなく無制限に近い書換え回数なんです.
GPS のログやレジューム機能の実現のため,電力系統が不安定な場所でのデータ保持などに使用されます.
あんまり長々話すのもなんなんで,FRAM を mbed 環境で動かしてみましょう (^^♪

まず,基板作りから!

いち.FRAM の場所と LPC1768 をザックぶっさす場所を作ってあげよう! 

FRAM の場所は,丸ピンICソケットになります ^^
SPI の場所と I2C の場所を作ります.
ソケットの向きに注意して!今回はうえっかわきを SPI に,したっかわきを I2C の場所にします.

LPC1768 用にはピンソケット(メス)20P を用意します.
わたしはおうちにあった,パキパキ折れるやつを使うことにしました.
でも折るときだいたいうまくいかないので,ここはひとつ思い切って 21番目 のピンをつぶしちゃいましょう♬

21番目をニッパで真っ二つw すると20番目は絶対きれいに残ります ^^v
ニッパでやるとき押さえておかないと,パキィーーーーン って飛んでいきます.
目に飛び込んでもまずいのでちゃんと押さえておきましょう ^^*

では,ユニバーサル基板にハンダします.
両面スルーホールのユニバーサル基板は,ハンダが吸い込まれるように下に流れます.
ついついやりすぎると表面に モリッ .気を付けて!
端っこを少しのハンダで仮止め.ソケットが斜めってたら,ハンダコテで溶かしながらまっすぐに整えます ^^

今回は SPI FRAM と I2C FRAM を LPC1768 に配線することをあらかじめ考えてて,下のような感じで,配置しました.

f:id:MihoN:20170426222759p:plain

に.配線していこう!
電源周りにはハンダメッキ線を.信号線には細めのジュンフロン線を使います.

f:id:MihoN:20170501135049p:plain

今回 FRAM を直接ユニバーサル基板にハンダはしてないよ ^^
SOP8 DIP 変換基板をつかってます.
この変換基板よくできてる!FRAM は横向いてるけど,基板の配線で一番ピンが図でいう右下になるようになってるのね ^^

f:id:MihoN:20170501111911p:plain

これでハードウェア編はおわり~ 次はいよいよ FRAM のデバイスIDをmbed環境で読みだしてみよう(^^♪

サンプルプログラムやライブラリは Toyomasa Watarai さんが作られたものをそのまんま使っちゃいます!!

使い方は,ソフトウェア編 にて ^^#

そうだっ.連結ソケットの飛び出してるピンは パチンパチン と切っておきましょう.
なんかの拍子にひん曲がって,ショートなんてしちゃったら大変だよん ^^*

 

 

 

 

 

 

 

Part of Miho's Memory

こないだひっさしぶりにフラワーアレンジメントした ^^*

気分よくなったので,せっかくだから今までの想い出の一部をここに綴ろう ^^#

★ 組み込みマイコン技術科の新規立ち上げ
           ~ 全国のカリキュラムモデルに! ~

『くみこみ』って漢字で書くと『組込み』『組み込み』『組込』がある.
みんなはどれが好きですか?
わたしは『組み込み』がすき ^^#
だって,ハードウェアにソフトウェアという魂が ”入り込み”
そして ”組み込まれた” ものが組み込み製品でしょ ^^
『組み』と『込む』が感じられる『組み込み』って漢字がわたしはすき ^^*
そして『組み込みマイコン技術科』を立ち上げた.

当時は ガラケー が主流.マイナスドライバー1本で分解して,
パワーポイントの機能だけを使って,学科説明用の案内チラシ創ったなぁ(笑)

f:id:MihoN:20170424213133p:plain

いろんなところで講演や授業やらせてもらったなぁ ^^#

★ Interface誌 執筆

2007年10月 Interface誌共同執筆 いい経験させてもらったぁ💛

f:id:MihoN:20170424221517j:plain

★ 小4の男の子とLED信号について勉強した ^^#

信号機も車のテールランプも家の中にもLEDがやってきた.
小4の男の子が『LED信号』と言ったもんだから一緒に勉強した(笑)
その時創った工作がこれ ↓↓

f:id:MihoN:20170424213839j:plain

電球の信号機は夕方になるとどれが着いてるのかわかりにくくなる(疑似点灯).
けどLED信号機だとはっきりするね!
長持ちだしいいことも(^^♪
でも,電気交換のお仕事や,発熱の違いで雪国での信号機の上の雪が溶けにくいとか
LEDでちょっと悪くなることもあったね.

★ 小5の男の子が大好きな電車の遮断機を創ってみた ^^#

使ったものは,LEGOブロック,電池ボックス,ブザーと少々の電子部品.
マルチバイブレーターの回路を作ったね ^^
マブチモーターにつなぐ電池の + と - をつなぎ変えると反対に回ったね ^^
マブチモーターの回転が速いから,ギヤかまして回転を調整したね ^^
回路の中にブザー挟むと,なんだか遮断機が下りるときの音みたいに聴こえたね ^^

f:id:MihoN:20170424214504j:plain

市の 科学展覧会 出展に推薦されたね!

★ 小6の男の子が大好きな走る電車を創ってみた ^^#

LEGO MINDSTORMS と LEGO 電車を使って,電車が近づくと遮断機が下りたり,
電車が通り過ぎると遮断機が上がるっての創ったね ^^*
プログラミングも初めてしたし,いろんなセンサー使ったね ^^

f:id:MihoN:20170424214940j:plain    f:id:MihoN:20170424215008j:plain

f:id:MihoN:20170424215125j:plain     

f:id:MihoN:20170424215154j:plain     f:id:MihoN:20170424215230j:plain

★ ET2013 ET Award 受賞!!

Ruby のモックも創ったね!はしっこにちょこんと...(笑)
Ruby絡みで講演,プレゼンテーター,2016年はまつもとゆきひろさんと壇上で向かい合って椅子に座って,まつもとさんへのインタビューアーもさせてもらったなぁ ^^#
めっちゃたのしかったなぁ ^^#

www.kumikomi.net

★ 母の日 & クリスマスリース の数々 ^^#

キティちゃん (⋈◍>◡<◍)。✧♡
カーネーションで創るんです.

f:id:MihoN:20170424215711j:plain

f:id:MihoN:20170424215730j:plain

f:id:MihoN:20170424215804j:plain

f:id:MihoN:20170424215822j:plain

f:id:MihoN:20170424215837j:plain

くまちゃん (⋈◍>◡<◍)。✧♡
これもカーネーションで創るんです.

f:id:MihoN:20170424215940j:plain

リース (⋈◍>◡<◍)。✧♡

LED は電子工作!リースの中に埋めたった(笑)

f:id:MihoN:20170424224003j:plain

★ ヴァイオリン製作 (⋈◍>◡<◍)。✧♡

大人の事情で今は製作ストップちう...

f:id:MihoN:20170424220700j:plain

VFD時計 ^^#

みよ!

f:id:MihoN:20170424220804j:plain

f:id:MihoN:20170424220818j:plain

★ Interface誌 これで2回目 ^^

ほんとは別特集に入る予定やったのに,担当者が...

f:id:MihoN:20170424221652j:plain

★ IoT ハッカソン2015(第1回)

らぴろんを着飾って,Azure につないで人と会話 (*^▽^*)
そして知りたい場所のお天気を教えてくれます!
あるじが留守の時,どろぼうが来ようものなら,ミサイルをぶっ放す!(笑)
こんときは RasPiB と RasPi 2 を使用.

f:id:MihoN:20170424221947j:plain

TOPPERSアプリケーションコンテスト優勝 (#^^#)

これはブログに書いてるからブログを見てね!
TOPPERSPSoC(Cyprss社)にポーティング.
Cypress は記事を PSoC Creator(開発環境)の TOP に
掲載してくれた (⋈◍>◡<◍)。✧♡
世界中のユーザに配信された (⋈◍>◡<◍)。✧♡

f:id:MihoN:20170424222549p:plain

ARM の blog にも載った ↓↓  (⋈◍>◡<◍)。✧♡
記事も英語 (⋈◍>◡<◍)。✧♡

community.arm.com

f:id:MihoN:20170424223011p:plain

 ★ すっげーかっこいい電子工作とお花の合体 (^^♪

f:id:MihoN:20170424223320j:plain

 f:id:MihoN:20170424223715j:plain

今は 2017年.これからはどんな想い出がたまるかな (*^▽^*)

 

人工知能を使ってみる ~Google API & docomo雑談会話 & Open JTalk~ よん

さん のつぎの よん(いちお 最後ということにする)

さてここからは

音声認識』『雑談会話』『音声合成

をしてみます ^^#

最初に言っておきます.いち で紹介した本をもとに
動かなかったとこメモ的にブログに残しているので
ここからは特に大まかなことしかかけません (><) 

音声認識

今回は Google Speech API を使います.

その前に何かとよく聞く

SaaS』『PaaS』『IaaS』ってのを自分メモで残しとくです ^^#

SaaS

Software as a Service の略 で サース.
必要な機能を必要な分だけサービスとして利用できるようにしたソフトウェア,
もしくはその提供形態のこと.一般的にはインターネット経由で必要な機能を利用する仕組み(Wikipedia より).
” データをインターネットに保存できる!”
” パソコン,スマホタブレットなど端末を選ばずデータにアクセスできる!”
” 風数の人が同一データを共有して,さらに編集もできちゃう!”
Google Apps や Salseforce はこのサービスに属する.

■ PaaS

Platform as a Service の略で パース とか パーズ.
ソフトウェアを構築および稼働させるための土台となるプラットフォームを,
インターネット経由のサービスとして提供する.
開発者は,プラットフォーム上で構築したサービスを自分の顧客に提供
することができる.具体的には,インフラ,DBMSユーザインタフェース
などのシステム開発手段となるツールや,開発したシステムを運用するための
環境をインターネットを通じて「サービス」として提供し,
月額使用料などの形で収入をえる事業モデル(Wikipedia より).
Google App EngineMicrosoft Azure はこのサービスに属する.

■ IaaS

Infrastructure as a Service の略で 呼び名はまだない.
どうもどう呼ぶかは定まってないようだ.そこで イアース にした ^^#
IaaS は,インターネットを利用したコンピュータの利用形態.
IaaS では,コンピュータシステムを構築および稼働させるための
基盤(仮想マシンやネットワークなどのインフラ)そのものを,
インターネット経由のサービスとして提供する.
IaaS はクラウドコンピューティングサービスの1種類(または1要素)
として SaaS や PaaS に並ぶものとされ,PaaS の発展系ともされる.
IaaS は当初は HaaS(Hardware as a Service)とも呼ばれていた.
ただし HaaS は単なるハードウェアリソース(ハードディスクなど)の,
インターネット経由のサービスとしての提供とされる場合もある
Wikipedia より).
Google Compute Engine や Amazon Elastic Compute Cloud(EC2)が
このサービスに属する.

じゃここから本題にもどろっと

1. google chrome dev group に加入し Google API キーを取得しよう(^^♪

Google Speech API を使うには Google API キーが必要で,
それを取得するためには,” google chrome dev group ” への加入が必要です.

これに関しては多くの方がネットで紹介もしてるから
それを参考にしちゃおう♪
本にも手順は丁寧に書かれてます ^^

Google Speech API の処理結果は JSON データフォーマット形式
で返されるんですね.
最初は『ん?』と思ったけど,比較的わかりやすい構造だ.

2. 音声ファイル(.flac)をクラウドにあげ,
        音声としてどう認識されたか確認する(^^♪

ここでは本のサンプルをそのまま使ってみるです.
音声ファイル(hello.flac)は とっても高音なロボットな感じの音声で,
『こんにちは』って言っています.
そのサンプルを実行すると...

f:id:MihoN:20170316212831p:plain

ぜんぜん『こんにちは』ちゃうよん...
なんど試してもダメ...

そこで考えたw

A. 自分の声でこんにちはの音声ファイルを作ってそれで実行しよう!
B. その辺にある .wav ファイル食わせられるかな.

よし A. でやってみよう!
そこで,こないだの ” あっちむいてほいっ♪ ” で使った
Audacity を使えば flac 音声を作れそうなのでそれを使って自分の声を
録音しよう!
としたら思い出した.この本のなかで,音声入力 の実行のとき,
RasPi のマイクに向かってしゃべって録音する(.flac
Python プログラムがあったぞと.
ということで,その Python プログラムを実行して,
自分の声の こんにちは を flac ファイルで用意した.
そしてプログラム内のファイル指定箇所を変更.んで,実行.

f:id:MihoN:20170316213853p:plain

わぁーい (⋈◍>◡<◍)。✧♡ こんどはちゃんと『こんにちは』になったよ!

ということで,本で用意されている『こんにちは』の .flac ではうまく動かないのは
なんでかよくわからんけど,Google Speech API がうまく認識してくれないみたいw

まあ,みほの声のほうが美しかったんだ ^^# そう思うことにした ♬

で,” B. の .wav ファイル食うかな ” は,やってないのでわからない(笑)

まぁ,言えることは,本もそうだけど,人の作ったプログラムなんかで
動かなくても,置き換えれるファイルがあったら置き換えてみたり,
ファイル名を変えてみたり,短くしてみたり,環境が違うと動かないことも
あるのでなんかやってみたら動くこともあるよん ^^*

” 雑談会話 ”

つぎは,こっちが何か話しかけたら,それにほぼほぼイケてる内容で
返事を返してくれる状況を作ってみよう♬

ここでは docomo 雑談会話 API を使います.

1. docomo Developer support サイトで新規登録してログインしよう

2. API 利用申請をして docomo API キーを取得します

詳しくは,ネットで紹介されているサイトや本を参考にしよう!

さてさて,本のサンプルは『こんにちは』と話しかけてる.
雑談 API からの返事は? ^^# わくわく

こんにちは!

f:id:MihoN:20170316233900p:plain

は,” はろー ” って返ってきた...
んじゃもう一回w

f:id:MihoN:20170316233949p:plain

” こんにちはです ” ?? あなたはどこの方ですか?(笑)
愛嬌があっておもしろい(笑)

音声合成

Open JTalk を日本語音声合成に使おう!

1. Open JTalk のインストールをやりましょう♬

    sudo apt-get install open-jtalk

2. 辞書ファイルをインストールしよう(^^♪

    sudo apt-get install open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001

音声入力単発テストは ” に ” でやった.
音声がテキストになり,そのテキストに対し対話するひとつひとつは
テストは,ここ ” さん ” でできた.
いよいよ合体させて流しましょう♬

音声認識 ” ” 雑談会話 ” ” 音声合成 ” をくみあわせましょう♬

本のサンプルを流します.
お腹が空いていたので『お腹すいた』と話しかけてみた.

こんな感じ(笑) 結果その いち

f:id:MihoN:20170318114952p:plain

『お腹すくのね?』と聞かれました(笑)
(お腹はすくんですよ...お腹がすくのは元気な証拠なのよ ^^;
   そういうあなたもお腹すいてるのね(笑))

なんかほのぼのします(笑)

何食べようか悩んでいたので『何食べよう』と話しかけてみた.

結果その に

f:id:MihoN:20170318115316p:plain

急になにか思い出されたようです(笑)
そうなんだ!それは知らなかったよ!教えてくれてありがとう 💛

突然話が方向転換するのは,わたしに似ているかもしれません(笑)
わたしにはわたしに似たロボットがつくのでしょうか(笑)

わたしはできた人なので,相手に合わせることにした.
『(池は防災もかねてるんだ!)安心だね!』と話しかけてみた.

結果その さん

f:id:MihoN:20170318115549p:plain

『安心は早い』とのことです.
そうだね!安心できることはいいよね.
どんなことも,なかなか安心できないより,早く安心できるのはうれしいね ^^#
見えない相手はきっとこういうことが言いたかったんだとおもうんです(笑)

相手の言いたかったことはこうだろうと,相手を思いやる気持ちが芽生えました ^^#

---  お腹すいたので パン をたべる お腹5分目 ---

みほは軽くたべた(まだ足りないけど(笑))ので,
見えない相手ともう一度話してみた ^^

みほ:『おなかすいた!』

再び会話 いち

f:id:MihoN:20170318120846p:plain

あいて:『みーとぅー』

きみは ハーフ ??わたし英語を勉強しなきゃだからあなたに会えてうれしいよ!

意外な対応がちょっとおどろき&面白かったので(笑)
『おもしろいね ^^』と返してみた.

再び会話 に

f:id:MihoN:20170318121049p:plain

『 w... 』

たまらんち(笑)

 

ということで,一通り ” 会話しあう ” を体験するのにはわかりやすくいい本だと思う ^^

次は Arduino Uno をつかって,てづくりの会話ロボを作ろう!です.
これはまだやってないし,内容によっては blog にはしないかもです.

昔やった Azure つかった,お天気つぶやきからの~お留守番ロボ を
もう一度やってみて blog に残しておきたいし...

いったんここで 一本締め ということにしときましょ.
読んでくれてありがとうございました (⋈◍>◡<◍)。✧♡