全体像PICマイコン電子工作入門の基礎編と応用編で触れなかった知識を、実践編としてまとめていきます。第1回目は全体像を説明します。PICマイコン電子工作入門の基礎編、応用編と進んでこられて、いかがでしたでしょうか。〜ハンダ付け道具関連〜実践編で必要な道具や電子部品、その他部材のリストを作成します。第2回〜第4回の記事で、実践編で使用する道具や電子部品のリストを作成します。リストは以下のように大きく4ジャンルに分けました。〜ハンダ付け練習関連〜今回は、ハンダ付け練習に必要な部材を説明します。今回は、ハンダ付け練習用の部材を説明します。センサやLCDモジュールのハンダ付けを行う前に、ハンダ付けの感覚をつかむための練習を行います。〜電子部品・ツール類〜今回は、電子部品とツール関係の買い物リストを作成します。電子部品類の一部は、基礎編・応用編で使用したものを流用できますので、足りないものを購入します。最後に買い物リストをまとめます。ハンダ付け練習の回路図ハンダ付け練習用の回路図を説明します。ハンダ付けの練習で製作するものは、電池ボックスを電源としてLEDを点灯させるものです。ハンダ付けの練習ですので、失敗した場合に、その箇所がわかりやすい回路にします。今回は、ハンダ付け作業の手順とコツを確認します。実際にハンダ付けを行う前に、そのやり方やコツを説明します。ハンダ付け練習(1)今回は練習基板で実際にハンダ付けを行います。これからハンダ付け作業を始めますが、2点注意があります。1つ目は、ハンダこては非常に熱くなりますので、火傷には十分注意してください。ハンダ付け練習(2)ハンダ付け練習基板にもう1個LEDを追加します。以下の部分を追加でハンダ付けします。ハンダ付け手順は今までと同じやり方で問題ありません。部品ハンダ付けハンダ付けにちょっと慣れたところで、センサと液晶ディスプレイモジュールのハンダ付けを行います。ハンダ付けにちょっと慣れてきたと思いますので、いよいよセンサ2個と液晶ディスプレイモジュールのハンダ付けを行います。〜動作電圧とPIC16F18857ピン配置確認〜今回から回路図設計に入ります。最初は使用する部品について確認します。これからPIC16F18857を中心に、センサやLCDモジュール、LEDを制御する回路を設計します。〜電源回路〜今回は電源回路の設計です。今回製作するシステムでは、各部品の動作電圧を考慮すると3.1V〜3.6Vの範囲内の電源が必要です。この範囲の電圧は、電池の組み合わせで作ることは難しいですよね。今回は3端子レギュレータの回路設計時の注意点を説明します。〜PICKit接続コネクタ回路〜次はPICKitのコネクタ回路です。PICKitを接続するためのコネクタ周りの回路は、基礎編のPIC12F1822と同じ回路です。〜SPI通信モジュール回路〜今回はSPIセンサモジュールの回路図を設計します。今回の温湿度・気圧センサは、通信方式としてSPI通信かI2C通信を選択できます。選択方法について簡単に説明いたします。〜I2C通信モジュール回路〜今回は、I2C通信を行う温度センサとLCDモジュールの回路図を設計します。温度センサとLCDモジュールの通信方式はI2Cです。〜LED回路〜これで回路図設計は最後です。LEDは天気予報の表示に使用する予定です。今回実践編では青と赤の2色LEDを使用しますが、ご自分の好きなLEDを接続していただいて構いません。〜電源〜今回からブレッドボードに回路を組み立てていきます。最初は電源周りの組立てを行います。この回路をブレッドボードに組立てます。〜PICKitプログラム書き込み回路〜今回はプログラム書き込み回路を組み立てます。今回、ブレッドボードに組み立てるプログラム書き込み回路は以下の回路図の赤色の部分になります。〜PICマイコン電源と温湿度・気圧センサ〜今回はPICマイコンの電源接続と温湿度・気圧センサの回路を組立てます。前回の記事でPICマイコンの位置が決まりましたので、電源を接続しましょう。以下の部分を組み立てます。〜温度センサとLCDモジュール〜今回は温度センサとLCDモジュールを組み立てます。今回は回路図の以下の部分を組み立てます。最初に温度センサ部分、その後LCDモジュール部分を組み立てます。〜LED回路〜LED回路を組み立てて、ブレッドボードを完成させます。基礎編・応用編でLEDを使いましたが、回路はそれと同じです。以下のようにRB0ピンとRB1ピンにLEDを接続します。今回はブレッドボードの回路が正しく動作するか確認します。今回は、組み立てたブレッドボードが正しく動作するか確認します。動作確認用のプログラムを書き込み動作確認しますが、このプログラムは以下の動作をします。通信方法を考えるI2CやSPI通信の説明に入る前に、コンピュータの世界の通信とはどういうものか、具体的に考えてみます。SPI通信の考え方(1)今回からSPI通信の説明に入ります。前回の記事で検討したデータ通信システムは、データの送信側と受信側でそれぞれ時計を持ち、その時計を見ながらあらかじめ決めた時間間隔でデータの送信と読み取りを行う、というものでした。SPI通信の考え方(2)データ通信システムを拡張します。今まで、2種類の通信手順でデータ通信ができることを確認しました。SPI通信の考え方(3)今回のデータ通信システムの検討で、SPI通信の基本形が完成します。今回は、実際のSPI通信手順の説明です。前回までの説明で、SPI通信の基本的な考え方をみてきました。今回は実際のSPI通信の通信手順やタイミングチャートを確認します。チャレンジ課題(1)データ通信に慣れてきたところで、チャレンジ課題に挑戦してみます。前回までの説明で、1つの信号線でデータ通信を行う方法から検討を始めて、SPI通信を行うまで順を追って理解してきました。〜仕様概要〜温湿度・気圧センサの仕様概要を確認します。はじめに、温湿度・気圧センサモジュールについて注意点を説明します。〜詳細仕様〜今回はセンサモジュールの詳細仕様を説明します。前回の記事で、センサモジュール内にはメモリがあり、SPI通信を利用してそのメモリを読み書きすることにより動作設定をしたり測定データを読み出したりすることを説明しました。温湿度・気圧データの取得するプログラムは、データ校正部分が結構複雑になります。最初からそのプログラムを作成すると全体の見通しが悪くなってしまいます。〜動作確認プログラム〜今回は、センサモジュールのIDを取得するプログラムを作成します。今回作成するプログラムの構成は以下のようになっています。プログラムの中身の説明に入る前に、全体の構成を把握します。IDEのデバッグ機能を使用して動作させます。今までの記事で、いくつかチャレンジ課題に挑戦していただきましたが、一発でプログラムが動作せずに困った経験はないでしょうか。PICマイコンのプログラムデバッグ(2)今回はデバッグの主要な機能を一通り紹介します。前回の記事では、典型的なデバッグの手順を説明しました。PICマイコンの処理をプログラムの特定の行で止め、その時の変数の値を確認する、という内容でした。チャレンジ課題(2)SPI通信とデバッグ機能のチャレンジ課題です。これまでの記事で、SPI通信でセンサのチップIDの値(1バイト)を取得するプログラムを、デバッグ機能を利用して実行しました。〜データ取得プログラム〜センサ(BME280)のデータシートを元に、温湿度・気圧データの取得プロクグラムを完成させます。温湿度・気圧センサBME280の概要の記事で説明しましたが、もう一度測定データ取得の流れを確認します。I2C通信の考え方(1)今回からI2C通信手順の説明に入ります。I2C通信手順の説明に入る前に、SPI通信を振り返っておきましょう。SPI通信を行うには、マスターとスレーブを以下のような信号線で接続しました。I2C通信の考え方(2)I2C通信のハードウエア構成と通信手順の概略を説明します。前回の記事で、I2C通信では1本のクロック信号線と1本のデータ信号線のみの構成で、マスターと複数のスレーブ間でデータ通信を行うことを説明しました。基本的なI2C通信手順を説明します。I2Cデータ通信はI2Cモジュール(I2Cスレーブ)ごとに異なりますので、この記事では基本的な通信手順を説明します。PICマイコンのPPS機能I2C通信プログラムを作成する前にPICマイコンの「PPS機能」の使い方を説明します。I2C通信モジュールとプログラムPICマイコンのI2C通信のプログラム作成に入ります。前回の説明で、I2C通信のクロック信号の速度について説明するのを忘れてしまいました。今回からI2C通信液晶モジュールのプログラムを作成していきます。最初は概要の説明です。電子部品の通販サイトを見ると、液晶モジュールには多くの種類があることがわかります。〜動作設定編〜今回は液晶モジュール(AQM1602XA/ST7032)の制御方法の説明です。実践編で使用する液晶モジュール(AQM1602XA)はキャラクタディスプレイです。〜文字表示編〜今回は液晶ディスプレイに文字を表示するコマンドを説明します。前回の記事で説明したように、液晶モジュールに文字を表示する場合は、文字コード表に従って0x40と文字データを液晶モジュールに送信します。液晶モジュール動作確認プログラム液晶モジュールに温湿度・気圧データを表示するプログラムを作成する前に、動作確認目的として簡単な文字列を表示するプログラムを作成します。BME280温湿度・気圧データ表示プログラム液晶モジュールの制御方法を確認しましたので、BME280で取得した温湿度・気圧データを液晶モジュールに表示するプログラムを作成します。前回までの記事で、以下のプログラムを作成済みです。〜概要〜今回から温度センサADT7410から温度データを取得するプログラムを作成します。今回はセンサの概要説明です。最初に、実践編で使用する温度センサADT7410の概要について説明します。〜I2C通信手順〜温度センサ(ADT7410)の制御では、液晶モジュールとは違ったI2C通信手順が必要です。その通信手順を中心に説明します。温度センサのI2C通信制御は、液晶モジュールのそれと大きく異なるところがあります。〜動作設定〜今回は温度センサ(ADT7410)の動作設定方法について説明します。ADT7410の動作設定を行うには、ADT7410内部のメモリのアドレス0x03に1バイトのデータを書き込むことにより行います。〜温度データ計算〜温度センサから取得したデータから、温度を求める方法を説明します。ADT7410の測定した温度は、メモリマップのアドレス0x00と0x01に格納されています。今回は実践編のプログラムを完成させます。湿度と気圧データはBME280から取得、温度データはADT7410から取得します。天気予報のアルゴリズムを考える前に、天気と気圧の関係を調べてみます。実践編を終えるにあたり、製作した回路で天気予報に挑戦してみます。以前の記事でも説明しましたが、天気と気圧には関係があります。天気予報のアルゴリズムを検討する今回は天気予報のアルゴリズムを考えます。天気を気圧変化のみで予報するのはなかなか難しそうですが、それなりに予報できるアルゴリズムを考えてみたいと思います。天気予報プログラム前回までに検討した天気予報のアルゴリズムを実装します。