ラベル Raspberry pi の投稿を表示しています。 すべての投稿を表示
ラベル Raspberry pi の投稿を表示しています。 すべての投稿を表示

2020年4月21日火曜日

ラズパイに安い1.3インチST-7789液晶を接続する

ケースもわしが作った

またしても「確かめてから買う」を怠ったために苦労しました。

えーと、Amazonで1.3インチ240x240ドットのカラー液晶がやけに安いです。なので、飛びついて買ったのですが、SPIに必須のはずのCS端子がありません。

ラズパイでこれを動かすには、いろいろ探したのですが……

端子名ラズパイPIN番号
GND20
VCC17
SCL23
SDA19
RES13
DC22
BLK18

上記のように接続し、こちらのライブラリを使います。

ラズパイでリポジトリをクローンし、
git clone https://github.com/solinnovay/Python_ST7789

cd Python_ST7789
sudo python setup.py build
sudo python setup.py install
cd examples/
python clock_EN.py 

これで画像がパラパラ表示された後、時計が動くはずです。

事前にpip install ST7789を実行したら別のライブラリが入ってしまってしばらく呻吟しました。



なお、例によってケースを3Dプリントで作りました。が、円錐形のピンに基板をぎゅっと押し込んで固定するというハラでしたが、基板を取り外すときに斜めに力がかかって折れました……やっぱり可撓性のあるツメとかじゃないとダメですね。

てへ。

【追記】冒頭の表示のまま8時間ほど放置していたら、表示が焼き付きました。OLEDと違って明日の朝までにはほとんどわからなくなっていると思いますけど、こういう特性のものだというのは把握しておいた方がいいかと思います。

【追記の追記】翌朝には消えていました。はい。


2019年10月26日土曜日

ラズパイケース試作(3Dプリンタ)


勤務先のちょっとした課題用として、Fusion 360でラズパイケースを作りました。Zero WHにフルサイズの基板を乗っけるケースなので、ネジ穴は段違いにして、ケースの蓋も出力。外装の厚さは2mmで蓋と本体を別にしました。底面はサポートなし、窓だけサポートを入れました。

0.05mmスライス12秒の設定で本体4時間、蓋30分でした。使用したレジンはこちら。無臭と書いてありますが、硬化前はアルコールのような匂いがしますし、硬化中の匂いは他の製品とあまり変わらない如何にも身体に悪そうな匂いがします。

奥行が出力限界ギリギリだったので心配していたら、案の定壁が一つ出力されませんでした。はっはっは。上の写真手前です。はっはっはっは。

あと、窓もない単純な垂直な壁にしたのがいけなかったのか、ギザギザの傷があります。収縮した歪みが集中したんでしょうかね。さすがのSLAとはいえ、透明レジンで垂直の壁、積層痕が見えます。



蓋は噛み合いを1mmにして、内寸は0.05mm小さくして出力しました。タッパーみたいにしっとりとハマり、逆さにしても落ちません。今回唯一成功したポイントだな、これ。

ただ、これは多分に怪我の巧妙で、計測すると平面として出力した底面と壁部分とでは幅が少し違っています。幅は設計では75mmでしたが、出力は底面75.4mm、壁部分では74.4-74.8mmでした。




反省点

  • レジンは振ってから注げと取説にあったので振ったら泡まみれになりました。トランプで寄せて除去しましたが、30分ぐらい放置しておけば消えますね。
  • 出力限界-2mmで出力したら片側に寄って枠からはみ出した分が出力されなかった。出力前に要確認
  • 短い方の足の設定が間違っていてうっすらとしか出力されてない。断面解析で足があることは確認したはずなんですが……なんででしょう。

2019年9月6日金曜日

パススルーのモバイルバッテリー

フィリップスからパススルーのモバイルバッテリーが出ていると聞いて、買ってみました。パススルーとは充電しながら電力を取り出せるタイプです。IoT用途で太陽電池から充電しながらUPSっぽく使えたらいいなと思いまして。
フィリップス PHILIPS モバイルバッテリー 10000mAh 大容量 軽量 薄型 急速充電 Type-C 残量表示 PSEマーク認証取得 スマホ タブレット iPhone GALAXY Xperia DLP6712N (ブラック)

なお、上のリンクからAmazonのページに飛ぶと解説が書いてあるんですが…日本語が少し怪しいし、フィリップスのWebで型番検索しても出てきません。Amazonでの扱い開始から1年以上経過していて、ニセモノならフィリップスが黙ってないような気もしますが…いずれにしても、購入するか否かはご自身のリスクでご判断ください。


で、届いたのですが…IoTにはちょっと…すごく…大きいですね…。

あとバッテリへの充電はUSB-Cですが、付属しているのはmicro USBです。充電用ケーブルは別途用意する必要があります。何も考えないでブラックを買ってしまいましたが、屋外設置で熱のことを考えると白のほうが良かったかな。

