Japanino ArduinoISPで ATtiny13 の ATtiny85 への置換方針 (3/28)

AVR 8Pin DIP の ATtiny13とATtiny85の互換性(差異)だが、

メインの違いはRAM容量で、ATtiny13 = 1KB , ATtiny25/45/85 = 2/4/8KB 。
ではATtiny*5はATtiny13の完全上位互換かというと、そうではない。

技術者あるあるで、まず短所から。

(1) ATtiny10/11/12/13/14/15の系列
(2) ATtiny15/25/45/85の系列
1の拡張は機能メイン、2は容量メイン。

つまり、ATtiny XY のXは容量(KB)、Yは機能の互換性を示しているので、
ATtiny13とATtiny85は機能の拡張+容量の拡張になる。

ただし、内・外部クロック周波数は、ATtiny*5がサポートする周波数でのみ互換性があるので、それ以外の設定では同じクロック数にならない。

また機能追加のせいで低電力動作時の消費電力が20%大きい(240→300μA)。

細かいが、AVRの新しいチップには内蔵RCのジッタ(波形のくっきり度)が大きくなる傾向があるので、より高精度に使うには外部クロックの使用推奨度も大きくなる。

ここまで。

ここからは長所。

互換性については、外部ピンレベルではハード的に上位互換性があるので、内蔵RCや外部クロックで同じにすれば、あとはピン機能とFuse設定の変更だけで、プログラムのソフト互換は保たれる(命令数123でアセンブラレベルで同じ)。HEXしかなくても、AVRはわかりやすいので書き換えは可能。ソースがあればコンパイル時にピン機能を置換するだけ。ピン機能も基本的なものは同じ。

なのでチップ置き換え可能性は高い。

ここまで。

ピン機能で大きな違いとしてタイマ1と、USIというUSARTの下位シリアル機能が追加されている。

円高で古いATtiny13の方が極端に安い間は、単機能を実験するのに気軽に買えばいいし、もし価格差が縮まったり、容量や追加機能が必要になったらATtiny*5を買えばいい。

AVRはPICよりもチップごとのピン機能やハードの互換性が高く、周辺機能が基本的なものに抑えられているおかげで、ディスコンになっても置き換えがしやすい構造となっている。そうやってPICのような地位に登り詰めるまで広く技術ノウハウを貯めていく方策だったのだろう。そしてそれはarduinoでの採用により成功した。合併してもディスコンに強いというメリットがなくなるからPICとの混合はしないだろう。そしてメーカーとしては製造設備投資などコストアップにつながるので、ディスコンできるチップは魅力的。新しいチップに投資が出来るなら将来性をAVRにかけて、カスタマイズ性をPICに与えていくのだろう。

ARMのドタバタが続くなら、このまま8ビットの緩やかなコスパ良好(上昇)路線でベースを整え、32ビットでパワーを出していく(32ビットも互換性重視で)、ノウハウを貯める感じかな。うまく舵取り出来れば将来性とコスパの魅力で利点を大きく伸ばしつつ、主戦場のマイコン32ビットで主権を握っていくのだろう。
[PR]
# by k1segawa | 2017-03-28 17:21 | arduino, AVR | Comments(0)

デルタ型3Dプリンタ - パラレルリンク機構 (3/23)

3DプリンタとかCNCフライスとかプリント基板の削除による作成を検討していたのだけど、タイトルのようにx-y-z軸でない3Dプリンタが高精度・低価格・コンパクトで購入しやすい。

機構が面白いので調べたら、サーボモータ3個で簡単に作れそう。制御方法は数式が難しそうだが。

a0034780_23381572.jpg
なんで水平になるのかよくわからないけどこちらのサイト様が詳しい。
a0034780_23472280.jpg
別のページでオートキャリブレーションや高い剛性、入手しやすいフィラメントの選定など勉強になる。

こちらのサイト様でしっかりした物が6万円の手ごろな価格で購入できる。国内で組立済みで買えるのでトラブルも少ない。
a0034780_23525050.jpg
基本は枯れた技術らしい。ドリルが載せれられば切削してプリンタ基盤も作れるかな。


[PR]
# by k1segawa | 2017-03-24 00:04 | Comments(0)

Japanino ArduinoISPで ATtiny13 で BASCOM-AVR (39) (3/17)

またシリアル通信は確かにアセンブラで制御すれば収まるかもしれないが、ワンチップマイコンの使い方でも、本当に中のハードの仕組みまで抑えないと出来ない。

シリアル通信自体、規格に沿って使うだけだったので、細かい通信のインプリメントをハードレベルで実現したいとは考えていない。ハードの汎用ロジックICのデジタル電子回路の習得までと決めてあったのに、小さいもの好きが高じて8Pin1KBのATtiny13にこだわり過ぎた。
同じことをするなら、ATtiny85でシリアル通信をソフトシリアルで受信バッファを持たせた物に置換する。そしてATtiny13には簡単な制御だけにし、PCへの1個のセンサーデータ取り込みをシリアルで行うためにはATtiny85とする。
そしてMatrix 8x8 LEDで無理に汎用ロジックICを使うのではなくどうしても使いたい場合に使う。
だから8Pinは実験のためであり、安く単純に使うためBASCOM-AVRやArduinoを使う。
複数センサー入力するなら8Pinにこだわらないし、容量も1KBにこだわらない。
そしてそれは実験ではなく実用にしたいのだから、少し高くてもきちんとしたものにして、流用を考えない。だからブレッドボードではなく基板で、50円マイコンじゃなくてもいい。それが8KB越えするならArduinoでもよい。

アセンブラもそうなると全体を作成するのではなくサイズ縮小ではなく、高速化のためとなる。
ならばAVRではなくARMにすればいい。がワンチップマイコンでARMが使えるのかわからない。
AVRならば大容量多ピン種でも8ビット/32ビットともにArduinoのブートローダを書き込めばソフトはまあまあ一律で同じのが使えるが、高速化も極めるとつらいのでARMとなる。

個人レベルで高速化が必要なものって高速な通信プロトコルのためか、液晶コントロールぐらいか。でもそれってグラフィック転送レベルだよな。なら液晶モジュール(キット)でいいんじゃない?

やはり個人ならARMの力は不要で、ソフト一律のArduinoが使えるAVRで十分だ。まあロボットを作りたいなら反応速度を上げるのにセンサーデータを解析するホストマイコンかRaspiへ通信速度が高速な必要もあるかも。ただローカルで脊髄反射のようにするならホストはいらず、AVRローカルで制御できるかな?

あと流行りの画像・音声認識や人工知能・自動運転の末端センサーなら、大容量高速通信が必要かな。ここにはARMの独壇場となりそう。

あくまでも「個人の趣味レベルの場合」で書いたが、PICはハード屋さんなら究極にコストパフォーマンス高くできるので、そういう人はPICでがりがり書けばいい。それを目指してもいいが、ハードは奥が深すぎてちゃんと勉強して専門の電気の知識を頭に入れないと難しい。

せいぜいワンチップマイコンの制御レベルでも本当に極めれば難しいので、そこはArduinoのライブラリにおんぶにだっことする。

通信とかね。

はー、回り道した。ここでいったん仕切り直しとする。これもポケコンでやった事を振り返って初心に戻ったから、ハマっていた事に気が付いた。周りを見直すのは大切だ~
[PR]
# by k1segawa | 2017-03-17 14:07 | arduino, AVR | Comments(0)

Japanino ArduinoISPで ATtiny13 で BASCOM-AVRでシリアル通信 (38) (3/17)

上記の件、区切りがつかないのでソフトも公開。
LED Matrix 8x8 の制御ソフトのシリアル部分は除く。
だが、新しい配線で3ピンしか使わない(残り2ピン - Tx/Rx用)回路用。

'****************************************
' Copyright (c) 2016 k1segawa
' License : free
' Program : 8x8 LED Control
' (by 74HC164)
'****************************************
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 18
$swstack = 8
$framesize = 4

