aitendo OLEDモジュールをRaspberry Piで利用する

目的

aitendoさんで取り扱っているとても安価なOLEDモジュールをRaspberry Piでも使えるようにする

aitendoさんのOLEDはドライバはSSD1306系の物が多く解像度が違うだけなので、今回利用したAdafruit SSD1306ライブラリで動作する物と思われます。

利用した部品

電源

3.3V単一電源 (Raspberry PiのGPIOから取り出しのみで動作させています)

組み立て

キットなのでチップ部品とOLED付きのフラットケーブルはんだ付けが必要となります、また写真にあるようにI2C+電源の最低限の配線で制御したい場合は、多少の配線が必要となります

気をつける点

  • aitendoさんのホームページにC4, C4 1μF とありますが C4, C5となります
  • R1のランド印刷がありません R2につけましたが動作電源3.3Vのみでは必要ありません
  • チップLEDを光らせるためには別途チップ抵抗が必要です(チップLEDをハンダ付けする必要はありません)

チップ部品の仮止め

ランドの片側に薄くハンダを載せチップ部品を上に載せ軽くランドを温めて部品を落とすように仮止めします。

※抵抗が間違った位置にあります、後の写真では正の位置にあります

チップ部品の本止め

その後逆側のチップ部品の足をハンダ付けし、仮止めした方を本止めします。

フラットケーブルのハンダ付け準備

端子部分にハンダを少し流しておき、フラットケーブル位置を慎重に合わせます

フラットケーブルのハンダ付け

端子部分に軽く小手先をあてると、吸着されるようにくっついて行きます

怪しい部分は念のため小手先にほんの少しハンダを載せフィルムを抑えます

配線を加える

DataSheetとにらめっこをしても分からない部分がありましたが下図で動作しました。

  • BS1/BS2 : High/Low でI2C動作モードとなります
  • D3-D7 : GND (こちらは実施しなくても動作しますがノイズ防止用)
  • VBAT : +3.3V (内部の昇圧回路利用のため)
read more

Arduino Trinketでヘリポートを作成(途中)

目的

  • RCヘリコプターのヘリポートを作成する
  • 発着時にLEDをアニメーション点灯させる
  • 距離に応じてLEDのアニメーションが変化する、自分でパターン編集出来るようにする

出来上がった部分

残作業は距離測定センサのケース埋め込み、USB端子のケース埋め込みです。

3Dモデル

AutoDesk 123D Designを利用して下記を作成しました。

印刷イメージ

ダヴィンチ Jr. 1.0 にて印刷しました。

完成物

印刷可能サイズ、ぎりぎりの大きさで印刷したので迫力があります、大体 140mm * 140mm * 50mm です

印刷に掛かった時間、フィラメント

購入時付属のフィラメントが底をついたので、2本目をセットしてから真新しい状態で印刷しました 印刷時間が 20h 程、利用したフィラメントが 54m でした。 s

失敗談

WS2822Sの大きさピッタリに合わせて 3Dモデルも作成してハンダ付けする前はちょうど良いサイズだったのですが
ハンダ付け後は2,3mm 削る必要が出てきたため、リュータでガリガリと穴を広げ余裕を持たせた上で
ホットボンドでくっつけております。。。悲しい

回路

下記記事のLED個数と点灯パターンを変更しました。
http://kouzu.info/distance-sensing-on-adafruit-trinket/

ソースコード

#include <Ws2822s.h>
#include <avr/interrupt.h>

// WS2822Sセットアップ
#define NUM_PIXELS 6   // 使用するWS2822Sの数
#define LED_PIN 1      // WS2822SのDAIピンにつなげるTrinketのピン番号
read more

3Dプリンタ ダヴィンチ Jr. 1.0 レビュー 2.印刷準備(Tips)

印刷を始めるまで

下記動画を初め分かりやすい動画が公式チャンネルよりYouTubeにUpされております。

こちらの動画に下記項目が含まれているので印刷準備まで整います
注意事項を後述します

  • フィラメントのガイドチューブ設置
  • ソフトウェアのインストール
  • SDカード挿入
  • 台座(プラットフォーム)への固定材貼り付け
  • フィラメント取り付け
  • 印刷

Tips/気をつけるべき事

フィラメントのロード選択後OKを押さないといつまでもフィラメントが出続けます。

初めてのフィラメントロードで面白がって見ていたら、出続けました。

Z軸のキャリブレーションがされていませんでした

Amazonのレビューワーに同様の事象で困っている方がいらっしゃいました
こちらの製品はキャリブレーション不要を謳っており、工場出荷時設定に1.1mmのZ軸オフセットが設定されておりましたが、その状態では フィラメントリールが一切回らず、時折ガタンという音がしていたため 2.0mmのオフセットにした所印刷を行うことが出来ました。
皆様もお気をつけ下さい。

初めて3Dプリンタ動作を見たため、最初に下地を書いていると思い込んでいましたが
下に押さえられすぎてフィラメントが出ていないだけでした...orz

下地材は3Mマスキングテープがお勧めです

付属の下地材は3枚しか付属していないため、念のため他の3Dプリンタでも有用と噂の3Mマスキングテープを試してみたところとても良かったです。付属の物に比べてフィラメントの定着が良く、剥がしやすい。 言うこと無しですね。 (幅広モデルを買わないと貼る回数が増えて大変ですのでご注意を)

付属のシートを利用した場合

温度等でも若干変わるかもですが、高速印刷でフィラメントの定着不具合が発生しました。

3Mマスキングテープを利用した場合

しっかりと定着してくれています。

印刷時の騒音について

