IR Remote

赤外線通信の解析をするために、Arduino Nanoで回路を作ってみました。
(デバッグ用にボタンとLEDも追加)

参考: http://decode.red/ed/archives/315

単純な赤外線のオン・オフの時間を計測するプログラムです。
シリアルモニタに出力します。

結果はマイクロ秒で表示されます。

これをもとに解析をすすめたいと思います。

FPGA MAX10 (3)

前回に引き続いて、MAX10のテストをしました。
今回は、以下ボード回路図を参考にI/Oのテストをしてみました。

https://service.macnica.co.jp/library/121809
https://service.macnica.co.jp/article_files/121809/max10_board_revb1p04__1.pdf

PB0とPB1を押すことで、違うLED(0-7)のパターンを点灯します。
PBもLEDも0と1が逆になっており、ちょっと戸惑いました。

コンパイルまでの操作は、(1)のときと同じです。
[Tools]->[Programmer]を起動して、[Edit]->[Add File]でsofファイルを選択します。
その後、(2)のときと同様、ハードウェア設定して、USBブラスターで転送します。

Pin Plannerでは、PB(PushButton)を2つ、LEDを8つを登録します。(今回はClockは使っていませんが、一応登録)


PB0を押したとき

PB1を押したとき

これを基本にまた次に進みたいと思います。
しかしLEDが明るすぎて目がいたいです (^^;

FPGA MAX10 (2)

このブログの初めに扱って以来、久しぶりとなってしまったMAX10をテストしました。
久しぶりとなってしまったのは、やはりUSB-Blasterなしでは転送が手間だったことが大きかったです。そして今回これを手に入れたので、使ってみました。

参考サイト : http://i8087.hatenablog.com/entry/20160427/1461756898

このサイトにある、LEDの点滅を実際に試してみました。
環境は前回と同じで、手順もUSB-Blasterに書き込むところ以外は同じです。HDLは、Verilogではなく、VHDLをそのまま使わせていただきました。

新しいプロジェクト作成

デバイス設定

VHDL選択

ソース作成

Pin Planner

Start Compilation

ハードウェア設定 – USB-Blaster選択(ドライバーは、Quartusインストールディレクトリにあり)

Startで転送

転送後すぐにLEDが高速で点滅

やはりUSB-Blasterは便利ですね。
今回は動作確認だけですが、次はVerilogで何か作りたいと思います。

ORANGE pico I/O

先日購入したORANGE picoとRaspberry Pi2 との間でGPIO通信をした記録です。
ピコのPORT 1,2とラズパイのGPIO 23,24でon/off(1/0)の送受信のテストをしてみました。

ラズパイ側

echo 23 > /sys/class/gpio/export
echo 24 > /sys/class/gpio/export

echo in > /sys/class/gpio/gpio23/direction
echo out > /sys/class/gpio/gpio24/direction

cat /sys/class/gpio/gpio23/value (受信)

echo 0 > /sys/class/gpio/gpio24/value (送信)
echo 1 > /sys/class/gpio/gpio24/value (送信)

参考:
https://tool-lab.com/make/raspberrypi-startup-24/
https://developer.microsoft.com/en-us/windows/iot/docs/pinmappingsrpi

ピコ側

out 1,0 (送信)
out 1,1 (送信)

ioctrl 2,2
print in(2) (受信)

参考:
http://www.picosoft.co.jp/orange/download/ORANGEpinmap.pdf
https://github.com/fu-sen/ORANGE-BASIC/blob/master/in.txt

データ送受信前には、それぞれその前にポートの設定が必要です。(ピコ側は受信のときのみ)

ESP8266 WiFi

電子工作で離れた場所からコントロールしたいとき、どうしてもWiFiが欲しくなります。
ArduinoのWiFiシールドを探していたところ、このようなモジュールがあることを知りましたが、なんとこれだけでArduinoIDEが使えるようです。
サンプルプロジェクトにあるWebサーバを使って、ブラウザからオンボードのLEDをon/offするテストをしてみました。

書き込み

設定

ブラウザからアクセス

シリアルモニタ

逆ですが、LowでLEDが光ります。
ライブラリのインストールには、
http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json
を環境設定のAdditional Boards Manager URLsに設定します。
(設定したのがしばらく前で参照元をわすれました^^;)

ArduinoIDEは、いろいろとそろっていて便利です。

Autodesk Circuits

Autodeskといえば、AutoCADなどの3Dモデリングアプリケーションを開発している会社ですが、電子回路をWEB上でシミュレーションしてくれるサービスを提供していることを最近知りました。

https://circuits.io/

電子工作を勉強するにあたり、考えた回路をちょっと試してみのにとても役に立ちそうです。
そこで赤色と青色のLEDを交互に点滅させる簡単な回路を試してみました。
Arduinoのプログラムもシミュレーションしてくれます。

抵抗値を下げると明るくなり、下げすぎると以下のように部品が破壊されるような絵になります。

さすがによくできています。
ギャラリーには、 他のユーザが作成した回路を見ることができます。

これを見ているだけで楽しい気分。
本当にすごい!

I2C / Arduino – IchigoJam

IchigoJamがI2C通信をサポートしているということで、これをマスターとしたI2C(アイアイシー:Inter-Integrated Circuit)通信をArduinoとIchigoJam間でやったメモです。

参考 : http://nuneno.cocolog-nifty.com/blog/2015/05/ichigojamarduin.html


環境: Arduino 1.6.12 / Windows 10, IchigoJam Basic 1.2.1

SDA: ArduinoのA4 – IchigoJamのIN3
SCL: ArduinoのA5 – IchigoJamのSCL
2kΩの抵抗がなかったので、1kを二つ直列に。

白: 3.3V
黒: GND
黄: Clock
橙: Data

データ送信
IchigoJam(マスタ) -> Arduino(スレーブ)

IchigoJamから送られた8バイトのデータをArduinoのコンソールで受信を確認。
Rはリターンコード。0で正常終了。

データ受信
IchigoJam(マスタ) <- Arduino(スレーブ)

Arduinoから送られた8バイトのデータをIchigoJamで受信を確認。(1から8までの文字) Rはリターンコード。0で正常終了。 テストでは、2台のIchigoJamを使って同時に実行してみましたが、問題なく独立して通信できました。

Bit Counter / Arduino

ArduinoでビットカウンタをLEDと7セグでつくってみました。
4桁の7セグと、8個のLEDなので普通に作ってしまうと、PINが足らないので、4桁の高速切り替え表示や、シフトレジスタを使うところポイントです。
あと超音波センサで測った距離も表示しようと思いましたが、今回はログ表示にとどめておきたいと思います。

7セグは高速で4桁表示しているので、ディレイなどを使って処理が遅れると表示が乱れてしまいます。このあたり意外と難しいと思いました。

参考:http://osoyoo.com/ja/2014/12/06/arduino-starter-kit/

ここのチュートリアルはとても参考になります。今回はkumanのボードですが、osoyooは他のブログでも使っています。

“95”を表示

シリアルモニタ表示

別の角度から

Arudinoはドキュメントが豊富なので(kumanのキットにはCD-ROMが付属)、パーツの使い方を学ぶのに最適ですね。

FPGA MAX10

最初の投稿は、一番やりたかったFPGA(field-programmable gate array)。

https://ja.wikipedia.org/wiki/FPGA

CQ出版社「MAX10 実験キットで学ぶFPGA&コンピュータ」を購入して、勉強を始めました。
評価ボードは何にするか迷ったのですが、マクニカのWebサイトの記事がわかりやすかったのと、USBシリアルでTeraTermを使って書き込みが可能なのこと、そしてキャンペーン価格だった、ということで Odysseyにしました。(BLEでスマホからプログラムを呼び出せるのも面白い特徴です)

[概要編] MAX® 10 評価キット Odyssey の FPGA に microUSB ポート経由でコンフィギュレーション・データを転送してLチカ!
https://store.macnica.co.jp/library/115105

接続するときのドライバーとTeraTerm設定ファイル
http://www.m-pression.com/ja/solutions/boards/odyssey/odyssey-downloads
SiLabs USB Virtual Serial Port Driver
(Silabs-CDC_Install.zip)
http://www.m-pression.com/documents/10157/cf7a1227-ed65-4f6b-b8c5-0e7c13f356fd

(TERATERM.INI)
http://www.m-pression.com/documents/10157/1beb61af-2f1a-4935-a8f6-fd1ec3f01d07


それから今回、下記の記事に大変お世話になりました。(このサイトのコード、設定値を使わせていただきました)

Impression 製 Odyssey MAX10 評価キットを使ってFPGAをはじめてみる
https://theoriesblog.blogspot.jp/2016/05/impression-odyssey-max10-fpga.html

今回テストしたのは。ボード上のボタンを押すとLEDが光るという基本のLチカですが、ツールの機能が豊富で難しく感じました。
(まだまだほんの一部しか使っていないのですが・・)しかしながらまずは第一歩です。

環境: Quartus Prime ver15.1.1 Build 189(書籍付録DVD) / Windows 10
プロジェクト作成

ソースコードの追加

コンパイルは、[Processing]->[Start Analysis & Elaboration]

[Pin Planner]起動(メニューバーのアイコン)

再度コンパイル(メニューバーのアイコン[Start Compilation])

この時点で下記のようなファイルがoutput_filesフォルダに出力されます。

[Tools]->[Programmer]を起動して、[Edit]->[Add File]で上記.sofファイルを選択します。

.jbcファイルの作成[File]->[Create jAM,JBC,SVF or ISC File …]

.jbcファイルの転送(TeraTermでSiLabasのシリアルポートを選択)

デフォルトで空いている、パーソナリティ07に書き込み

できた!!

ちなみにパーソナリティの確認

何もでてこない模様

BLE通信のiOSアプリで確認

接続できた。パーソナリティも表示。

ADC and Audio Monitor では、音量に応じて、LEDがレベルメータのように光りました。

次はシミュレータとか使ってみたいと思います。

Hello!

IoT、ロボット、AIといったIT界隈の流れの中で、電子工作とローレベルプログラミングの必要性を強く感じるようになりました。
他のブログでもそれぞれ関連する話題について書いてきましたが、このテーマはこのブログで書いていくことにしました。
ということでブログもリニューアルしました。

ラズパイ電子工作
http://decode.red/ed/archives/202

Arduino電子工作
http://decode.red/ed/archives/315

FPGA & GPU/OPENCL
http://decode.red/blog/20150913427/

TAIL RECURSION
http://decode.red/blog/20161022617/

IoT / IchigoJam BASIC
http://decode.red/net/archives/320

IoT / IchigoLatte JavaScript
http://decode.red/net/archives/327

このbitlifeというタイトルのブログは、10年以上前にはじめましたが(初期バージョン)、ここにきてようやくそのタイトルに一番ふさわしいテーマになってきたような気がします。