このブログを検索

ラベル mbed の投稿を表示しています。 すべての投稿を表示
ラベル mbed の投稿を表示しています。 すべての投稿を表示

2016/10/12

hems基板とりあえず完成

(以下は 2016/10/10の月曜のことですが・・・)

PCA9956BのRGBバーグラフを入れてまずはブレッドボードでテスト。

普通に動作したので、Adafruitのブレッドボードタイプ基板Perma-Protに載せ替えた。

通常のブレッドボードと違ってPerma-Protはセンターの部分が1ピン分短いのだった。左右も63ピンではなく60ピンだけども。

ブレッドボードからブレッドボードタイプの基板への移植なので作業は超楽ちんでした。

次はこいつのケースを3Dプリントするか、プラバンで作るかだな。あと、PCA9956BのRGBバーは少し光り方を変更する予定。今は8個使って250w単位だけど、100w単位にして色で表現したい。0-800は緑系で、801-1600は黄色系で、1601-2400はオレンジ系で、それより上は赤で。うーんやはりBlueのLEDの出番がない(笑)。

2016/10/04

PCA9956Bに変更


hemsテストのブレッドボードを先日掲載のロング1列のブレッドボードに変換するのはできた。

ただ、その際にNEOPIXELのRINGを壊してしまったようで、1番目のledがつかなくなった。
速攻で代替品としてスイッチサイエンスさんオリジナルのPCA9956BTW I2C 24ch 電流源型LEDドライバ基板を発注。夜勤明けの今朝届いたのでテストした。独自仕様通信から普通のi2cになるので接続も楽になる。

ハマりポイント1点。mbed1768でテストしたのですが、i2cのプルアップ抵抗必須みたい。うんともすんとも光らなくて、ピンヘッダをハンダ付けしたときにまかりまちがって壊したかと思ったよ。pwmドライバなのでそう簡単に壊れないとはおもいつつ、1kΩの抵抗でSDA,SCLをプルアップしたら無事点灯。
最終実装時は同じi2cバスにつなぐ7セグLED4桁モジュールにプルアップ抵抗がついてるから、こっちはプルアップ抵抗は付けない予定。

あと、微妙な点1点。LEDに書いてるのが見えてしまう。このモジュールはデフォルトでOE#がGND接続でいつでも表示状態。GNDとのジャンパーがあるのでカッターでカットしてMBEDから出力をコントロールしようと思う。

2016/09/29

ブレッドボードでの配線(HEMS)

20161002_00

こんな感じかな。中央上にNeoPixel Ring。中央下がi2cな4桁7セグLED。
コレを一旦ブレッドボードに作って動作確認の上、ブレッドボードタイプの基板に落として、上はスモークのプラバンで押さえる予定。
下側に4桁7セグとイーサネットの口がつくので、置くのではなく吊るす感じで設置予定。まぁ、3Dプリンタで脚作れば置けますけどね。

追記
上の画像で作ろうという人はいないと思うけど(mbed以外のモジュールがわからんし)、ブレッドボードの左上のほうで黒い線が間違ってVCCラインに入ってますが、GNDに入れます。画像は差し替えました。

さらに追記
ブレッドボートにテスト実装しました。(ジャンプワイヤの長さの関係で多少アレンジしてますが)
20161004_02

2016/09/27

Adafruitのneopixel ringをテスト

電力メータの針としてアナログ電圧計を試してたけど、微妙なので半ばデジタル半ばアナログなRGB LEDのリングをゲット。
mbedのライブラリを幾つか試したけど、動かないやつは動かない。このLEDはタイミングが結構シビアみたい。
とりあえず表示のめどはたったのでいい加減にはんだ付けしますかね。

表示の方は色々検討しつつ。せっかく各色256段階のRGB LEDなのでGREENからREDへグラデーション(っても12個だけど)をかませるか。1個あたり100W/hとして2400w/h超えたら全部赤くするとか。 BLUEの出番がなくなってしまうな。

2016/09/22

DACのテスト

hemsで取得した自宅の電気使用量の表示。デジタル以外にアナログもほしいなと、mbed1768のDACを使ってみた。
3Vフルスケールの電圧計で、1Vで1000W相当にして表示する。試した見たけど中華電圧計だと誤差が大きいなぁ。テスターに繋いでみたら、1桁目は確実にあっているのだけど、中華電圧計だとそれも微妙。正しい表示になるように変換関数作って合わせるか、サーボ使った針を作成するか。それとも10連のレベルメータ用のLEDにするか。

2016/08/20

