2013/07/31

[電子工作]SPI温度計

,
(書きかけの記事です) 
基板作ってみるかも…
秋月の16bit温度センサーとやらを使って、部屋の温度を測定してみたくなった。

回路図(暫定)
・USBのジャンパは、逆流防止ダイオードD1(1S4)による電圧降下で、マイコンその他に影響が出る場合に、ショートすることで電圧降下を消す。しかし諸刃の剣みたいなもんで、

・USBのダンピング抵抗は完全に他人の回路を幾つか見て決めた、そもそも入れなくていいような気がする

・チェックピン全て未実装、使うのはマルツの表面実装用の

・在庫処分のために2SC1815をに使う

・RGB LEDはライブラリを作るのが面倒くさかったので(ここらへん端子がまちまちで困る)、aitendoのAnode commonのものを、Sparkfunのライブラリにあったやつで代用

・電源周りが全て未実装、FT232RLはあまりにもピンが余ってて宝の持ち腐れ感がすごいので、代用のものがないか検討中。

追記(2013/09/10)
・FT232RLの他にもUSB-UART変換ICはありますが、RTS/CTSなどのポートを除いてTxD/RxDだけにしたものは、PL2303SAくらいのようです。このIC、マルツのキットに含まれていたこととシリコンハウス共立くらいでしか売ってた話を聞きません。勿論Digi-keyにも無いです。共立でもとっくの昔に在庫切れになってしまったらしいので、8ピンUSB-UARTのことは諦めます…
 そもそもUARTを使う必要が有るのか自体が疑問なので(LCDに表示されれば良い。LCDのライブラリは使ったことがあるから、そこまで困らないとは思ってる)、UARTのピンだけ立てておき、XBeeのパターンでも置いておくのが吉なのかもしれない。

・1608のチップ部品のハンダ付けは、割といけると分かったので、抵抗のサイズを2012→1608にします。

・Eagleのライブラリを作れるようになったので、電源周りもやはり組み込むことにします。Li-Poを使うようにしたいです。

Read more →

2013/07/08

