読者です 読者をやめる 読者になる 読者になる

PSoCでSW入力する

この間の連休?仕事してましたよ。社畜じゃねーし。社畜は卒業したんだし。

…と、いうことで本日はSW入力したらLEDが点灯する奴をご紹介。
これやって、PSoCすげーなって感動しました。



■使ったもの。
PSoC 5LP Prototyping Kit
PSoC Creator4.0

1.コンポーネント:Debouncerを持ってくる。

右にあるタブから、Digital - Utility にある Debouncer[v2.20] を選択して、図面の中にドラックしてくる。
この便利な四角いの、コンポーネントっていうらしいよ。
f:id:matchqueen:20170327200046p:plain

2.SWピンとLEDピンを置く。Clockも配置するよ。

CLKは20Hzにする。NOTを置かない場合、SWを押したらLEDが消灯する奴が作れる。
f:id:matchqueen:20170327195917j:plain


他のピンはどこにある?って思ったら前回の記事を読もう!
PSoCデビューした話 - なるみさんの覚書


ピンをダブルクリックするとこのウィンドウが出てくるので、ここでピンの名前や設定を変えたりする。
PSoC 5LP Prototyping KitのSWはプルアップされていないので、General タブの Drive mode から Resistive pull upを選ぶ。
f:id:matchqueen:20170327201123p:plain

  • SWとLEDのピンアサインを回路図で確認して。

f:id:matchqueen:20170317121503j:plain

  • 配置する。

f:id:matchqueen:20170327201442p:plain

3.Buildしてボードに書き込む。

SWを押したらLEDが点灯するやつの出来上がり!
すごいね!プログラム書いてないよ!なんてこった!!!



コンポーネント単位でどう使うか書くと初心者向けだなって思ったので、そんな感じで次回はADCかUARTについて書こうかな。
なんかどれもこれも簡単で、すごい世の中だって思うね。

PSoCデビューした話

PSoC

会社のPSoCおじさん'sがニコニコしながら勧めてくるので、「ちょっとだけ…」と足を踏み出したら面白くて沼にはまりそうになっている話。
業界ではよく見る光景ですね。

1.PSoC Creatorを入れる。

私は4.0を入れました。
DLはここから。普通にインストールをする。
ユーザ登録が必要だよ。
japan.cypress.com

2.評価ボードをPCに刺す

f:id:matchqueen:20170317121147j:plain

私は秋月で PSoC 5LP Prototyping Kit を買いました。
akizukidenshi.com

ところで秋月さんはいつまで商品名を全角英数で表現するのでしょうか。
そろそろ半角になっても良いのでは?と常日頃考えております。

3.Lチカ

さあ!何も考えずにLEDを光らせるんだ!

  • ここから評価ボードの回路図を落としてきます。

japan.cypress.com

f:id:matchqueen:20170317120829j:plain

  • 回路図を開き、PSoCの型番を確認します。

f:id:matchqueen:20170317122456j:plain

f:id:matchqueen:20170317121912j:plain

  • 型番を選択。

f:id:matchqueen:20170317123335p:plain

f:id:matchqueen:20170317123452p:plain

  • 適当な名前で保存。

f:id:matchqueen:20170317123813p:plain

  • できたー

f:id:matchqueen:20170317123942p:plain


  • ピンを図面に書きます。

右にあるタブから、Ports and Pins にある Digital Output Pin[v2.20] を選択して、図面の中にドラックしてくる。
f:id:matchqueen:20170317124234j:plain

こんな感じになる。
f:id:matchqueen:20170317124514p:plain

次にCLKを同じように追加する。System にある Clock[v2.0]
f:id:matchqueen:20170317124829j:plain

この二つを線で結ぶ。キーボードの W を押すとワイヤーが出てくるよ。
f:id:matchqueen:20170317124959j:plain

  • Clockピンをダブルクリックして、クロックを入力する。

Source を ILO(1kHz) にする。
Specify を Frequency 1Hz くらいにする。
f:id:matchqueen:20170317130346p:plain
指定したクロックで光るよ。
Source を auto にしておくとワーニングが出るので、ILO(1kHz)とかにしておけば。どんなワーニングかは自分で確認してな。

  • 左にあるタブの、Design Wide Resourcesをダブルクリックする。

