PICキット 周辺モジュールの製作

周辺モジュールと言っても、簡単なものばかりで、製作にてこずる事はありません。
と言うより、笑っちゃう様な物ばかりです・・・
では、B群製作編2ページ目に行きます













SO1602用XC8関数群

 SO1602v1.h
 SO1602v1.c

 MSSP02b.h
 MSSP02b.c
NO-23 SO1602有機EL表示器 16桁2行 I2C接続
    電源3.3V 注意!!


秋月電子で売っているOLEDモジュールです
接続コードを付けただけの簡単な代物です
接続コードの途中に秋月電子の16×16ホールの小基板を中継させてます。
この基板で、/CSピンとSA0ピンはGNDに落としています。
プルアップ抵抗は接続されていません。
SDAinピンとSDAoutピンは接続コードコネクタ部分でショートさせています。

VDD:3.3V
I2Cインターフェイスで接続され、スレーブアドレス:78H(7AHに変更可)
基本的な制御方法はAQM1602と同じで、コマンドワードで1バイトを送信する。

AQM1602との相違点
1)基本的にイニシャライズが不要
2)2行目DDRAMアドレスがA0H~AFHとなっている(AQM1602はC0H~CFH)
  ちなみに、1行目は同じ80H~8FH
3)とても見易い
4)拡張コマンドがある

結構高価なので、需要は少ないと思いますが・・・
電源3.3V系バス上でのI2C機器の一員とする場合は良いかも


有機ELディスプレイモジュールのセッティング

OLEDを購入したままでは使えないので、以下の小工作を行います。

①小基板の製作
 秋月の16ホール両面基板を使用します
 ここでは1~4ピンの小工作を行います
 a) VCCとVSS間に0.1uのセラコン接続
 b) /CS(3ピン)をVSSに接続
 c) SA0(4ピン)をVSSに接続(後でVCCに切り替えできるように配線)

②接続ピンの製作
 14列のピンソケットを使用します、画像を参照してください
 a)7ピンはSCLとして接続
 b)8ピンと9ピンははんだ付け時に両ピンを短絡接続してSDAとします


SO1602用XC8制御関数群

使用方法は、関数名が違うだけでAQM1602の関数と同じです。

SO1602制御関数群

1) SO1602_INIT(void)
   この関数を呼び出さなくとも動作はしますが、一応使った方が良いかも
   引数:無
   戻値:無

2) SO1602_CMD(unsigned char)
   OLEDコマンドを送信します
   引数:8bitのOLEDコマンド
   戻値:無

3) SO1620_WRTD(unsigned char)
   OLEDデータ(文字コード)を送信・表示します
   事前に表示開始位置アドレスを送信しておく事が必要です
   連続送信しても表示位置はLCD側が自動インクリメントします
   printf()等で使用する低レベル関数はこれを指定します
   引数:8bitのOLEDデータ
   戻値:無

4) SO1602_PUTC(unsigned char1,unsigned char2)
   指定の表示位置に1文字を表示します
   引数1:文字コード1バイト
   引数2:表示位置アドレス1バイト
   戻値:無

5) SO1602_PUTL(unsigned char1配列,unsigned char2)
   指定の表示位置から文字列を表示します(最大32文字)
   引数1:文字列格納配列アドレス
   引数2:表示開始位置アドレス
   戻値:無

6) SO1602_PUTL1(unsigned char配列)
   OLED1行目の最左側から文字列を表示(最大16文字)
   引数:文字列格納配列アドレス
   戻値:無

7) SO1602_PUTL2(unsigned char配列)
   OLED2行目の最左側から文字列を表示(最大16文字)
   引数:文字列格納配列アドレス
   戻値:無

8) SO1602_CLRLCD(void)
   OLEDの表示をクリア
   引数:無
   戻値:無

9) SO1602_CONST(unsigned char)
   OLEDのコントラスト調整(明るさ)を行います。
   引数:コントラスト値 0x00(最少光度)~0xFF(最大光度)
   戻値:無










AE-BME280用XC8制御関数群

MSSPを呼び出します

 BME280v1.h

 BME280v1.c

 MSSP02b.h

 MSSP02b.c

NO-24 AE-BME280 環境センサー I2C
      電源 3.3V 注意!!