HEMS関連ネットへのアップロードもなんとか

 mbedのネット関連のクラスが昔とだいぶ変わってしまっていてコードの修正に時間がかかってしまった。HTTPClientのメンバー関数は減ってるし、TinyHTTP_bはコンパイルできない。
 とりあえずNTPでRTCの時刻をあわせて、ネットにRESTで投稿までできたので先が見えてきた。
 次はブレッドボードから固定基板に移します。温度センサーもつけようかね。
 楽できるように昨夜Adafruitにロングのブレッドボードパターンの基板とか、英字も表示できるLEDとかいくつか発注しておいた。時差があるので、向こうは金曜の朝だったから、即発送されてます。

2016/08/19

7セグLEDを導入

 スマートメータのBルート受信機に7セグのLEDを付けました。
 HK16K33をドライバにしたI2C接続のAdafruitのやつ。AdafruitはArduinoとRaspberry piのライブラリしか公開していないので、
mbedのサイトから「HK16K33」で引っかかったコードを導入。LEDのパターンが手持ちのやつとは違ってたり、手持ちのは「:」が3桁目になってる5桁表示だったりで、元のコードを書き換えつつ無事に表示できるようになった。

 次はネットに接続ですね。

 そうそう、今まで使ってた(まだ外してないけど)クランプ式のSanguinoベースの自作の電力計。スマートメータの値とそれほどズレがないのはびっくりした。

2016/08/14

mbed1768版HEMSその後

 今朝起きた時も無事に10秒おきのデータ取得が動いていた。
 今日は休日当番なのでそのまま出勤。
 仕事を終わって帰宅してもまだ無事に動いている。

 ということでスマートメータとの通信部分はほぼこれで良いでしょう。実運用時は1分に1回か5分に1回程度のデータ取得になりますし。

 続いて現在値表示部を検討。7セグのLEDで良いかなと思いつつ、ニキシー管はどうだ?と相場を調べたら。まだ高いわな。eBayとか当たれば違うんかな。汎用のドライバ基板&ソフト書くのもめんどくさい。やっぱ7セグLEDで行こう。そして死蔵品のフルカラードットマトリクスLEDと連携するのも良いかな。

2016/08/13

BP35A1奮闘続々編

 Arduino Dueのハードシリアルで試してみました。化けました。
デバッグ用の出力が9600bpsで遅すぎて他の処理の足引っ張ってる?
115200bpsに変えたら動作するようになった。でも、たまにBP35A1から化け文字もらって死亡。

 今、BP35A1を9600bpsかつ文字間ウエイトをいれてますが、いっそ取っ払って文字間ウエイト無しの115200bpsで再度mbedでやってみようと思いやってみた。

 すこぶる健康に動いている。返信文が化けて帰ってきて止まってしまうことはあるが行けそうな感じ。なので、やっぱmbed1768でもう少し頑張ります。

 その後、然るべきところにTimerクラスでタイムアウトのロジックを入れたら、近場のイングレスの焼かれたポータルを小1時間修復して帰って来ても無事な模様。このまま明朝の出勤時まで無事だったら、LCD表示やらサーバへのRESTでのデータ送信やらの周辺のコードを追加していきます。

2016/08/10

BP35A1と格闘中

 工事のあった週の週末にはBルートのIDとパスワードが届いたので、スマートメータからの読出しのテストをしている。

 最初にPCでpythonのサンプルを試したらサクッととれた。居間からやっててメータボックスの中のスマートメータに対しても通信は問題ないみたい。

 続いて、ESP8266単体でのテスト。コードはここのをベースにSoftwareSerialはesp用のを入れて、さらに参照サイトの様にBP35A1との通信は9600bpsまで落としてみたが、受信欠落してしまう。
ESP8266でできると小さいし、無線LANで直RESTでデータ送信もできるので良いのだが。BP35A1とはソフトウエアシリアルではなくハードシリアルでつなげばいけそうではあるが。

 うって変わって、mbed1768でのテストに変更。ソースはESP8266の時にいただいてきたのをベースにmbedに合うように修正。mbedですらも、標準Serialだと受信欠落する。デバッグ用にPCともつないでいるからか。バッファリングしないとだめだぁとMODSERIALに変えてみた。したら、欠落することなくスマートメータとコネクトまではできるようになった。しかしそこから進まない。
 どうやら、ECHONET Liteの電文に0x00があるのがバッファリングするMODSERIALだとダメ臭い。MODSERIALはpc側だけにして、BP35A1とはRawSerialにしてみたら、電文がputcできるようになって、無事にワットが受信できるようにはなった。しかし、何度かループさせてると、受信データにゴミがはいることがあり止まる。

 だいぶ元のコードがやってる事がわかってきたので、シリアルのライブラリが便利なArduino系のESP8266単体に戻してハードシリアルでテストしたいと思う。これでダメだったら、Arduino Due出してくるかね。

2015/06/12

5連結

載せ基板を5連結して80×16になりました。

