2019年10月12日土曜日

シリアル通信・UART・RS232C・RS422・RS485とは

シリアル通信とは

シリアル通信とは規定のタイミングで1ビットごとに1本の線にデータを乗せてやり取りをする通信のこと。SPI通信やI2C通信もシリアル通信の一種である(SCLK等はデータを乗せる線ではなくタイミングを制御するための線なため)。
しかし、単にシリアル通信と言うとたいていがUARTを用いた調歩同期式(非同期式)の通信のこと、もしくはRS232Cでの通信のことを指すことが多い。

2019年9月1日日曜日

SPI通信とは

SPI通信について、自分用メモとして調べたこと、経験したことをまとめる。

SPI通信の概要

SCLK、MOSI、MISO、CSの4線式(電源、GND除く)のデータ通信方法。
マスター側デバイス(マイコン、Arduino、ラズパイ等)とスレーブ側デバイス(温度センサーやA/Dコンバータ等)でデータのやり取りをする。
似たような通信方法としてはI2Cがある。設定や構成にもよるが、SPI通信はI2C通信に比べて高速で動作させることができる。
1つのマスターに対して複数のスレーブをつなげることができる。しかしスレーブの数だけマスターのCSピン数が増えてしまう。
送信用と受信用の線(MOSI・MISO)があるので、コマンドを送りながらデータを受け取ること(全二重通信)が可能(デバイスにより非対応な場合もある)。
I2C等と同様、基本的に同じ基板内のIC同士の通信や隣り合う基板間の通信など近距離通信向けなので長距離伝送には向かない(ノイズがのってしまうので)。ただしSPI通信の信号を差動信号で伝える等の対策でノイズ耐性を上げてやれば数十メートル級の長距離通信も可能(わざわざそこまでして長距離通信する人はほとんどいないようであるが)。
SPI通信は規格がかなりガバガバなので、デバイスにSPI対応と書いてあっても通信できないことがある。たいていの場合は問題ないが、まれにトリッキーな動きをするSPI対応デバイスもあるので気を付けよう。

2019年8月11日日曜日

DIGILENT ZYBO Z7のリファレンスマニュアル・回路図のリンクとメモ


いつもZYBO Z7の回路図やリファレンスがどこにあるか忘れてしまうのでメモ。

DIGILENT ZYBO Z7のリファレンススタートページ



DIGILENT ZYBO Z7のリファレンスマニュアル


全体構成


pmodのピンアサイン



DIGILENT ZYBO Z7の回路図(schematic)

https://reference.digilentinc.com/_media/reference/programmable-logic/zybo-z7/zybo_z7_sch-public.pdf



DIGILENT ZYBO (無印)のリファレンススタートページ

無印とZ7の違いは実装されているzynqの違いのほかにRGBLEDの有無など微妙に異なるが共通部分も多い。

2019年8月7日水曜日

Vivado HLSで高位合成する手順とポイントメモ


Vivado HLSで簡単な高位合成を行ってみました。
少々クセが強そうな感じです。

2019年8月1日木曜日

Vivadoで自作IPを作成・利用する


VivadoAXIインターフェースのIPを作成して、それを利用するまでの手順をまとめました。
まずは新規でVivadoプロジェクトを作成しておいてください。(既存のプロジェクトでも構いませんが)
なお、この説明ではVivado2017.4を使ってます。

2019年5月28日火曜日

Visual Studio CodeのWindows版をインストール

Visual Studio Codeはエディタとしても軽くて使いやすいですし、プラグインをインストールすれば様々な言語のIDEとしても使用できます。
 ここではVisual Studio CodeWindows版をインストールし、日本語化プラグインを導入します。インストール先PCOSwindows7 64bitです。


 https://code.visualstudio.com/download上記リンクからダウンロードページに飛びます。
 Windowsと書かれた下のUser Installer32bitもしくは64bitをクリックしてダウンロードします。自分の使っているパソコンのOSのビットに合わせたものをクリックしてください。(コントロールパネル→システムとセキュリティ→システムで確認できます)


 クリック後画面が変わるとダウンロードできます。
48MBほどの重さの「VSCodeUserSetup-○○○.exe」という名前のファイルがダウンロードされます。(○○○部はバージョンやbitにより異なります)


 ダウンロードされたファイルをダブルクリックして実行します。
