
新しいiPadでApple Pencilが使えるとのことだったので買ってみた。
秋葉原に行ったときに触ったiPad Pro + Apple Pencilにめっちゃ感動したので自分でも欲しいと思っていたので、やっと買えてめっちゃ幸せ。
そしてQoL爆上がり。
今年で大学5年生( 5回生? )になってしまったが、iPadとApple Pencilのおかげで講義も楽しく受講できそう。
今年こそがんばる。
新しいiPadでApple Pencilが使えるとのことだったので買ってみた。
秋葉原に行ったときに触ったiPad Pro + Apple Pencilにめっちゃ感動したので自分でも欲しいと思っていたので、やっと買えてめっちゃ幸せ。
そしてQoL爆上がり。
今年で大学5年生( 5回生? )になってしまったが、iPadとApple Pencilのおかげで講義も楽しく受講できそう。
今年こそがんばる。
車のエンジンが壊れた?に近い現象が起きてきたので予備のエンジンに載せ替え。
サーキットで酷使してるからかだいぶオイルを燃やしながら走るようになってしまった。
(回しちゃいけないところまで回しちゃったせいもあると思う)
いつも行っている車屋さんのご厚意でピットと工具を貸してもらえました。ありがたやー
作業時間見積もりで6時間くらいで終わるかなーと思ったけど、そんなことはなく丸1日かかってしまいました。なれない作業だから仕方ないね( 言い訳 )
おろしたエンジンはこれから分解とオーバーホールしてみようかなーと。多分ピストンリングとかだめなのかな?
せっかくバラすのでいろいろ遊んでみることにしましょうw
おわり
ここ最近会社から支給されたThinkPad X1 Carbonを使っていたのですが、諸事情で返却したので新しくT460sをゲットしました。
思う存分カスタマイズして以下のような構成に。
CPU : Intel Core i7 6600U
MEM : 16GB
ストレージ : 512GBのSATA
画面 : WQHD
正直メインで使ってるデスクトップより高スペックです。
メモリもいっぱい使えるのでありがたやーという感じ
ちょうどT470sが出る前のセールで買ったのでだいぶ安くゲットできました
早速Antergos Linuxインストールして使ってます。
おわり
(2月に書いていたのですが書いたことを忘れて公開してなかった…)
いっつも自分のファイル置き場として使ってるOwnCloudにログインできなかった.(ユーザー名とパスワードを入力しても画面がずっと変わらずログインページのままだった)
結論からいうと,phpのセッションディレクトリのパーミッションを変更することで解決した.
1 |
chmod 700 /var/lib/php/session |
Webからログインはできなくともwebdavからはログインできてたみたい~
原因はapcuとopcacheをインストールしたことかなーと思うけど,急にログインできなくなると焦るよね(;´Д`)
みなさんこんにちは.
いろいろデータを解析した三菱・コルト( Z27AG )のECUですが怖くて思い切った変更ができていませんでした.
が,サーキット走ったりジムカーナやったりでいろんな状況で走らせると気になって気になってしょうがない部分が出てきました.
というわけでさくっと変更してみます.
今回変更した箇所は以下のとおり.
・スロットルマップ
・ブーストリミット
・ブーストコントロールマップ
・DTC回避
アクセルON→アクセルOFFを繰り返すと,回転が上がって欲しい部分でなかなか上がらずもっさり感を感じたので純正データをずらしてみました.
スロットルコントローラーを買ってつけてもいいんだけど学生にとっては高い( 1万円くらい )しなんといっても邪魔なので直接変更したほうがいいよねということで.
変更前
変更後
ものすごく扱いやすくなりましたね.ほしい時にちゃんとついてきてくれる感じで.
もうちょっとずらしたのもあったのですが,変更後のデータが自分にはあってるように思えたのでとりあえずこの仕様で.
これは上限変更してもそんなに変わらないので,ブーストコントロールマップ変更するしということでなんとなく.
変更前
変更後
『スロットルマップ変えたしついでにやっとくか』という非常に軽いノリで変えてみました.
単に100%にしておく時間が長くなっただけです.
変更前
変更後
これはもれなく各DTCコードのデータを書き換えただけです.
ホントはマップでチェックランプ光らないように調整したほうがいいんですがね.所詮プライベーターなんで.エンジン壊れたらその時はその時ということで.
最後にですがもしこの記事を見て真似される場合は自己責任でお願いします.
A/F計取り付けたら点火と空燃比,それからバルブタイミングを詰めてみたいですね~
エンジンの肝はバルブタイミングですから
Altera DE2-115を借りていろいろすることができたのでメモ.
いろいろやったけど一番情報が少なかったと思われるLCDを使って文字を表示する方法を書いておきます.
fopenでLCDを開いてfwriteを使ってLCDにデータを表示させる方法とか,どっかの大学の先生が作ったプログラムを使って表示させる方法とかさまざまあるようですが,今回は別の方法でやってみようと思います.
FPGAのことがよくわかっていなくて,なんといえばいいのかわからないけどハードウェアの論理合成をする.
一からVerilogを書いてもよかったんだけど,ほかの作業に追われていたのでTerasic DE2-115 System Builderを使ってサクッとVerilogファイルを生成してしまう.ある意味チート.
Generate ボタンを押すとプロジェクトファイルが生成される.生成されたプロジェクトファイルをQuartus IIで開く.
Qsysでサクッと画像のようにつなげる.
後は「プロジェクト名.v」となっているVerilogファイルの” Structural coding “というところにNios IIの設定を追記する.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
assign LCD_ON = 1'b1; assign LCD_BLON = 1'b1; nios nios0 ( // 1) global signals: .clk( CLOCK_50 ), .reset_n( 1 ), // the_lcd .LCD_E_from_the_lcd( LCD_EN ), .LCD_RS_from_the_lcd( LCD_RS ), .LCD_RW_from_the_lcd( LCD_RW ), .LCD_data_to_and_from_the_lcd( LCD_DATA ) ) ; |
これで論理合成したあとDE2-115のボードにプログラミング.
サクッとテストプログラムを書いてみる.ただ以下のコードは何となく書いたので動くかわからん.
開発しててハマったのがEcripseでDE2-115を認識しないときがあったこと.これはEcripseをいったん閉じてQuartusIIから回路をプログラミングしてからもう一度Ecripseを立ち上げると認識するようになった.
ちなみにAltera Monitor Programを使って開発してる人はLCDを使うときLCDのアドレス+1してポインタつかっていろいろすると行けるっぽい.
上に書いたプログラムで表示したわけではないけど,下の画像のように動く.
触ってからだいぶ時間が空いてからこれを書いたのであやふやになってる部分も多数...
触ってるときにアウトプットするのって大切ですね~
FPGAを使った開発はものすごく楽しかったけど,個人でやるんだったらPICが楽だなーと思ったり.
Ubuntu14.04 LTSをインストールした時から「邪魔だなー」と思っていたAmazonのランチャーを削除する方法わかったのでメモとして記録
1 |
$ sudo apt-get remove unity-webapps-common |
これでメニューからAmazonを消せます。
Googleで検索する方法は2016-02-12現在ではエラーメッセージがでて削除できないみたい。
参考文献:
書き換えソフトウェアに最初から入っている定義ファイルはどうもオーストラリア版のモノっぽくて日本仕様とは全然データもマップアドレスも違うみたいです…
詳細は『ECUの解析 その1』にて.
というわけで
ECUからdumpしたバイナリ&定義ファイルとにらめっこの格闘しかれこれ3か月(?)かかってやっと全項目を正常に表示できました.
いやー海外の方ってすごい方いっぱいいますね.すごく勉強になりました.
スロットルマップの方は大分前からいじってなるべくワイヤースロットルのようになるようにやっていましたが,来春からはいよいよ燃料マップと点火をいじるので楽しみでしょうがないです.
先日とあるチームのドライバーとしてエビスサーキット西コースで行われた3時間Kカー耐久レースに参戦してきました.
その時にピットからの指示を簡単にドライバーが確認できるWebアプリ的な奴を作ったのでサクッとご紹介します.
まず『ピットボード』とはですが,レースなどをよく見る方はご存知かもしれません.自分のチームのクルーがドライバーに対してなんかかしらの指示を書いたやつですね.それをホームストレートなどの時に自分のピットがある前のところからドライバーが見えるように掲げるものです.
こんな感じ( 画像はgoogle画像検索で出てきたものをお借りしました)
ピットボードでは『ピットIN』などの簡単な指示ができますが,『オーバーテイク仕掛けろ』みたいな指示がやりづらいですよね.
そこそこ資金力があるチームは無線を使って指示するみたいですが,そんなお金もない.というわけでサクッと表題のやつを作ったわけです.
ピットボードをつくるときに必要な項目を挙げてみました.
こんな感じでしょうか.
これはすでにあるものを使うと達成できるのですが,
というのがちょっと厄介ですね.
リアルタイム更新についてGoogleで検索してみると,AjaxというのとCometというのがあるそう.
Ajaxについては使ったことがあるのでまた使ったことがないCometで実装してみようとなったわけです.
下の方にある参考サイトに詳しく乗っていますが,引用させていただくと
1つ目は、Ajaxなどの技術を使い、1秒毎など定期的に更新するというもの。F5連打と同じだが、ブラウザでページ自体を更新する必要はないため、一見更新しているようには見えない。
2つ目はcometという技術を使う。これは聞いたことがなかったが、中身を知ったらその知恵に驚いた。cometはおおまかにいうと、最初にリクエストがあった際に、サーバー側でつかんだままにして、発言があったらレスポンスを返すというもの。
最初のやり方だと、発言が更新されていなくても更新を行うためムダなリクエストが発生する。これだとユーザーが増えた際に、サーバーに負荷がかかるので望ましくない。cometを使えば、データが更新された時にプッシュされるため、ムダなリクエストが発生しない。
というものらしい.
下記のサイトを参考にして作成してみました.
チャットのように過去のログは切り捨てることにして実装しました.
<実際のコード>
・comet.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<?php /* File name : comet.php */ //データ書き込み用ファイル define( 'DATA_FILE', 'data.log' ); //データ取得 function getData() { return file_get_contents( DATA_FILE ); } //更新確認 function getUpdateData() { $data = getData(); $temp = $data; while( $temp === $data ) { $temp = getData(); sleep(1); } return $temp; } //データ追加 function pushData( $data ) { if( !empty( $data ) ) { //$data = str_replace(array( "\n", "\r" ), '', $data).' ['.date( 'c' ).']'.PHP_EOL; file_put_contents(DATA_FILE, $data, LOCK_EX); } return getData(); } if( isset( $_GET['mode'] ) ) { switch( $_GET['mode'] ) { //データ取得 case 'view': $data = getData(); break; //データ更新確認 case 'check': $data = getUpdateData(); break; //データアップデート case 'update': $data = pushData( $_POST['data'] ); break; } echo nl2br(htmlspecialchars($data, ENT_QUOTES)); } ?> |
・index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
<html> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width,initial-scale=1"/> <link href="../style.css" rel="stylesheet" type="text/css"/> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> jQuery(function($) { var $view = $('#view'), $data = $('input[name="data"]'); /** * データ取得 */ function getData() { $.post('../comet.php?mode=view', {}, function(data) { $view.html(data); checkUpdate(); }); } /** * 更新チェック */ function checkUpdate() { $.post('../comet.php?mode=check', {}, function(data) { $view.html(data); checkUpdate(); }); } $('#add').submit(function(event) { event.preventDefault(); $.post('../comet.php?mode=update', {data: $data.val()}, function(data) { $data.val(''); }); }); getData(); }); </script> </head> <body> <dl> <dt>現在の指示</dt><dt> <dd id="view">指示を出すとここに表示されます</dd> </dt></dl> <form id="add" action="../comet.php?mode=update" method="post"> <input type="text" name="data" value="" /> <input type="submit" value="追加" /> </form> </body> </html> |
こんな感じになりました
フォームに入力し「追加」ボタンを押すと指示できるようになっています.
車両にタブレットを取り付け,テザリングを使用して運用しました.
最初順調に動いていたように見えたのですが,思ったよりも電波状況がよくなく,ピットから指示は送っていても車両側の方で更新されず指示が伝わらないなどトラブルがありました.
まあどうしようもないので古典的に<meta name=”Refresh”>を追加して対処したわけです.
また予選も終わりこれから本線というときにWebサーバーがダウン.Refreshの頻度が多いせいでリクエストを処理できなくなってしまいました.
当日になって数々のトラブルに見舞われましたがなんとか運用できた感じです.
解決すべき課題などがたくさん出てきたので次のレースまでにはそれらを解決してもっと質の高いものにしていきたいと思います.