Arduino一覧

ATtinyでのi2cの復習

昨年末にやったことの復習と発展。

 ATtiny85にArduinoベースのコードを書き込んでのPCA9685を使ったLED調光点灯。CDSもつけて、暗くなったら点灯。
デバッグ用にST7032チップのi2cの8×2液晶も接続。昨年末のテスト時に、i2cとデバッグ用のコンソールのSoftwareSerialが両方同時利用出来なかったので。どちらかならば動いた。ATtinyはタイマーが2つしか無いのが原因でしょうか?
 で、ATtinyのUSIを使ったi2cライブラリのTinyWireMだとi2cのメッセージ送信がsend()なので、ST7032のライブラリを改造してsend()に変更。もう、Arduino1.0より前の環境で作ることもないだろうから、逆にTinyWireMの方をwrite()対応に変えたほうが良かったかも。
という訳で下の画像のように、無事にi2c液晶も表示OK。

20130929_01

 実機用にはPCS9685は今の半分のサイズの変換基板に載せたいです。ただ、ピンが片側2列のきゅうきゅうになります。
 とおもったけど、片側14ピン1列の変換基板で行くかも。コモンのアノードは各LEDでまとめて、基板へは太めの線1本で持ってこようと思うので。

20130929_02

 ただ、やや不安点があって、たまに液晶に出しているmillis()が止まっている時がある。タイミングは不定、つかめてない。LCDを使わなければ問題が出なくなるかも不明。別に止まっても困るようなグッズではありませんけどね(笑)。

 夕方電池を色々試してみた。どれもステップアップコンバータで3.3Vに昇圧した状態で。
CR2032、CR123Aでは電流が足りない。逆に単4乾電池1本のほうが明るい。単4を2本並列か単3を1本で運用テストしてみます。


イルミネーションリース作成開始

20130928_01

 Amazonで840円で買った上の画像のリースをベースに仕込みます。去年、一昨年はツレのリースに作りこんでいたのですが、自分のものでないとホットボンドでLEDの付けとかが気になって気になって。今年は自前のリースなので好きにいじれます。
 LEDのの回路の方もブレッドボードを引っ張り出してきて検討中。

20130928_02

 マイコンはATtiny85を予定してますので、デバッグ用にi2cのLCDをテストしてるのが上の画像の右のほう。

 さて、今年はLEDの配置、配光、パターンをどうするかね。
 


今日も電力計のソフトウエアの続き

 天気が悪いので、立川諏訪神社の例大祭に行って屋台フードを食べる計画は中止。そして、昨日の続き。

 1日毎のデータの保存先のEEPROMのアドレス計算が間違っていたのを修正。また、サーバのデータベースから8/15日以降のデータ毎日のデータを取得して、追加書き込みしておいた。これでそこそこいい感じの現在電気料金が表示できている。
 他は、XBeeのEndDeviceからの定期プッシュ通信を受信しメモリにためておく部分と、ためてるデータを別のXBeeからの要求で返却する部分。データは旬をもたせてるので30分以上古いものしか無い時は、要求者には0xffffを返す。10ビットADCの値をu_int16で返してるのでこれで見分けつくしね。

elfファイルを見る限りはRAM使用量はまだ4Kbyteには達していない。が、3,871byteなのでATmega644Pだったらギリギリだね。1284Pで良かった。プログラム自体は23Kbyte程。GLCDのフォントデータもあるものの、欧文フォントのみなので小さなもんです。


電力計ソフトをいじる

 朝からソフトをいじってました。GLCDのフォントでArialとFixedと同時表示しようとするとなんか変になる感じでハマってました。出るパターンの時は同時表示できるのだけど、ダメになると原点にあとから表示したArialが出てくる。

 20130824_01

 今日のところはフォントをFixedに統一して安定終了。電気料金の締め日からの使用量とか電気料金とか一応出ます。データがたまってないので参考程度ですが。
 そして、秘密のボタンを押すと1日の1時間毎のグラフも出ます。

20130824_02

 過去24時間の電気使用量を1時間単位にしたグラフ。黒い棒が現在値。それより右は昨日の実績ってことで。横軸の基準線はまたあとで追加します。

 そろそろ年末のイルミネーションに手を付けたいので、電力計のソフト更新はじわじわとやっていきますわさ。こちらはハード的には固まってますからね。


ATmega1284Pが届いたのでsanguino化した

 お盆前に発注したら、店頭在庫切れで入荷待ち。というWebショップと在庫の連動ができていないパターンで、再入荷待ちだったATmega1284P DIPが届きました。

 早速ブートローダを書き込んでSanguino化。でもAVRISPMk2だと書けてるのかどうか分からず、ArduinoISPを作って焼き直し。

20130821_01

 この段階でもD13のLEDは点滅せず。プロトタイプの方の電力計ブレッドボードでBlinkのスケッチを書き込んだらLED点滅しました。
SangunoのbootloaderのHEXにはBlink部分は含まれてないのかな。前回もこんな感じだった様な記憶が蘇りました。
 ここにメモっておけば、次は大丈夫でしょう。

 これで実機とプロト版が同じマイコンになったので、コンパイル&書き込み時にマイコン種別を選択する手間が減ります。

 で、グラフ表示のテスト。昼休みに10分くらいで書いたものをプロト版に入れた。データは昨夜から本番機でデータを録りためているEEPROMを入れ替えて。
とりあえずグラフはでるようです。デザインとかはおいておいて。意外と塗りつぶさないrectangleで良さそう。
 20130821_02


i2c EEPROMテスト

 帰宅後、i2cEEPROMの書き込みと読み出し。物は秋月でも1個90円で売っている、マイクロチップの24FC256という32Kbyteのやつ。きむ茶工房さんのライブラリだと書き込んだあとすぐに読みだすとエラー。「delay(10)くらい入れると良い」というブログ記事を見かけたのでそのとおりにしたらOK。

 あとはintやらlongやらfloatやらもbyte *で渡してsizeof分操作を繰り返せばOKでした。使えそう。
 10分に1回保存すると1日で2byte x 144必要。1日毎は2ヶ月ぶん(4byte X 32)くらい、あとは1ヶ月毎に3年分(4byte X 36)くらいか。

そして、電気代計算の参考にするために東電のサイトへ。東電のサイトの電気料金の計算はわかりづらいね。「±」で表示している必要性がわからん。燃料費調整単価などの係数なりがマイナスになりゃええだけんじゃん。わかっててわかりづらくしてるんだと思うけど。