' 74HC164x2 : 1,2
' A= 1 14=VCC
' B= 2 13=QH
' QA= 3 12=QG
' QB= 4 11=QF
' QC= 5 10=QE
' QD= 6 9=XCLR
'GND= 7 8=CLK

' B,XCLR=VCC

' ATtiny13
' PB0=A :1
' PB1=A :2
' PB2=CLK :1
' PB3=CLK :2

Config Portb.0 = Output 'A1(Data 1)
Config Portb.1 = Output 'A2(Data 2)
Config Portb.2 = Output 'CLK(Clock 1)
Config Portb.3 = Output 'SoftSerial TX
Config Portb.4 = Input 'SoftSerial RX
Set Portb.4 'Pullup
Config Base = 0 'DIM(0-7)
Const Human = 1 'Human Data=LCD designer

Dim A As Byte , I As Byte , J As Byte , W As Byte
Dim D(8) As Byte , K As Byte
Dim Rxstr As String * 17
Open "COMB.3:9600,8,N,1" For Output As #1
Open "COMB.4:9600,8,N,1" For Input As #2
Print #1 , "OK "
Input #2 , Rxstr

'--- Data Init (Start) ---
Restore Chr_data

Do
#if Human = 0

'--- 8 Bytes = 8 Lines , Data Store ---
For J = 0 To 7
Read A
'--- End Data = Return Start Data ---
If A = 99 Then
Restore Chr_data
Read A
End If
'--- Data Store ---
D(j) = A
Next J

#else

'--- [ Convert Read ] : 8 Bytes = 8 Lines , Data Store ---
For I = 0 To 7
D(i) = 0
Next I

For J = 0 To 7
Read A
'--- End Data = Return Start Data ---
If A = 99 Then
Restore Chr_data
Read A
End If

For I = 0 To 7
'--- Data Store ---
W = &H80
Shift W , Right , I
W = A And W
If W <> 0 Then
W = &H80
Shift W , Right , J
D(i) = D(i) Or W
End If
Next I
Next J

#endif

'=== Repear Same Data * 10 Loop (=200ms Display) ===
For K = 0 To 9

'--- Matrix LED A1=Char Data Pin 8 bit Shift ---
For J = 0 To 7 'A2 Shift Count (0=QA:b0, 7=QH:b7)

'--- Get 1 Byte Data ---
A = D(j)

'--- A1 74HC164 Shift ---
For I = 0 To 7
W = &H80
Shift W , Right , I 'I=0-7:bit 7-0(&H80,&H40,&H20, ...)
W = A And W 'Char Data bit mask
If W = 0 Then
Portb.0 = 1 'Data 1(A1): OFF=1(reverse)
Else
Portb.0 = 0 'ON=0(reverse)
End If

'--- Clock(CLK 1) ---
' Portb.2 = 1 'Low->Hi(Rising Edge)
' Portb.2 = 0 'Hi->Low(Falling Edge)
' Next I

'--- A2 74HC164 Shift ---
' For I = 0 To 7
If I = J Then '1 Line : ON
Portb.1 = 1 'Data 2(A2) : ON=1
Else
Portb.1 = 0 'another 7 Lines : OFF=0
End If

'--- Clock(CLK 2) ---
' Portb.3 = 1 'Low->Hi(Rising Edge)
' Portb.3 = 0 'Hi->Low(Falling Edge)
Portb.2 = 1 'Low->Hi(Rising Edge)
Portb.2 = 0 'Hi->Low(Falling Edge)
Next I

Waitms 2 ' (MAX Wait) Not hi-speed Brinking

Next J

' Not Wait (For V-Sync)

Next K
'=== Repeat End ===

Loop

End

Chr_data:
#if Human = 0
'Byte Data=bit7-0:Left-Right
'7->
'6
'5
'4
'3
'2
'1
'0
Data &H55 , &HFE , &HFC , &HF8 , &HF0 , &HE0 , &HC0 , &H80
Data &H55 , &HFE , &HFC , &HF8 , &HF0 , &HE0 , &HC0 , &H80
Data &H55 , &HFE , &HFC , &HF8 , &HF0 , &HE0 , &HC0 , &H80
Data &HAA , &HFE , &HFC , &HF8 , &HF0 , &HE0 , &HC0 , &H80
Data &HAA , &HFE , &HFC , &HF8 , &HF0 , &HE0 , &HC0 , &H80
Data &HAA , &HFE , &HFC , &HF8 , &HF0 , &HE0 , &HC0 , &H80
#else
'Byte Data=bit7-0:Up-Down
'7 6 5 4 3 2 1 0
'|
'V
' human
Data 8 , 6 , 29 , 4 , 4 , 11 , 9 , 25
Data 8 , 6 , 29 , 4 , 4 , 11 , 9 , 25
Data 8 , 8 , 4 , 12 , 14 , 4 , 10 , 11
Data 8 , 8 , 4 , 12 , 14 , 4 , 10 , 11
#endif
Data 99

' History
' [2016/12/31]
' PB3->PB2;Human=1;(Loop I)*2->*1
' [2016/10/09]
' 74HC164AP-1 reverse
' [2016/10/08]
' Read Convert Human Data (tools>LCD designer)
' [2016/10/07]
' $framesize = 16 -> 8
' Const Human #if Human define
' Data A1,A2 ON/OFF =1/0 (reverse) comment debug
' [2016/10/07]
' Pattern Data: lam mch led matrix 8*8
' URL:https://www.youtube.com/watch?v=U8zDmvD_pmY

[PR]
# by k1segawa | 2017-03-17 00:25 | arduino, AVR | Comments(0)

興味深い世界のAVR 公式・ユーザフォーラムページ・AVR SNS (3/15)

世界には色々なSNSがあるが、AVRにも企業がらみのFacebookやフォーラムが沢山あって、規模が大きいせいか日本のAVR界隈とは毛色の違った切り口で興味深い。

Arduinoに採用されたせいか、初心者に取っつきやすい情報が多い気がする。

a0034780_21070336.jpg
Atmel社 Facebook で生きているページ。
Atmel Facebook はなぜかつながらなかった。


a0034780_21124807.jpg
Atmel University 向けプログラム(大学生向け)のHP。色々な関連リンクがあるので、ここからたどるのがいいかも。


a0034780_21191097.jpg
上記のリンクにあるメイカーズのためのGoogle+。ArduinoやRaspberry Piなど様々な電子工作作品がある。


a0034780_21271646.jpg
LinkedIn(ビジネスSNS)のAtmel公式。Facebookより力を入れているように見える。
コンパイラのリリースや新しいボードの情報はこちらが早い。
SNSなのでユーザが活発なのかも。面白い工作も投稿されている。


a0034780_21320035.jpg
いわゆるAVR非公式ユーザフォーラム。AVRの色々な問題や疑問・質問はここで取り上げられて検討されている。Arduino公式フォーラムと合わせてチェックしたい。

検索でWebに載っている事を一通りやって、やりたいことが見つからなくなったら、世界の大きなサイトにアクセスすると色々変わった事をやっていて、マンネリから脱出できるような気がする。


[PR]
# by k1segawa | 2017-03-15 21:26 | arduino, AVR | Comments(0)

ポケコン PC-G850Vで電子回路工作(3/15)

a0034780_1223957.jpg


なんかポケコンを購入された人がいらっしゃるので、自分の所よりもわかりやすいサイト様があったので紹介。

【その5 アナログでGO!】 - ポケコンで電子工作_5

こちらはA/D変換を自分とは違ったICで変換している。
私はSPI通信でやったが、このICは8ピンで0~255(6ピンなので0~31?)の値で返してくれるらしい。
これはpiogetで11ピンにかかる信号で取得するらしいが、piogetの使い方を理解していないのと11ピンに繋ぐ必要な回路がわかっていなかった。

そこでpiogetを探したら次のサイト様が見つかった。

G850V DTMFデコーダー - CURIOSITA - 好奇心

こちらはQ1~4の昔のボタン電話のプッシュ音(AD)を解析してくれるICで、4ピンで値を返してくれる。