そしてマイコンはArduino系からmbed系に変更。とりあえずLPC1114で、
mbed単独でやるかRaspberryPiをかますかは未定。でも、ネットから文字列を持ってきて加工してとかだとPi使ったほうが簡単だよね。

2015/06/02

久々にマトリックスLEDに手を出す

 値段の下がったaitendoのマトリックスLED基板&LEDセットをゲットして2年前にやろうとしたことを再開。マトリックスLEDは自前で基板配線すると大変なので手を抜いた。最初に使った1枚目のキットは集合抵抗のハンダ付けがダメで3列光らなかったので自力で修正した。
 8x8LEDを4つが1ボード。シフトレジスタが載っているので横に連結できる。5セット買ったので80×16にできますが、1セットは違う使い方をしたいので64×16で使います。
 とりあえずArduinoとつないでボードの素性を知るべくテストしてますが、最終的にはmbedとつなげます。フォントデータがあるので。(i2cやSPIのEEPROMにフォント入れる手がありますけども)

2015/05/26

WIZ550ioは動いたけども



WIZ550ioを手に入れて、LPC824で動かしてみた。普通に動く。
でも、サイズがデカい、でかすぎる(画像の左上の黄色い基板)。mbed LPC1768よりもデカい。これは使えない。
なんとかWIZ820io(画層左下の黒い基板)を動かしたい。

WIZ820ioInterfaceのコードを読んでて、CPU限定でMACアドレスを書き込んでいる部分を見つけて、これか!と思ったけどなんかうまくいかず。先は長そう。
やはり、一旦LPC1768で作っておいて、解決法がわかったらLPC824 and WIZ820ioに移植するのが無難そう。

2015/05/23

SSCI mbed LPC824のSPI(とりあえず)使えた

 スイッチマトリックス(SWM)をいじるとSPIが使えないというかハングする件。そもそもデフォルトはどういう設定なのかを探ってみた。

 mbedの開発系のサイトのソースを見る。このあたりHALのコード。PeripheralNames.hに

// SPI: MOSI, MISO, CLK, SEL
#define MBED_SPI0 P0_26, P0_25, P0_24, P0_15

という記述があって、その通りにSPIを接続したらSPI動作しました。
SPIが使えることはわかったのだけども、その後にWIZnetのライブラリがW5200指定するとコンパイルできない状態で先に進まない。

LPC824を使ってる人が少ないのでいろいろ解決してないのだろうと思う。王道の初代mbedのLPC1768の4台目を手に入れたので、一旦そっちで開発します。
こいつはこいつでブレッドボードにはデカくてプロトタイピングしにくいし下手するとraspberry Piと値段は変わらないのだけども、PiはOS込みで使いにくい部分と使いやすい部分がある。

2015/05/20

ハマる

 ssci mbed LPC824でSPIを使おうとしている。
 使いたいのはwiznetのハードウェアネットワークチップ。

 手持ちのSPIデバイスで一番簡単なのはSPI SRAM 23K256。LPCXpresso824MAXで試したがダメ。なんか書き込んだ文字列が化けてる。LPC1768ではどうかと試したが同じ。これは23K256が壊れてるっぽい。同じような23LC512が手持ち在庫にあったので、こっちで試したらOK。LPCXpresso824MAXもOK。

 ではssci mbed LPC824ではどうよ。・・・ダメだ。しかもUSBでマウント元のUbuntu側も固まってしまって困る。

 一旦復旧作業。イカ醤油ポッポ焼きを再構築。

 これでさらに実験がやりやすくなった。

 多分SwitchMatrix_Init()の書き方が違うのだとは思う。

 Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_SWM);は使えないから
 どこかで見かけた LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7 p="">

2015/05/18

SwitchScienceのmbed LPC824復活

 先週SwitchMatrixの設定を替えてから動かなくなった上に、UbuntuからFirmwareの書き換えを試したら更に状況が悪くなったSwitchScience mbed LPC824。
動くソフトをISPで書き込めば戻るんじゃないかという思いで試してみた。

 確実に動くmbed_blinkyをISPで直接LPC824に焼くべくイカ醤油ポッポ焼きを使用。
LPC1768側のp28をSSCI mbed LPC824のP0_0(DIP的に16ピン)、p27をP0_4(DIP的に2ピン)に接続。mbed LPC824のP0_12(DIP的に25ピン)はGND。
この状態で双方のUSBコネクタをONにしてイカ醤油ポッポ焼き側にbinファイル書き込み。これでISP書き込みOK。リセット後にLPC824のLED1につないだLEDが点滅。

 あとはSSCI mbed LPC824をmbedたらしめているLPC11U35の復旧。最初にLPC824側がおかしくなった時には、LPC11U35のドライブにはFAIL.txt(ファイル名失念)みたいなファイルができてた。なにかおかしいのだろうとFirmwareをUbuntuから入れ替えたらその後はドライブが見えなくなった。でも、SSCI LPC824裏のショートするPADをショートして電源入れればCRP DISABLEDのドライブは見える。Ubuntude
