2016年9月29日木曜日

PSoCまつり2016レポート

 
去る10月17日、日本サイプレス株式会社川崎営業所にて、
PSoCまつり2016が開催されました。
参加者数は前回よりも1.5倍ほど多い過去最大の46名となりました。
またPSoCまつりに関するtweet数は116となりました。
 

プレゼンテーションの内容
·         PSoCってなに?さん。 中村優友(@hamuhmau_Humi)
·         PSoC Analogのご紹介 energy harvesting のご紹介    滝川 剛
·         ブレッドボードで楽しむPSoC4BLE入門  有山 隆史 富士通株式会社 あしたのものづくり研究会
·         リフロ炉作ったよ      @cronos_sv
·         PSoCでちびねずみロボットを作ってみた       @poyokoma_danna
·         PSoC4でLCD表示を低消費動作させる    @yacicci
·         夢のコラボ♪Creator と IAR Embedded Workbench ❤   古江勝利(@katsutoshifurue) 長濱みほ(@Miho_x_x_N)
·         PSoC4BLEでつくる簡単無線センサーユニット   井田 健太
·         ラジコン×電子工作×PSoC     宮園 恒平

配布された資料

PSoCまつり2016のツイロガー

PSoC4の体験コーナーは、前回と同じでスイッチを押したらLEDが光るという内容でした。
普段はソフトウェアを作っている人が多かったため、新鮮に感じた人が多かったと思います。
体験コーナーの希望者は18名と多かったのですが、当日は5名の方が体験コーナーに参加しました。

今年はなんと、IARシステムズの方もプレゼンに参加されました。PSoCまつりでは個人事業主の方も多いため、お仕事のお役にも立ったかと思います。

じゃんけんコーナーではPSoC3の開発キットとPSoC4の開発キットを
ほしい人へプレゼントされました。また、スイッチサイエンス様から
EZ-BLE PRoCのボートと付箋の提供がされました。
今回は当日キャンセルが7名程出てしまいました。私も都合が合わない方向けへの案内が
出来ていなかったために起きてしまったと思われます。

 
PSoCまつりは丁寧に、また肩の力を入れなくてよいセミナーでありながら、
今年はその規模をより大きくなりました。PSoCまつりとしての大きな進歩であるように
感じます。そして、PSoCまつりは多様性を大切にしながら
互いにより良い成長につながる場であることを私は本当に誇りに思います。
その一方でPSoCまつりはプレゼンターの方々や協賛の企業様
また多くの人の協力によって開催することが出来ます。
そんな、PSoCまつりに賛同していただける方々に
深い敬意と感謝をもってPSoCまつり2016の結びにしたいと思います。


2016年9月29日 PSoCまつり統括 中村優友

2016年4月16日土曜日

PSoCまつりのプレゼンター募集

PSoCまつりでプレゼンターになりませんか?


PSoCまつりではプレゼンターを募集しています。
PSoCまつりでのプレゼンターが不足していまして
「PSoCまつり」の開催が危うい状態となっております。

PSoCまつりとは、

「PSoCってなんだろう?」
「PSoC使ってみたいんだけどなぁ…」

っと言うようなのPSoCが初めての人向けセミナーです。

通常の難しい事を説明するセミナーとは違い
「PSoCならこう言う風に出来るよ」という事を
学生、ホビースト、社会人に向けてプレゼンしていきます。

プレゼンの内容は「PSoCで」試した。作った。仕事が捗った。等
PSoCでやってみた事であれば何でも構いません。
難しい事をやっていなくても大丈夫です。
レギュレーションは「丁寧に説明すること」です。
プレゼンの練習としても最適かと思われます。

プレゼンターの応募資格はありません。
気軽に にリプライ、Google+のハングアウト
Doorkeeperのお問い合わせ等に
ご連絡を頂けたらと思います。

開催の日程は、20016年の8月or9月の予定
開催場所は日本サイプレス株式会社本社
を予定しております。
最終的な日程はプレゼンター方の都合が良い日になります

何卒宜しくお願いいたします。



*いまいち連絡先が判らない場合
コメントをしていただけたらと思います。

2015年11月29日日曜日

加工と検証が出来る準備が出来た。

