目次:
- 用品:
- ステップ1:DeskClockボード
- ステップ2:ポゴピンとその他のハードウェア
- ステップ3:ボード用マウントの測定と作成
- ステップ4:脳用ラズベリーパイと1.8インチカラーディスプレイ
- ステップ5:1.8インチディスプレイを収納するポケット
- ステップ6:Piをプログラマーにする
- ステップ7:DeskClockボードの電源を切るためのトグルスイッチ
- ステップ8:すべてを一緒に結び付けるためのパイのソフトウェア
- ステップ9:それはすべてうまくいく!
こんにちは - 私がコミュニティに恩返しをするためにInstructablesに何かを提出してから*時代*が経ちました、それで私はwww.dougswordclock.com DeskClocksで使われるボードのために私たちの新しいプログラミングリグを作った方法を共有すると思いました。
あなたはそれがどのように行われるかを知っています、あなたは素晴らしいプロジェクトを作成し、そしてそれについて多くの人々に話しました、そして十分なトンの人々が彼ら自身のためにそれを望みます。あなたは回路基板を作り、はんだペーストと部品の塗布、はんだ付けのリフロー、そして部品の取り付けをやり直すことに時間を費やし、それからプロジェクトがそれがするように設計されたことをするようにマイクロコードをコントローラにロードし始めます…..うわー - なんてたくさんのステップなのか!
マイクロコードをロードするうん - ご存知かもしれませんが、ソフトウェアがインストールされていないコンピュータはまったく役に立ちません。私たちの時計にはすべて、特別なプログラムがロードされているので、正確に時刻を知らせることができます。私がクロック用のボードを作るとき、マイクロコントローラチップにロードされたソフトウェアはありません(チップは普通のプログラマに入れるには小さすぎる) - このプロセスはクロックが機能できるようにソフトウェアをチップに入れます。
昔は(数週間前:-))ノートパソコン、USBTinyプログラマ、そしてすばらしいAVRDUDEソフトウェアを使ってボードをプログラムしていました。ワークショップの机の上に座って、コンピュータにプログラミングコマンドを入力します。プログラミングケーブルを時計に合わせて押し、ENTERを押します。コンピュータはそれから私のために忠実にボードをプログラムするでしょう、そして私はやります。これを捉える唯一の方法は、私はずっとそこに座っていなければならないということです。そのため、私の従業員の1人が代わりにそれを実行できると決めました。失敗し、彼は再び始めなければならないでしょう。問題を悪化させるために、はんだ付けエラーがあったならば、私のラップトップのUSBポートはシャットダウンされて、USBポートをリセットするためにUSBTinyはプラグを抜かれて再び装着されなければなりません…..より良い方法がなければなりませんでした!ビッグボーイズはどのようにそれをしましたか?
Big Boys(tm)には、ケーブルを固定するのに非常に優れたロボットと、テストを実行できるファンキーな電子機器があります。 DougsWordClock.comは私のガレージを使い果たしているので、私はすぐにそこに着くことはほとんどありませんでした、それで私は私たちの生活を楽にするために何ができるでしょうか?私の友人のミカルが言うように…. "ジグを作りなさい!" (注1)
だからここにDougが作ったジグがあります!それはDougsWordClock.com DeskClockボードをプログラムするように特に設計されていますが、ここでの概念はあなたがまとめて構築している他のどんなマイクロプロセッサベースのプロジェクトにも拡張することができます。
始めましょう。
-------------------------------------------------------
注1 - 2000年初頭に、私の親友Mikalが棚を作っていたときに私の工房に入ってしまいました - ジョイントをルーティングしていました - これは退屈な繰り返し作業でした - Mikalは "Build a Jig!"私は "難しすぎる - もうすぐ終わります"と言った - 彼は "ええと、それをやらせましょう"と言った……。長い話を短くすると、ジグを組み立てることの単純さと、考えていなかったことが私の自我に激しくぶつかった…私は無用だと決心しました。それは私が無用ではなかったことを世界に証明するために記事を書くことにしました - それで私はPICベースの電子ダイスプロジェクトを設計しました。それはSilicon Chip magazine - (http://archive.siliconchip.com.au/cms/A_102324/printArticle.html)によってさえ出版されました、そして、おそらく私がプロジェクトのためにマイクロコントローラを使用して、そして記事を書くことに戻って始めたのはおそらく始まりです。 。:-)
用品:
ステップ1:DeskClockボード
まず、私はDeskClockボードから始めました。私がそれを設計したとき、私はプログラミングケーブルが接続されることを可能にするために6ピンコネクタを提供しました - これは様々なコネクタを示すボードの写真です。
もちろん、コンポーネントをボードにロードするときには、これらのコネクタを実装しません。プログラミングとテストのためだけにあります。
この写真のボードの裏側の側面。すべてのLEDがあるボードの正面とは対照的に - 最初に実装されます。製造中です。
このボードを使用して、接続したいさまざまな接続の位置と間隔を非常に慎重に測定しました。
さて、どうやってボードに接続したのですか?よろしくお願いします。私はポゴピンを使った!
ステップ2:ポゴピンとその他のハードウェア
Pogoピンは、テスト中にボードに一時的に接続するために専門家が使用するものです。それらは多くのサイズと形状で利用可能で、ピンが均等な圧力でボードに押し付けられることを確実にするために精密なバネ仕掛けのメカニズムを持っています。
私はeBayの供給業者から私のPogoピンを持ってきました - 彼らは私が今一生の供給をしていると思うほど十分に安かったです!同じサプライヤから、ボードを固定するために必要なその他のトリッキーなハードウェアも提供されました。
ピン自体、気の利いたボードクランプ、およびラバーボードの間隔マウントの写真が2枚あります。
ステップ3:ボード用マウントの測定と作成
それで、私はポゴピンと他の取り付け金具を持っています。穴の大きさと間隔を慎重に測定し、私のレーザーカッター用のレイアウトを作成しました。ドリルを使って単純に穴をあけることもできますが、カッターは美しく再現可能な仕事をします。
ピンがパッドの穴の中心にないように穴をあけることにしました - これはピンがボードにしっかりと接触することを確実にしました。
私はまたクランプのためのスペースとボードの裏側のためのいくつかのタブを設計しました。
DeskClockボードの場合、ボードには2.1mmのアキシャルパワーソケットが取り付けられていて、それを逃がすための穴を設けなければなりませんでした。最後に、ボードの裏側を支えるゴムマウントを忘れないでください。
ステップ4:脳用ラズベリーパイと1.8インチカラーディスプレイ
私は自分のラップトップを交換するために何かが必要だったので、私はラズベリーPIを使うことにしました。
それはプログラマーのベースに簡単に取り付けられ、DeskClockボードとディスプレイ、そしてトグルスイッチに接続するためにGPIOピンに接続された単純な26ウェイケーブルを使用します。
私が使用した特定のピン構成は重要ではありません - あなたはあなたのニーズに基づいてあなた自身のものを使用するでしょう。
使用されたディスプレイはSainsmartからの1.8インチディスプレイです - 私はそれらのための用途を見つけた場合に備えて6ヶ月前にそれらのヒープを持ってきました - これはただの用途でした!私はMarksのブログhttp://marks-space.com/に従いました2012/11/23 / raspberrypi-tft / Linuxカーネルを再構築して表示をサポートします。
Markは正しかった - Pi上でカーネルをコンパイルするのは遅いプロセスだった - 私はそれを一晩実行したままにした。
ディスプレイの配線は簡単で、すぐに動作するFrameBuffer2デバイスを手に入れました。
ステップ5:1.8インチディスプレイを収納するポケット
ガラガラと鳴らないようにLCDディスプレイを治具に取り付ける方法が必要でした。私は簡単なアイデアを思いついた - それのために角度のあるポケットを作るだけです。
それはユーザーがディスプレイを容易に見ることができる角度で、ユニットの前面にきちんと座っています。
ディスプレイはしっかりと収まりますが、万が一スライドすると決めた場合、3mmのナイロン製ネジで固定されます。
おかしいです、私が約20年間アクリルを扱うことがどれほど簡単であるかについて忘れていました。私は学校の店でそれを使った後、すぐにそれを忘れました。今、私のワークショップはもののバケツを持っています:-)
ステップ6:Piをプログラマーにする
ビルドの次の部分は、私がボードを直接Piでプログラムできるようにするためのソフトウェアを見つけることでした。 http://blog.stevemarple.co.uk/2013/03/how-to-use-gpio-version-of-avrdude-on.html:Steve Marpleが彼のブログで説明した方法を使うことにしました。
私の場合、1.8インチLCDディスプレイと競合するため、異なるGPIOピンを使用しました。
Piが正しくプログラミングされていることを私が発見したとき、大声で歓声が上がりました。
PIを保護するためにレベルシフターを使用している人もいます - 私はしていませんし、プロジェクトはうまくいきます。
ステップ7:DeskClockボードの電源を切るためのトグルスイッチ
私はDeskClockボードから電源を切るためにトグルスイッチを取り付けることと、それが開始する時が来たときにPIに知らせることにしました。
スイッチはDPDTなので、片方を+ 5Vに接続し、もう半分を未使用のGPIOピンに接続しました。
スイッチがオフのときはGPIOピンは接地され、オンのときはGPIOピンはHに引き上げられました。 GPIOピンが出力に設定されている場合に備えて、GPIOピンが確実にバッファされるように100オームの抵抗を使用しました。
ステップ8:すべてを一緒に結び付けるためのパイのソフトウェア
次に、私は私の最初のPythonプログラムを書きました。
私はCプログラマーです - 幸いなことに、手助けとなるチュートリアルがたくさんあります。
私は、誰かが自分のPIを天気ディスプレイとして使用したサンプルのセットからコードの大部分を入手しました。
これは、ボタンを読み込んで表示を制御するPythonスクリプトのコードです。
#!/ usr / bin / python
pygameをインポート
インポートシステム
インポート時間
時間からインポートstrftime
輸入os
インポートサブプロセス
GPiとしてRPi.GPIOをインポートする
GPIO.setmode(GPIO.BCM)
#フレームバッファデバイスをTFTに設定
os.getenv( 'SDL_FBDEV')でなければ:
os.putenv( 'SDL_FBDEV'、 '/ dev / fb1')
os.putenv( 'SDL_VIDEODRIVER'、 'fbcon')
def displayTime():
#TFTに日付と時刻を表示するために使用されます
screen.fill((0,0,0))
font = pygame.font.Font(なし、50)
now = time.localtime()
( ""%H:%M:%S "、60)、("%d%b "、10)に設定します。
timeformat、dim =設定
currentTimeLine = strftime(現在の時刻フォーマット)
text = font.render(currentTimeLine、0、(0,250,150))
Surf = pygame.transform.rotate(text、-90)
screen.blit(Surf、(dim、20))
def displayText(テキスト、サイズ、線、色、クリアスクリーン):
#TFTスクリーンにテキストを表示するために使用
clearScreenの場合:
screen.fill((0,0,0))
font = pygame.font.Font(なし、サイズ)
text = font.render(テキスト、0、色)
textRotated = pygame.transform.rotate(text、-90)
textpos = textRotated.get_rect()
textpos.centery = 80
line == 1の場合
textpos.centerx = 90
screen.blit(textRotated、textpos)
elif line == 2:
textpos.centerx = 40
screen.blit(textRotated、textpos)
def main():
グローバル画面
pygame.init()
サイズ=幅、高さ= 128、160
黒= 0、0、0
赤= 255,0,0
緑色= 0,255,0
青= 0、0、255
WHITE = 255,255,255
fail_cnt = 0
GPIO.setup(18、GPIO.IN)
pygame.mouse.set_visible(0)
screen = pygame.display.set_mode(size)
displayText( "DougsWordClock"、20、1、GREEN、True)
displayText( "150mmプログラマー"、20、2、BLUE、False)
pygame.display.flip()
time.sleep(5)
displayText( "Firmware Rev"、20、1、RED、True)
displayText( "20130520"、40、2、WHITE、False)
pygame.display.flip()
time.sleep(5)
真実ながら:
displayText( "待機中"、30、1、GREEN、True)
displayText( "Insert Board"、20、2、BLUE、False)
pygame.display.flip()
if(GPIO.input(18)):
displayText( "プログラミング"、30、1、(200,200,1)、True)
displayText( "10秒待つ"、30、2、RED、False)
pygame.display.flip()
これが実際にプログラミングを行うシェルスクリプトです。
#!/ bin / sh
cd / home / pi
sudo avrdude -c gpio -p m169 - 使用:w:0xf5:m -U使用:w:0xDa:m -U使用:w:0xFF:m - フラッシュ:w:DeskClock-Prod.hex
もちろんあなたのジグは異なるソフトウェアを持っているでしょう:-)
ステップ9:それはすべてうまくいく!
最後に、私はたくさんのつながりがあり、それは御馳走を働かせました!
私はこれらの小さな1.8インチLCDディスプレイを、今では私が自信のないPiプロジェクトのためのデバイスに転向するところまで駆動することについてのヒープを学びました。
とにかく - これが実際の写真です。
楽しい。
ここからどこへ?
まあそれはクールな質問です - 現時点では、プログラマは単にボードをプログラムし、マイクロが正しくフラッシュされたことを確認します。 LEDの動作を視覚的に(つまり明るい表示で)検査します - 次のステップは、ランニングボードと通信してRTCチップ/クリスタルの組み合わせの正確さを検証する機能を追加することです。標準。それはそれほど難しいことではありません…..:-)