ポケメモの本家様へのリンクと作り方を書いてあるので、11ピンを介して128KBメモリとしてBASICプログラムをファイル保存できる。

回路と写真のすぐ下の空白の部分に隠しソースがあるのでマウスで反転させると見えてくる。
回路とそのさらに下のマニュアルの解説によるとpiogetの使い方が載ってるので、
ポケメモ本家様のファームウェアも参考に調べるとよい。

ひさびさに「ポケコン」をYoutubeで検索すると、エミュレータ上で動作している動画も上がっており、結構最近もポケコンの記事があってうれしい。やっぱり初心に戻って電子回路工作したいな~
[PR]
# by k1segawa | 2017-03-15 01:31 | ポケコン | Comments(0)

Japanino ArduinoISPで ATtiny13 で アセンブラ (38) (3/8)

AVRのアセンブラを少し勉強がてら解析。

Z80,8086,6502,6809等は知っているが、RISC系はちょっと初めてだ。
ニーモニックはZ80と同じLD,STがあり、8086のMOVもある。
基本の命令群
(1) データ転送命令
(2) 分岐命令
(3) ビット命令
(4) 算術命令

(1)はLD,ST,MOVをメインに、OUT,IN,PUSH,POP系を揃えてある。基本中の基本なのでLD,STの2文字からの派生。

(2)はCP,CALL,RET,JMPはメインに、ブランチ命令が4文字。BRxxとなっている。変わったところで次の命令をスキップする命令があり、それも4文字。SBxxとなっている。何が変わっているかというと、Z80はCPでフラグビットを立てて、ブランチ命令で指定アドレスにジャンプする組み合わせだったのが、スキップ命令では次の命令がジャンプ命令でほぼ同じ働きをし、次の命令を算術命令等にすれば、特別処理を1ステップ実行できる自由度がある。

まずニーモニックを覚えるのに(1)(2)のLD,ST,MOV,CP等の短いぱっとみて推測できる基本の「データ転送」命令を覚えてから、(2)の4文字で統一されているブランチとスキップの「分岐」命令を覚え、それらに含まれない省略形が覚えずらい命令は(3)(4)の「ビット」命令か「算術」命令と判断する、という流れか。

少ない命令と短い文字数で、オベランドを長くするというアプローチもあるが、RISCはこんな感じかな。
命令に修飾するアドレッシングモードで多彩にしたのは68系だが。
トータルの命令長を短くしてフェッチを少なくするのと、パイプラインに突っ込んでもキャンセル時に無駄にならないし、沢山突っ込める。マルチコアでCPUコアレベルで分散処理するならなおさら短い方が有利だからな。

人間が習得して、コンパイラを緻密に作れるようにマシン語レベルで読みやすい事は、GNU-gccでサポートされるためにも重要だ。集合知で切磋琢磨されないと、中規模のメーカーがいくら頑張ってもバグはなくならないし。

[PR]
# by k1segawa | 2017-03-09 00:25 | arduino, AVR | Comments(0)

J:COM LG Wine Smart(LGS01)にMNPしてみた (2/10)

ちょうどdocomoのガラケーが契約更新期間かつiモードやガラケーの生産が終了しそうなので、J:COMのうわさのガラホに変えてみた。

電話とメール、LINE、SMSが出来ればいいので、「ずーっと980円/月額 (本体コミコミ)24ヶ月」をWeb申し込み。J:COMプラザで実機を触って手触り、重さ、大きさ、キーの押しやすさ、画面タッチや表示の見易さを確認し、WebでLINEとdocomo系列のSIM動作確認済み。
ネイビー(青)で、0.5GB/月+20円/30秒、繰り越しアリ、ストラップホールアリ、Google Playアリ、契約解除4800円で、すぐにWeb上でSIMロック解除可能、microSIM、キャリアメール無し、ユーザメモリ1GB(インストールアプリ更新前は700MBくらいだったかな?)、100MB/200円で高速通信追加、低速200kbpsは上限を越した時、Android 5.1.1、J:COM mobile単体契約、電池パック1650mAh(最低3日以上持つ)、320x480、microSD 32GB、Wi-Fi、Bluetooth、カメラ300万、30万画素、お財布なしといった所。auのLTEのエリアでJ:COMサービスエリア内に自宅あり。
a0034780_2455195.jpg

Web契約して翌日翌々日には0120から作業員の申し込みをしていたので確認の電話。作業員打ち合わせ日に契約の詳細を決定。さらに実機が届くまで2~3日。自分でJ:COM mobileのサイトでMNP予約番号を入力。MNPはJ:COMプラザに実機見に行った時にdocomoから取得済み。当日含み15日間有効なので、余り余裕はない。
前のガラケーはその日の内に圏外表示に。Wi-FiでアプリインストールしたりLINE入れたりして3日くらいしてもLGS01のアンテナ表示から回転マークがとれなかったので、しびれを切らして端末の再起動したらちゃんとピクトアンテナ立った。たぶん1日もかかってなかった模様(サイトには7日かかるとかいてあったので)。

まあ、ガラケーでdocomo Xiダブル定額ライトみたいなのに入っていたので、SPモードやiモード、端末補償、留守番電話で4000~8000円かかっていたのが980~4980円ぐらいになるので3000円の節約。端末補償、留守番電話、キャリアメールは無いけどね。

ガラケーのキャリアメールの代わりにGMail、LINEで置き換え。手短かにはSMSが1通3円で送れるしね。LINE無料通話は0.5GBしかないからWi-Fiで。デザリングも2年後まで宝の持ち腐れかな。それまでにスマホの方をGalaxy S3 αから変えてるだろうけど(IIJ 3GB SNS付き1040円で運用中)。あ、スマホでやればいいのか。

2台持ちで、どちらも充電池取り外し可能なので長く使える。このガラホにしたのはいわゆる携帯打ちがしたかったのと980円が魅力だったので。

J:COMの各種サービスは、J:COM IDとJ:COMパーソナルIDを取らないと、追加の100MBやWi-FiでもJ:COMオンデマンド動画は見れない。有料動画はJ:COMのTVやネットワークを契約してないので無料のみ。

J:COMのオンデマンド動画を見たいならコミコミ980円、ただし12ヶ月以降2980円で契約する。

この機種、グローバルだとLG Wine smart Jazzという機種で、Jazzの前の機種は色に白があったのでそれが良かったんだけど、2色展開でネイビーとブラウンからしか選べなかった。でもネイビーはほぼ黒に近いので良かった。防水や留守電、電子マネーは無いけど、マナーモードやショートカットボタン、なによりキーが押しやすく、キーボード派の自分にはぴったり。今までのガラホとは違ってGoogle Playとタッチパネル、素のandroidに近いので、容量だけ気を付ければカスタマイズは自由。アプリの更新、通信モニターで500MB切ったけどね。大きめのJ:COMのアプリやGoogle Playムービー&TVなどを消しても100MB空くかどうか(色々削除したら516MB空いた。Google Playムービー&TVは消してないが)。

簡単操作はもちろん、高品質な機体とバランスのとれた画面と性能、料金の安さ。
OSの画面サイズへの柔軟な対応で、フォントも綺麗でWeb画面も割と見やすい。Google謹製のMapやGMail、Youtubeの見易さ。えらくわかりやすい取説など、シニア向けといいつつライトユーザにも優しいソフト面のすばらしさ。ほんとJ:COM専売なのがもったいない。あと、価格と大きさこのままで、画面解像度を一回り精密にしメモリを2倍にしたら、キーボード好きなら乗り換え以外のユーザにも受けると思うな~

タッチパネル操作だけどポケモンGoも動いたという話だし。

LINEは開いてトーク作成や閲覧はほぼキーで操作可能。絵文字もOKだが、スタンプや設定メニューはさすがにタッチが必要。GMailは画面上の通知をタッチパネルで操作。そこから先の消去や既読、スクロールの操作性は良い。LINEとAndroid OSの標準メニュー(GMailもメール選択や読むだけなどはOK)と肝心の日本語入力、そしてJ:COM謹製の簡単メニューや謹製アプリはキーボード対応している。

