●CentOSのセットアップ
ラズパイでGPIBのドライバが簡単にインストールできないことが、この小型PCの導入の目的でした。NI社のドライバはCentOSに対応していると書かれています。ラズパイDebian系のディストリビューションがメインです。CentOSのコードはありますが、とても古いです。
この小型PCにCentOSの最新版をインストールします。ダウンロードのページに入って、三つある中でDVD ISOを選びました。ダウンロードしたら、書き込みツールrufusでUSBメモリにISOファイルを書き込みます。
http://mirror.fairway.ne.jp/centos/7.5.1804/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso
●BIOSでインストール・メディアを選ぶ
ブート時にF10を押すとブート・デバイスの選択画面に入れます。USBメモリを選択します。
インストール先はSSDですが、すでにWindowsがインストールされているので、選択してDoneを押すと、空きがないとのメニューが出るので、再選択を選び、どこかのパーティションを選んで全削除を実行します。
KDEのGUI、開発ツールを追加してインストールしました。
リブート後に、ネットワークを有効にしてリブートすれば、インストールは終わります。
アイコンFavoritesを選んだ時にSearchの欄にterminalを入れ、出てきたKonsoleを選びます。Xtermではありません。こちらはコピペができません。
●NI-VISAのインストール step1
Webブラウザを起動し、NI-VISA Linuxで検索し、
NI-VISA-17.0.0.iso Downloadsに落としてきます。ユーザ登録が必要です。ファイル名をクリックしてもダウンロードしてきません。画面下にクッキーのアラートが出ています。リンクをクリックして出てくるページで、OKボタンが出ることがあるので、押します。戻ってきてもダウンロードできないときは、ファイル名を選んで別のタブを開くを選び、そのタブに移るとダウンロードできることがあります。
Konsoleに入り、
mkdir NI
sudo mount -o loop Downloads/NI-VISA-17.0.0.iso NI
cd NI
sudo ./INSTALL
を実行します。3回yを入れるところがあります。17.0.0f1というバージョンが今日の時点でインストールされています。
エラーが出てアボートします。
error: Failed dependencies:
libstdc++.so.6 is needed by ni-pal-17.0.0.49152-0+f0.i386
libstdc++.so.6 is needed by ni-orb-nikalmod-17.0.0.49152-0+f0.x86_64
avahi is needed by nisyscfgi-17.0.0-f0.x86_64
Error installing NI-VISA for Linux 17.0.0f1.
Installer is aborted.
mDNSのavahiをインストールします。
sudo yum install avahi
libstdc++.so.6 is needed by ni-pal-17.0.0.49152-0+f0.i386というメッセージで必要だといわれているファイルを探します。
yum provides */libstdc++.so.6
で、
i686というのが32ビット用です。libstdc++-4.8.5-28.e17.i686が該当するようです。
sudo yum install libstdc++-4.8.5-28.el7.i686
でインストールします。もう一つの64ビット版のx86_64も同時に入ります。再度インストールします。
sudo ./INSTALL
最後にrebootするかと聞かれるので、yesで答えます。
●Step2
左下のApplicationsからNational Insutrumentsを選び、NI-VISAのRemoteServerを起動します。エラーが出ます。updateNIDriversを動かすようにメッセージが出ています。
sudo /usr/local/bin/updateNIDrivers
nikalのビルドに失敗したと出ます。ソースを次のURLからダウンロードします。
http://www.ni.com/download/ni-kal-15.1/6549/en/
Downloadsフォルダに保存します。NIKAL151.iosというファイルでした。このファイルをダブルクリックするとArkというユーティティが立ち上がるのでExractで解凍します。解凍した中にnikal-15.1.0f2.tar.gzがあるので、これも同じ場所に解凍します。
cd Downloads/NIKAL151
sudo ./INSTALL
最後にrebootするかと聞かれるので、yesで答えます。
●Step3
RemoteServerを起動しますが、同じエラーが出ます。ソースの3か所を修正します。ファイル・ビューワで、
/var/lib/nikal/3.10.0-862.el7.x86_64/nikal/
にあるnikal.cをダブルクリックすると、エディタのKWriteが立ち上がります。
①
#define NLNIKAL_CMD_SENDで検索したその次の行に1行追加します。
#define GENL_ID_GENERATE 0 // add
②
#ifdef nNIKAL1400_kHasFamilyGenlOpsGroupsで検索した2行をコメントアウトします。
#ifdef nNIKAL1400_kHasFamilyGenlOpsGroups
// if ((status = genl_register_family_with_ops(&nikal_netlink_family, nikal_netlink_ops))) return status;
#else
// if ((status = genl_register_family_with_ops(&nikal_netlink_family, nikal_netlink_ops, 1))) return status;
#endif
③
return do_munmap(mm, addr, len);で検索したその行の引数にNULLを追加します。
return do_munmap(mm, addr, len, NULL);
Homeへ保存します。sudo cp nikal.c /var/lib/nikal/3.10.0-862.el7.x86_64/nikalで元の場所にコピーします。
もう一度ドライバのアップデートを行います。時間がかかります。
sudo /usr/local/bin/updateNIDrivers
最後にrebootするかと聞かれるので、yesで答えます。
●Python3とpipのインストール
もともとPython2が入っていました。pipは見当たりません。Python3を最初に入れます。次の二つでインストールします。
sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install -y python36u python36u-devel python36u-libs
実行は、
python3.6
です。
ライブラリ管理のpipのインストールをします。
sudo python3 -m ensurepip
python3 -m ensurepip --upgrade
sudo pip3 install upgrade pip
実行は、
pip3
です。
多頭飼いのすすめ
with 電子工作
2018年11月18日日曜日
2018年11月15日木曜日
SCPI言語を話す測定器をPythonでコントロールしたい
HPがHP-IBを作って、測定器を自動制御する規格を広めました。ヤフオクで購入できるディジタル・マルチメータ、オシロスコープ、スペアナ、電源など、ほとんどがGPIBを備えています。
GPIBのケーブルだけでも高価です。
PCのGPIBボードも高価です。
Agilent 82357BはGPIBをUSBに変換してくれます。1万円ちょっとで購入できます。
●visa
GPIBは物理層です。USBやLAN(TCP/IP)、RS-232Cも物理層です。VXIとかいうバスも物理層です。
これらをまとめて扱えるのがvisaです。話す言語はSCPIです。GPIBの基本的なコマンド以外に、機器独自なコマンドが用意されています。
●Python
世の中で一番学びたい言語がPythonなんだそうです。たぶん、IT系の人たちでしょう。
Pythonにはvisaのライブラリがあるので、importするだけで通信ができます。もちろん条件はあります。
RS-232Cは、WindowsならCOMドライバが必要です。UNIX系なら/dev/ttyUSB0とかができていると通信できるかもしれません。接続自体はUSBの口ですが。
USBは測定器がUSBTMCの規格をサポートしていると、そしてGPIBのドライバが入っていると通信できます。GPIBのドライバは、KeysightとNIが用意しています。どちらも無償で利用できます。
LANは条件はないようです。が、Windowsではつながりますが、ラズパイだと見つけられないとか、がおこりますが。
LANはソケットでつなぐこともできます。
連載、まだ途中です。
(1) DMM 34461A-① LAN ソケット通信
(2) DMM 34461A-② USB usbtmc
(3) 電源 E3631 USB(GPIB) visa
(4) DMM 34461A-③ USB/LAN visa
(5) DMM VOAC7602 USB-シリアル変換 visa
(6) DMM 2000 ① RS-232C
(7) 温度計おんどとり ソケット
(番外編 ) 小型PCのセットアップ
(8) DMM 2000 ② visa(GPIB)
GPIBのケーブルだけでも高価です。
PCのGPIBボードも高価です。
Agilent 82357BはGPIBをUSBに変換してくれます。1万円ちょっとで購入できます。
●visa
GPIBは物理層です。USBやLAN(TCP/IP)、RS-232Cも物理層です。VXIとかいうバスも物理層です。
これらをまとめて扱えるのがvisaです。話す言語はSCPIです。GPIBの基本的なコマンド以外に、機器独自なコマンドが用意されています。
●Python
世の中で一番学びたい言語がPythonなんだそうです。たぶん、IT系の人たちでしょう。
Pythonにはvisaのライブラリがあるので、importするだけで通信ができます。もちろん条件はあります。
RS-232Cは、WindowsならCOMドライバが必要です。UNIX系なら/dev/ttyUSB0とかができていると通信できるかもしれません。接続自体はUSBの口ですが。
USBは測定器がUSBTMCの規格をサポートしていると、そしてGPIBのドライバが入っていると通信できます。GPIBのドライバは、KeysightとNIが用意しています。どちらも無償で利用できます。
LANは条件はないようです。が、Windowsではつながりますが、ラズパイだと見つけられないとか、がおこりますが。
LANはソケットでつなぐこともできます。
連載、まだ途中です。
(1) DMM 34461A-① LAN ソケット通信
(2) DMM 34461A-② USB usbtmc
(3) 電源 E3631 USB(GPIB) visa
(4) DMM 34461A-③ USB/LAN visa
(5) DMM VOAC7602 USB-シリアル変換 visa
(6) DMM 2000 ① RS-232C
(7) 温度計おんどとり ソケット
(番外編 ) 小型PCのセットアップ
(8) DMM 2000 ② visa(GPIB)
2018年9月9日日曜日
SONY SPRESENSEでハイレゾを再生する
SPRESENSEは、Arduino IDEのスケッチを使ってハイレゾ音源を再生できます。7/31発売当時のドキュメントは分量はとても多いのですが、とても不親切な書き方で、プログラム(ライブラリのC++のソース)を読んで自分で使い方を考えろ的な姿勢が強く出ていました。9/1ごろにArduino 1.0.2になって、ドキュメントも普通の表現になりました。
メイン・ボード本体にD級アンプが搭載されていますが、デフォルトの出力であるヘッドホン端子は、出力にでっかいCを入れなくて済むという何やらわからない性能のヘッドホン・アンプがつながっています。
ヘッドホン・アンプの手前にあるD級アンプ出力は、レベルの下げるための470Ωの抵抗がシリーズに入っています。内蔵のボリュームを最大値の0dBにしてもスピーカからはかすかな音しか出ません。
解説によると、470Ωと小容量のコンデンサのパーツをLと大きめのCに変更することで、スピーカから音が出ます。しかし、たぶん、無理な作業です。電動のはんだ取り器を使えば、八つのパーツを安全に取り出せますが、新しいCをはんだ付けするのは、ほとんど不可能です。10セットあったら1セットぐらい成功するかもしれません。
ポータブル機器にスピーカを接続する際、出力にローパス・フィルタを入れる設計が多いです。しかし、普通のスピーカ・ケーブルを数mのばして普通のスピーカをつなげるとき、フィルタは現実的には不要と考えられます。
という根拠の薄い理由で、470Ωを0Ωにするだけで済ませます。
はんだゴテの先をきれいにし、はんだをちょっとだけつけ、フラックスが飛びきらないうちに、チップ抵抗のはんだ面(もちろん上面)にはんだをわずかに盛ります。0.3mm程度のはんだメッキ線を押し付けて抵抗をショートします。
推定500mW弱のアンプだと思います。96dBを超えるスピーカなら、オーケストラも十分再生できます。
9/1ごろの更新で、ハイレゾは192kHz/24ビットだけと書かれました。48kHz/24ビットも再生できますが96kHzは再生できません。
(2018/10)1.1.0になって96kHzが対応しました。ただ、スピーカからの音がとても小さくなって実用上聞こえなくなりました。私のだけかも
playerのスケッチの変更点です。再生するwavファイルはAUDIOフォルダの中に入れておきます。
で、一番重要な音ですが、最上の音楽が聴けますです。
●SDメモリの音源を四つまで連続に再生するスケッチ
SDメモリに入っている音源を全部再生できるはずなのですが、5曲目からは再生できないです。
音源は192kHz/24ビット決め打ちにしてあります。
ボリュームは、A0端子の電圧を読み取って値を決めています。ボリュームを付けないときは、-100とかの値を入れておいてください。
/*
player.ino - Simple sound player example application
Copyright 2018 Sony Semiconductor Solutions Corporation
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <Audio.h>
AudioClass *theAudio;
File myFile;
//#include <SDHCI.h>
SDClass SD;
#define volumePin A0
int volumeValue = 0;
/**
@brief Setup audio player to play mp3 file
Set output device to speaker <br>
Set main player to decode stereo mp3. Stream sample rate is set to "auto detect" <br>
System directory "/mnt/sd0/BIN" will be searched for MP3 decoder (MP3DEC file)
Open "Sound.mp3" file <br>
Set master volume to -16.0 dB
*/
void setup() {
Serial.begin(115200);
// start audio system
theAudio = AudioClass::getInstance();
theAudio->begin();
Serial.println("initialization Audio Library");
/* Set output device to speaker */
theAudio->setRenderingClockMode(AS_CLKMODE_HIRES);
theAudio->setPlayerMode(AS_SETPLAYER_OUTPUTDEVICE_SPHP);//AS_SETPLAYER_OUTPUTDEVICE_I2SOUTPUT
//theAudio->setPlayerMode(AS_SETPLAYER_OUTPUTDEVICE_I2SOUTPUT);
/*
* Set main player to decode stereo mp3. Stream sample rate is set to "auto detect"
* Search for MP3 decoder in " / mnt / sd0 / BIN" directory
*/
err_t err = theAudio->initPlayer(AudioClass::Player0, AS_CODECTYPE_WAV, "/mnt/sd0/BIN", AS_SAMPLINGRATE_192000, AS_BITLENGTH_24,AS_CHANNEL_STEREO);
Serial.println("setup AS_SAMPLINGRATE_192000");
/* Verify player initialize */
if (err != AUDIOLIB_ECODE_OK) {
printf("Player0 initialize error\n");
exit(1);
}
}
void loop() {
Serial.println("---LOOP-start -------------------------------------");
File root = SD.open("/AUDIO");
while (true) { // files pickup
/* Open file placed on SD card */
File entry = root.openNextFile();
if (!entry) {
// Serial.println("**nomorefiles**");
}
Serial.println("opened " + String( (entry.name())) );
myFile = SD.open(entry.name());
/* Verify file open */
if (!myFile) {
printf("File open error\n");
exit(1);
}
printf("Open! % d\n",myFile);
/* Send first frames to be decoded */
int err = theAudio->writeFrames(AudioClass::Player0, myFile);
if (err != AUDIOLIB_ECODE_OK) {
printf("File Read Error! = % d\n",err);
myFile.close();
exit(1);
}
/* Main volume set to -16.0 dB */
volumeValue = analogRead(volumePin) / 4 ;
printf("Volume = % d\n",volumeValue);
theAudio->setVolume(-1*(250-volumeValue));
theAudio->startPlayer(AudioClass::Player0);
Serial.print("Play!!!!!!!!!!!!\n");
while (1) { // until read fifo? end
/* Send new frames to decode in a loop until file ends */
err = theAudio->writeFrames(AudioClass::Player0, myFile);
/* Tell when player file ends */
if (err == AUDIOLIB_ECODE_FILEEND) {
printf("Main player File End!\n");
}
/* Show error code from player and stop */
if (err) {
// printf("Main player error code: % d\n", err);
goto stop_player;
}
usleep(30000);
/* Don't go further and continue play */
continue;
stop_player:
delay(1);
theAudio->stopPlayer(AudioClass::Player0);
myFile.close();
// exit(1);
break;
}
}
delay(100);
}
メイン・ボード本体にD級アンプが搭載されていますが、デフォルトの出力であるヘッドホン端子は、出力にでっかいCを入れなくて済むという何やらわからない性能のヘッドホン・アンプがつながっています。
ヘッドホン・アンプの手前にあるD級アンプ出力は、レベルの下げるための470Ωの抵抗がシリーズに入っています。内蔵のボリュームを最大値の0dBにしてもスピーカからはかすかな音しか出ません。
解説によると、470Ωと小容量のコンデンサのパーツをLと大きめのCに変更することで、スピーカから音が出ます。しかし、たぶん、無理な作業です。電動のはんだ取り器を使えば、八つのパーツを安全に取り出せますが、新しいCをはんだ付けするのは、ほとんど不可能です。10セットあったら1セットぐらい成功するかもしれません。
ポータブル機器にスピーカを接続する際、出力にローパス・フィルタを入れる設計が多いです。しかし、普通のスピーカ・ケーブルを数mのばして普通のスピーカをつなげるとき、フィルタは現実的には不要と考えられます。
という根拠の薄い理由で、470Ωを0Ωにするだけで済ませます。
はんだゴテの先をきれいにし、はんだをちょっとだけつけ、フラックスが飛びきらないうちに、チップ抵抗のはんだ面(もちろん上面)にはんだをわずかに盛ります。0.3mm程度のはんだメッキ線を押し付けて抵抗をショートします。
推定500mW弱のアンプだと思います。96dBを超えるスピーカなら、オーケストラも十分再生できます。
9/1ごろの更新で、ハイレゾは192kHz/24ビットだけと書かれました。48kHz/24ビットも再生できますが96kHzは再生できません。
(2018/10)1.1.0になって96kHzが対応しました。ただ、スピーカからの音がとても小さくなって実用上聞こえなくなりました。私のだけかも
playerのスケッチの変更点です。再生するwavファイルはAUDIOフォルダの中に入れておきます。
theAudio->setRenderingClockMode(AS_CLKMODE_HIRES);
theAudio->initPlayer(AudioClass::Player0, AS_CODECTYPE_WAV, "/mnt/sd0/BIN", AS_SAMPLINGRATE_192000,AS_BITLENGTH_24,AS_CHANNEL_STEREO);
theAudio->initPlayer(AudioClass::Player0, AS_CODECTYPE_WAV, "/mnt/sd0/BIN", AS_SAMPLINGRATE_192000,AS_BITLENGTH_24,AS_CHANNEL_STEREO);
myFile = theSD.open("AUDIO/192.wav");
効率90dB以下のスピーカならば、ボリュームは0でOKです。 爆音は出ません。ボリューム値を読み込んで音量を変更できますが、あんまり役に立っていません。で、一番重要な音ですが、最上の音楽が聴けますです。
●SDメモリの音源を四つまで連続に再生するスケッチ
SDメモリに入っている音源を全部再生できるはずなのですが、5曲目からは再生できないです。
音源は192kHz/24ビット決め打ちにしてあります。
ボリュームは、A0端子の電圧を読み取って値を決めています。ボリュームを付けないときは、-100とかの値を入れておいてください。
/*
player.ino - Simple sound player example application
Copyright 2018 Sony Semiconductor Solutions Corporation
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <Audio.h>
AudioClass *theAudio;
File myFile;
//#include <SDHCI.h>
SDClass SD;
#define volumePin A0
int volumeValue = 0;
/**
@brief Setup audio player to play mp3 file
Set output device to speaker <br>
Set main player to decode stereo mp3. Stream sample rate is set to "auto detect" <br>
System directory "/mnt/sd0/BIN" will be searched for MP3 decoder (MP3DEC file)
Open "Sound.mp3" file <br>
Set master volume to -16.0 dB
*/
void setup() {
Serial.begin(115200);
// start audio system
theAudio = AudioClass::getInstance();
theAudio->begin();
Serial.println("initialization Audio Library");
/* Set output device to speaker */
theAudio->setRenderingClockMode(AS_CLKMODE_HIRES);
theAudio->setPlayerMode(AS_SETPLAYER_OUTPUTDEVICE_SPHP);//AS_SETPLAYER_OUTPUTDEVICE_I2SOUTPUT
//theAudio->setPlayerMode(AS_SETPLAYER_OUTPUTDEVICE_I2SOUTPUT);
/*
* Set main player to decode stereo mp3. Stream sample rate is set to "auto detect"
* Search for MP3 decoder in " / mnt / sd0 / BIN" directory
*/
err_t err = theAudio->initPlayer(AudioClass::Player0, AS_CODECTYPE_WAV, "/mnt/sd0/BIN", AS_SAMPLINGRATE_192000, AS_BITLENGTH_24,AS_CHANNEL_STEREO);
Serial.println("setup AS_SAMPLINGRATE_192000");
/* Verify player initialize */
if (err != AUDIOLIB_ECODE_OK) {
printf("Player0 initialize error\n");
exit(1);
}
}
void loop() {
Serial.println("---LOOP-start -------------------------------------");
File root = SD.open("/AUDIO");
while (true) { // files pickup
/* Open file placed on SD card */
File entry = root.openNextFile();
if (!entry) {
// Serial.println("**nomorefiles**");
}
Serial.println("opened " + String( (entry.name())) );
myFile = SD.open(entry.name());
/* Verify file open */
if (!myFile) {
printf("File open error\n");
exit(1);
}
printf("Open! % d\n",myFile);
/* Send first frames to be decoded */
int err = theAudio->writeFrames(AudioClass::Player0, myFile);
if (err != AUDIOLIB_ECODE_OK) {
printf("File Read Error! = % d\n",err);
myFile.close();
exit(1);
}
/* Main volume set to -16.0 dB */
volumeValue = analogRead(volumePin) / 4 ;
printf("Volume = % d\n",volumeValue);
theAudio->setVolume(-1*(250-volumeValue));
theAudio->startPlayer(AudioClass::Player0);
Serial.print("Play!!!!!!!!!!!!\n");
while (1) { // until read fifo? end
/* Send new frames to decode in a loop until file ends */
err = theAudio->writeFrames(AudioClass::Player0, myFile);
/* Tell when player file ends */
if (err == AUDIOLIB_ECODE_FILEEND) {
printf("Main player File End!\n");
}
/* Show error code from player and stop */
if (err) {
// printf("Main player error code: % d\n", err);
goto stop_player;
}
usleep(30000);
/* Don't go further and continue play */
continue;
stop_player:
delay(1);
theAudio->stopPlayer(AudioClass::Player0);
myFile.close();
// exit(1);
break;
}
}
delay(100);
}
2018年7月31日火曜日
SONY SPRESENSE でLチカ
このマイコン・ボードは何て読むのでしょうか。ソニー・プレセンスかな?
Arduino IDEが用意されているので、とりあえず、動かしてみることができます。GPSやオーディオ機能は特別にライブラリが用意されています。ライブラリはもしかしたら、複数のコアを利用するような設計になっているかもしれません。
すんなり、開発ソフトは用意できました。
SpresenseでLチカから始める (1) Lチカは簡単か
ハイレゾの再生
べっとRTOSのNuttXが用意されています。
●NuttXのインストール 未完成。それに、9/1ごろにだいぶ書き直されたので、当初の記述はだいぶ異なる。10/26の更新で問題点のある表記がほとんどクリアされた。が、.configファイルが2個も入れ忘れているように見えるし、1個Kconfigに文法ミスがあってコンパイルが通らない。
Ubuntu 16.04 LTS 64bit で検索してダウンロードする。WindowsでrufusでUSBメモリに書き込む。
PC(XEON E5 2658 V3 12コア 2.0GHz、DDR4-8Gバイト、クアドラ4000、ASRock X99 Taichi)のUSBスロットに差し込み、電源を入れて、F11でブート・メニューを出し、UEFI-USBメモリを選択してブートする。
Ubuntuを言われたとおりにインストールし、終了したら、USBメモリを抜いて再起動。
セオリどおりterminalから、
sudo apt-get update
sudo apt-get upgrade -y
を実行。システムが壊れているというメッセージが出るが無視する。
必要なツールをインストールする。
sudo apt install git
sudo apt install make gperf flex bison libncurses-dev
sudo apt install ruby
sudo apt-get install git gperf libncurses5-dev flex bison gcc-arm-none-eabi
その後、
git clone -n https://patacongo@bitbucket.org/nuttx/tools.git tools
cd tools
git config core.autocrlf false
git checkout -b 891510d2534287afef6b5c90a375f94442a7e94d
cd kconfig-frontends/
./configure
make
sudo make install
sudo ldconfig
たぶん、うまくいかない。
すでに何とかといわれる。
sudo adduser dialout
cd spresense/sdk
python3 tools/config.py --kernel release
python3 tools/config.py examples/hello
make buildkernel
make
sudo tools/flash.sh -c /dev/ttyUSB0 nuttx.spk
???どこかで実行するが失敗する? 直接zipをダウンロードしてフォルダにコピーする?
git clone --recursive git@github.com:sonydevworld/spresense.git
これも直接落としてきたかも
sonydevworld/spresense-nuttx
●ターミナル・ソフト
書き込みが終了したら、新しいterminalを開き、
export LANG=en_US
minicom -D /dev/ttyUSB0 -b 115200 -s
●gpio
nshのterminalをクローズ。
.configをnanoで開く。
CONFIG_SYSTEM_GPIO=y
CONFIG_SYSTEM_GPIO_STATUS=y
をコピペしてCtrl-O,CTRL-Xで書き込む。
make buildkernel
make
sudo tools/flash.sh -c /dev/ttyUSB0 nuttx.spk
terminalを新たに開く。
Arduino IDEが用意されているので、とりあえず、動かしてみることができます。GPSやオーディオ機能は特別にライブラリが用意されています。ライブラリはもしかしたら、複数のコアを利用するような設計になっているかもしれません。
すんなり、開発ソフトは用意できました。
SpresenseでLチカから始める (1) Lチカは簡単か
ハイレゾの再生
べっとRTOSのNuttXが用意されています。
●NuttXのインストール 未完成。それに、9/1ごろにだいぶ書き直されたので、当初の記述はだいぶ異なる。10/26の更新で問題点のある表記がほとんどクリアされた。が、.configファイルが2個も入れ忘れているように見えるし、1個Kconfigに文法ミスがあってコンパイルが通らない。
Ubuntu 16.04 LTS 64bit で検索してダウンロードする。WindowsでrufusでUSBメモリに書き込む。
PC(XEON E5 2658 V3 12コア 2.0GHz、DDR4-8Gバイト、クアドラ4000、ASRock X99 Taichi)のUSBスロットに差し込み、電源を入れて、F11でブート・メニューを出し、UEFI-USBメモリを選択してブートする。
Ubuntuを言われたとおりにインストールし、終了したら、USBメモリを抜いて再起動。
セオリどおりterminalから、
sudo apt-get update
sudo apt-get upgrade -y
を実行。システムが壊れているというメッセージが出るが無視する。
必要なツールをインストールする。
sudo apt install git
sudo apt install make gperf flex bison libncurses-dev
sudo apt install ruby
sudo apt-get install git gperf libncurses5-dev flex bison gcc-arm-none-eabi
その後、
git clone -n https://patacongo@bitbucket.org/nuttx/tools.git tools
cd tools
git config core.autocrlf false
git checkout -b 891510d2534287afef6b5c90a375f94442a7e94d
cd kconfig-frontends/
./configure
make
sudo make install
sudo ldconfig
たぶん、うまくいかない。
すでに何とかといわれる。
sudo adduser dialout
cd spresense/sdk
python3 tools/config.py --kernel release
python3 tools/config.py examples/hello
make buildkernel
make
sudo tools/flash.sh -c /dev/ttyUSB0 nuttx.spk
???どこかで実行するが失敗する? 直接zipをダウンロードしてフォルダにコピーする?
git clone --recursive git@github.com:sonydevworld/spresense.git
これも直接落としてきたかも
sonydevworld/spresense-nuttx
●ターミナル・ソフト
書き込みが終了したら、新しいterminalを開き、
export LANG=en_US
minicom -D /dev/ttyUSB0 -b 115200 -s
●gpio
nshのterminalをクローズ。
.configをnanoで開く。
CONFIG_SYSTEM_GPIO=y
CONFIG_SYSTEM_GPIO_STATUS=y
をコピペしてCtrl-O,CTRL-Xで書き込む。
make buildkernel
make
sudo tools/flash.sh -c /dev/ttyUSB0 nuttx.spk
terminalを新たに開く。
2018年6月23日土曜日
Makerご用達 万能測定器ADALM2000
2017年4月に発表が行われましたが、その後、オープンソースの測定ソフトScopyの開発が遅れたのかもしくはAnalog Discoveryと機能が被るので、わざと遅らせたのか不明ですが、2018年6月に入手ができるようになりました。
発表当時の予価は99ドルでしたが、149ドルに価格は変更されています。基板設計も途中であったようで、当初のケース(ADALM-PLUTO)には入らなくなり、準備中のようです。
iioのドライバ類はADALM-PLUTOと同じものを利用します。
ADALM1000という学習用測定器にはAliceという解説が豊富な測定ソフトがありました。これも2018年の2月にADALM2000用が用意されましたが、6月現在、うまく動きません。
(2) オシロスコープでOPアンプのフルスイングを見る
(3) ネットワーク・アナライザでアンプの帯域を見る-1 CRフィルタ
(4) ネットワーク・アナライザでアンプの帯域を見る-2 反転アンプ
発表当時の予価は99ドルでしたが、149ドルに価格は変更されています。基板設計も途中であったようで、当初のケース(ADALM-PLUTO)には入らなくなり、準備中のようです。
iioのドライバ類はADALM-PLUTOと同じものを利用します。
ADALM1000という学習用測定器にはAliceという解説が豊富な測定ソフトがありました。これも2018年の2月にADALM2000用が用意されましたが、6月現在、うまく動きません。
これ一つで測定すべてをカバーするADALM2000
(1) セットアップ(2) オシロスコープでOPアンプのフルスイングを見る
(3) ネットワーク・アナライザでアンプの帯域を見る-1 CRフィルタ
(4) ネットワーク・アナライザでアンプの帯域を見る-2 反転アンプ
2018年5月30日水曜日
Dell Edge Gateway 3001を使ってみた
2018年5月現在、日本では販売開始されていないDell Edge Gateway 3001です。面白そうなので、マウザーで購入しました。
A-D/DAが使えないです。こまった。I2C/SPIバイスは外に出ていません。
番外編 Dell Edge Gateway 3001は素人でも使えるのか その1 I/Oの確認
番外編 Dell Edge Gateway 3001は素人でも使えるのか その2 外部に出ているGPIOポート-1
A-D/DAが使えないです。こまった。I2C/SPIバイスは外に出ていません。
番外編 Dell Edge Gateway 3001は素人でも使えるのか その1 I/Oの確認
番外編 Dell Edge Gateway 3001は素人でも使えるのか その2 外部に出ているGPIOポート-1
2018年4月27日金曜日
ST Microelectronicsの距離を測るセンサ
ST Microelectronicsの VL6180X VL53L0X VL53L1X をArduinoで利用する話が完結しました。
距離を正確に測る
赤外線VL6180X
レーザーVL53L0X
レーザーVL53L1X
距離を正確に測る
赤外線VL6180X
レーザーVL53L0X
レーザーVL53L1X
登録:
投稿 (Atom)