Visual Studio Codeセットアップのウィザードが立ち上がります。
次へをクリックします。


 ライセンス同意画面で、同意するにチェックを入れて次へをクリックします。


 参照を押してインストール先フォルダを選択し次へをクリックします。
特に理由がなければデフォルトのままでいいでしょう。

 スタートメニューにショートカットアイコンが欲しければそのまま次へをクリックします。
アイコンを追加したくなければ、プログラムグループを作成しないにチェックを入れ次へをクリックします。


 そのほかショートカットの作成やファイル関連付けなどをどうするかの設定をしてから次へをクリックします。特に理由がなければPATHへの追加はチェックを入れておいたほうがいいでしょう。

 インストールをクリックしてインストールします。

 数十秒でインストールは終わります。完了をクリックしてウィザードを閉じます。Visual Studio Codeを実行するにチェックを入れておけばウィザードが閉じた後自動で起動します。

 インストールすると最初は全部英語です。日本語にするプラグインを導入します。

 左端のExtensions(二重四角マーク)をクリックし、検索欄にJapaneseと入力します。Japanese Language Pack for Visual Studio Codeというプラグインが表示されるので緑色のInstallボタンをクリックしてインストールします。

 インストール後言語設定を日本語にするために、Visual Studio Code内でキーボードでctrlshiftpのショートカット押します。すると上方にコマンドバレットが表示されるので、configと入力しenterを押します。

 その後同様の場所にjaと入力してenterを押します。


 設定を反映するためにVisual Studio Codeを再起動するか?と聞かれているのでRestartをクリックするとVisual Studio Codeが再起動されます。

 再起動後は日本語化されています。

 これでインストールから日本語化までは終了です。使用したい言語のプラグインなどを入れて自分好みにカスタマイズすると使いやすくなります。


2019年5月27日月曜日

Notepad++にArduinoプラグインを導入する

僕はテキストエディタとしてNotepad++を利用することが多い。
ArduinoのスケッチもNotepad++で書きたいなぁと思ったので、調べたらプラグインがあるようなので導入してみた。

2019年5月12日日曜日

SPI通信(マスター)回路をVerilogで記述

SPI通信のプロトコルを理解するためにVerilogでSPI通信のマスターを記述した。今回はテストベンチでシミュレーションまで行った。
SCLK周波数の切り替えやCPOL・CPHAモード変更、CSイネーブル後のSCLK動作開始までのタイミング変更、送受信データのビット数変更などに対応させ、多くのデバイスで対応できるようにした。


2019年5月1日水曜日

秋月のESP-WROOM-02開発キットを使う~ブラウザのボタンを押してLチカ編~


前回はブラウザにesp8266.local/onesp8266.local/offといったURLを入力することでLチカさせていました。
点滅させるたびにいちいちonoffをアドレスバーに打ち込むのはバカバカしいので、ブラウザに表示されたhtml内のボタンを押すとLEDを表示させる仕様に変更したいと思います。htmlはスケッチ内にベタ書きです笑

2019年4月2日火曜日

Gitのインストール方法(windows)


 まずhttps://gitforwindows.org/からダウンロードし、普通にインストールを進めます。
以下迷いそうなところだけ記述します。

ここはコミットのコメント時に開くエディタを選択します。僕はいちいちエディタのウインドウが増えるのが嫌だったけどvimは玄人向きすぎて使えないのでNanoを選択しました。(デフォルトもNanoのようです)

多分Git Bashでしか使わないので一番上でいいのですが、windiws power shellとかでも使うかもしれないので真ん中のGit from the command line and also from 3rd-party softwareを選びました。

ここはよくわからないのでデフォルトのままにしました。

ここはテキストファイルをチェックアウトやコミットした時改行を変換するかどうかを選択します。僕はwindowsでしか使わない予定なので何も変換しない「Checkout as-is, commit as-is」を選択。

ここはデフォルトを選択しました。

ここもよくわからんのでそのままインストールしました。

これでインストール完了しました。


2019年4月1日月曜日

PythonをWindowsにインストール・pipでパッケージ追加

PythonをWindowsにインストール・pipでパッケージ追加 Windows7のPCにPythonをインストールしたので、インストール方法をメモしておきます。

目次

ダウンロードとインストール
Pythonの起動と実行
pipのアップグレード
pipでパッケージを追加・削除・確認
おまけ:プロキシ設定の確認方法

2019年3月23日土曜日

RaspberryPiでLチカ(シェルスクリプト&Python)