それ以外のアプリは、製作者がキーイベントを考慮していれば反応するが、それ以外はたぶん標準メニューとOKとキャンセルの標準ダイアログぐらいと日本語入力のみっぽい。OSのGUI操作は対応しているって事。アプリ独自の機能は難しいかな。

それでも右手でLGS01を保持しつつ、キーボードを押し、空いている左手をディスプレイ左に添えつつタッチする形で操作すると気持ちよく出来る。
基本ソーシャル系の文字入力を多用する時はキーボード操作と考えればいいかな。

"LG スクリーンショット"、"Android 5.1 スクリーンショット"などLGS01でなくてもキーワード検索すると参考になる記事がたくさん出てくる。
a0034780_19471860.png
ちなみにスクリーンショットは本体左側面にあるボリュームボタンの下方向と、赤い電源切りボタンを、本当に同時に押さないと撮れない。どちらかを先に押しておいてもう一方を押すのでは、先に押していたボタンの長押しになってしまうのでダメ。少し悩んだ。画面左上の矢印と数値は通信料モニターの常駐表示。
a0034780_19474865.png
これは画面上の通知を引っ張り下ろした様子。
通常Wi-Fiやモバイル通信、明るさの切替はここから。
最近知ったのだが、アプリのダウンロードをWi-Fiのみにしておけば、通信を両方ONにしておいてもWi-Fi優先なのでデータ通信料は発生しない。出先で最初にWi-Fiを探し回る分の電池が少しかかるだけ。

スタンプもこんな感じ。
a0034780_19515276.png

Google 音声検索。
a0034780_20083862.png

Google マップ。
a0034780_20085918.png
Webページ。
a0034780_20092417.png
通信量モニター(一般アプリの例)。
a0034780_20095016.png

0.5GB/月でも調べもの系のMapや検索、ニュース、天気、メール、グルメや施設、チケット予約のHP程度なら相当やっても大丈夫。
危ないのはエンタメ系動画やゲーム、アプリのダウンロード、暇つぶしのネットサーフィン。でも短時間ならOK。
繰り越しもあるしね。



[PR]
# by k1segawa | 2017-02-10 02:46 | Comments(0)

exiteブログは第三者(追跡)クッキーをブロックするとログインできない? (1/6)

スパイウェアとして危険性のあるトレーサーとしての上記タイトルのサードパーティCookieをブロックしそれまでの全Cookieを削除したら、自分のブログにログインできなくなった。


なんで?
Cookieの受け入れは「全て/セッション毎」どちらでもいいが、
「サードパーティCookieをブロックしない」は必須のようだ。
毎回Cookieのキャッシュを全削除してから動作確認済み。

通信不具合発生中は、ブログのアクセス記録でuserconf.exblog.jpなんちゃらかんたらというホストへのアクセスがgoogleについで2位だった。なんで自サーバーが2位なのかと。今は無くなっているけど。
ブログ管理に別サーバーを使っている。でもそれは保存時にバックグラウンドでやって欲しいな。編集画面内でリアルタイムによく知らないサーバーにCookieを使ってデータを送信されているってちょっとやだな。
リアルタイム編集にシステムを変更をするにあたって、メインサーバーへのアクセス頻度が上がりすぎて、別サーバーに飛ばすようにしたんだろうけどフロントエンドサーバーとバックグラウンドサーバーに分けていなかったのかな。分けていても出来なかったのかな。

セキュリティ的に良くないと書いてあるので、「セッション毎」「サードパーティCookieをブロックしない」で妥協するしかないのか。




[PR]
# by k1segawa | 2017-01-06 22:34 | Comments(2)

chromeのテキストボックスで変換中に注目文節をカーソル移動しても表示が変更されない (1/6)

Google Chrome(およびVivaldi)ブラウザで、検索(URL)ボックスとテキストボックスで動きが違う。
日本語で「電気回線」と入力し、カーソル→を押しても、変換候補が変わったのに表示が変わったり、変わらなかったりする。


検索(URL)ボックスの場合:

a0034780_1431105.jpg

a0034780_1555219.jpg

a0034780_156177.jpg

a0034780_156336.jpg(注目文節が右移動)



テキストボックスの場合:
a0034780_15165389.jpg

(入力直後)

a0034780_1518310.jpg

(変換後)

a0034780_15181865.jpg

([bug]カーソル右押したけど文節移動してる?アンダーラインの太さが変わってないよ~)

a0034780_15182927.jpg

([Verification]ESCを押して移動している事を確認)

バージョンは 55.0.2883.87 m (64-bit)、Window10 Home。
[設定]画面内のテキストボックスも表示が更新されない。
Yahoo Japan!のテキストボックスも表示が更新されない。

FirefoxやInternet Explore 11、Microsoft EdgeではYahooのテキストボックスもきちんと更新される。

どうやらChromeオープンソース全体の不具合のようで、
Vivaldi 1.6.689.40 (Stable channel) (32ビット)(Operaの派生)もChromeと同じ現象になる。
Vivaldiはカーソル位置だけは移動するが。

おや?Chrominum バージョン 54.0.2836.0はOKだ。
さすが伽藍とバザール。誰か気が付いていたか~

正解はこう。Chrominumでの表示。
a0034780_17494578.jpg
([Correct]正しい動作)



ん~、WindowsのテキストGUIを使用してブラウザを作成している部分は、きちんと表示更新されているが、独自にテキストボックスを作成しているブラウザ画面がおかしくなるようだ。

Windows 7で未確定文字列を波線のアンダーラインに変えて来たので、MS IMEの不具合かと勘ぐったが、Google日本語入力をインストールしても同じだったので、ブラウザ自体のインプリメントに不具合があるようだ。
文字を入力する際未変換の文字の下に波線がでるようになったのですが - Yahoo 知恵袋

まあ、外国の方は日本語入力なんて縁遠いから気が付かなくても仕方ないけど、日本のローカライズチームに報告した方がいいかな?

上のYahoo 知恵袋は MS IMEなら色の設定で元に戻せる。
[言語バー][設定][オプション][入力方式][MS IME][オプション][詳細設定][ローマ字/色の設定][色設定][変更][色の指定][変更箇所][入力文字][下線][ディザー細線]→[実線]
a0034780_16393634.jpg


しかし、Windows7で未変換文字列と変換済み文字列を波線と実線で分けたのには理由がある。
2文節ある変換文字列で第1文節をESCでひらがなに戻したのち、カーソル右で第2文節に移動すると、第1文節はひらがなのまま変換済み文字列になり、第2文節もESCでひらがなに戻したのち、バックスペースキーで削除すると、第2文節の未変換文字列は削除できるが、第1文節は続けて削除できない。
a0034780_1629193.jpg

分かりやすさを優先した結果、同じひらがなでも第1文節は実線で、第2文節は波線に変更したのだろう。

(無関係だが上の設定画面では[注目文節内文字][文字色][背景色]を反転表示するように変更している)

P.S.
一応Chromeから不具合報告してみた。Chrominumは対策済みだしChromeだけだな、完全未対策なのは。Vivaldiのフォーラムにもバグ報告してみた。さてどっちが早く直すかな~
[PR]
# by k1segawa | 2017-01-06 14:56 | Comments(0)

レゴブロックのようなロボットアーム簡単制御 (12/27)

レゴマインドストームのようなバラバラにして組み立てて色んな動きをさせる、日本の田宮模型の工作シリーズ。
a0034780_09195916.jpg

こちらのサイト様で知ったのだが、結構簡単に汎用的な機構が作成できる。
いよいよもって割れるがよい ARROWS Aで「100万のタマゴ」にガチ勝負を挑んだ結果……【ネタバレ】