そこのfirmware.binを削除してファームを保存して、CRP DISABLEDをumountして、SSCI LPC824をUSBから外して、5秒以上待ってUSB接続しても何も起こらない。
 試しにWindowsで同じファーム書き込みをしてみた。VirtualBOXのWindows8.1にて。・・・・なんだよ無事にmbedドライブがつながりましたよ。UbuntuとWindowsで何が違うのだろう?

 そもそもSwitchMatrixが原因で壊れたのかはわからないのだけども、ISPで直接プログラムを書き込んでしまえば治せる事がわかったので安心していじれるようになった。その際にLPC11U35側を疑っていじるのはやめておいたほうが良さそう。

2015/05/10

LPC824でIoT計画

 WIZnetのW5200搭載のWIZ820ioが手持ちに2つあるのでこれとLPC824をつなごうかと。ATmega328Pなで動くのでLPC824でも動くだろうと予想。
 
 ネタは帰宅通知。
 まず、アンドロイド端末でアプリを作る。帰宅時に起動すると居場所を一定間隔でMy鯖に通知。LPC824のIoTはそれを読み取って8×8ドットマトリクスのLEDとか何らかの形で表示。アンドロイドアプリは家のWifiを捕まえたら自動終了。という感じ。IoT側はなんとでもなる、メモリが足りなければFRDM-K64Fを使ってもよし。問題はアンドロイドアプリは昔1回ADKのサンプル的なのを動かしたくらいな事。まー作例はたくさんありそうなので大丈夫でしょう。

2015/05/06

LPC810

 うなぎを食べたあとツレと分かれて立川のオリオン書房ノルテ店へ。

 『ボクのLPC810工作ノート』を買いに。いつものアートアベニュー立川の店舗利用者の駐輪場はパンパン。でも駐輪場の二階部分に2つ空きがあったので助かった。
 『地図中心』の最新巻が北陸の地方鉄道と新幹線だったのでゲット。あと、今朝ツレから『八王子歴史物語』の1巻はないの?と言われてたのが在庫1つありだったのでゲット。で、元々の目的の『ボクのLPC810工作ノート』もゲットして帰宅。

 LPC810の開発をするために現Linux環境にXpressoIDEをインストールしようとしたがエラー。いろいろやってみたが変わらず。時間が惜しいのでVMのWindowsに入れよう。で、焼くための環境としてイカ醤油ポッポ焼きを構築。LEDチカチカは行けました。時間をみつつ整備します。LPC810は2つしか手持ちがなかったので秋月で10個買い増し発注しました。1個75円なので750円。

2015/01/20

金魚カメラがもうダメかと思ったら

 本日帰り際に金魚カメラの画像を見たら、15:00台に2枚の画像しかなくその後が続いていない。
 ハングしちゃうからArduinoだったのをmbedに作り替えたのにこっちでもダメなのか?と帰宅。まだ作りなおして3週間なのに。

 デバッグコンソールをつないでみてみたら、CDSへの環境光が足らずもう夜になったと判断して撮影をやめていた模様。
プログラムでハードコードしてある閾値をちょっと変更して焼き直したらOK。対処完了。
まぁ、水温のデータは上がっていたので、ハングしてるわけではないなとは思っていたのだ。

2014/12/28

mbed版水槽カメラ 運用開始

 秋月の4×4基板(あれ?これ以前は大量購入すると安くて(100個で@5円の500円)カット前の基板を変えたのだが)を使って、きばん本舗のmbed BaseBoard イーサネットの上にかぶせるシールド基板を作成。mbed BaseBoard イーサネット自体にもユニバーサル基板部分はあるのだけども、今回はCDSつけたり外部との接続端子だったりでその部分は使い物にならないのでした。

 
 上にシールド基板を載せてピンヘッダを下ろすとなるとmbed BaseBoard イーサネットの標準のコネクタだと狭い(mbedの基板の幅がちょいあるから)ので更に外側の部分にコネクタを増設しました。

 んで、回路を作成して、コードを変更しようとしたらエラー。なーんか昨日も重かったりしたのだけども、mbedのオンラインコンパイラがエラーを返す。なんどかトライしていると通るのでとりあえず入れ替え出来るレベルにして、今までのArduinoの水槽カメラと入れ替えた。まだ、コードは手を入れたいので、メインマシンのUSBハブ経由での接続&電源供給です。

 カメラ自体は同じLinkSpriteのシリアルJPEGカメラなので特別変わったことはないでしょう。