f:id:matchqueen:20170317125204j:plain

こんな画面が出てくる。
f:id:matchqueen:20170317125406p:plain

  • 回路図から、どこのピンにLEDが繋がっているか確認する。

f:id:matchqueen:20170317121503j:plain
なるほど、P2_1だな!

  • P2_1 に Pin_1 をドラックしてくる。

f:id:matchqueen:20170317130135j:plain
プルダウンから選んでもいいみたい。

  • Build してエラーが出なかったら、ボードに書き込む。

f:id:matchqueen:20170317130909p:plain
Buildはこれをクリックしてもできるよ。

f:id:matchqueen:20170317131009p:plain
ボードに書き込むのはこれ。

  • ひかったー!点滅するよー!!

f:id:matchqueen:20170317131854j:plain


4.CでLチカ

Cでソースコード書いて光らせることもできるよ。
図面からクロックとワイヤーを消してPin_1だけにする。
f:id:matchqueen:20170317145918p:plain

Pin_1をダブルクリック。HW connection のチェックを外す。
f:id:matchqueen:20170317150209p:plain

ピンの外観が変わる。
f:id:matchqueen:20170317145954p:plain

右側の Source Files から main.c を選んでダブルクリック
f:id:matchqueen:20170317150315p:plain

ここにLEDを光らせるプログラムを書く。
f:id:matchqueen:20170317150428p:plain

まずは簡単に光らせたい。
ということで、100msで点滅するやつ。
f:id:matchqueen:20170317151135p:plain

Pin_1_Write(1);
これでPin_1ピンがHiになる。
0にしたらLowになる。かーんたーん。

CyDelay(100);
これで100msお休み。



次の記事で一番感動したSWの処理について書こうかなって。
元気だったら連休中にどうにか。

Altiumでアートワークデビューしたから3Dマウス買った話

便利グッズ Altium

タイトルですべて説明し終わった感。

最近また転職しまして。
アートワークも自分でやるようになりました。

今まではOrCADで回路図書いて、NETリスト出して、基板外形図書いて、
アートワーク屋さんに「あとは任せたで」って感じでした。
今は自分で全部できるので、
「あ、これ絶対に部品入らない」
と思ったら部品選定からやり直すこともできるのです。なんということでしょう。
(実際やった)

お高いCAD(当社比)なので大変便利で良い感じです。
初めてチャレンジしようとしたPCB-CADはCADLUSだったので、分かる方だけすべてを察してあげてください。
もちろん挫折しました。

さて、本題です。
これ買いました。3DconnexionのSpaceNavigator for Notebooks

アートワークするとき、上に下に左に右にと色々を動き回るんですよ(私だけ??)
そんなときに、いちいちマウス(私はトラックボール使ってる)で移動させるのが本当にストレスで、会社の人に触らせてもらったこの3Dマウスが大変使いやすかったので
「ああもう無理!3Dマウス買う!!!」
って叫んだその日に買いに行きました。

Twitterで買った!ってつぶやいたら、色々な人から現在は置物になっているという情報を頂き、「やばい、使いこなせるか」と不安になりましたが、問題なく仲良くやってます。


Altiumで使ってる設定はこれ。
速度はデフォルトのままです。
f:id:matchqueen:20170307150101p:plain

持ち上げると縮小
押し込むと拡大
左に押すと左に進む
右に押すと右に進む
下に押すと下に行く
上に押すと上に行く

※すべて動かす物体を基準で考えるのが肝だと思う

これ単体でマウスとして使えるわけでもなく、使えるソフトも限られてるので、ぜいたく品扱いだと思うのですが、あるのと無いのとでは作業効率が段違いなので私は買って良かった。

ごはんにゃう

設定した時間がきたら猫にご飯をあげたいなって。

以前、「技術書典」というイベントで
途中経過を本にしたのですが、それが完売してしまったので抜粋してご紹介。

ちなみにこれが表紙だった。結構ふざけてる感じが好き。

1.ブロック図


※1 マイコンにスイッチとLCDとRTCがのってるだけ。
※2 モータは今のところサーボでいいかなと。

2.回路図


※1 本で乗せた回路図には、リセットスイッチのプルアップにダイオード
   載っていなかったんだけど、必要だよなと追加。