ページ真ん中辺の「タミヤのモーター工作キット1式」というのを探したら、
3速クランクギヤーボックスセット 660円
ユニバーサルアームセット(オレンジ) 420円
ユニバーサルプレートL(210×160mm) 660円
単3電池ボックス(2本用・逆転スイッチ付)360円
で作っているらしい(タミヤのモーター工作キット1式のリンク先[動力ユニット][構造材][電気パーツ])。

こちらが無線でアームを持ったロボットを作れるキット(工作キット)。
3ch RCロボット製作セット 8600円
a0034780_9482456.jpg


次のページに6種類の作成例とこの部品だけで出来る3種類の作成例が載っている。
くふう次第で動きいろいろ!3ch RCロボット製作セット

3万円台で大ヒットしたお掃除ロボットiRobotルンバも買える昨今、これをarduinoやワンチップマイコンで制御すれば、次のステップにちょうど良いのではないだろうか。
a0034780_9534147.jpg


オレコマンダーとか再販して欲しい物がいっぱいあるな。hori頑張ってー。
[PR]
# by k1segawa | 2016-12-27 09:30 | arduino, AVR | Comments(0)

Japanino ArduinoISPで ATtiny13でBASCOM-AVR

第一回プラチナブロガーコンテスト
に参加します。

a0034780_01191652.jpg


IoTの流行で、arduinoで電子工作をされる方が増えましたが、その先はどうしたらいいか戸惑っているのではないでしょうか?

自分で書いてある通りやったあと、どう変更したり、自分の好きな部品をくっつけるにはどうしたらわかるんだろう?

arduinoは簡単ですが、さらに先に進むには、回路とプログラムがわかるようにならなければなりません。

それには実験するのが一番で、価格的にarduinoは「もったいない」。
またarduinoの基礎となるAVRマイコンは、足の数が多すぎてよくわからない。

そこでATtiny13です。足はたった8本です。
arduinoは簡単ですが、実は裏で沢山のライブラリに頼っています。
シンプルにBASICはいかがでしょうか?

digitalWrite(PB3,ON)と書くより、PORTB.3=ONの方がわかりやすいのではないでしょうか?

BASCOM-AVRarduinoよりプログラムは小さくなります。ATtinyシリーズはATtiny13なら1kBATtiny85でも8kBしか入りません。
小さいプログラムなら、簡単な事を一つずつしか出来ません。でも1個50円なので、沢山買っても財布は痛みません。実験して壊してもいいのはとても初心者向きだと思います。

ピンが足りないなら、ATtiny841なら14ATtiny861なら20。小さいブレッドボードで可愛く作れます(^O^)。

ぜひ、ATtiny13BASCOM-AVRを使ってみてください。

以下は最近の作ったものです。
a0034780_01394451.jpg

左側が今持っているarduinoを使った書込み器、右側がシリアル通信してLEDを光らせる回路を追加したもの。

ね、簡単でしょ?

arduinoとAVRへのリンク一覧へはこちら。


[PR]
# by k1segawa | 2016-12-27 01:46 | arduino, AVR | Comments(0)

Japanino ArduinoISPで ATtiny13 で Atmel Studio 7 (37) (12/27)

Atmel が 2016年4月にMicrochipに買収されたのに伴い、最近公式ライターAVRISP mkIIが販売終了になってしまったので、ちょっと慌ててAVR Studioを落とそうとしたら、もうAtmel Studio 7しかダウンロードできなくなってしまっていた。

どんどん新しい環境になっているのでC/C++で開発できるかチェック。
公式のダウンロードサイトでは、Windows 10ではWeb インストールとオフライン インストールが選べるのだが、オフライン インストーラを起動しても「Windowsがこのプログラムの起動を中止しました」と出てセキュリティチェックではじかれてしまう。

仕方ないのでWeb インストール(物凄く時間がかかる)して起動すると、大分様相が変わっていた。
プログラムの組み方をググって、ソースを書いたり、設定を行うのに次のサイト様を参考にした。
Atmel Studio の環境立ち上げと 使用方法 - PDF

自分の環境は、Windows10 64bit、Atmel Studino 7.0.1188、ATtiny13A、Arduino ISPライタ、arvdudeの組み合わせなので、[メニュー][ツール][外部ツール]で環境設定行う。
a0034780_23405944.jpg

引数はサイト様がATmega168pのarduino用で、今回はATtiny13Aのワンチップマイコン直接用なのでちょっと違って、以下のようになる。
-p t13 -c avrisp -P \\.\COM3 -b 19200 -U flash:w:"$(ProjectDir)Debug\$(TargetName).hex":i -C C:\avrdude\avrdude.conf

この中でItemFileName→TargetNameになっている(ItemFileName=main、TargetName=GccApplication1)のは、サイト様の手順でソースを追加するとプロジェクト名はGccApplication1で変わらないが、ソースファイルはGccApplication1.c→main.cに変わっており(バージョンアップで変わったのだろう)、実際に出力されるHexファイル名はmain.hex→GccApplication1.hexに変わっているためだ。

その他のCOM3やC:\avrdude\avrdude.confは各自の環境による。
-F -v -Dは取り除いた。

また、[ソリューション エクスプローラ][GccApplication1で右クリック][プロパティ][Tool][Selected debugger/programmer][Custom Programming Tool]を選んでおく(SimulatorからCustom・・・へ変更する)
a0034780_00022486.jpg
デバイスはATtiny13Aを選ぶ。
a0034780_00012267.jpg
そしてソースはサイト様のをベースにATtiny13A用に修正し次のようになる。
/*
* GccApplication1
*
* Created: 2016/12/26 22:08:05
* Author : k1segawa
* License: free
*/

#ifndef F_CPU
#define F_CPU 9600000UL // 9.6 MHz clock speed
#endif
#include <avr/io.h>
#include <util/delay.h>

#define PB3 PORTB3 // PBx未定義のため

int main(void)
{
PORTB = 0x00; // ポートB出力方向決定時0出力準備
DDRB = (1<<PB3); // PB3 as output, other as input
while(1)
{
PORTB |= (1<<PB3); // Turns ON PB3 LEDs
_delay_ms(1000); // 1 second delay
PORTB &= ~(1<<PB3); // Turns OFF PB3 LEDs
_delay_ms(1000); // 1 second delay
}
}

サイト様はPORTDだがPORTBへ変更。新しい環境はPB3が未定義らしいので自分で定義。PORTB3を探し出すには、PORTBを右クリックして[Goto Implementation](定義へジャンプ)を選び探した。
a0034780_00183647.jpg

_BV()でもよい。

F7でビルド、[ツール][Deploy](設定内容による)で書込み。86バイトで、いつものThank you.で終了。

ビルドログは次の通り。

------ ビルド開始: プロジェクト:GccApplication1, 構成:Debug AVR ------
ビルドを開始しました。
プロジェクト "GccApplication1.cproj" (既定のターゲット):
ツール バージョン "14.0" でビルドしています。
false 条件により、ターゲット "PreBuildEvent" を省略しました。('$(PreBuildEvent)'!='') は (''!='') として評価されました。
ファイル "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Compiler.targets" 内にある、プロジェクト "c:\users\(ユーザ名)\Documents\Atmel Studio\7.0\GccApplication1\GccApplication1\GccApplication1.cproj" からのターゲット "CoreBuild" (ターゲット "Build" は依存):
タスク "RunCompilerTask"
タスク パラメーター:
ContentList=
main.c

(XHTML)


Program Memory Usage : 86 bytes 8.4 % Full
Data Memory Usage : 0 bytes 0.0 % Full
タスク "RunOutputFileVerifyTask" の実行が終了しました。
プロジェクト "GccApplication1.cproj" 内のターゲット "CoreBuild" のビルドが終了しました。
false 条件により、ターゲット "PostBuildEvent" を省略しました。('$(PostBuildEvent)' != '') は ('' != '') として評価されました。
ファイル "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Avr.common.targets" 内にある、プロジェクト "c:\users\(ユーザ名)\Documents\Atmel Studio\7.0\GccApplication1\GccApplication1\GccApplication1.cproj" からのターゲット "Build" (エントリ ポイント):
プロジェクト "GccApplication1.cproj" 内のターゲット "Build" のビルドが終了しました。
プロジェクト "GccApplication1.cproj" のビルドが終了しました。