PSoC5LPで機能を造る事は出来ても、
外側やフレーム等の加工や回路のチェックをする機材がありませんでした。
実のところ、電子工作をする上で回路のチェックは
テスター(デジタルマルチメーター)だけでは、無理があります。
例えば、アナログ回路で作成した波形出力機はテスターで見る事が出来ません。
また、混ざった波形にどの周波数が隠れているか
正しい周波数なのかを調べるにはオシロスコープや周波数解析器が必要となります。

電子回路は作れても、外側の箱やメカニカルな機能が残ります。
外形加工は測る道具もそうですが切る道具、削る道具も多くそろえる必要があります。
また穴あけも含め電動の工具は割と大きな音が出るものが多いため
なかなか都心の真ん中では運用に問題があります。

正直なところ、私の家には外形加工と回路検証の手立てがありませんでした。
特に回路の検証は深刻で、手の届きやすい機器が易々と手に入る訳ではありません。
予算もないですしね。
アナログもしっかりやりたい私には少なくとも10Mhz対応のオシロスコープと
周波数解析、デジタルの通信をモニターするロジックアナライザーが欲しいと考えていました。
ただ、これだの機材を揃えようと思うとかなりの高額な金額になります。
外形加工も夕方や夜に出来れば良いのですが
そんな訳にも行かないので低騒音なNC加工の機器が欲しいと考えていました。
多くの時間をかけて考えた結果として、私はこれらを解決するのに2つの機器を買いました。

1つはビットスコープマイクロと言う多機能検査機器
もう1つはda Vinci Jr1.0と言う3Dプリンターです。

ビットスコープマイクロと言うのは、
2Ch20Mhzオシロスコープ、ロジックアナライザー,スペクトラムアナライザー(周波数解析)
8chスペクトラムアナライザーが1つに合わさったUSB検査機器です。
またビットスコープはraspberry Piの様なLinuxボードでも動きます。
Linuxボードを使えば作業用のパソコンとも切り離せますし
OSの割り込みによる測定ミスの可能性を減らせます。

このビットスコープは日本だとどこも取り扱いがないので今回は個人輸入をしました。
梱包ミスがあったりしてオーストラリアのお店とのやり取りが多かったですが
無事に手元に届きました。
pcDuino3nanoで動かすとこんな感じです。


da Vinci Jr 1.0は5万円以内かつスタンドアローンで出力のできる、
今のところ唯一の3Dプリンターでしょう。

 樹脂部分のヒビによって返品交換をしたりしましたが
どうにか運用出来ている感じかと思います。
3Dプリンターは削って作りこんでいく訳ではないので都心でも安心して使えます。


とは言え大きい事もあるので定位置はクローゼットとなりました。
セミクローズド制御でもないので加工精度としてはイマイチですが
時間を気にせずに運用が出来るので良しとしましょう。3mm以下の円形は苦手の様です。
実際に作ったpcDuino3nanoのケース。
売っていないのでda Vinci jr 1.0で作った。



2015年10月17日土曜日

キャラクターLCDの文字コードを使ってみる。

今回はキャラクターLCDの「文字コード」を使って
半角英数だけでは無い表示をさせてみようと思います。

さて、キャラクターLCDの文字コードとはなに?
っと言う話を少ししておこうと思います。

パソコンはもちろんなのですが
コンピューターは人間の文字が分かりません。
なので、数値の組み合わせに人間の文字を対応させる事によって
コンピューターが人間へ文字を見せられる様になります。
数値の組み合わせと文字の対応の事を「文字コード」と言います。
この文字コードで有名なのは恐らくASCIIコードでしょう。

では、なんで文字コードとキャラクターLCDに関係があるかと言うと
キャラクターLCDとPSoCは文字コードを使ってLCDに表示させているのです。
つまりは、キャラクターLCDに文字コードが内蔵されているいてそれを使っているのです。

え、「プログラムで文字コードなんて意識していないって?」

それはPSoC Creatorのライブラリーが見えない様にしていたからです。
普段は文字コードを意識せずに表示させていました。
ですが今回は文字コードを使って表示させようと思います。

キャラクターLCDモジュールはHD44780(コンパチブル)っと言う
コントロールICを返してLCDに表示させています。
先ずはHD44780が使う文字コードを調べましょう。

これはSparkFanにあったHD44780データシートの抜粋



これが内蔵されている文字コード
アルファベットとカタカナと特殊な文字が使える様になっています。
HD44780互換であればこの文字コードが使えます。
また、任意の文字や絵を8個まで表示させる事が出来ます。