ファンの回る音が殆どの雑音を占めていて、空気清浄機をフルパワーで動作させている中に、可聴域のステッピングモータ駆動音が聞こえるような感じです。
フロントのカバーは中々優秀で耳障りな高音ノイズが結構カットされているように感じました。

(個人的にはCNCに比べるとステッピングモータ駆動音もとても静かで驚きました。)

印刷時の匂いについて

ほんのりと甘い匂いがします、個人的には嫌な匂いではありません。 (まだ透明しか利用した事がないので色により違うか不明ですが)

read more

Adafruit Trinketで距離センサを利用

WS2822Sのアニメーションについては下記記事を参照下さい
Adafruit TrinketでWS2822Sをアニメーション点灯

目的

  1. Adafruit Trinketで対象物との距離を測定する
  2. 距離センサはSHARP GP2Y0E03赤外線距離センサを利用する
    秋月電子で800円弱で購入、参考にしたデータシートは下記
    http://sharp-world.com/products/device/lineup/data/pdf/datasheet/gp2y0e03_e.pdf

出来上がった物

回路図

  • Trinket 0Pin
    WS2822SのADDRI (Address Input) に接続 → 他のWS2822Sへチェーン接続
  • Trinket 1Pin
    各WS2822SのDAI (Data Input)に接続
  • Trinket 2Pin
    SHARP GP2Y0E03のアナログ出力 Vout(A)を接続
    GP2Y0E03のピンアサイン/出力電圧詳細は上記データシートを参照
  • SHARP GP2Y0E03
    上記のブレッドボード図の左から下記となります
    1 | VDD → 3.3V
    2 | Vout(A) → Trinketのアナログ入力へ
    3 | GND → GNDへ
    4 | VIN(IO) → 3.3V
    5 | GPIO1 → 3.3V
    6 | SCL → I2C用のため利用しない
    7 | SDA → I2C用のため利用しない

read more

Adafruit TrinketでWS2822Sをアニメーション点灯

目的

  1. WS2822SをAdafruit Trinketから制御する
  2. アニメーションパターンを自分で定義して様々な色/早さで光らせる
  3. アニメーションを簡単に切り替えられるようにする
    (最終的にはヘリポートにLEDを埋め込みRCヘリコプターの距離に応じてパターンを色々変化させるため)

出来上がった物

回路図

  • Trinket 0Pin
    WS2822SのADDRI (Address Input) に接続 → 他のWS2822Sへチェーン接続
  • Trinket 1Pin
    各WS2822SのDAI (Data Input)に接続
  • Trinket 2Pin
    点灯パターン切り替わりテストのためGNDへ接続出来るようにジャンパケーブルを接続
  • その他
    TrinketのGNDはWS2822Sと共有

注意点 WS2822Sの電源はTrinketから出さないこと

ソースコード

#include <Ws2822s.h>
#include <avr/interrupt.h>

// WS2822Sセットアップ
#define NUM_PIXELS 3   // 使用するWS2822Sの数
#define LED_PIN 1      // WS2822SのDAIピンにつなげるArduinoのピン番号
#define ADR_PIN 0      // WS2822SのADRIピンにつなげるArduinoのピン番号

// スイッチセットアップ
#define SWITCH 2

Ws2822s LED(LED_PIN , NUM_PIXELS);

// アニメーションパターンの定義
#define RGB 3
#define FRAME_MAX 3
read more

Adafruit Trinketでタイマー割り込みを使う

目的

タイマー割り込みを使って定期的に処理を実施する

  • WS2822Sの制御のため300ms-500ms程でタイマー割り込みを発生させシリアルLEDに色情報を再送信したい

Trinket利用時の注意事項

開発環境について (ArduinoIDE)

Adafruit ArduinoIDEを利用する必要があります
https://learn.adafruit.com/introducing-trinket/setting-up-with-arduino-ide
https://learn.adafruit.com/adafruit-arduino-ide-setup/mac-osx-setup

また上記アプリケーションをダウンロードした後にシステム環境設定→セキュリティとプライバシー設定から
[ダウンロードしたアプリケーションの実行許可] で すべてのアプリケーションを許可 にしないとダウンロードしたアプリケーションが壊れていますというメッセージが出てしまいました

PC/MACとの接続について(プログラム書き込み)

iMacをお使いの場合直接接続する必要があるかもしれません
USB2.0hubを利用した方がよいとの記事もありましたが
iMacを利用した際には直接接続しないとデバイスを見つける事ができないメッセージが出てしまいました。

早速Lチカ

基板実装のLEDでタイマー割り込みを確認 下記ソースコードにて2.4Hzの周期でLEDをBlinkさせる事が出来ました。

情報がなくて困ったのですが、下記サイトのPDFが非常に参考になりました。 http://w8bh.net/avr/TrinketTimers.pdf

TCCR1設定値の詳細がリンク先pdfに記載してありますのでぜひご確認下さい。
動作概要は下記となります

  • プリスケーラを設定し 488Hzを生成
  • カウントする値を100にセット
  • 100に到達したら ISR(TIM1COMPAvect) 関数が実行される

つまりLチカの速度を遅くするためには OCR1C = 100の値を大きく
逆にLチカの速度を早くするためには OCR1C = 100の値を小さくすればOKです。

digitalRead(ledPin) にて ledPin (1ピン) のH/L状態を読み取り
出力を反転させる事でLチカを実現しています。

また、loop 関数の中は常時実行されているため延々とdelayで1秒間何もしない状態を繰り返しておりますが、Lチカは待たされることなくタイマー割り込みで動作している事を確認できると思います。

#include
read more