ビルドに成功しました。
========== ビルド: 正常終了または最新の状態 1、失敗 0、スキップ 0 ==========

書込みログは次の通り。

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.11s

avrdude.exe: Device signature = 0x1e9007
avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "c:\users\(ユーザ名)\Documents\Atmel Studio\7.0\GccApplication1\GccApplication1\Debug\GccApplication1.hex"
avrdude.exe: writing flash (86 bytes):

Writing | ################################################## | 100% 0.30s

avrdude.exe: 86 bytes of flash written
avrdude.exe: verifying flash memory against c:\users\(ユーザ名)\Documents\Atmel Studio\7.0\GccApplication1\GccApplication1\Debug\GccApplication1.hex:
avrdude.exe: load data flash data from input file c:\users\(ユーザ名)\Documents\Atmel Studio\7.0\GccApplication1\GccApplication1\Debug\GccApplication1.hex:
avrdude.exe: input file c:\users\(ユーザ名)\Documents\Atmel Studio\7.0\GccApplication1\GccApplication1\Debug\GccApplication1.hex contains 86 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 0.30s

avrdude.exe: verifying ...
avrdude.exe: 86 bytes of flash verified

avrdude.exe: safemode: Fuses OK (E:FF, H:FF, L:7A)

avrdude.exe done. Thank you.

うまくいくと、GND~抵抗1kΩ~PB3に繋いだLEDが1秒おきに点滅する。

C/C++環境も構築できた。

[PR]
# by k1segawa | 2016-12-27 00:03 | arduino, AVR | Comments(0)

Japanino ArduinoISPで ATtiny13 で 8x8 MatrixLED制御 (3) - 応用 (36) (12/25)

以前の記事、Japanino ArduinoISPで ATtiny13 で 8x8 MatrixLED制御 (2) - 応用 (24) (10/9)で、シリアル以外は出来たのだが、ピンが1つしか余っていなかった。
そのため受信オンリーでなんとかしようとしていたのだが、PC側に送信遅延を施しても思うようにいかなかった。
結果シリアルは2ピン必要という事で、MatrixLEDの方の回路を1ピン減らしてみる。
CLKが共通にできるのではないかという事で、PB2とPB3→PB2で制御してみる。
下図のように回路図のPB3の線をPB2へつなぎ、PB3の配線を削除してPB3を空ける。点線が元の配線で太線が新しい配線。
a0034780_18185165.jpg

それに従い、プログラムも変更する。PB3を制御していた2つのFor Iループを一つにし、条件を追加する。

ちょっと回路的に以前の記事のタイミングチャートで、CLR1,CLR2もリセットとして必要(ゴミが出る)かもしれないので、保留中。

[PR]
# by k1segawa | 2016-12-25 18:13 | arduino, AVR | Comments(0)

Japanino ArduinoISPで ATtiny13 シリアル通信 (34) (12/20)

シリアル通信について、ATtiny13でずいぶんと回り道している。
今回は、双方向の通信が失敗し続けた原因が分かった。
今までは受信か送信の一方向のみがうまくいっていた。
なぜか両方向だとうまくいかなかった。

それはプログラムの問題ではなく、環境設定の問題だった。
まず一つは、PCとのUSBシリアル変換の問題。
JapaninoをArduino ISPライタとして使っていたため、USBを仮想COMポートとして一つ使っており、そのRX/TX(D0/D1)がシリアル通信に使えるはずという前提が、一部間違っていた。
JapaninoにISPライタのスケッチを書き込んだまま、RX/TXを使っても、それはスケッチがポートを見てしまい、うまくいかなかったのだ。本来なら送受信をRX/TXにそのまま流すスケッチを書き込まなければ意図したように動かないにも関わらずにだ。そのスケッチを書き込む事をすっかり忘れて、一方向しかうまくいかないと試行錯誤してしまっていた。
これは、別のUSBシリアル変換モジュールを繋いでそちらのCOMポートでやり取りすることで、解決した。

なお、ISP6本と受信(PC側 USB-Serial変換モジュールTXに繋がる黄色い方)がかぶっているので、GND/5V以外のISPケーブル4本を、書込み時と実行時で接点4個のSWでON/OFF(接続/切断)する自作の冶具を間に噛ませてある(Arduinoから伸びるオレンジ、黄色、緑、青)。
a0034780_21064123.jpg

そして2つ目は、TeraTermの設定。ローカルエコーをOFFにしないとPC側から送信できないのだ。
出来ないというより、ローカルエコーしているから、本来受信文字列を表示すべきところが、送信文字列に消されてしまっていたらしい。

この2つ目はATtiny13へのBASCOM-AVRのプログラムにもよるため、大変わかりづらかった。

従って、TeraTermの設定はローカルエコー無しにし、プログラムは次のようになる。

'****************************************
' Copyright (c) 2016 k1segawa
' License : free
' Program : Serial Control
'****************************************
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 24
$swstack = 4
$framesize = 8

Config Portb.3 = Output
Set Portb.3

'Config Portb.4 = Output
'Config Portb.2 = Input
'Portb.2 = 1 'Pullup

'-------------------------------------
#if 0

Dim I As Integer
I = 0
Open "COMB.4:9600,8,N,1" For Output As #1 'soft serial PB4:Out
Do
Wait 1
Toggle Portb.3
Print #1 , "I=" ; I
Incr I
Loop

End
Close #1
' History
' [2016/09/23]
' PB4 Serial Output

'-------------------------------------
#else

Dim Tstr As String * 6
Dim Num As Word

'open channel for output
Open "COMB.4:9600,8,N,1" For Output As #1
Open "COMB.2:9600,8,N,1" For Input As #2

Do
Set Portb.3
Wait 1
Reset Portb.3
Print #1 , "text: "
Input #2 , Tstr
Print #1 , Tstr
Print #1 , "number: "
Input #2 , Num
Print #1 , Num
Loop

End
#endif

'Open COMB.x(Don't need Config Pin=I/O)
'local echo OFF(Must OFF)
'COM3 = Writer(Don't need disconnect)
'COM5 = TeraTerm(connect)

下の方のelse節のプログラムが動いており、TeraTermの画面には「test:」と表示され、Input待ちになる。そこで、TeraTerm画面上でそのままキーボードで文字列を打つのだが、それはローカルエコーOFFなので表示されない。そのままエンターキーを押すと、入力した文字列がATtiny13から送信→それを受信して「xxxx」と表示される。続けて「number:」という表示に対してさらに文字列をキー入力してエンターキーを押すと、やはり入力した文字列が表示される。こんな簡単な事が、今までできなかった。

COMポートの問題とシリアル入出力の特性を忘れていたため問題が長引いた。
これでマトリクスLEDの制御に戻れる。今もう1ピン空ける回路を考えているので、そうすれば2ピン空いて双方向にシリアル制御出来、データ送出のタイミングをコントロールできる。
[PR]
# by k1segawa | 2016-12-20 20:07 | arduino, AVR | Comments(0)

最近の Java アプレット の 動かし方 (12/13)

いにしえの技術となってしまったJavaアプレットを動かしたいページがあって、ちょっと困ってしまっていた。
設定方法がオラクル・Microsoft・Firefoxともにわかりづらいのだ。

Javaをサポートするオラクル社では、Google Chrome がサポートしなくなって他のブラウザを使うよう、次のページに記載されている。

WebブラウザでJavaを有効にするにはどうすればよいですか。 - Oracle
a0034780_14170716.jpg
そもそもJava SE 8(とJDKもかな?)を入れてある事が前提。Javaといったらどれを入れていいか、まだ慣れない。最近はPCでJava使わないから入れてないしな~

上の手順通りFirefoxでプラグインを有効にする。
メニューの[][アドオン][Java(TM) Platform SE 8 U111][実行時に確認する]に設定。