※2 マイコンはATmega328P-PUにArduinoブートローダを書き込んで使用。
   Arduino基板を使わなかった理由は、コスト削減のため。
※3 電源はUSBのモバイルバッテリから取れるようにと、USB(micro B)にした。
   フレームグランド(FG)はシグナルグランド(SG)とショートしたかったり
   したくなかったりする時があるので、お仕事で試作設計するときも0Ω抵抗で
   ショートできるようにしています。
   が、その昔、SGとFG間パターンが狭く、雷サージ試験でショートしデバイスが
   破壊してしまったことがありました。悲しい思い出。
   製品になる場合、USBなど人が触る箇所は静電気(ESD)対策も必要になります。
   (この回路では考慮してないです)
※4 LCDとRTCの電源は簡易的に抵抗で分圧する方法になっています。
   何故ならLCDモジュール基板内にそれが入っていたから。
   RTCとLCDなんて消費電流はたかが知れているので問題なし。
   SDカード等、電流喰うものはきちんとレギュレータ等で3.3Vを
   作った方が良いですよね。
※5 ソフトの書き込みはFTDIのUSBシリアル変換基板を使うので、ここには
   ヘッダのみ実装しました。
   回路図にはB6B-XH-Aって書いてあるとおり、始めはコネクタにしようと
   思っていました。手持ち在庫がなかったので泣く泣くヘッダピンに変更
   しています。電圧が外に出る場合、ヘッダピンにはしない方が好きです。
   ショートの可能性がぐっと増えるので。
※6 もう少し小さい電池にすればよかったと後悔。2032でかすぎ。
※7 USBシリアル基板からも給電できるのですが、そうするとUSBシリアルから
   ポリスイッチ通らずに基板内に5V入るんですよ。良くないね。
   でも使っているUSBシリアル基板内にポリスイッチ入っていたから
   良しとしました(自分のなかで)

2-2.ポカミス


※ATmega328P-PUの28ピンはSCLなのに、ネット名をSDAにしてしまい、
 バラック作って動かしたときにI2Cが動かなくて悩んだのです。
 ネット名は書く派なのですが、こういう間違いは初めてで動揺しました。
 回路図を書いた自分を殴りたい。

3.実機





※特筆すべきところは何にもないですが。
 しいて言えば、サーボの逆起対策用ダイオード位置、これはどうなのかな。
 (サーボのコネクタをすっかり忘れてて空いてるところに実装したためにこうなった)



ソフトは全然進んでいないので、そのうち。

I2CでRTCとLCD

電子工作

I2Cって使ったことなかったのでやってみたかった。
RTCって自分でソフト書いたことなかったからやってみたかった。
LCDはおまけ。

1.回路図

※1 ArduinoUNOに接続。
※2 RTCは秋月のAQM0802A-RN-GBW
   →リアルタイムクロック(RTC)モジュール: 半導体 秋月電子通商 電子部品 ネット通販
   LCDはスイッチサイエンスのI2C接続の小型LCD搭載ボード(5V版)
   →I2C接続の小型LCD搭載ボード(5V版) - スイッチサイエンス
※3 RTCは電池つなげたりするんだけど、とりあえず動かしたかっただけなので付けていない。
※4 RTCモジュールのI2Cラインのプルアップ抵抗は付けていない。
※5 LCDのプルアップ抵抗だけ有効になってる(10K)
※6 LED1は定周期タイマ割り込みが効いてるかチェックしたかった。
   抵抗値高い気がする?エコですよエコ。

2.ソフト

RTCはこちらのライブラリをお借りし、いじって使いました。
arms22.blog91.fc2.com

LCDはスイッチサイエンスさんのを参考にしています。
mag.switch-science.com



※1 以下にまとめてUPしてあるので見てみたい方はどうぞ。
   http://sweet-potato.info//hatena_blog/I2C_test.zip

※2 RTCの初期値(6/10)は私の誕生日です(聞かれてない)
※3 "// int cnt_sens = 0;"って記述がI2C_test.inoに入ってますが、
   前回の記事の名残です。気にしないでください。
※4 C++Arduinoで初めて使ったので、ぽくない記述とかあると思います。
   Arduinoは使い始めて2か月くらいです(初心者アピール)

3.現物

このブレッドボード、小さくて好きです。