ラズパイ Python 電子工作でミニ時計

 久々に週一程度の頻度でブログ書き中。

 南澤さんが、「ソロギターのしらべ」シリーズの動画投稿キャンペーンを始めたので、新しく出た「簡単に弾けるジブリ」?なような譜面を購入しようか迷ったけど・・・、う~ん、正直なところ、同じ程度か少し難しいアレンジで、フルコーラス仕様だったら即ポチするけど、簡単アレンジとなると・・・、気が向いたときに購入しようかな。
 とまあ、なんか一曲は練習してエントリーしようかなと思っているけど、まったく進捗なし^^;

スポンサーリンク

ラズパイでLED時計を制作

ラズパイと数字LED 74HC595の勉強

 ソロギターの話題はこれ以降ありません!
 まったく別ジャンルの記事です。

 今週の土日休みで、以前購入していました、ラズベリーパイの電子工作キットに初トライしました。
 ミニLED時計ができるまでの流れで、素人が疑問に思った箇所をブログに書いてみました。

SSHとVNCの違い

 一緒に購入した入門書には、初期ユーザー名を削除、変更する方法が載っていませんでした。ネットでラズパイのことを検索すると、ユーザー名を変更すること(PIは攻撃されやすい)は、基本とのことです。

 で、それをSSH接続が必要なのですが、それ何?から調べました。
 簡単に言うと、SSH接続での操作は「コマンド入力&windowsのような画面出ない」、VNC接続での操作は「windowsのような画面をそのまま操作」する。

 で、ネットを調べながらやろうと思ったのですが、まず、win10で最初のコマンドを入力する画面をどう表示させるのかが、基本すぎて見つからない。

 win10の検索で「cmd」と入れる

 です。次に??に思ったのが、

 パスワード入力時、キーを押しても何も表示されない
 
 で、終盤で??になったのが、

 VNC接続で、画面が真っ暗+何かビット文字載っている。

 ユーザー名を変更した際に、画面の大きさの情報がリセットされたのかと思えば、SSH接続でのユーザ名+パスワード要求が必要だったためで、この設定をwindows風画面+パスワード要求に変更したら、VNCで表示された。
 このような所が、パソコンって律儀なんですよね~。パソコンが苦手な人だと、確実に放り投げるような仕組みです。

Lピカ、LチカとRGBLEDピカ

 超基本プログラムの、print なんとかや、LEDを光らせたり、1秒おきに消したり点けたりは、すんなり。

 ただ、購入した入門書の
 「GPIO.setwarnings(False)」の記述が何故必要なのか、説明がまったく触れてないのがモヤモヤ。GPIOを強制的に途中で止めたときに、リスタートするときにエラーが出るのを非表示にするという意味らしいが・・・必要なのか?

入門書に書いているモータードライバーICが無い

 なんと、一緒に購入した入門書はLEDの次は、「TB6612搭載のモータードライバー」が必要でした。
 パーツセットには、違うモータードライバーが入っていましたが、明らかに別物。

 入門書をぺらぺらのめくりましたが・・・、ICに関しての説明がまったく書いていません。
 どの端子が何の役割なのか、入門書なら見開き2ページ分使って説明してほしいですね。本に載っているプログラムをそのまま書き写しても、身に付かないですよ~。

 というか、「自分で調べろ、そしたら理解が深まるぞ!!」と、頑固師匠な教育方針なのでしょうかね。

74HC595の勉強

 書籍の入門書の内容が進めれないので、パーツセットの付属のPDFマニュアルで勉強再開。
 このPDFマニュアル、いかにも中国語を機械翻訳したような日本語で少々読みにくいし、意味が??な部分がありますが、書籍の入門書より内容が豊富&詳しいです。

 Lチカの項目だけでも、RGBLEDでのPWMソフト制御とか、電卓の数字LEDの制御とかありまして、やりがいがあります。

 数字LEDの点灯には1桁に7個の信号が必要です。全部をラズパイの端子で制御することもできますが、2桁、3桁で端子が不足しますので、74HC595というICに8ビットのシリアル信号を1本の信号線で送って、ICの中で8本のパラレル信号に変換して数字LEDを点灯制御するという勉強をしました。

 これに関しては、グーグル先生で「74HC594」の説明ページを探す、読む+実際にプログラムを組むことで、一応理解できました。
 操作するためのパルス信号ですが、プログラムが基本的に一定の間隔で動くので、特に周波数とか時間の設定は必要ないようです。プログラム上でON、OFFの記述をするだけで問題ないし、ONを1秒、OFFを1秒でもパルス信号として認識できていました。
 おそらく、手作業のスイッチ操作で、この「74HC594」のICに信号を送って、数字LEDを点灯させることができるかと思います。(やってないので、実際は?ですが)
 9個、10個目の信号を送った際に、それが出力時に先頭に来るのか、それとも最初の2個分が追い出されて、3~10個目が8個の出力となるのか、このあたりは「74HC594」を2個直列にしたときの項目で勉強ですね。

論理演算子と計算用の符号

 0x80 & (0x3f >> 1)

 8ビットのデーターの左端が1か0かを判断するための式ですが、理解するのに結構頭使いました。
 まず、簡単なプログラムで仕組みを考えようと、

 x=’0b10111101′

 と2進数を文字入力したものを式にいれたら、int str エラー ><;;
 もとの参考プログラムが、num=’0x80’と記述しているので、そのように文字変数として16進数に変換しているはずなのに。
 これは、もとの参考プログラム、num=’0x80’はすでに内部で10進数の扱いになっていると理解して解決。 
 自分で分かりやすいように、num=’0b01101101’のような2進数で代入して、それを16進数の文字列に再変換していたのが駄目でした。

 まあそもそも &=and であることや、>> が右の数値分 ビットを動かすとか、8ビット演算子の説明がPDF説明書にも詳細に書いていませんので、常にグーグル先生が活躍します。

 さらに何で、この数式で、目的の列のビットの0,1が分かるのか理解するのに必要だったのが、

 GPIO.HIGH = True = 1 = 0以外の数値

 という関係ですね。0が負で、1が正というのは感覚で理解していたのですが、0以外が正というのは盲点でした。