今までなんだかんだやっていませんでしたが、電子工作のHello,worldであるLチカをシェルスクリプトやPythonでやってみようと思います。

2019年3月19日火曜日

RaspberryPiにpyenv、pyenv-virtualenvをインストールしPython仮想環境をつくる


ラズパイでPython開発環境を整えるにあたってpyenvとそのプラグインであるpyenv-virtualenvをインストールしました。ただPythonを勉強するだけなら始めのうちは仮想環境を作成する必要はないそうです。ラズパイで書けるようなレベルのPythonでは仮想環境の作成を行う必要性はかなり低そうです。ラズパイならSDごと書き換えなおせばいいですしね。しかし僕は形から入るタイプの人間なので仮想環境も作成できるようにしておきました。

Python環境の構築、とくに仮想環境系のことについて調べていると、pyenvvenvなどを混同するような説明が多くどれを選べばよいのかよくわからなくなりました。

2019年3月13日水曜日

Termiusを使ってiPhone(iPad)でSSH接続する(公開鍵認証方式)


iPhoneアプリのTermiusで公開鍵認証方式でRaspberryPiへSSH接続しました。
Termius上で鍵の生成ができるようですが、公開鍵の転送がうまくいきませんでした。そこで、PCで生成した秘密鍵をiPhoneに転送して公開鍵認証ができるようにしました。


パスワード認証でTermiusからSSH接続する方法やTermiusの登録手順などはこちらにまとめています。(Termiusを使ってiPhone(iPad)でRaspberryPiへSSH接続する(パスワード認証))


2019年3月7日木曜日

TeraTermでRaspberryPiに公開鍵認証方式でSSH接続する


パスワード認証方式でSSH接続していましたが、ポート解放して外部回線から家のラズパイにアクセスするときにパスワード認証だとガバガバセキュリティなので公開鍵・秘密鍵を利用した認証にしました。


ラズパイのSSH有効化やIPアドレスを固定化などの設定が済んでおり、クライアント側PC(TeraTerm)からパスワード認証方式でSSH接続できているものとします。
また基本的にラズパイの操作はTeraTermSSH接続で行います。


2019年3月4日月曜日

Termiusを使ってiPhone(iPad)でRaspberryPiへSSH接続する(パスワード認証)

家にいるときちょっとしたことでラズパイを使いたい、でもわざわざラズパイをディスプレイに繋ぐのもPCを起動するのもめんどくさい。
ということで、iPhoneからSSH接続できるアプリはないかなーと探していたらTermiusというアプリを見つけました。無料版だけでも思っていたよりも使い勝手がよく、普通に使えたので、今後簡単なことをするだけならiPhoneからSSH接続しようかな~と思っています。
ということで、Termiusを使ってiPhoneからRaspberryPiへパスワード認証でSSH接続する方法をまとめます。iPadでも基本的に同じ手順でできると思います。また、この記事ではラズパイにSSH接続していますが他のデバイスでも手順は変わらないはずです。

公開鍵認証のやり方はこちら(Termiusを使ってiPhone(iPad)でSSH接続する(公開鍵認証方式))

2019年2月6日水曜日

PetaLinux 2017.4のインストール

Windows内のVirtualBox上のUbuntu16.04にPetaLinux2017.4をインストールしました。
なぜ2017.4かというと、Vivadoのバージョンが2017.4だからです。必ずしもVivadoとPetaLinuxのバージョンを合わせる必要があるわけではないみたいですが、トラブルを防ぐために念のためバージョンを合わせておくことにしました。

Xilinxリファレンスガイド・FPGAの部屋さん・筑波大の准教授の方の授業用ページを参考にインストールしました。


2019年2月4日月曜日

Ubuntu16.04をVirtualBoxインストールした後のセットアップ

Windows7上のVirtualBox6.0.2にUbuntu16.04 LTS 64bitをインストールしたので、使いやすいようにセットアップしました。
今後またインストールしたときのために自分用メモとして残しておきます。


2019年2月1日金曜日

ラズパイをWindowsPCからSSHで遠隔操作する~ローカル(自宅内)無線接続~

ラズパイをWindows7のPCからSSHで遠隔操作します。
家の無線LANルーター経由でSSHを行えるようにしたので、家のどこからでも(ルーターの電波の届く場所なら)ラズパイを遠隔操作できます。

