Python(4)-TCP通信

今回は、C#でも作成したTCP通信のアプリケーションをPythonを使用して作成してみようと思います。C#で作成したたアプリケーションは下記のページを参考にしてください。

C#言語(3)-TCP通信(クライアント編)
C#言語(4)-TCP通信(リスナー編)

今回はダイアログ無しです。IPとポートも直接コード内に書き込んでおきます。

TCPサーバーのアプリケーションは、接続が完了すると、クライアント側に「[*] Connection」と文字列を送信して、受信待ちになります。クライアント側から文字列が送られてくると、送られてきた文字を受信して表示します。表示が完了したら今度は文字を送信できます。送信と受信を順番に行うような仕組みになっています。

TCPクライアントのアプリケーションは、接続が完了すると、受信待ちになります。サーバー側から文字列が送られてくると、送られてきた文字を受信して表示します。表示が完了したら今度は文字を送信できます。受信と送信を順番に行うような仕組みになっています。

動作させると下記のように文字列を送受信できます。

クライアント側をC#で作成したアプリケーションでも文字列を送受信できます。。

サーバー側のソースコードは下記のようになります。

このコンテンツを閲覧するにはログインが必要です。お願い . あなたは会員ですか ? 会員について

FPGA(3)-SignalTapⅡ

SignalTapⅡはロジック・アナライザ機能です。Quartus PrimeはFPGA内部の信号を観測してデバックする為のロジック・アナライザ機能としてSignalTapⅡを提供しています。

それでは、早速使用してみます。まずは、TalkBack機能を有効にします。Tools→optionsよりoptions画面を表示します。options画面のInternet Connectivityを選択して、画面よりTalkBack Optionsを選択すると、Quartus Prime TalkBack画面が表示されます。Enable sending TalkBack data to Alteraチェックボックスにチェックを入れて有効にします。

前回、作成したLED点滅回路のcounter_1sec[31:0]とcounter_led[2:0]を見てみようと思います。SignalTapⅡの無償版では、観測する信号の選択やトリガ条件を変更する際には、フルコンパイルが必要です。tools→SignalTapⅡ Logic Analyzerを選択して、SignalTapⅡをを起動します。

Setupタブ内の空白部分をダブルクリックして、Node Finder画面を表示します。Namedにキーワードを入れて、Listを選択すると、Matching Nodesにキーワードに一致したものが表示されます。counter_1secとcounter_ledをNodes Foundに設定します。

SignalTapⅡの画面に戻り、Signal Configurationを設定します。Clockはclkを指定、Storage qualiferのTypeをContinuousを指定、TriggerをAuto、Sequential、Pre trigger position、Triggerを指定、conditionsを1指定、Trigger in、Trigger outのチェックボックスを無効にする。

Start Compilaiton(三角を90度回転したマーク)を選択して、フルコンパイルを実行します。

フルコンパイルが完了したら、JTAG Chain Configurationを設定します。SOF Managerで、作成したsofファイル(FPGA.sof)を指定します。Run Analysisボタンを選択すると、波形が表示されます。


FPGA MAX10(2)-LED点滅回路

前回、FPGA MAX10搭載基板と書き込み器製作用プリント基板の初期セットアップが完了したので、今回はLEDチカチカ回路を作ってみようと思います。

まずは、Quartus Primeを実行します。Windowsのスタートメニューの中から実行できます。

新規プロジェクトを作成します。作成ディレクトリは任意で構いませんが、日本語は使用しない方がよさそうです。プロジェクト名はFPGAにしました。私の使用しているデバイスは「10M08SAE144C8GES」のようです。シミュレーション・ツール形式は「Verilog HDL」に設定しておきます。

次にVerilog HDL Fileを作成します。そして下記のようにハードウェア言語「Verilog HDL」を入力します。

このコンテンツを閲覧するにはログインが必要です。お願い . あなたは会員ですか ? 会員について

