こんにちは、ENGかぴです。
業種を問わず経験が浅いうちは現在やっている仕事を覚えるのに精一杯になってしまいますが、仕事のアウトラインを掴んでおくことが大切です。ソフト開発の勉強がしたいのですが何をしたらよいのか分かりません。
まずは何を最終的に作ってみたいのかを考えて実現するために何を勉強したらよいのか考えないといけませんね。
組み込みエンジニアとしてソフト開発の仕方を勉強してみようと考えている方に向けて開発のアウトライン全体像を掴んだうえで一つ一つの機能を勉強することの大切さについてまとめました。
今回はマイコン(CPU)に関わらず最低限やっておいたほうが良いことについてイメージすることを目的とします。
最初にやっておきたいこと
学生の頃プログラミングとしてC言語などを勉強した人も多いと思います。しかし、練習したことが何に使用されているのかもしくは役立つのかわからなければ興味が湧かず挫折してしまった方も多いのではないでしょうか。
挫折しないためにも最初にやっておきたいことは大きく2つあります。
- アウトライン(概要)を掴む
- ストレス耐性をつける
これらの2点の大切さについて、組み込みエンジニアとして働いてきた10年間の経験をもとに説明していきます。
アウトライン(概要)をつかむ
アウトラインを掴むとは最終目標に対してどのように進んでいくかをまとめた目次のようなイメージになります。目次を見ればなんとなく何をやっているかが分かるようになるということは全体の理解につながると考えるからです。
組み込みエンジニアとしてソフト開発を行っていくうえで、対象のマイコンを選択する必要があります。PICマイコンを例に挙げてアウトラインの例について考えていきます。
アウトラインの例:
目的:ソフト開発のイメージをつかみ練習する
マイコン:PICマイコン(PIC12F675)
最終目標:PWM波形を生成してブザーを鳴らす
目的と最終目標が明確であったほうが良いと思います。最終目標に向かってステップを踏んでいくことを意識できることからプロセスの可視化を行うことは重要になります。次に最終目標に向かうまでのプロセスを考えていきまます。
- ツールをインストールして開発環境を作る
- メインプログラムのエディターの操作を覚える
- マイコンのソフト開発のイメージする
- マイコンの機能の初期化する
- WDTを理解をして実装する
- LEDを点灯させる
- タイマー機能を使用する(割り込みの学習)
- AD変換とコンパレータ機能を使用する
- PWM波形を生成してブザーを鳴らす
1から9までのプロセスによって最終目標であるPWM波形を生成しブザーを鳴らすために練習を進めていきます。アウトラインに基づいてPICマイコン(PIC12F675)で実現できる機能とまとめています。
PICマイコン(PIC12F675)で実現できる機能と解説リンクまとめ
リンクまとめを見ると分かりますが、PWMでブザーを鳴らすまでにマイコンのDOの設定や割り込みの設定AD変換の設定など一つ一つの機能の組み合わせで実現しています。
ストレス耐性をつける
最初にイメージをつかむことは、ストレス耐性をつけるという意味で大切であると考えています。
簡単でもいいので全体の内容を把握しながら少しずつ一つ一つの技術を取得しながら達成感を感じながら開発に慣れていくことでストレスを感じなくなり効率よく学習ができるようになります。
マイコンによってソフトの開発環境が違うため開発環境の構築やツールになれるという作業もストレスに感じることもあります。
ツールによっては慣れない英語と格闘しなければならないこともあり慣れない中でググったりして情報を得ようとしてプログラムソースを見たとしてもただの宇宙語であり、情報が有用なのかわからないまま情報の渦に巻き込まれてしまいます。
余程興味があって検索しているのならよいのですが、基本的に知らないことを知ろうとすると脳はストレスを感じてしまいます。知らないことに対するギャップが大きいほどストレスを感じやすく30分もしないうちに脳が情報を遮断しようとしてしまいます。
新入社員の時に研修と言ってたくさんの説明を受けて覚えなければいけないと思っていてもついウトウトしてしまうのは、脳へのストレスによるギャップのため起こっていると言っても過言ではありません。
マイコンのソフト開発のイメージをつかむ
PICマイコン(PIC12F675)をもとにソフト開発のイメージを説明します。
開発環境はパソコンに開発環境であるMAPLAB X IDEをインストール(本体とコンパイラは別々にインストール)して、PICをROMデータ書き込みのために基板にセットします。
開発ツールでプロジェクトを作ると初期でmain.cというファイルができています。main.cにプログラムを書いていくことになります。ソフト開発のエディターの記述の例を示しています。
①はmaic.cに関する作成日とバージョン場合によっては担当者名を入れてもよいと思います。バージョン管理はやっておいた方が良いでしょう。バージョン管理が曖昧だとソフト改修する際に何を修正しているのか分からなくなってしまうこともあります。
②の型や構造体の定義は定数と変数を定義する前でやっておいたほうが良いでしょう。コンパイラによっては、この順が逆になっているとみ定義ということでエラーとなる場合があります。
③のwhile文による無限ループを置くことは重要です。while文によるループがなかった場合は、main()を一通り上から順に実行した後でmain()の関数を抜けて動作が完了してしまいます。一度動作が完了するとマイコンをリセットする必要があります。
while文はfor文で無限ループを作ってもよいです。main()関数を抜けないようにループを組み込んでおけば問題ありません。
①~③に限らず書き方のルールはありますが、最初にどのような構成でソフトが作られているのかについてイメージすることで理解が進むと思います。全体の構成をつかんでおいた上で、次にやることを意識しながら確実にステップアップしている実感が持つことで技術取得は早くなると思います。
全体の構成をつかんだ次は、初期化処理を入れていきます。マイコンの機能が多くなるほど面倒なことが多い作業ですが最近ではルールの進歩(マイコンメーカの努力)によって比較的楽にできるようになりました。
まとめ:最初に全体のイメージを掴みストレス耐性をつけよう
組み込みエンジニアとしてソフト開発をする場合の例としてPICマイコンを使ってアウトラインを掴むことの大切さとストレス耐性をつけていくことの大切さについてまとめてきました。
最終的に何がしたいのかが明確になっていないと挫折する要因にもなりますし、学習効率が悪くなってしまいます。私も学生の頃C言語を学びましたが全く身についていませんでした。
PICマイコン(PIC12F675)を使ってブザーを鳴らすためにはどういった技術が必要でマイコンの設定はどうしたらよいのかなど課題を明確にし、一つ一つの技術を取得しながら達成感を感じストレス耐性をつけていくことが大切です。
経験が浅いうちは課題を見つけるのも苦労すると思います。組み込みエンジニアとしてソフト開発の勉強をしたい、興味はあるけど何をしてよいのかわからないという方は関連リンクにまとめている開発環境を見てみてください。
あなたのソフト学習のヒントになれば嬉しいです。
最初は難しく感じるかもしれませんが、ソースコードをコピーしたり流用して改造したりして実際に動かしてみるとよい勉強になると思います。
関連リンク
PIC12F675を使ってマイコンの動きを勉強するためにPIC12F675の機能でできることについてまとめています。PIC16F1827を使ったマイコンの動作についてもまとめています。
PICマイコン(PIC12F675)で実現できる機能と解説リンクまとめ
PICマイコン(PIC16F1827)で実現できる機能と解説リンクまとめ
Arduinoのライブラリを使って各種モジュールを動作させています。Arduinoを使って動作確認したことについてリンクをまとめています。
Arduinoで学べるマイコンのソフト開発と標準ライブラリの使い方
Seeeduino XIAOで学べるソフト開発と標準ライブラリの使い方
ESP32-WROOM-32Eで学べるソフト開発と標準ライブラリの使い方
トワイライトを太陽光パネルで動作させたことやMWSTAGEの環境でソフト開発して無線通信したことなどについてまとめています。
トワイライト(TWELITE)のソフト開発と無線通信でできること
最後まで、読んでいただきありがとうございました。