■微小電流デバイスにはNG■

多くのモバイルバッテリと異なりボタンを押さなくても電力供給が開始されるのですが、Arduino nanoぐらいの微弱?電流だと1分ほどで切れてしまいます。ESP32なら切れません。

■パススルー性能は?■

充電開始時には問題なさそうですが、充電ケーブルを抜いた瞬間30mSecほど電流供給がoffになります。ESP32 DevKitCだとパワーLEDが一瞬消えますが、リセットかからず動作を続けます。大きめのケミコンかスーパーキャパシタをつけておけば回避できそうです。

■結論■

ESP32やRaspberry Piを太陽電池で充電しながら使う、という用途にはいけそうな気がします。ありもので太陽電池からの充電回路を作って試してみます。しばらく動かしたらまたご報告します。

2017年12月31日日曜日

ラズパイ用micro SDカード管理(小ネタ)

ホコリも吸着するという問題が

あのちっこいSDカードに、ネームランドのテープを貼ったりしていまいしたが、ネームランド面倒くさい。

ふと思い立ってポストイットのノリ部分にmicro SDを直接貼ってみたら、意外と便利でした。しばらく使わないときはクリアファイルに内側から貼り付けておけばファイリングも可能ですw

2016年10月26日水曜日

Raspberry Pi + LPC1114FN28

Raspberry Pi 2 Model BとLPC1114FN28をつないでみました。

存在感を放つLPC1114FN28 :-)

■追記 11月13日■

デスクトップで使っている場合には問題なかったのですが、ssh経由でターミナルからログインしてつかっているとシリアルターミナルが /dev/ttyAM0 が有効になってしまうためlpc21ispが動いてくれません。そのための手順を加筆しました。

■追記ここまで■


ユニバーサル基板だと面倒なのでElecrowに基板発注したんですが、いやー、スルーホール部品多いとめんどくさいです。ほんの1-2年前まで「表面実装ばかりになってこれからどうすれば良いのかorz」なんて言ってたのにね。

…今、これを書いていて、「ブレッドボードでいいじゃん」と気が付きましたがorz