FPGA(1)-MAX10について調べてみる

FPGAはfield-programmable gate arrayの略です。FPGAはマイコンとは違います。PICはソフトウェアで処理を行うのに対して、FPGAはハードウェアで処理をします。PICは論理回路が決まっておりますが、FPGAは論理回路設計からする事ができます。今回はFPGAを試してみるために、MAX10を使ってみたいと思います。

まずは、FPGA MAX10を用意する必要があります。私は下記の3点を購入しました。

(1).FPGAの書籍です。FPGA MAX10搭載基板や書き込み器製作用プリント基板、ソフトウェア一式が付いてきます。あくまで基盤なので、搭載部品をはんだで取り付ける必要があります。

(1)MAX10(2)ライタ(3)DVD付き! FPGA電子工作スーパーキット (トライアルシリーズ)

新品価格
¥4,950から
(2019/11/9 12:51時点)

(2).FPGA MAX10搭載基板に必要な部品を取り付けてある完成品です。こちらに関しては、必要なところをはんだでショートする必要があります。

マルツエレック MAX10-FB(FPGA)基板 全実装版 【MTG-MAX10-FB-F】

新品価格
¥8,339から
(2019/11/9 12:52時点)

(3).書き込み器製作用プリント基板に必要な部品を取り付けてある完成品です。

マルツエレック MAX10-JB(JTAG)基板 全実装版 【MTG-MAX10-JB-F】

新品価格
¥4,159から
(2019/11/9 12:54時点)

(1)に取り付ける部品のセットも販売しています。こちらを使用してもよいと思います。

マルツエレック JB基板仕上げ部品セット 【MTG-MAX10-JC-S】

新品価格
¥2,006から
(2019/11/9 12:56時点)

次回から論理回路設計やプログラムを使用して動作させていきたいと思います。

2019年11月16日 | カテゴリー : FPGA | タグ : , | 投稿者 : prog

WROOM-02(3)-通信体系

前回、WROOM-02(ESP8266デバイス)を使う為に、Arduino IDEのセットアップをしました。今回、WROOM-02を使用して、無線通信を行おうと思うのですが、通信体系について考えておこうと思います。

主要な通信体系は大きくわけて下記の3つ考えれられます。

  1. WROOM-02を親機と考えたPCとWROOM-02の通信
  2. PCを親機と考えたPCとWROOM-02の通信
  3. PCとWROOM-02の間に無線ルーターを挟んだPCとWROOM-02の通信

他にもあると思いますが、主要なものはこの3つかなと思われます。

まずは、1 のWROOM-02を親機と考えたPCとWROOM-02の通信を行おうと思います。1 のWROOM-02を親機と考えたPCとWROOM-02の通信をする為のコードは下記のようになります。※注意:下記のコードをesp8266に書き込むと、ATコマンドは使用できなくなります。

このコンテンツを閲覧するにはログインが必要です。お願い . あなたは会員ですか ? 会員について

WROOM-02(2)-Arduino開発環境設定

前回、WROOM-02を調査した結果、arduinoデバイスとして使用できる事がわかりました。それでは、Arduinoデバイスとして使用する為に、Aruduinoの開発環境をインストールします。下記サイトより、Arduino IDEをダウンロードしてインストールします。

https://www.arduino.cc/en/main/software

インストールが完了したら、Arduino IDEを起動して、ESP8266デバイスを使用する為の開発環境の設定を行います。※前回も説明しましたが、WROOM-02はESP8266を搭載したモジュールとなります。

まずは、ファイル-環境設定の追加のボードマネージャーのURLに、下記のURLコードを入力して、OKボタンを押します。

このコンテンツを閲覧するにはログインが必要です。お願い . あなたは会員ですか ? 会員について

WROOM-02(1)-無線モジュールを調査