ここでは、秋月電子で売っている標記モジュールの事を言っています。
気圧・温度・湿度がこれ一つで測定できる、一見便利そうなセンサモジュールです。
計測データは気圧と気温が20bit、相対湿度が16bitで出力されます。
そして、センサチップ内に補正データが書き込まれています。
その補正データを事前に読み込み、計測データと演算して測定値とします。
マニュアルを見ても、それら一連の補正演算処理は当局レベルでは良く解らなかった・・・
所が、スイッチサイエンス社のホームページでもBME280モジュールを扱っており、
さらに参考プログラムが公開してありました。
ここではその補正演算処理関数を使用させて頂きました。

プログラムはXC8で使用する事を想定しています。
プログラムメモリを大量消費しますので、 PIC16F1823ではメモリ不足で動きません。
できれば16KワードのPICでの使用が望ましいです。


AE-BME280ピン配置
① VDD 1.7~3.6V
② GND
③ CSB チップ選択(VDD)(注1)
④ SDA
⑤ SDO スレーブアドレスの下位ビット決定(注2)
⑥ SCK 


注1)
基板のJ3をショートする

注2)
GND接続でスレーブアドレス0xEC、VDD接続で0xEEとなる



BME280用XC8制御関数群

詳細はソースファイルを参照してください
ヘッダーファイルの広域変数も確認してください
最終的な計算も必要ですので、サンプルファイルも参照してください

(1) BME280_SET_MODE(void)
   センサの基本的な動作設定を行います。
   この関数の設定は、下記の通り

   1)congigレジスタ 設定値0xA0
     スタンバイ時間(t_sb) 1000ms
     IIRフィルタ OFF
   2)ctrl_measレジスタ 設定値0x27
     温度オーバーサンプリング(osrs_t)= ×1
     圧力オーバーサンプリング(osrs_p)= ×1
     センサ動作モード(mode)= ノーマルモード
   3)ctrl_humレジスタ 設定値0x01
     湿度オーバーサンプリング(osrs_h)= ×1

   引数:無
   戻値:無

(2) BME280_WRTRG(unsigned char 引数1、unsigned char 引数2)
   センサのレジスタにデータを送信します
   引数1:レジスタアドレス
   引数2:書き込みデータ
   戻値:無

(3) unsigned char BME280_RCVRG(unsigned char 引数1)
   センサのレジスタ データを受信します
   引数:レジスタアドレス
   戻値:8bitデータ

(4) BME280_READ_TRIM(void)
   専用の広域変数(dig_xx)に、それぞれのトリミングデータを格納します
   引数:無
   戻値:無

(5) BME280_READ_DATAL(void)
   専用の広域変数(pres_raw,temp_raw,hum_raw)にトリミング前の生データ格納
   引数:無
   戻値:無

(6) calibration_T(signed long int 引数)
   温度の補正計算を行います
   戻値は ℃、分解能は0.01℃
   ただし、「5123」の戻値は「51.23℃」に等しい
   引数:温度生データ(temp_raw)
   戻値:signed long int 温度値

(7) calibration_P(signed long int 引数)
   圧力の補正計算を行います
   戻値「24674867」は、24674867 / 256 =
   96386.2 Pa = 963.862 hPa
   引数:圧力生データ(pres_raw)
   戻値:unsigned long int 圧力値

(8) calibration_H(signed long int 引数)
   相対湿度の補正計算を行います
   「47445」の戻値は、47445 / 1024 = 46.333%RH
   引数:湿度生データ(hum_raw)
   戻値:unsigned long int 湿度値










←基板配線

見えずらいですが解りますでしょうか?
画像左下に基板上の配線図が書いてあります
























NO-25 フルカラーLEDモジュール 

砲弾型のLEDで秋月電子で購入したもので、「OSTA5131A」と言う型番です。
このLEDはカソード・コモンとなっています。
5Vで各色それぞれ約15mA前後の電流を消費します。
PICからは電流を吐き出す形になります。
LED内部の各色の発光光度は、同じ電流で赤と青とに対して緑がやたら明るいです。
このままでは3色混ざっていないので、ただ3色光っているだけです。
各発光色を分散する処理をしないと、フルカラーにはなりません。
LEDに散光キャップを被せたり、乳白色アクリル板等を透過させる等は必要です。

製作に用意する部品
  ① 16ホール基板2連(秋月電子)
  ② LED「OSTA5131A」
  ③ ピンソケット 4連1つ、単独1つ
  ④ 抵抗、120Ω×2、220Ω×1
  ⑤ 配線コード少々
  ⑥ 散光キャップ

戻る  実験・製作の記録TOPへ戻る