表の上の番号がありますね、それはHD44780が使う文字コードの上位ビットです。
表の左側にも番号がありますね、文字コードの下位ビットを表しています。
この表を使うには8bit分の上位4bitと下位4bit分を合わせないと
使えないと言う訳なのですね。

例えばカタカナの「ア」であれば上位ビットの「1011」と
下位ビットの「0001」を合わせた「10110001」となる訳です。
16進数表記であれば「0xB1」と言う事になります。
では実際にやってみましょう。

まずはいつも通りに空のプロジェクトを作って、
キャラクターLCDのコンポーネントを入れます。



しかし今回は任意で作った絵や文字を入れたいので設定を変えちゃいます。


設定画面を開いたら、ラジオボタンの「None」を「User Defined」に切り替えます。
これで任意の表示が出来るようになりました。



今の状態は「Custom 0」が選択されている状態です。
このマトリックス状に表させているのが1文字分です。
このマトリックスをマウスでクリックして任意の文字を作って行きます。
白をクリックし見ると黒へと逆に黒をクリックすると白へと変わります。



何でも良いのですが、携帯のアンテナみたいなのを作ってみました。
これで文字のデザインはおしまいです。
デザイン増やしたい場合はとなりのYの字ブロックをクリックしてみると
Custom1へと変わっています。このようにして変えていきます。


では「OK」をクリックして閉じましょう。

配線は以前の書いた記事にあるので省略します。


配線が終わったら、一度コンパイルをしましょう。
コンパイルが終わったら次はプログラミングですね。
今回のプログラムの内容は意外とシンプル
int main()
{
    CyGlobalIntEnable; /* Enable global interrupts. */

    LCD_Char_1_Start();//LCDをスタートさせる
    LCD_Char_1_Position(0,0);//上の段の左端からスタート
    LCD_Char_1_PrintString("Hello PSoC3");///まずは普通のやり方
   
    LCD_Char_1_Position(1,0);//下の段の左端からスタート
    LCD_Char_1_PutChar(0xB1);//文字コードを使うときはPutCharを使う。数字は16進数表記
    LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_0);//作った文字には***_CUSTM_*で使える
    /* Place your initialization/startup code here (e.g. MyInst_Start()) */

    for(;;)
    {
        /* Place your application code here. */
    }
}
打てたら、再度コンパイルをしましょう。
コンパイル出来たら、実際にPSoC5LPへと書き込みましょう。
(今回はPSoC3を使いましたがPSoC5LPでも全く同じです)



こういう風に表記されれば完成(/・ω・)/
どうでしょうか出来ましたか??

M●edやAru●inoで同じことが出来るかは知りませんが、
文字コードを使えば簡単にカタカナが出力出来ましたね。
またコンポーネントのエディターで絵文字も作れました。

いや~PSoC5LPは便利ですね。

PS:
スイッチサイエンスの
16×2 日本語フォント付きLCDモジュール(青地・白文字)
https://www.switch-science.com/catalog/2448/
でも使えるはずだぞ~。

2015年8月15日土曜日

PSoC3の変数で迷う

PSoC5LPを開発するの様に
PSoC3でもPSoC5LPと同じように開発が出来る訳ですが
やっぱり、微妙に差があるのですね。



さて、変数と言うと
intやcharの様に文字や数値を入れておく道具ですね。
通常は、main()関数の中でも外でもどっちでも
平気なのですが、PSoC3ではどっちでも良いと言うわけでは無いようです。

下の写真はmain()関数の内側で変数の宣言(変数を使いますよ)をしています。
通常は、この方法で問題は無いのですがビルドをかけると



この通り、エラーが出てしまいます。
しかもエラーの説明も「近くに原因がありますよ」位なので
何が原因だったのかが良く分かりません。

ちょっと古い書き方でmain()関数の外側で変数の宣言をして
ビルドをかけると



ビルドが通りました。
使うコンパイラーがPSoC3では異なるので
ちょっとした違いはあるのかなと思います。

*すこし追加

手ほどきをしていただいて、分かったのですが
「 CyGlobalIntEnable」の前に変数の宣言をしてあげる必要があるようです。

つまり
int main(){

   uint32 cou;

 CyGlobalIntEnable;
・
・
・
}
としてあげれば良い様です。