まずはwindowsPC-ラズパイ間でpingが通っていること(接続されていること)を確認しておいてください。(参考:ラズパイーWindowsPCで無線LAN経由でpingを通す
また、ifconfigでラズパイのIPアドレスを調べてメモっておいてください。


2019年1月29日火曜日

ラズパイーWindowsPCで無線LAN経由でpingを通す

ラズパイとWindowsPCでpingを通すまでの手法をまとめます。
SSHやフォルダ共有といったことをするためには基本的にpingが通らないとできないはずです。pingが通る≒機器間で通信ができているということです。

と言っても基本的にやることはWindowsPCの固定IPアドレス化とラズパイの固定IPアドレス化です。

前回(ラズパイからWindowsの共有フォルダにCIFSでアクセスする~失敗(読み込みだけ可)~)では有線でイーサコネクタ経由でつなげてましたが、今後のことも考え、無線LANルーター経由でpingを通します。


2019年1月27日日曜日

ラズパイからWindowsの共有フォルダにCIFSでアクセスする~失敗(読み込みだけ可)~

ラズパイを買ったので、スクショやその他データをメインのWindows7機に移したくなりました。
いろんな方法があると思いますが、Windowsで作成した共有フォルダにラズパイからアクセスしてデータのやり取りを行わせることにしました。
ルーター経由で無線でもできると思いますが、まずは有線でPCとラズパイを1対1でつないで行うことにしました。

結果から言うと、ラズパイで共有フォルダを見ることができましたが書き込み(作成・編集・削除)ができませんでした。

以下、備忘録として記録を残します。

2019年1月24日木曜日

UbuntuをVirtualBox上にインストールする


UbuntuVirtualBox上にインストールする

VirtualBoxの仮想マシン上にUbuntu 16.04.5 LTSを入れました。
Ubuntuのバージョンが違っても基本的な手順は変わらないと思います。


2019年1月19日土曜日

ラズパイ3B+とLCDタッチディスプレイと中華キーボードを買った

ふと思い立ったのでラズパイ一式をamazonでポチってしまいました。
ラズパイは3B+で電源もセットになってるやつを買いました。LCDはラズパイにドッキングできて、IOにもアクセスできるやつを買いました。
SDカードは前にamazonプライムセールで安く買ったSAMSUNGの32GBを使うことにします。


っかく携帯できそうなLCDを買ったのでキーボドとマウスは携帯性も考えて、マウスパッドも付いているゲームパッドのような大きさの無線式キーボードを買いました。


2019年1月17日木曜日

QSPI・SDからZYBOを起動(FPGAをブート)する


今まではJTAG経由でZYBOに書き込みをしていたため、電源を落としたらもう一度PCと接続し書き込みをしなければなりませんでした。今回はZYBOの電源を落としても回路情報などが消えないように、SDカードやQSPIからブートしてみます。

2019年1月16日水曜日

ZYBO Z7-20 (zynq-7020)で自作IPを使ってLチカ

前回(ZYBO Z7-20 (zynq-7020)でPSからPL部のIPを制御してLチカ)はAXI GPIOというIPを追加してLチカさせました。
AXI GPIOはXilinxが用意したIPですが今回は自作のAXIバスを利用したIPを作成して、それを使ってLチカします。


まずは前回までを参考に新規でVivadoプロジェクトを作成してください。

2019年1月15日火曜日

ZYBO Z7-20 (zynq-7020)でPSからPL部のIPを制御してLチカ


前回はPLProgrammable Logic)部分のみを用いてLチカを行いました。
今回はPSProcessing System)部のCPUからPL部のIP(AXI GPIO)を制御してLチカさせてみようと思います。

2019年1月13日日曜日

ブロックデザイン機能を使ってZYBOのLEDを複数光らせる


前回はLEDが一つしか点滅しない回路でしたが、今回はブロックデザイン機能を使って前回の回路を複数用意して、複数のLEDを光らせてみようと思います。
ブロックデザイン機能を使うので今回はRTLの編集は一切行わずGUI(画面上)で線をつなげたり、回路を追加するだけで直感的に回路作成ができます。
通常同じ回路を複数つなげたい場合はラッパーを作ってインスタンスしてやらないといけないですが、ブロックデザインならそれをブロック図を見ながら作成できて配線も自動でやってくれてラッパーファイルも作ってくれるので大変便利です。(僕の知る限り)アルテラのQuartusにはそういった機能もなくQsysも使いにくかったので大変助かっています。



