I2C 送信を用いてキャラクタ表示に挑戦!(完結編)

ハードウェアに合わせて変更しよう

さて、SCL及びSDAのピン番号が定義されている箇所がわかりましたので、この部分を今回のハードウェアに合わせて変更しましょう。SCLP0.12SDAP0.11です。よって「ARDUINO_SCL_PIN」の「27」を「12」に、「ARDINO_SDA_PIN」の「26」を「11」に変更します。下図のように修正できたらオッケーです。

f:id:microworm:20200507162602j:plain

この状態で一度F7キーを押してビルドしてみましょう。すると、ビルドエラーが出たはずです(すみません、すぐに成功せず…)SeggerEmbeddedStudioの下にある「Output」の箇所を見みましょう。すると、「multiple definition of ‘UARTE0_UART0_IRQHandler’」というエラーが出ていることがわかります。

f:id:microworm:20200507162727j:plain

このエラーを解消する手立てですが、SDKに関するライブラリの定義の問題である様子が伺え、簡単に解決できそうにありません。そこで、今回は、google先生に聞いてみることにしましょう。( ´Д`) -Д-)おねげぇいたしやす

 

PCブラウザを起動し、googleを開いたら「multiple definition of ‘UARTE0_UART0_IRQHandler’」を検索してみてください。すると、先頭にNordic社が運営している「DevZone」という掲示板の1つの記事が出てきます。この記事を開いてみましょう。

https://devzone.nordicsemi.com/f/nordic-q-a/48318/multiple-definition-of-uarte0_uart0_irqhandler

 

f:id:microworm:20200507162939j:plain

 

この記事を読み進めていくと、中腹に以下のような記事があります。

 

f:id:microworm:20200507163045j:plain

引用元 :
https://devzone.nordicsemi.com/f/nordic-q-a/48318/multiple-definition-of-uarte0_uart0_irqhandler

 

修正していくよ

今回は、上記掲示板の回答に従って、sdk_config.hを修正してみましょう。SeggerEmbeddedStudioの左側にある「Solution Explorer」のツリー「Application」の傘下にある「sdk_config.h」をダブルクリックしましょう。

f:id:microworm:20200507163222j:plain

sdk_config.hを開いたら、スクロールをさせて、771行目付近まで移動します。すると

#define UART_LEGACY_SUPPORT 1」という行が出てきます。この行の先頭に「//」を付けてコメントアウトしたあと、その下の行に「#define UART_LEGACY_SUPPORT 0」という行を追加しましょう。これで、UARTのエラーに関する対処は完了です。

f:id:microworm:20200507164442j:plain

 

SeggerEmbeddedStudioNordic社のSDKを用いたプログラム開発でエラーなどが発生した場合、自分のコードを見直すことも大切ですが、まずはさっさとエラーメッセージをgoogleなどの検索エンジンで調べてみることが、早い解決につながることがあります。特に、今回のエラーの場合は、SDKの使い方に関するエラーですので、それをゼロから調べるのは骨の折れる作業です。

 

なので、エラーが発生した場合は、まずそのエラーコードをgoogleで検索し、どのようなエラーなのか、そしてそのエラーをどの様に対処したのかを確認するのが、解決への近道となります。(๑و•̀ω•́)و なるほどー

 

さて、プログラムの修正はこれで全て完了しました。これでビルドが通るはずです。では、F7キーをもう一度押しビルドしてみてください。「Output」に「Build up to date」という文字と、その下に「FLASH」「RAM」と書かれたメモリマップが表示されたら、ビルドは成功しています。 ٩( ๑╹ ꇴ╹)۶ やったぁ

 

もし、「Build failed」と示されている場合は、今までの修正に間違いがあるはずです。打ち込んだ文字が間違っていないかを確認してみてください。

f:id:microworm:20200507163402j:plain

 

ついに動作確認

では、ようやくLCDの動作を確認できる段階に来ました。前回提示した回路図を以下に示しますので、正しく接続されているかをもう一度確認しましょう。特に、電源(Vcc/GND)の間違いがないかは何度も確認しましょうね。

 

f:id:microworm:20200507163537j:plain

接続すると、写真のような形になると思います。

f:id:microworm:20200507164758j:plain

では、F5キーを押してみてください。以下のような画面になり、main関数の先頭の「APP_ERROR_CHECK~~」の行の背景が緑色になっているでしょうか?この状態であれば成功です。

 

f:id:microworm:20200507164935j:plain

さらにF5キーを押すと、LCDに「0123456789abcdef」と「Hello, World」の文字が2秒間隔で交互に表示されましたか?表示されれば成功です!

 

これで、I2C通信を用いてLCDに対して文字の表示が行えるようになりました。表示されない場合は、接続が間違っていないかどうか、プログラムの修正に間違いがないかを確認しましょう。

 

なお、今回展開したプログラムの説明はしませんので、ご自身でプログラムを確認して、どのように動作しているのかを確認してみてくださいね。

 

さて、ここまでISP1507-ALを用いてLEDの点灯、I2C通信を用いたLCDの制御まで行ってみました。次回は、I2C通信を用いたセンサデータの読み込みを行っていきます。

次の更新をお楽しみに!

 

I2C 送信を用いてキャラクタ表示に挑戦!(その3)

プログラムの修正をしよう

では、ここからは実際のプログラムの修正に入ります。

まず、下のリンク(aqm1602ctrl.c / aqm1602ctrl.h2)をクリックし、ファイルをダウンロードしてください。この2つのファイルを、「C:\nRF5_SDK_15.3.0_59ac345\examples\peripheral\twi_aqm1602」のフォルダにコピーしてください。このファイルは、今回当方で作成したLCDを制御するためのサンプルプログラムになります。

 

              f:id:microworm:20200315220250p:plain f:id:microworm:20200315220331p:plain

ファイルを直接張ってあります。アイコン右クリック「ファイルを保存」で

ファイルを保存してください。保存したファイルを開き、ソースコードが

見えればオッケーです。

 

では、先程書き換えた「twi_sensor_pca10040.emProject」ファイルをダブルクリックして開きましょう。SeggerEmbeddedStudioが開き、書き換えが正しく行われていれば、以下のような画面が開くはずです。

f:id:microworm:20200314181146j:plain

このサンプルプログラムは、LM75というマキシム社のI2C対応の温度センサを読み取るサンプルプログラムとなっています。今回は、このプログラムを書き換えながら、LCDに対応できるように改造してきます。( •̀ω•́ ) さぁ、やるぞー

 

続きを読む

I2C 送信を用いてキャラクタ表示に挑戦!(その2)

ソフトの準備とLCD制御

前回はI2Cを使ったLCDの表示の前編として、I2C通信の概要とハードウェアの準備までの説明をしました。今回は、ソフトウェア側の準備をし、実際にI2CによるLCD制御を行うところまでを作ってみましょう。

 

前々回のLEDの点灯の回では、NordicSemiconductor社から提供されているSDKのサンプルコードを修正する形で進めましたので、今回も同じ要領で進めていくことにします。ただし、今回は1つ新しいことをします。

それはnRF52832(ISP1507-AX)のサンプルコードを、nRF52810(ISP1507-AL)で動かせるようにすること」です。

 

NordicSemiconductor社から提供されているSDKのサンプルコードのほとんどは、nRF52832(ISP1507-AX)用のサンプルであり、nRF52810(ISP1507-AL)用のサンプルコードはごく一部しかありません。そのため、膨大に用意されているnRF52832(ISP1507-AX)用のサンプルコードを有効に使うためには、nRF52832(ISP1507-AX)のコードをnRF52810(ISP1507-AL)に変換する方法を把握することが必須となります(⌐▨_▨) フムフム

 

nRF52810(ISP1507-AL)nRF52832(ISP1507-AX)に比べて、機能毎の個数・メモリ容量・ピン数等が少なくなっています(下表参照)が、nRF52832(ISP1507-AX)用に作成されたプログラムを一部修正することで、nRF52810(ISP1507-AL)で動かすことができるようになります。

f:id:microworm:20200202222227j:plain

続きを読む

I2C 送信を用いてキャラクタ表示に挑戦!(その1)

前回までは、LEDを光らせるいわゆる「Lチカ」を、SDK付属のサンプルコードを一部書き換える形で試してみました。しかし、このままでは外部デバイスとのデータのやり取りができないため、あまり面白みがありません。(ε・`。)

 