[C#]SQL ServerのLocalDBを、Entity Data Modelで設計し生成する。

,
 C#でデータベースを使うお話です。私は初心者で、尚且つ情報をあまり上手に集められない人間なので、とても試行錯誤(或いは途方に暮れて迷うとも言う)しました。実際、ここに書くだけの内容を知るのにも、かなりの時間がかかりました。その覚書みたいなものです。

 まあデータベースと一口に言っても、実際には何種類も有りまして、例えばフリーライブラリのSqliteとか、MicrosoftのSQL Serverとかです。私のような情弱初心者だと、そもそもどれを使っていいかわからない…ということになってしまいました。
こんなにある…
上の写真は、VS2012で[サーバーエクスプローラー]ウィンドウで、[データ接続]を右クリック→[接続の追加]を選択した時のダイアログです。色んなデータベースの種類があります。例えば、
・SQL Server Compact 4.0とは、携帯向けのデータベースです。確か、データベースの容量や、使用出来るデータ型に制限があったような気がします。
・SQL Serverはその名の通りです。
・Access データベース ファイルとは、Microsoft Accessで用いるもの…なのでしょうか…?

 私の場合、データベースが必要といっても、アプリケーションを動かす場所は固定ではなく、ちょっとデータを保存したり読み込んだりできればいいので、保存場所はどちらかというとローカルの方が良いのです。なので、SQL Serverのうち、LocalDBと言うのを使うことにします。
//最初はLocalDBを知らなかったので、SQL Server Compact 4.0の方を使おうと頑張ってた… 
 LocalDBを作るには、[ソリューション エクスプローラー]でプロジェクト名を右クリック→[追加]→[新しい項目]で、[サービスベースのデータベース]を選択します。


 すると、このようなダイアログが出ると思います。ここでは、Entity Data Modelという機能を使いたいので、右の[Entity Data Model]を選択します。


 最初の段階から設計するので、ここでは[空のモデル]を選択。


 次に、Entity Data Modelでデータベースの設計をします。こんな画面が出てくると思います。ここでは、GUIツールを用いてぽちぽちとコンポーネントを配置することで、データベースのテーブルなどの設計図(のようなもの)を作っていきます。
 

 まず、右クリック→[新規追加]→[エンティティ]で、エンティティ(テーブルと同じようなもの?)を一つ配置します。ダイアログが出ると思います。ここは主キー(一意に識別するためのIDみたいなもの)と、エンティティに関する設定をします。多分そのままOKでいいような気がします…

 
 Entityへの要素(データ項目)の追加は、Entity上で右クリック→[新規追加]→[スカラー プロパティ]です。追加するとデフォルトでデータ型がStringになっているので、[プロパティ]ウィンドウの[全般]→[型]で適宜変更します。


 テーブル間のアソシエーション(SQLでのJOINのようなもの?)は、[ツールボックス]ウィンドウから[アソシエーション]を選択し、マウスでテーブル間をドラッグ&ドロップで繋ぐとできます。

 設計し終わったら、この論理モデル(≒設計図)から、実際にデータベース上に生成するための、SQL文を自動生成してもらいます。Entity Data Modelを設計するところの何も無いところを右クリック→[モデルからデータベースを生成]を選択します。
 

 最初のほうでプロジェクトに追加した、ローカルベースのデータベースファイルに接続することを確認します。そうしたら、次に行きます。



 DDLというタブに、論理モデルをデータベース上に生成するSQL文が書かれています。[完了]ボタンを押します。
 

 このSQL文を実行するには、左上の▷(右向き三角)マークの[実行]ボタンを押せば大丈夫です。しかし、接続文字列の問題からか、私の場合"database [Database1] does not exist. Make sure that the name is entered correctly."のようなエラーが出てしまい、実行出来ませんでした。どうやらSQL文の先頭の方にある、USE文でデータベースが選択できずにコケているようです。で、

ここで、このようなダイアログが出ることがあります。

 ローカルベースの場合(LocalDB)、この接続文字列には"(LocalDB)\11.0"などという文字列が入るものと思われます(参考:MSDN)。 の場面で右下のプロパティ欄に出ている接続文字列が、多分正しいものと思われますが、これをそのまま貼り付けると、文字数超過のようなエラーが出て接続出来ません。
 
 しょうが無いので、[サーバー エクスプローラー]→[*******.mdf]を右クリック→[新しいクエリ]を選択し、自動生成されたSQL文をそのままコピペして実行すると、同じようなエラーが出ますがなぜかテーブルは生成されています(なんでだ)。とりあえずできたので良しとはします…
コピペすると…
エラーが返ってくるが、なぜかテーブルは出来る…
これで一件落着、次はデータベースを操作することにします。長くなったので多分別の記事にします。

//書きかけ
Read more →

2013/07/03

[電子工作]VFD clockの回路図書いた

,
 若松で買った蛍光表示管LD8035とそのモジュールがあるので、そろそろ動かさねば…と思って回路図書きました。

備考
1)Atmega168になっているけど、使うのはAtmega328P

2)RTCモジュール(IC5)周りは、バックアップ時にVcc=3Vがマイコンなどには流れないように(RTCのみに流れるように)D4がついています。
 また、Vcc=5Vの時、バックアップ電源から流れて行かないようにD3がついています。こうすると、D3には逆方向電圧が掛かるので、D3に電流が流れません。漏れ電流、電圧降下によるVccの低下→RTCのHiレベルの低下をなるべく防ぐために、ショットキーバリアダイオードが良いと考えました。1N5817-Bのライブラリを使っていますが、実際に使うのは秋月の1S4です。
 そして、Vcc=3Vの時にはプルアップ抵抗から流れて行かないように、RTCモジュール内のプルアップのジャンパは外し、新たに外付けでVcc=5Vのところにプルアップ抵抗を付けます。

3)チャタリング防止回路は、『CPUの創りかた』に載っているのを参考にしました。シュミットトリガ(IC2, IC4)は実際は未実装、使うとしたら鈴商で売っている3ゲート搭載のTC74W14FK/FU。

4)AVccの配線を含む、電源系統がすべて未実装/未記入。

5)D1, D2は1N4148DO35-10を用いているが、実際は1N1588(だっけ)。

6)J1:VFD桁選択、J2:デバッグ用SerialRX/TX、J3:VFDのセグメントとGND


Read more →