無線でアナログ情報を取得したいので、マイコンで制御できる無線を調べていると、WROOM-02にたどり着きました。RS232通信で、無線の設定をするようです。早速、試してみました。試したのは下記の2つの製品です。

電子太郎 ESP-WROOM-02開発ボード 2.4 GHz Wi-Fiモジュール MicroUSB

新品価格
¥1,700から
(2019/11/9 11:21時点)

ESP-WROOM-02ピッチ変換済みモジュール《T型》

新品価格
¥925から
(2019/11/9 11:23時点)

ESP-WROOM-02ピッチ変換済みモジュールは、価格は安いですが、RS232レベル変換モジュールや抵抗などを用意する必要がありますので、少々手間がかかります。

ESP-WROOM-02開発ボードは、RS232レベル変換モジュールや抵抗などが搭載されているので、価格はESP-WROOM-02ピッチ変換済みモジュールと比べて、価格は高いですが、USBケーブルと繋げるだけで使用できます。まず、試してみたい方には、ESP-WROOM-02開発ボードのほうが便利なので、今回は、ESP-WROOM-02開発ボードを使用指していこうと思います。

それでは、早速、ESP-WROOM-02開発ボードとPCをUSBケーブルで接続します。すると、ドライバーのインストールが始まりますので、インストールが完了するまで待ちます。

インストールが完了したら、TeraTermを立ち上げて、動作を確認します。TeraTermを実行したら、設定-シリアルポートよりボーレートを115200bpsに設定します。次に、設定-端末より送信の改行コードをCR+LFに設定します。
開発ボードのリセットボードを押すと下記のようなメッセージが表示されます。

readyと表示されればOKです。wroom-02はATコマンドと呼ばれるものが、使用できます。例えば、ATと送信すると、OKと返信が返ってきます。


このATコマンドを使用する事で、wroom-02の設定ができます。ここでふと疑問に思うことがありました。ATコマンドが使用できるということは、マイコンのようなものが搭載されているのでは?ちょっと調べてみると下記のことがわかりました。wroom-02はESP8266を搭載したモジュールです。では、ESP8266なにかと言いますと、マイコンを搭載したWiFiモジュールのようです。さらに、Arduinoデバイスとしても使用することが可能なようです。すばらしいですね。Arduinoデバイスを使用してみたいと思ってもいたので、Arduinoデバイスとして使用して、WiFiを使用してみようと思います。

PIC(3)-RS232C通信

本日は、PICを使用したシリアル通信機能を構築しようと思います。

PICの周辺機器はUARTを使用します。UARTは、Universal Asynchronous Receiver Transmittionの略で、いわゆる汎用のシリアル通信の機能をもった周辺回路モジュールです。名前の通り、全二重の非同期式通信であり、調歩同期式通信とも呼ばれます。

RS232Cは、OSI参照モデルの物理層に位置づけされます。ネットワークの物理的な接続・伝送方式を定めたものです。PIC側とPC側の電圧レベルを合わせるために、中間に変換するデバイスが必要となります。中間デバイスとしては、MAX232やFT232などがあります。今回使用するボードには、FT232が使用されていました。

下記のコードは、RS232C通信規格で、UARTを使用した通信機能のコードになります。クライアント側から文字列を送信すると、PIC側から同じ文字列を返信する機能になります。

このコンテンツを閲覧するにはログインが必要です。お願い . あなたは会員ですか ? 会員について

PIC(2)-タイマー割り込み機能

本日は、PICを使用したタイマー割り込み機能です。タイマー割り込み機能は、一定周期で処理をしたい場合などに使用します。下記のコードは、タイマー機能を使用して、50ms毎にLEDランプが点灯、消灯を繰り返す機能になります。

タイマーのカウント数について考えていきます。今回、クロックは4MHzに設定しています。内部クロックの場合、カウンタは4周期に1カウントするので、今回は1000000カウントできることになります。この場合、LEDの点灯、消灯は1μsecになります。今回は、50msecという設定なので、500000カウントすれば良い事になります。ただし、タイマーのカウントは8bitしか用意されていません。ようするに、256回までしかカウントできません。