さらに、PCの設定も行なう。コントロールパネルの表示方法が異なると見つけづらい場所にある。
[コントロールパネル]を開き、
表示方法が「カテゴリ」になっていたら、[プログラム](プログラムのアンインストールではない)の部分をクリックしてから[Java]アイコンをクリック。
表示方法が「大きい または 小さいアイコン」になっていたら、すぐに[Java]アイコンをクリック。
a0034780_14362877.jpg

Windows10からなのか、わかりづらいよね。
で、Javaの設定画面から、[セキュリティタブ][サイトリストの編集]を押す。
a0034780_14412842.jpg

そして[追加]ボタンを押し、わかりづらいけどURLエリアをダブルクリックして、編集中にして、見たいJavaアプレットのあるHPのドメイン名をテキスト入力する。
a0034780_14422614.jpg

こちらのサイト様は、
マンデルブロ集合の不思議な世界
で、昔に流行ったグラフィックで、今なら高速に描画できる。

正しいJavaのインストール、サポートブラウザへの設定、PCでのJavaの許可URL設定。これらを正しく設定しないと動かない。
セキュリティはこうやって高めるのか。参考になるな。
[PR]
# by k1segawa | 2016-12-13 15:05 | Comments(0)

FSTN液晶モジュール(128x68/SPI) LCD組み立て(3) - びんぼうでいいの with LCD (12/11)

つづき。
a0034780_15421567.jpg


幅はこれくらい。
液晶のフィルムはまだはがさない。
a0034780_15382772.jpg

黄色と緑の基板同士を半田付け。今度は9ピン全部半田付けする。BL+が黄色の液晶の外側をぐるっと回って、緑の基板の8ピンの、一番外のBL+ピンにつながる。ブレッドボードに組み立てた様子を示す。
a0034780_15421567.jpg
4ピンの延長ケーブル2本は取り除いて直接つないだ。RESETスイッチを設け、押すと繋がる状態(間違ってるけど)。
a0034780_15431199.jpg

a0034780_1543232.jpg

スケッチをGraphicsTestにしてみる。
a0034780_15464262.jpg
こんな感じ。結構綺麗で、リアルタイムで動いている。
a0034780_15465288.jpg
a0034780_1547458.jpg

a0034780_15475182.jpg

動画はこんな感じ。
Youtube:びんぼうでいいの with LCD - OLED液晶 ST7567 by u8glib for Arduino
[PR]
# by k1segawa | 2016-12-11 16:00 | arduino, AVR | Comments(0)

FSTN液晶モジュール(128x68/SPI) LCD組み立て(2) - びんぼうでいいの with LCD (12/11)

つづき。

緑の基板に移る。
ブレッドボードに2.54㎜の太い方の8ピンヘッドを刺し、基板外側の8ピンの穴に差して、基板が水平になるよう紙などはさんで高さを合わせてからマスキングテープ(百均)で固定する。
a0034780_13535139.jpg
固定した状態で半田付けし、100Ω抵抗(青)も半田付けした様子。
a0034780_1354270.jpg
黄色の基板と並べてみた。それぞれピンヘッダは半田付け済み。
a0034780_1355974.jpg
合体させるとフレキの修正が出来なくなるのでここで配線チェックする。
半田した面とピンヘッダやチップ部品の半田部分をテスターで導通しているかチェック。
FSTN液晶のHPに配線図のCAD図があるので、チップ部品の左右に回り込んでいる配線に注意してチェックする。私の場合はCAD図で言うと、左から3番目のフレキのピンが通電しなかったので、フレキの半田部分を軽く半田ごてで熱し直し、それでもダメなら3番目と4番目の間ぐらいに半田を少し追加し、融けて流れ込んだようなら吸い取り線でピンの間の半田を取り除いた。
a0034780_13551649.jpg
大丈夫そうなので組み立て予行練習。
a0034780_13552471.jpg
別角度。
a0034780_13553181.jpg

次は液晶本体がきちんと動くかをチェック。
arduino IDE 1.6.12で確認。
液晶はST7567なのでST7567でgoogle検索し、次のサイト様の手順で確認した。
Aitendo 「激安超簡単SPI 128x64 ST7567」液晶組立 & テスト - Sabotenboy's *sigh*
ライブラリu8glib自体はこちらのサイト様の下の方にArduino UNOでプログラム領域30%程度うんぬんのくだりから。
I2C 128×64 OLEDディスプレイをArduinoで使う - Program Resource
I2Cだと容量を圧迫するので、ピン数は多く必要だがSPIのライブラリを使うという話。
U8glib
「U8glib: * Gallery * Bintray download links: * U8glib for Arduino:」というリンクボタンで、 https://bintray.com/olikraus/u8glib/Arduino
から1.18.1をダウンロード。(japanino用の古い0018や1.05_r2ではコンパイルできなかった)

arduino ライブラリの置き場は自分は古い手順で設置。
C:\Users\ユーザ名\Documents\Arduino\なので、そこへlibrariesディレクトリを作り、zipファイルを解凍し全てコピー(U8glibディレクトリとreadme.txt)。

今なら[メニュー][スケッチ][ライブラリをインクルード][.ZIP形式のライブラリをインストール…]でそのまま可能かも。

マイコンの種類とクロック数などをjapanino用に次のように設定。
ボード:"Arduino Pro or Pro Mini"
プロセッサ:"ATmega168 (3.3V, 8MHz)"
シリアルポート:COM3(自己環境依存)
(大人の科学Japanino FAQ Q24. アルドゥイーノIDEを使っています。「Board」の選択を教えて)
(A24. Tools→Board→Arduino Pro or Pro Mini(3.3V,8MHz)w/ATmega168)
a0034780_14561959.jpg

最初は写真下の梱包の7ピンケーブルでつなぐ事も考えたが、細い9ピンヘッダに太くて刺さらない。何のために入っていたのかな~
写真上が、手持ちの間隔の狭い4ピンケーブル2個で、それでもいいかも。
a0034780_1533485.jpg

スケッチは、U8glibを入れると、[メニュー][スケッチの例][u8glib][HelloWorld]を開き、取扱説明書やAitendo 「激安超簡単SPI 128x64 ST7567」液晶組立 & テスト - Sabotenboy's *sigh*のサイト様の記載されている通りに、C12864で検索しコメントを外し、setup()にu8g.setContrast(10);を追加する事。
コンパイルはかなり長い。赤いログも不安をかき立てるが、最後にThank you.と出れば大丈夫。
マイコンへの書込みは、ardunioなのでUSBでPCと繋いでいるので特に何も変更も接続も変えずに行う事が出来る。AVRマイコンとは違うな~
液晶の配線は黄色い基板だけでとりあえずバックライトは繋がず、9ピンの内7ピンを繋ぐ。
取扱説明書の通り、
黄色い基板の印刷 ⇔ arduino
GND ⇔ GND
BL+ ⇔ 繋がない
3V3 ⇔ 3V3
DAT ⇔ MOSI(D11)
CLK ⇔ SCK(D13)
AD ⇔ A0(D9)
RST ⇔ RESET
CS ⇔ D10
a0034780_15201827.jpg
a0034780_15203780.jpg

a0034780_15205055.jpg
そしてマイコンに書き込んでから、取扱説明書に書いてあるようにUSBケーブルを抜いて差す(自分はUSBスイッチをOFF/ON)。RESETピンに繋がっている線を抜き差し(ずっと抜きっぱなしでも大丈夫みたい)すると、しばらくして画面が細かい砂嵐になった後、Hello World!と表示される。
a0034780_15243354.jpg
バックライトが無いので持ち上げておく。

緑の基板を半田付けしてからバックライトも動作確認しておく。
基板を2つ重ねてバックライトの両面テープをはがす。
a0034780_15305445.jpg
黄色の基板の内側の矩形
に合うよう、引っ張りながら液晶を貼り付ける。
a0034780_1532921.jpg
厚さや幅は単四電池と比べてこれくらい。
a0034780_15324658.jpg


