ORBIT LOGO http://www.orbit-ltd.net 機械システム開発
FA・LA各種自動化機械設計
Since 1995 標準機械ユニット図面販売
bar
Google
機械設計講座:機械設計者のための覚え書き
フィジカルコンピューティング、ワンチップマイコン、電子工作、その他諸々
(別館)機械設計者の為のワンチップマイコン、電子工作覚え書き
0. 概要
ここではArduino以外のフィジカルコンピューティング環境の紹介や、電子工作の基礎的な事、その他諸々の事をメモとして残しておこうと思います。
あくまで機械設計者など、あまり電子回路に縁の無い人(私を含め^^;)に役立つようにと言う趣旨で基本的な事が多く物足りないかも知れませんが、機械屋さんである私が書くことに意義があるのかな?と言うことで。
基本的には、思いついたときに書くというスタイルです。
Pinguino をメインコンテンツにしようと思っていたのですが、頓挫しています。追々、追記出来れば良いなと思っていますが、それ以外の記事の方が多くなりそうです。

[記事目次]
4.2 [とりあえずGAINER-miniを動かしてみる]
4.1 [18F-2550チップ単体を使ってGAINER-miniのクローンを作る]
4.0 [秋月AE-18F2550を使って、GAINER-miniクローンを作る]
3.1 [PCとの接続とブートローダーの書込み実験]
3.0 [Pinguino互換機・クローンを作る]
2.0 [Pinguinoの開発環境を整える]
1.0 [フィジカルコンピューティング・Pinguino]




・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・
・・・・・・・・・・


4.2 [とりあえずGAINER-miniを動かしてみる]
Arduinoは単体でも、PCとつないでもどちらでも使えるのが強みだと思うけど、それは逆に言うと、PCの端末として使うときの弱みでもあると思う。
一つには、ボード側のプログラムはとPC側のプログラム、それぞれ別にプログラムしないといけないところ。
その点、GAINERは単体での使用は切り捨てられているけど、PCの外部I/Oとして割り切って使う時はお手軽に開発ができる。
それぞれ、一長一短があると思うけど、それは適材適所を考えて使う人が判断するしかないのかな?