そこで、今回はTWI(TwoWiredInterface : いわゆるI2C通信)を用いて、秋月電子通商さんで売られているI2Cインターフェースを備えた液晶キャラクタディスプレイ(LCD、型番AQM1602Y-NLW-BBW)を接続しI2C送信を用いたキャラクタ表示を試してみましょう。

 

f:id:microworm:20200126163103j:plain

その前に、I2C」がどのようなものかをお話しておきます。I2C」とは米Philips社で開発されたシリアルバス通信の規格です。読み方は「アイ・スクエアド・シー」もしくは「アイ・アイ・シー」で、正式名称は「Inter-Integrated Circuit」と言います。

 

I2Cは、2本の通信線(SCLSDA)GND線、合計3本の線だけでデータの送受信を行うことができるインターフェースです。この規格の最大の特徴は、この3本の信号線だけで、複数のデバイスを接続できることです。マイコン側のIOピンの消費を少なく、かつ多くのデバイスを接続できるため、最近発売されているマイコンでは必ずと言っていいほど搭載されている機能です。

 

具体的な接続例を下図に示します。この図のように、3本の線だけでLCD・温度センサ・AD変換器の3つのデバイスを接続することができています(もちろんデバイス1つでも大丈夫ですし、4つ以上も可能です)

 