続く。
[PR]
# by k1segawa | 2016-12-11 13:59 | arduino, AVR | Comments(0)

FSTN液晶モジュール(128x68/SPI) LCD組み立て - びんぼうでいいの with LCD (12/10)

とりあえず、「びんぼうでいいの」は特にarduinoが欲しかったわけではないので、LCDを組み立てる。結果、意外と大変だった。

キットとしてはこの FSTN液晶モジュール(128x64/SPI) [M128X64SPI-12P-B] - aitendo 680円が入っているだけ。
ここと下記販売サイトのHPにしかない情報もあるので、+α取扱説明書の3つは確認必須だ。
びんぼうでいいの with LCD [U3RLCD12864S] - aitendo
a0034780_12000202.jpg
5V電源バックライト(青)の白い板(液晶本体は3.3V)、2.0mm→2.56mm(ブレッドボード)ピッチ変換基板(緑)、フレキシブルケーブル→2.0mmピッチ変換基板(黄)
a0034780_12001761.jpg
2.0mm/2.54mmピンヘッダ、100Ω抵抗×各1個、オスメス太7ピンケーブル、128x64 ST7567液晶、バックライト、変換基板(緑)
a0034780_12012999.jpg
取扱説明書
a0034780_12014205.jpg
FSTN液晶のHPに従って、2.0㎜の変換基板からチップ抵抗100Ωが1個中央寄りにある(黒いやつ。黄土色の4個はチップコンデンサ)ので、半田ごてで慎重に温めてピンセットでひっかいて取り外しその1個を転がして載せてある様子がこれ。跡が汚いけど間がつながっていない(テスタで確認)ので問題なし。
a0034780_12015733.jpg
黄色の変換基板の裏側とバックライトの裏側。BL+(5V)とGNDが引き回されている。中央に両面テープが付いていてBL+とGND用の線が伸びている。
a0034780_12020842.jpg
中央の両面テープをはがした様子。どこに貼るかは黄色の基板の内側の矩形に合わせて、線が半田付けする方に来るように位置取りする。裏表注意。
a0034780_12021884.jpg
黄色の基板にバックライトを貼り付け、液晶本体を仮にのせて100Ωの抵抗を間に挟んでBL+に5V、GNDを繋いで点灯させた様子。液晶本体はまだ何も配線していないので何も映っていない。
a0034780_12022491.jpg
ミノムシクリップで配線。明るい所。
a0034780_12563590.jpg
100Ωをブレッドボードの5Vに差し、もう一方をGNDに差している様子(線の色は無関係)。
a0034780_12571462.jpg
FSTN液晶のHPの図に、GNDが画面下の方の線、BL+が画面上の方の線に繋がっているように見えるので、黄色をGND、赤をBL+に半田付け。バックライトからの半田づけが弱く、断線しそう(安物あるある)なので逆S字に線を配置。緑の変換基板と半田付けしたら二度と動かせないから慎重に。バックライトの点灯確認もこの時点で行う。
a0034780_132817.jpg
念のため基板の反対側からも半田付け。
a0034780_1334569.jpg
バックライトの上下(画面では左右)にある細い両面テープまだはがしていない。
a0034780_1316097.jpg
液晶本体のフレキシブルケーブルの向きを確認する。ケーブルの透明な部分に△とXCLと書いてあるのでFSTN液晶のHPの図に従い、位置決めする。
a0034780_13175858.jpg
フレキシブルケーブルを仮止めするのに、紙で出来ていて熱で融けない、粘着性の低いマスキングテープを百均で購入して貼っておく。セロハンテープやビニールテープは熱で融けたり、粘着力は高いが時間とともに融けるので使ってもいいが貼ったままにしない事。今回は貼ったまま組み立てる。
a0034780_13204488.jpg
基板に仮止めした様子。フレキシブルケーブルに金属面が穴が開いて露出しているのでうまく合わせる。半田付けする前にフラックスを1回軽くひとはけ基板とフレキの間に塗っておく。
a0034780_13251162.jpg

同じ。
a0034780_13251676.jpg

半田付けした様子。
フレキがぐらつかないようにさらに金属クリップで挟み込んで固定して行なった。
上からバターでも塗るように適当に半田を全ピンに被せるように溶かし着ける。半田は熱で液体となりフレキと基板の間の面に沁み込んでいく。そして後から半田吸い取り線で余分な半田を取り去った。この時は12ピンあるうちの上から3ピン目が半田付けされていないことには気が付いていなかった。フラックスの茶色いしみはアルコールで拭くとよい。
a0034780_13451822.jpg

別角度から。
a0034780_1332079.jpg
同じ。
a0034780_13314725.jpg
まだバックライトの両面テープをはがさないで、フレキシブルケーブルを折り曲げて液晶を載せてみた。大体合ってそう。そのまま2.0㎜の細い方の9ピンヘッダを刺して半田付け。
a0034780_13505434.jpg
続く。
[PR]
# by k1segawa | 2016-12-10 12:07 | arduino, AVR | Comments(0)

びんぼうでいいの with LCD (12/6)

噂のaitendoに行って来た。

結構駅から離れていて、なかなか見つからなかった。
ビルの3Fがメインで、1Fはセット販売が主。1Fはショールーム的なこじんまりとして綺麗にまとまっており、店の顔というべき物。3Fは1Fの左手ぐるっと回った所にあり、エレベータでしかいけないよくある貸しビル。
でも中は部品が胸の高さより低い棚に入っていて空間が生かされており50畳ぐらいで広々と感じる。そしてまだ綺麗に整頓されて沢山品物を置いてある。いかにも秋葉原という部品屋さんとは違い、はんだカフェが部品屋さんになった感じの明るさ・先進性がある。
そして激安品も新品の結構透明な袋に入っていて清潔感にあふれている。
スタッフは若い中国女性店員で、少しまだカタコトな感じだが、普通のMakerっぽい理知的な感じだ。

激安品や液晶の品ぞろえがちょっと他の店をダントツに抜いている。
100円以下の商品とか1000円台のグラフィック液晶とか、せっかく来たのだから必要ないのに買っておかないともったいないと思ってしまう。

ということでarduino互換機の「びんぼうでいいの」を小型LCD付き999円を買ってみた。
次の写真は8x8MatrixLEDが特価100円。秋月のが3.8㎜角の250円くらいで、これは3.2㎜角。3㎜LEDで出来ているのかな。
a0034780_21224646.jpg

「びんぼうでいいの」の内容物。液晶は128x64。
a0034780_21232965.jpg

本体と基板と部品。基板は表面実装部品がすでに半田付け済み。上の袋は16MHz水晶とピンソケット、スライドスイッチ、USBミニBコネクタ。
a0034780_212567.jpg

CPUはちゃんとATMEGA328P-PU。これだけで秋月で250円はする。
a0034780_21272519.jpg

液晶は680円のセット品。じゃあ本体分は999-680=319円って事!?基板だけで150円だった気がする・・・
a0034780_21283518.jpg

680円の中身その1。液晶用とフラットケーブル変換基板。
a0034780_21314050.jpg

その2。液晶本体と背面に置くバックライト(青)の白い板。オスメス7ピンケーブル。ピンヘッダと抵抗1本。液晶左下は後ではがす保護フイルムが浮いているだけ。
a0034780_21495667.jpg

最後に説明書の全景。SPI液晶なんだー。すごく丁寧でこれなら迷わず作れそう。
a0034780_21351845.jpg


さて組み立てが楽しみだな。UNOに近いのはこれが初めてだ~

P.S.
いざ作ろうと思って開いたら、部品が足りなかった。
うーんさすが。
12MHzクリスタルと2.1mDIP用ピンジャック、タクトスイッチ1個が不足。
同じようなサイト様もいらっしゃるようで、手持ちの部品で対処しているみたい。
初心者は説明が無くても部品不足でも自己解決前提の事。

[PR]
# by k1segawa | 2016-12-06 21:37 | arduino, AVR | Comments(0)