Raspberry PiでPythonプログラムを自動的に起動させる.(autostart)

車載Raspberry Pi プログラムを作ったので.

いくつかやったが,この方法が唯一うまくいった.他は多分何かミスってるみたい.


参考サイトは以下です.



hendigi.karaage.xyz


5通りの方法が乗っていますが,そのうち「autostartを使う方法」というのを使いました.

まず,ターミナルで,

$ nano ~/.config/lxsession/LXDE-pi/autostart 

と打ちます.nanoの部分はお好きなテキストエディタで.

 


@から始まる文がいくつか出てくるかと思います.自分の場合は,

@lxpanel --profile LXDE-pi

@pcmanfm --desktop --profile LXDE-pi

@xscreensaver -no-splash

となっていました.これに,プログラムの実行コマンドの先頭に@をつけて追記します.

@python /home/pi/hogehoge.py

という感じで.

自分の場合はapt-getでインストールしたopenCVだったため,(記事執筆時点では)python3ではなく,python2を使う必要がありました.

そのため自分は

@python2 /home/pi/DevelopPi/Python/OpenCV/cvsignal.py

となりました.

/home〜のディレクトリは自分の環境に合わせればいいです.DevelopPiから先は自分で作った適当なフォルダです.

入力が終わったら,nanoの場合,Ctrl+O(保存),Enter,Ctrl+X(終了)とすると,元のコマンド待機状態に戻るはずです.
あとは再起動すれば,pythonプログラムが開始するでしょう.

SW4STM32 Mac版でterget firmwareがERROR__UNZIP_ISSUEでダウンロードできない.

なんで?

 

STM32の開発環境を構築する(わりと楽に) - yuqlidの日記

 

に従って環境構築をしていた.

f:id:masa_flyu:20170625153615p:plain

Project Firmware Configurationで,Download target firmwareを押すと,(おそらく)正常にダウンロードがなされた後で,以下のエラーダイアログが出る.

 

f:id:masa_flyu:20170625153624p:plain

 

原因不明

軽く検証してみたところ...

STM32F4ではなくF0ならOK,Cube HALではなくStdPeriphではOK,mac版ではなくWindows版ならOK

F4かつCube HALかつmacのときだけ出現する謎エラー...

 

原因不明のまんまだが,ちょっと強引な方法だけど解決できた.(たぶんもっとマシな方法がいくらでもある)

 

解決方法

1.Project Firmware Configuration のDownload...ボタンのすぐ下にある'Firmware installation'を選択

f:id:masa_flyu:20170625160532p:plain

 

2.画像の中腹にあるFirmware installation repositoryのディレクトリを覚える(初期設定なら/Users/ユーザー名/.ac6/SW4STM32/firmwares)

f:id:masa_flyu:20170625160314p:plain

 

3.Finderで開く

※画像ではfirmwaresの中に,ダウンロードに成功したfirmwareが入っているが,これは全て完了後の画像のため.何も入ってなくてもOK.

f:id:masa_flyu:20170625161046p:plain

4.Project Firmware Configurationに戻り,Download terget firmwareボタンを押す

 

ダウンロードが進行すると,先ほどFinderで開いたフォルダの中に「.tmp_STM32Firmwareinstall_xxxxxxxxxx」といった名前のフォルダが生成される.

 

そしてその中にstm32cube_fw_f4_v1150.zipが生成されていく.これが今ダウンロードしている必要なzipファイル.

 

このフォルダはダウンロードが終了し,zipの展開が終わると直ちに削除される.今回のエラーはダウンロードは成功したが,zipファイルの展開でつまづいてるだけなので,zipファイルを手動で展開すればうまくいく.

 

そのためにzipファイルのダウンロードが完了した瞬間(Project Firmware configurationの下部の進捗バーが100%になったら),zipファイルをcmd+cでコピー,

一つ上のディレクトリにペーストする.

 

(別にコピーしないでも移動させるだけでもいいかも?)

 

f:id:masa_flyu:20170625162414p:plain

 

5.zipを展開する(展開場所はFirmware installation repositoryのディレクトリ)

 

これで/ Firmware installation repositoryのディレクトリ /STM32F4-Discovery_FW_V1.1.0

フォルダが作られた

 

6.Project Firmware configurationに戻り,一度上部の選択肢を変更し戻す(Hardware Abstruction LayerからNo firmwareに.再びNo firmwareからHardware Abstruction Layerに.)

 

Download target firmwareボタンが消え,「Firmware 'STM32Cube_FW_F4_V1.15.0' has been found.」という記述が増えている.これで解決...

SIP解除:「csrutil disable」しても「Command not found」となる場合(macOS Sierra or OS X El Capitan )

結論を先に.

Command + R では無く, Option(Alt) + Command + R

 

 

愛用しているMacBook Pro Late 2013 (13インチ).

新しもの好きな僕としては,最新OSはPublic Betaの段階からインストールしてしまう.OS X El CapitanのときもSIP (System Integrity Protection)の問題など,何も考えずに真っ先にインストールした.

しかし広く公開されているSIP無効化手順

①Command + RでOS Xユーティリティ起動

②メニューバーよりターミナル起動

③「csrutil disable」を打つ

をしたところ

「Success」などの単語は無く「Command not found」という冷たい文字が出てくるのみ.2015年当時は何度調べても,何度やり直しても同じことを繰り返すのみ.

Late 2013は古すぎてコマンド自体が存在しないのかな??という曖昧な結論を得て,結局そのまま放置して1年半経ってしまった.

 

最近職場のiMac Late 2009のSIPを解除する必要が出た.7年も前のMac,一筋縄ではいかないだろうと思ったが,いたって普通に解除できた.

そこから疑問に思い,軽く調べたところとてつもなく簡単に解除できた.

 

原因:Command + Rでは,古いバージョンの「ユーティリティ」が起動する場合がある

さらなる原因:Bootcampなどでパーティションが分かれているときに,ユーティリティのある領域が古いまま保たれてしまう??(よくわかってない)

 

解決策:Mac起動直後りんごマークが出る前にOption(Alt) + Command + Rを長押しし続ける。地球のようなマークが出てきたらOK。最新版の「macOS ユーティリティ」をインターネット経由でダウンロードするので環境にもよるが起動まで長時間かかる。起動後は通常通りターミナルで「csrutil disable」を入力する.

 

こんな簡単なことだったとは...