でも、このぐらいの基板なら一発で動いちゃいますから、今時のCADとかPCB業者って凄いですね。ああ塩化第二鉄のニオイが懐かしい。インスタントレタリングとかレトラテープでパターンを書いたもんさ(遠い目

さて。

RPi + LPC1114でググってみるとRPiにつないだUSBシリアルなどから書き込みをしたり、shellでRESET/ISPを操作している例が多いのですが、最新版のlpc21ispにはgpioでRESET/ISPを制御する機能があるので、これを使わない手はありません。

LPC1114FN28のDP23とRPiのDP24, DP24とGPIO23, DP16とRxD, DP15とTxDを接続します。あとは電源VccとGnd、何もないと寂しいのでDP14に赤色LEDと抵抗(とりあえず1kΩ)をつなぎます。

書き込みには前述の通りlpc21ispを使います。ただ、apt-getで入れるとgpiorst / gpioispのコントロール機能が有効にならないのでgithubから落としてビルドします。

と言っても、
cd
git clone https://github.com/capiman/lpc21isp.git
cd lpc21isp
make
sudo cp lpc21isp /usr/local/bin
sudo chown root:root /usr/local/bin/lpc21isp
だけです。

なお、sshからログインしてターミナルで使っている場合には、以下の手順でシリアルコンソールを無効にする必要があります。

  1. /boot/cmdline.txtを開いて console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 を削除
  2. rebootし、再度sshでログインした後、
    sudo systemctl stop serial-getty@ttyAMA0.service
    で、コンソールを停止にする

2.については再起動するたびに実行する必要があります。serviceをdisableすれば毎回実行しなくて良いのですが、sshもVNCも接続できなくなってしまいました(キーボード/マウス/ディスプレイを接続して再度enableして復活)。シリアルコンソールを停止する手順は以上です。

GPIO23とGPIO24を出力として有効にします。
sudo echo 23 > /sys/class/gpio/export
sudo echo 24 > /sys/class/gpio/export
sudo echo out > /sys/class/gpio/gpio23/direction
sudo echo out > /sys/class/gpio/gpio24/direction
書き込むプログラムはmbedのオンラインコンパイラで用意します。mbed_blinkyで、

DigitalOut myled(dp14);

のところをLEDをつないだIOに変更します。targetをLPC1114FN28にしてコンパイルするとmbed_blinky_LPC1114.binが~Downloadsディレクトリ下に落ちます。

お待たせしました。

pi@raspberrypi:~/Downloads $ sudo lpc21isp -gpiorst24 -gpioisp23 -controlinv -bin mbed_blinky_LPC1114.bin /dev/ttyAMA0 115200 48000
であとは勝手にRESETとISPが操作されて
lpc21isp version 1.97
File mbed_blinky_LPC1114.bin:
loaded...
image size : 10540
Image size : 10540
Synchronizing (ESC to abort). OK
Read bootcode version: 1
7
Read part ID: LPC1114.../102, 32 kiB FLASH / 4 kiB SRAM (0x1A40902B)
Will start programming at Sector 1 if possible, and conclude with Sector 0 to ensure that checksum is written last.
Erasing sector 0 first, to invalidate checksum. OK
Sector 1: ...........................|.........................|.........................|.........................
Sector 2: ...........................|.........................|.........
Sector 0: ..........................|.........................|.........................|.........................
Download Finished... taking 2 seconds
Now launching the brand new code
pi@raspberrypi:~/Downloads $ 

これでめでたくLPC1114FN28のDP14につないだLEDが点滅します。

やったね♡

lpc21ispの作者およびgpiorst/gpioispの機能を提供してくださった方々に感謝申し上げます。ああ、今晩はぐっすり眠れそうだw

■追記 2017年1月10日■

Raspberry Pi 3Bだとlpc21isp(シリアルポート)が動作しないことがあります。OSのバージョンなどによって異なるようですが、上記の手順で動作しない場合には/boot/config.txtの末尾に以下の行を追加してみてください
dtoverlay=pi3-miniuart-bt

2016年7月22日金曜日

ラズパイ用電源制御基板

かわいいラズパイA。実は一番好きだ。
ラズパイからI2Cでコマンドを送ると指定した秒数経過後に電源を落とし、また設定時間経過後に電源を入れる基板。こんな単純な処理にMSP430G2553を使うことはないんだけど、手持ちで一番消費電力が少なくEnergia(≒Arduino IDE)で簡単に開発できるので(ATTinyあるけど書き込むの面倒くさい)。

とりあえず出来たので記念写真。ユニバーサル基板は疲れるわー。でも、ちゃんと?回路図を書いてから作業したので、私にしては珍しく一箇所も間違えずに完成した。大抵、出来上がってから「あ、1ピンと20ピンが逆だった」みたいな致命的なミスを見つけるんだけどorz

回路図は人様に見せられるものではないレベルw

見せてるけどなw
疲れたから仕上げは後にしようっと。始めたのは16:30だったから3時間か…。

--

あとは明日にしようと思っていたら23:30ごろ目が覚めてしまって、作業再開。

その間色々なことがありました…。

圧着した後でピンが違うことに気づき

ピンを付け直して圧着完了

部品が干渉するのでTO220を表面実装のMOSFETに交換。プルアップ抵抗もまとめて実装。
まずは圧着するピンを間違えてやりなおしorz

特性が今ひとつなのでハイサイドのスイッチをN-ch一個から2SC1815で電圧変換してからP-ch MOSを駆動する回路に変更。動作が安定せず。調べてみたら、ベース抵抗が100Ωだった。ゲート抵抗をそのまま使っていて交換忘れてましたorz 2.2kΩに交換して安定動作を確保。

パワーLEDを負荷として用いたチェックを一通り終えたので、いよいよラズパイ2B+をつないで見た…ら、MSP430G2553が起動しないorz

オシロで電源見てみたら、起動した瞬間に5v電源が3v近くまでドロップし(犯人はUSBケーブル)ていました。ので、3.3vラインに220μFのケミコンを追加して無事解決。

と思ったらケースのフタがしまらなくなってしまったので、電解コンデンサを取り付け直し。

よし、あとは電源のためのコネクタを接続…しようと思ったら、秋月から仕入れたミニBのDIP化基板には100mAのリセッタブルヒューズがついていて使えない。ねんのため普通のBも買ってあったのですが、家にB<->BのUSBケーブルが見当たらない…。他の小物と一緒にヨドバシに注文。

結局徹夜になりましたw

前述の通り、今回久しぶりのユニバーサル基板作業だったのですが、ヘッドマウントルーペの威力は絶大でした。今まで見えてないなかでよく作業してたなーと呆れるレベル。なにせワイヤストリッパにワイヤをセットするにもよく見えていなかったし、圧着もほぼ勘でしたw ハンダが溶け込んでいくところもよく見えるし、ピンとピンの隙間にハンダ付けをするのも楽勝でした。ちょっと近くが見えにくくなってきた方は、騙されたと思って使ってみてください!



さらにちょっとプログラムを書き換えようとしたら「JDK 6がないと起動しない」とEnergia.appに言われたので今どき6はないだろ、とEnergia最新版を入れたらI2Cが動かなくなりまして。しばらく頭を抱えていたのですが、「そういえば以前もそんなことがあったな」と自分のブログを思い出す。で、改めて、その「動いてたバージョン」を入れたのですが、「ダウンロードしたバイナリが壊れているのでインストールできません」と言われるorz しょうがないのでTimeMachineからほじくりだして再々インストール。無事動くようになりました…。Energia、活動していないわけではないみたいですけど、止まってますねぇ…。

で、書き換えたのは、2番目のパラメータを5分単位に。これで最大5*255=21時間25分までのwake upタイマーとして使えます。とりあえず7/24日 18:13に 60秒後にoff、130*5分後にon…というコマンドを送ったので、これで明日の朝5時ごろ起きてくれれば最終テストOK。

2016年7月15日金曜日

MSP430G2553とRaspberry PiをI2Cで繋ぐ


■MSP430G2■

超低消費電力をArduinoと同じコードでさくっと動かすにはMSP430G2553 + Energiaに限ります。クロックを1Mhzに落とせば消費電流220μA、単3エネループ2本で1年近くもってしまう計算になります。

■接続■

GND同士、SDA同士、SCL同士…をつなぎます。3.3vは接続してはいけません。

ラズパイのHDMI端子を手前におき、GPIO端子の手前側の列、左から2番目がSDA、3番目がSCL、SCLの奥がGNDです。

例によって白がSCLです。でも黄色SDA/茶GNDなのは在庫切れorz

MSP430G2553側は、P1.6がSCL、P1.7がSDA、20ピンがGNDです。

Energiaは、I2Cが自動的にプルアップされるので抵抗を外付する必要はありません。海外ブログで ラズパイとArduino Unoをつないでいる記事を見かけて、それによれば「ラズパイがマスターでArduinoがスレーブなら問題ない。ラズパイは3.3vでプルアップされるがArduino側はされてないからだ」とのことなんですが…今手元にArduino unoがないので、確認できません。Nanoパチ(5v)で試したところ、4.5v程度の中途半端な電圧が出ていました。なので、5vロジックのArduinoを使うことはお勧めしません。接続前に電圧を測定してからにした方が無難です。

■Energiaの準備■

TI MSP430 LauchPadにMSP430G2553をセットします。同じMSP430G2でもチップによってジャンパの設定が違いますので、チップを取り替えたらこのページで確認してください。

ソースはこれです。Energiaは単に信号を受けて、1バイト目 x 2バイト目の回数、LEDを点滅させています。2バイト以外の場合はバイト数を高速で点滅します。ただし10以上はカットします。動作確認用なので特に意味はありません。

今回Arduinoではじめてi2cスレーブを書いたんですが、受信も送信もハンドラを書く方式でわかりやすくて良いですね。今後活用したいと思います。




■ラズパイの準備■

ここを参考にして一発でした。ありがとうございます。

あとは、i2cdetectで0x40が現れれば接続はOKです。
pi@raspberrypi:~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --                      
pi@raspberrypi:~ $ 

あとは、以下のように4バイト書き込めば4回チカチカし、
sudo /usr/sbin/i2cset -y 1 0x40 3 2 2 7 i

こちらで6回ゆっくり点滅すればOKです。
sudo /usr/sbin/i2cset -y 1 0x40 3 2 2 7 i

私は貧乏性なので数千円のラズパイを壊すのがとても恐ろしい。ですが、この構成ならば、例えばリレーやモーターなどの危ないことはマイコンにやらせておいて、ラズパイ様は安全なところで命令だけ下していればいい…という運用も可能になります。

■追記7/24■

i2cdetectで0x40にデバイスが現れない場合には、Energia IDEのバージョンをRelease 0101E0015にしてみてください。Release 0101E0016 / Release 0101E0017でI2Cが動かないという問題で大ハマリしたことがあり、まさにさっき同じ穴に落ちましたのでorz

2015年4月5日日曜日

秋月などで売ってるB+用ケースがすでに2用に加工済?


RS-ComponentsからやっとRPi2が届きました。注文したのは2月下旬。まぁたぶん最安値だと思うので待つのもしょうがないんですが…とりあえず発注時の出荷予定から何の連絡もなしに2週間遅れるのはいかんと思う。そういうことをするのは私の勤務先のくそったれな外注だけにしといてくれ。

ま、それはともかく。

とりいそぎケースが必要だったので、秋月のワゴン売りケースを入手。事前に調べてあった加工法によればニッパーで切るだけだったので、私でもたぶん大丈夫(書いてて悲しい)。

でさっき、ケースを加工しようと開封してみたら。

加工済みでした。
むりやり突っ込もうとして壊す人が多かったりしたのでしょうか。いずれにしても、ありがたいことです。

なお、これは公式に発表されていることではないので、もしかしたら未加工の個体もまだ流通しているかもしれません。組み立てる前に確認を。