と言うことで(^^;GAINER-miniが簡単に試せるようにと、例によってクローンを作ってみた。
だって、完成品は高いんだもの(笑)
自分で作ってみることで分かることもあるわけですからね。
回路図はこんな感じ。

GAINER-miniクローン配線図(チップ)

これはPIC-18F2550チップに直接ブートローダーを書き込んで作るもの。
ブレッドボードに組み込んだ状態はこんな感じ。

GAINER-miniブレッドボード組み付け例

で、これを作っていて思ったのはブレッドボードとUSBコネクタは相性が悪いって事(^^;
仕方がないので秋月電子で出してる16穴のミニ基板にUSBコネクタと4Pのピンヘッダを半田付けしたものを作ってつないでいます。
そこが面倒かな?
だったら、ユニバーサル基板に組み込めば良いじゃない、って事で組んだのはこんな感じ。
まぁ、配線の半田付けは面倒だけどスッキリとしてるでしょ?

PCB実装例

いやいや、半田付けなんかしたくないもっと簡単にクローンを手に入れて、とにかく試してみたいというなら、こんなのはどう?
秋月電子で販売してるUSBマイコンPIC-18F2550(AE-18F2550)をそのまま使ってブレッドボードだけで作れるクローン。
回路図はこんなもの。

GAINER-miniクローン配線図(秋月完成基板)

これをブレッドボードに組んだのが下の写真。

GAINER-miniクローン秋月ブレッドボード

でも、「ブートローダーを書き込むのが面倒だし大変なんだよ!」と言われると思うので、必要な部品(ブレッドボードは流石に付属してませんが)を揃えて部品セットにまとめてみました。
もちろん、ブートローダーの内容も書込済み。
「ショップ・オービット」の「GAINER-mini関連部品」のところにあります。

「なんだよ、結局売り込みか?」と言われそうですが、これ手間がかかる割にほとんど利益が無いんですよ。
だって、私の時給はもっと高い(^^;
電子回路とか、マイコンに縁のない機械屋さん(に限らないけど)になんとか安く提供して勉強してもらいたい、と言う気持ちでやってることなんですから。(これは本心です)

GAINERの開発環境のセットアップはこのページかその周辺がとても分かり易いです。

あとは、「試してみるか、傍観するかはあなた次第」です(笑)

最近、こういうクローン作りばかりで応用例が少ないので次回からは簡単な応用例を紹介してきたいなぁと思っています。
私も、まだまだ勉強が足りないので頑張らないと。
(2010/04/08)
4.1 [18F-2550チップ単体を使ってGAINER-miniのクローンを作る]


秋月のAE-18F2880で出来たのだから、チップで実現するのは簡単。
と思ったら思わぬトラブルに。
GAINERのIDE(と言うかProcessingですね^^;)がポートを検索し始めて、USBへ行って認識せず、「GAINER not found」とメッセージが出て止まる。
おかしいなぁ?ドライバーか?はたまたブートローダーの内容が変なのかな?などと悩む。
確か、秋月の基板でも最初トラブッたよな?という思いこみが間違いの元。
USBコネクタの端子を読み間違えていました(苦笑)
ネットでwikiを調べると、Type-BのUSBコネクタは、差し込み口に向かって左上から時計回りに1-2-3-4だと書いてあったので、それでよい物と思っていたら、これが間違い。
実は差し込み口に向かって右上から反時計回りに1-2-3-4が正解。
で、各端子の割り当ては、
1:+5V
2:D-
3:D+
4:GND
となる。
これがTypeBのミニコネクタだと左から順番に1-2-3-4-5となる。
で、各端子の割り当ては、
1:+5V
2:D-
3:D+
4:N.C(無接続)
5:GND
となる。

あ、そうそう。RT社で公開してるGAINER-miniの回路図にも誤りがあって、
2がN.C、3がD+、4がD−と書いてあるけど、本当は上の通りでないと駄目。
最初、方向が1と5の方向が逆なのかな?と思ったけどそうすると電源電圧の±が逆になるし、やっぱり記入ミスですよね?

で、試行錯誤のなれの果てがこの写真。

SSCN0714.JPG

抜き差しを繰り返した痕跡がありありでしょ?(笑)
でもまぁ、これで部品代が700円くらいでGAINER-miniが簡単に入手出来るんだから大したものだと思うよ。
こういう物を公開して下さってる方々に感謝します。



ところで問題があって、USBのTypeBコネクタをブレッドボードにさせるようにするには、小さい変換基板が必要になる。
サンハヤトなどで出してる正式な変換基板はお値段が高いので、秋月で出してる16ホールユニバーサル基板(2.54mm)に半田付けして、かつピンヘッダーも半田付けする形が一番安価で現実的だと思うけど、半田付けは面倒だね(^^;
まぁ、1個だけ作っておけば後々使い回しが出来ると言うことで頑張りましょう。

(2010/04/08)
4.0 [秋月AE-18F2550を使って、GAINER-miniクローンを作る]
Pinguinoに手こずった副産物で、GAINER-miniのクローンが簡単に出来てしまった(笑)
以前、調べたときは何だか面倒な気がしたんだけど、やってみると意外にも簡単だった。
下の写真がそれ。

AE-18F2550 GAINER-miniクローン

LEDが余計ですが、これは色々と試すために付けた物で、機能の確認だけならLEDと抵抗を1個ずつ付けるだけでも良いのです。

でも、ここまで出来たら秋月の完成基板を使わなくても良い気がしてきた。
PIC18F2550単体は確か250円くらいで買えるはずだから、USBコネクタとタクトスイッチやLED、抵抗などを入れても500円くらいで揃っちゃいますよね?
後で、作ってみよう。
(2010/04/08)
3.1 [PCとの接続とブートローダーの書込み実験]
えっと、後は動かすのみと思っていたんですが、上手く行っていません(^^;
色々と試してみてるんだけど、まだPinguinoを認識してくれない。

どうもbootloaderがおかしいんじゃないかなぁ?と思えてならないのですがよく分かりません(苦笑)

「そもそも」論を言えば、PinguinoのIDEを使いたかったのはArduinoみたいに簡単お手軽環境で、しかも秋月電子のUSBマイコン基板がほとんどそのまま使えるのが魅力だった訳で。
しかし、今回のトラブル(?)で秋月のAE-PIC18F2550基板でGAINER-miniが簡単に使えることが分かったし、千秋ゼミで紹介されてるUBWも難なく動いたので、Pinguinoに拘る必要性が薄れてきた(^^;

しかもネットを探すとPythonでGAINER-miniを制御出来る記事も見つけたのでますますPinguinoってそれほど意味があるのかなぁ?と思えてきた。

まぁ、備忘録としてトラブッた内容を書いておこう。

0.まぁこれはPinguinoには関係ないんだけど、秋月のPICプログラマーをVer3.5からVer4に変更しようとしたら、セットアップが出来ない!
説明書にはwinフォルダー内のsetupを使えばよい、と書いてあるんだけど「〜が古いから更新しないとインストールは出来ない。更新するか?」みたいなメッセージがでるのでYESとするんだけど何度やっても同じ事の繰り返し。
困ったなと思っていたら、Ver6.7Betaとかいうフォルダーがあるじゃない。
この中のsetupを使うと難なくセットアップ完了。
しかしベータ版で良いのか?不安(^^;

次に問題になったのがシリアルポートを認識しないってこと。
ドライバーを更新すると認識するんだけど、PCの電源を落とすとまた認識しなくなる。
その都度ドライバーの更新をしている状態。
OSがwin2000だからかなぁ?

1.まぁ、とにかくPICプログラマーは動いたのでブートローダーを書き込んでみた。
「成功」って出るんだけど、なぜかブートローダーの内容がFFFFの連続なんですけど??
だから、USBだと認識してくれないのでUSBドライバーを入れることも出来ない。
何なんdろう?変だなぁ?

2.それとは別にPython環境でPinguinoのIDEを起動し、デモプログラムをコンパイルするんだけどリンクエラーが出て止まってしまう。
ネットで情報を探すと、フランス語なんだけど、やはりwin2000で同様の症状を訴えてる人がいた。
回答は「そんなはずはないんだが??」ってな内容みたい(^^;
この件は、XPのマシンでは解決、というかちゃんとコンパイル出来たのでWin2000の問題なのかなぁ?

3.で1の問題が解決しないので、問題の切り分けのためにGAINER-miniとして試してみようとやってみたら難なく動く。
じゃ、GAINER-miniで良いじゃん!ってなるよね?

4.GAINER-miniが簡単に動くのならUBWも動くかな?と試したら、やっぱりこれも難なく動く。

5.ってことでPinguinoのIDEにそんなに拘る気持ちが・・・・・(笑)
まぁ、癪なのでいつかは動かしたいけど、かなりモチベーションは下がってる状態。

こうやって考えると、Arduinoって良くできてるよね。
まぁ、ブートローダーを書き込むのは一寸大変だったけど、分かってしまえば簡単にクローンが出来ちゃうんだから。

今のところ、PICに拘る必要もないし情報も豊富なArduinoで工作した方がいいのかな?と思ってる。

追記:
えっと、なんでwin2000に拘っているかというと、仕事用のメインマシンはXPなんだけどそのマシンにはなるべくソフトをインストールしたくないので(過去の痛い経験に懲りて^^;)サブマシンでこの手の事は試したいから。
で、サブマシンは未だにwin2000を使ってるってわけ。(そんなマシンがまだ何台もある)
こっちは最悪壊れても、業務には支障が無いからね。



3.0 [Pinguino互換機・クローンを作る]
Pinguinoを試すにもハードウエアが無くては話になりません。
ざっと見たところこの基板を販売しているページが無い様なので、自分で作るしかないかも知れませんね。
ということで、回路図を見てみます。

pinguino_sans_bridge.jpg

これは所謂「Traditional 2550」というものの回路図です。
なにやら470Ωの抵抗がいっぱいありますね。
でも、これは端子保護の電流制限抵抗だとの説明ですし、「Simplified 2550」というものにはこれらの抵抗がありません。
ですから、作るとしたら「Simplified 2550」ですね。
すると、必要な部品は、

1 18F2550 I/SP
1 USB connector type B
1 XTAL 20 Mhz
2 22 pF
1 47 μF
1 220 nF
1 100 nF
2 470 ohms resistor
1 10k resistor
1 CI support 28 pin
4 pin header 2.54 mm
2 jumper
2 switch
1 Terminal block 2 positions
1 5V Regulator
2 Green led

だけとなります。
これらの部品を集めてブレッドボードで組んでも良いのですが、秋月電子通商でだしてるUSBマイコンボード [PIC18F2550-I/SO] (AE-18F2550)に少しの部品を追加するだけでクローンが出来ます。
下の図の黄色く囲ってある部分(見難くてスミマセン^^;)の「追加回路」の部分のみをブレッドボード等で組めば大丈夫なはずです。

pinguino-01C.JPG

画像で分かりにくい場合、回路図PDFのダウンロードはここから出来ます。

次回は実際に組んで動くかどうか試してみます。
そのためにはブートローダーを書込まないといけないのですけどね。
その辺の説明も書けると良いのですが・・・
(2010/04/03)
2.0 [Pinguinoの開発環境を整える]
PinguinoのIDEの構築の説明です。
Windows環境で説明しますが、MacやLinuxでも同じだと思います。

まずは、このページ
http://sites.google.com/site/pinguinotutorial/installation/windows
にアクセスします。

ping_dwld01.JPG

Python 2.52
wxpython 2.8
pyusb
libusb-win3.2


をそれぞれダウンロードしてインストールします。
細かいことは書きませんが、何かあっても全てYesで続行して構わないです。 たまに libusb を再インストールするように要求されることがあるそうですが、その場合は指示に従います。

次に hackinglab と書かれているところをクリックして driver pinguino windows をダウンロードし、適当なフォルダーに解凍展開します。
このドライバーは後で、PinguinoをつないだときにWindowsがドライバーを要求してきますので、このフォルダーを指定してやります。

最後に、Download Pinguino Last Release とあるところをクリックしてPinguinoのIDEをダウンロードし、適当なフォルダーに展開します。
そこに出来たPinguino betaX.pyを右クリックしPythonで実行すると下の様な画面が出てくれば成功です。

pinguino_gamen.JPG

上に書いたようにPinguinoのIDEはPythonで実行されています。
file → open → examples 内のサンプルプログラムを参考にして下さい。
基本的にはArduinoとほとんど変わりが無いと思います。
例えば、delayフォルダーの中のtestmills.pde などを見るとそれがよく分かると思います。


(2010/03/29)
1.0 [フィジカルコンピューティング・Pinguino]

 AVRを使ったフィジカルコンピューティング環境としてArduinoを紹介していますが、PIC18F2550を使用したArduinoライクな「Pinguino」と言うものがあります。
ここを見ると非常にシンプルなボードであるのが分かります。
この作者のコメントにはこう書かれています。(私の拙訳かつ意訳ですので、おかしなところがあってもご容赦^^;)
「Pinguinoは、PICマイクロコントローラベースのArduinoライクなボードだ。
このプロジェクトのゴールはLINUX、Windows、MAC OS X環境で簡単に使える統合開発環境を構築することだ。
Arduinoはパワフルなツールだがいくつか不満な点がある。
一つは、チップ上にネーティブなUSBインターフェースが無いことによる不便さであり、またその生成されるコードの長さもそうだ。
PinguinoのIDE(統合開発環境)はPythonで構築されている。
統合されたプリプロセッサーとトランスレーターはArduino固有の命令群をダイレクトにC言語に変換する。
このプリプロセッサーはコードの長さを短縮し実行スピードを向上させている。
PinguinoのハードウエアはPIC18F2550をベースであり、このチップはネーティブなUSBモジュールと、シリアルインターフェースのUARTも内蔵している。
PinguinoのIDEそのものは、Cコンパイラー(SDCC)、アセンブラとリンカー(GPUTILD)、そしてPUF VASCOプロジェクトをベースにしたブートローダーで構成されるスタンドアローンのアプリケーションだ。
Pinguinoはオープンハードウエア、オープンソフトウエアだ。そしてこのIDE( integrated development environment ) は windows, linux そして Mac os x で使用可能だ。」

[原文]
Pinguino is an Arduino-like board based on a PIC Microcontroller. The goal of this project is to build an integrated IDE easy to use on LINUX, WINDOWS and MAC OS X. Arduino is a powerful tool with some defaults. One of its inconveniences are a no native USB interface on the chip and its code length.

The IDE of Pinguino is built with Python. An integrated preprocessor translates specific Arduino instructions directly into C. This preprocessor reduces the code length and the execution speed. Pinguino hardware is based on a 18F2550. This chip has an integrated native USB module and an UART for serial link.

Finally the Pinguino IDE is a stand alone application with a C compiler (SDCC), assembler and linker (GPUTILS) and a bootloader based on the PUF VASCO project.

Pinguino is Open hardware and Open software. The IDE ( integrated development environment ) is avalaible for windows, linux and Mac os x .

Arduinoの意味はよく分かりませんが、イタリア語らしいですね。
ではPinguinoはどういう意味なのでしょうか?
イタリア語とスペイン語では同じスペルでペンギンの事だそうです。
なので、上にあるペンギンの顔の意味もおわかりでしょう。


 ArduinoがあるのになんでPinguinoなんかに手を出すのか?と言われそうですが。
ではArduinoの不満な点は何かないでしょうか?
Pinguinoの作者が言ってるように、AVRチップそのものにはUSB環境が無いので、何らかのUSB-シリアルインタフェースの様なものが必要だと言う点が大きいと思います。(コードの長さが不満だとも言っていますが、私の使い方では今のところあまり問題無いのです)
特に互換クローンを作っていると、これを痛感します。
で、PIC-18F2550-I/SPは秋月などで買うと(2010年3月時点)400円ですから、AVRにUSB-シリアルインタフェースを付けた値段(おおよそ1,200円程度?)に較べれば安価です。
また、これは後で説明しますが秋月で販売しているUSBマイコンボード完成品(PIC18F2550)」(型番:AE-2550)に一寸した外付け回路(と言ってもスイッチとLED、抵抗とコンデンサを一寸)を付けるだけでクローンが完成しますから、かなり身近な物と言えると思います。
実は、このマイコンボードでGAINER-miniの互換機が作れるのですが、ブートローダーを書込むのが結構面倒なのですよね。
なので、ここではpinguinoを使っていくことにします。



(2010/03/13)
上に戻る
copyright(c) 2011-  orbit limited.

よろしければ、簡単なアンケートにご協力をお願いします。


Google

ホームページへ戻る