任意の数字の1桁目、2桁目、3桁目・・・の数字を取得

 任意の数値 % 10  = 1桁目の数字
 任意の数値 % 100 // 10 = 2桁目の数字

 この演算子を理解するのも結構大変でした。

 A % B=AをBで割った 余りが数値
 2542 % 10 = 余り2 よって 1桁目 2

 A // B =AをBで割り算して、小数点以下削除 
 2542 % 100 = 余り42 
 余り42 // 10 =4.2の小数点を削除して 4 よって2桁目 4

 同様に
 2542 % 10000 = 余り2542
 余り2542 // 1000 = 2.542の小数点を削除して 2 よって4桁目 2

 いや~、これが納得いくのに時間かかりました。

time.cancelの解除がうまくいかない

 マルチスレッド処理した、1秒おきにカウンターを加算する関数を止める記述をしても、プログラムを正常に終了させても、何故かカウンターの加算と表示が止まらない。
 time変数をカウンターの加算と表示の後に記述していると発生し、time変数に関する記述の後にカウンターの加算と表示を記述していた場合は、表示は止まる。

 これに関しては、今のところお手上げ!!

 time.cancelの記述をしても、完全には内部的に止まらないのだろうか・・・。なんかモヤモヤするけど、次回以降で究明かな。
 マルチスレッドに関する記述もいまいち不明だし。startの記述をプログラムの本筋に書いてあるのに、スレッド関数の中にも記述しないと動かない等。

就職先を間違えたとは思う

 とまあ、Youtubeにアップした動画にも書きましたが、私今の仕事

 中小食品会社の品質管理室

 です。偉そうな部署ですが、中小企業でありまして、私1名だけの部署?です。一日の4分の3は品質管理とは関係ない、普通の製造作業、黒猫宅急便への発送業務から機械のメンテナンス、溶接、水道管施工、コンクリ施工、なんでもござれな仕事をしています。

 もともと大学で微生物を利用した卒論に取り組んだ縁で今の会社に入りました。
 入ったころは、世間的に食の安全に関して緩い部分があったのですが、最近はHACCPの制度化やら、昨日もマルコメのインスタント味噌汁やら、湖池屋のカラムーチョで回収報道があり、ストレスが蓄積するような状態です。
 来年はなんと

 1月5日に、保健所が製造免許の更新視察に来ます。

 さすがに、正月休みぐらい、仕事のことを忘れてのんびりしたいですね。
 (ま~、今週の土日も、ほとんど気にせず遊んでいますが)

 ずいぶん昔の日記にも書いていますが、入る大学の時点で選択を間違えた気がします。
 バイオテクノロジーの響きに憧れて今の人生に進みましたが、素直にITか電気電子系の大学、専門学校に行くべきでしたね~。

 パソコン=おたく というネガティブ意識と、兄が電気電子系の学校に通ったので違う道に行こうかなと思ったのがダメでしたね。
 どの人生でも、会社員は大変ですし、ストレスかかることは同じですが、

 独立して何かをする

 という面では、IT系、電気電子系のが応用が利くような気がします。今では3Dプリンターで部品も作れる世の中ですから、何かアイデア勝負で独立できていたかも知れません。

 とまあ、

 ラズパイで何か面白いものが作れないか、模索しています。
 とりあえず、留守中のペット見守りカメラ(向きを変えれる遠隔操作、室温計測、カリカリ数個を噴出する、おやつ機構付き)は目標として頑張ります!!

まだ動画がアップされない・・・

 永遠と誰が読むか分からないような記事をダラダラと数時間書いていますが、まだyoutubeへのアップが終わりません。
 早く光回線の工事が始まらないかな~。現状のケーブルTVネット回線は下りは問題ないのですが、上りが遅すぎる><;

コメント

  1. UME より:

    UMEです。

    実はワタクシ、このテのハナシは(むしろギターより)大好物でして(笑)
    むかしむかし、カワサキのオートバイに乗っていたこともあり、
    「やたらと興味が被るなぁ」とニヤリとしております。

    しかし独学で短時間でこのテの知識をつかむとは、大したものですね。

    この辺りの話題も(私は)楽しみにしていきますので、今後もよろしくです。

    良いお年を

  2. コン太郎 より:

    UMEさんこんばんわ~。
    私もこのテのハナシが好きでして、ただ、高校生の頃になってから実際に触るのはご無沙汰していました。
    電子工作って、パーツ屋に行かないと進まないところがありますよね。子供のころ兄と一緒に名古屋の大須で部品見に行っていました。アマゾンのおかげでパーツがあっさり揃う時代になりましたね。

    それも破格的値段の中国製?パーツセット。

    この分野、UMEさんのように直接海外と取引できたら、さらに安く奇抜?なパーツが購入できそうですが・・・、そこに踏む混むのはもう少し先になりそうです^^

    https://www.switch-science.com/
    というか、日本のショップでも、取扱品は外国製、説明書も英語、マニアックでディープな世界です。
    オーディオインターフェイスとか、部品だと3000円程度ですが・・・、たぶん市販品を買ったほうが安心?ですね!!

タイトルとURLをコピーしました