そこで、プリスケーラを活用します。プリスケーラは8bit用意されているので、これを活用すると256×256で65536カウントできます。これなら50000カウントできるので、50msecの周期をつくれそうです。50000カウンタをプリスケーラ値256で割ると、約195カウンタになります

タイマーのMAX値の256カウントから195カウントを引いた値をタイマーの初期値にすることで、50msec後にタイマー0割り込みが発生するような機能が構築できます。TMR0にカウンタの初期値を入力するので、TMR0=0x3Dとなっております。このカウンタ値の設定は、メイン関数の部分の他にも、タイマー0割り込み関数でも設定しております。

それでは、コーディングしていきたいと思います。タイマー機能を使用して、50ms毎にLEDランプが点灯、消灯を繰り返す機能のソースコードは下記のようになります。

このコンテンツを閲覧するにはログインが必要です。お願い . あなたは会員ですか ? 会員について

PIC(1)-スイッチによるLED点灯

PICはMicrochipTechnology社が製造しているマイコンです。PICは、Peripheral Interface Controllerの略で、日本語訳にすると周辺機器接続部制御となります。PICはマイコンの一種で、CPUや入出力インターフェイス(I/O)、メモリ(RAM、ROM)が一つのICの中に搭載されたワンチップマイコンが主流です。以前のマイコンはCPUやI/O、RAM、ROMは別々のICとして分かれていたようです。PICは機能の違いやピン数の違い、メモリ容量の違いなどでさまざまな種類があります。

今回は、PICを使用して、LEDを制御してみたいと思います。使用するマイコンは、PIC16F627Aです。以下のようなH/Wがセットになっている書籍があったので購入して使用しました。

キットで遊ぼう電子回路 新PIC入門C言語編

下記から統合開発環境「MPLABX」がダウンロードできるので、ダウンロードしてインストールしておきます。インストールするとXCコンパイラをインストールすかどうか問い合わせがあると思いますので、XC8コンパイラを忘れずにインストールしておいてください。

https://www.microchip.com/mplab/mplab-x-ide

それではMPLABを実行して、開発環境を開きます

新規プロジェクトを作成していきます。FileメニューよりNewProjectを選択します。新規プロジェクト作成ダイアログが開かれれるので、Standalone Projectを選択して、Nextを選択します。

ここでは、使用するデバイス(PIC)を選択して、Nextを選択します。使用するデバイスは、PIC16F627Aです。

ヘッダーの選択画面が開かれますが、今回使用しないので、Nextを選択します。使用しているPICライターの選択ダイアログ開かれます。私はPICkit3を使用しているので、PICkit3を選択して、Nextを選択します。

使用するコンパイラを選択するダイアログが開かれので、XC8を選択します。XC8はMPLAB Xをインストールした時にはインストールすると思いますが、インストールしなかった場合は別途インストールしてください。

プロジェクトの作成先を選択するダイアログが開かれます。Project Name、Project Location、Project Folderを設定します。今回は、Project NameをSample_LED_001、Project Locationをドキュメントフォルダの中のMPLABフォルダにしました。Project NameとProject Locationを設定するとProject Folderが自動で設定されます。日本語文字を使用する為に、EncordingはShift_JISを選択して、Finishを選択します。

これで、新規プロジェクトの作成は完成です。画面左上側にプロジェクトが表示されているのがわかります。それでは、ソースファイルの作成に取り組みます。Projectsの中のSorce Filesを右クリックして、メニューの中のNew→C Source Fileを選択します。ファイル名を設定して、Finishを選択します。C Source Fileのファイル名設定画面が表示されるので、ファイル名を設定して、Finishを選択します。

C Source Fileが作成されたので、この中にプログラムを書き込んでいきます。

続きを読む