なお、I2Cの信号線(SCLSDA)は、いずれも電源にプルアップ(接続)しておきます。プルアップしないと、通信ができないので注意しましょう。なお、プルアップ抵抗の抵抗値は、通信速度や電力設計により変わってきますが、10kΩ1kΩの間にすることが多いようです。

  

  f:id:microworm:20200126163238j:plain

続きを読む

ラジオ番組「こども仕事辞典」に出演

電気エンジニア(でんきえんじにあ)

当ラボ記事 担当のエンジニアがリブト株式会社様が提供するラジオ番組
「こども仕事辞典」に出演させていただきました。
「こども仕事辞典」は、子供達の将来の選択肢を広げることを目的に、こども向け
にさまざまな職業にかんする情報を発信しているラジオ番組なのです。
放送は毎週土曜日 13時から10分間(77.5Mhz 八王子市内のみ受信できます。)

当エンジニアのラジオ出演日は、2019年12月14日(既に放送終了)ですが
「こども仕事辞典」さんのウェブサイトで現在もその内容を聴くことができます。
子供たち向けのシンプルで、わかり易いインタビューです。
これを聴いて電気エンジニアに興味をもってくれた子供さんがいたら嬉しいです!
URLを掲載しますので、ぜひ聴いてみてくださいね。

     ↓     ↓

https://ksj.8kikaku.com/2019/12/14/191214/

f:id:microworm:20200111182510j:plain

(写真:こども仕事辞典様 記事掲載ページより)

 

Insight SIP社の『マイコン開発キット』でLEDを点滅させよう(後編)

ライセンスを認証しよう

画面から「Activate Your Free License」をクリックすると、以下画面が出てきます。上から順番にご自身の名前・名字・会社名・メールアドレスを入力し、「Yes, I have read and do accept SEGGER’s Privacy Policy」にチェックを入れたあと、「Request License」をクリックします。

f:id:microworm:20190922143236p:plain

クリック後に出てくる「Enter Activation Key」を更にクリックすると、ライセンスキーを入力する画面が出てきます。ご自身のメールを確認すると、SEGGER社からメールが1通届いています。そのメール本文中にある「LICENSE_SES_」から始まるキーをコピーし、「Activation Key」というところに貼り付けて下さい。「Install License」をクリックし、問題がなければ、元の画面に戻ります。

続きを読む

Insight SIP社の『マイコン開発キット』でLEDを点滅させよう(前編)

ISP1507-ALとは、どんなもの?

Insight SIP社のISP1507-ALは、Bluetooth 5ANT+に対応した組込み用マイコンです。

Bluetooth 5/ANT+用のアンテナは、チップの内部でクローズしているため、別途パターン等でアンテナを伸ばす必要がありません。また、チップ単体での技適を取っていますので、各種手続きが大幅に減るメリットがあります。さらに、チップの中身はNordicSemiconductor社製のnRF52810が使われており、NordicSemiconductor社から提供されている豊富な各種資料をもとに、HW開発・SW開発ができるメリットがあります。

f:id:microworm:20190921164659j:plain

 

続きを読む