2019年1月11日金曜日

VirtualBoxをWindowsPCにインストールする


PCLinux環境を作る必要があったのでwin7PCVirtualBoxをインストールしました。
VirtualBoxPCの中にホストOSWindowsMac等)とは別にゲストOSを作成できるソフトです。簡単に言えば、WindowsPC内でWindowsOSを消すことなくLinuxを使うことができます。

2019年1月10日木曜日

ArduinoにPmodSDを接続してSDカードの読み書きをする

Digilent社のPmodSDをGetしたので、Arduino UNOに接続してファイルの読み書きを行います。
今現在はPmodSDはあんまり売っておらず、秋月ではPmodMicroSDなら買えるようです。ピンアサインは変わらないのでPmodMicroSDでもこの記事と全く同じことができます。

ライブラリはArduino IDEに標準で入っているSDカード用ライブラリを使います。


2019年1月9日水曜日

ZYBO Z7-20 (zynq-7020)でPL(FPGA部のみ)を使ってLチカ

前回(ZYBO Z7-20 (zynq-7020)に電源を入れて初期動作確認をする)はただ電源入れただけでほぼ何もやっていないので、Verilogで書いた回路をZYBOのFPGAに書き込んでLチカさせます。
SoC FPGAなのでPL(Programmable Logic)部≒FPGA部分とPS(Processing System)部≒ARMコア部がありますが、今回はPL部のみを設計して論理回路だけでLチカさせてみます。
チカチカさせるLEDはZYBO上に実装されたものをつかうので、準備するものはZYBOとUSBケーブルだけです。
ボードへの書き込みやコンパイル等は「Vivado」を使うのでインストールしておいてください。(容量・時間ともにかなりかかります)今回使うVivadoのバージョンは2017.4です。最新のもの(現在はたぶん2018.3)だと動作が安定しないことがあるらしいので、今のところ2017.4が比較的安定して使えるらしいです。

ZYBO Z7-20 (zynq-7020)に電源を入れて初期動作確認をする

先日大学時代の知り合いから格安でZYBO Z7-20 (zynq-7020)をGETしたので、とりあえず電源を入れてQSPIに最初から書き込まれているプログラムを実行させてみました。

2019年1月8日火曜日

DHT11を使ってArduinoで温度と湿度を取得する

秋月電子でDHT11を買ったのでArduino UNOに接続して温度と湿度をシリアルモニタに表示させました。
DHT11のライブラリに付属するスケッチの例ほぼそのままで動作確認しました。
DHTクラスをインスタンスして、beginしたらあとはreadするだけで簡単に温度と湿度を取得できます。簡単にWi-Fi温度計も作れそうですね。


2019年1月7日月曜日

光り物関係のQ&A

光り物関係でよくある質問を以下にまとめました。
適宜追加していきます。


2019年1月5日土曜日

秋月のESP-WROOM-02開発キットを使う~STAモードでwifiLチカ編~

前回(秋月のESP-WROOM-02開発キットを使う~APモードでwifiLチカ編~)では、開発キットと端末(iPhone8)を直接Wi-Fiで接続して無線でLチカを行いました。
APモードでLチカした場合、開発キットに接続した状態では端末がインターネットにアクセスできなくなってしまうし、接続するために毎回接続先を切り替えなければならないのが不便でした。
今回はSTAモードで開発キットとWi-Fiルータ(無線LANルーター)を接続することで、ルーターを通して端末からLチカを行います。こうすることで、開発キットが接続されたルーターに接続された様々な端末からLチカができ、ルーターがネット回線につながっていれば、端末はそのままでインターネットにアクセスできるようになります。

開発キット⇔無線ルーター⇔端末 というようなイメージで接続されています。


2019年1月1日火曜日

秋月のESP-WROOM-02開発キットを使う~APモードでwifiLチカ編~

前回(秋月のESP-WROOM-02開発キットを使う~ArduinoスケッチでLチカ編~)ではArduinoスケッチで普通にLチカさせました。
今回はついにWi-Fi経由でLチカさせてみます。
といっても、アクセスポイントモードの開発キットと端末(iPhone)をWi-Fiで直につないで、URLにアクセスするとLEDが光る、というようなものです。
開発キットの電波が届く範囲でしかLチカ操作はできませんが、無線でLEDをONOFFすることを体感できます。
端末⇔開発キットで直接Wi-Fiで繋がります。