2015年05月09日(土)
2015年03月22日(日)
Linux Mint Debian Edition を使ってみた
Windows XPのままにしていたノートPCをLinuxにしようと、この一週間ネットを徘徊。
今回 Linux化するPCもPAE非対応のPCやから、ディストリビューションの選択肢も限られてるんで、2年前と同じMint Mayaかなぁと思いながらサイトを見たら...
Debian Editionやったら非PAE対応のPCで使えるという情報が。
Debian版は年一回のペースでリリースされているみたいで、最新版は去年の3月。ということはボチボチ新しいのが出る?
http://ja.wikipedia.org/wiki/Linux_Mint
と思って週末にダウンロードしようとしたら、新しいのが出てた。
で、さっそく最新版のBetsy MATE RC (32-bit)をダウンロードしてインストール。
http://linuxmint-jp.net/
http://www.linuxmint.com/download_all.php
LMDE2 BetsyをインストールしたPC
CPU:Intel(R) Pentium(R) M 1.60GHz
HDD:40GByte
RAM:1GByte
xrdpを入れてリモートからアクセスしたら、エラーが出てアクセスできへん。
ネットを検索すると、vnc4serverもインストールせなあかんとか。
確かに、これまで使ってるMint Mayaにはvnc4serverが入ってた。
これをインストールして無事、リモートからアクセスできた。
|
2015年03月08日(日)
ラズパイ2で流星の電波観測(HRO)
Raspberry Pi 2の性能を活かして、電波観測(HRO)の環境を構築した。
インストールの練習を兼ねて、Linuxで流星の電波観測(HRO)で書いたように、Linux PCに観測用のソフト「Spec-Recorder」をインストールして動作を確認。
そやから、今回は安心してRaspberry Pi 2へインストール。
これで、わざわざ高いPCを使う必要はないし、格安でHROの環境を構築できる。
インストール方法は、添付のRead me.pdfに書かれているとおり。
sr.confファイルも修正。
動作結果は、下のとおり。どこか設定が悪いのか、Warningが出てるけど、とりあえず放置。。
-----------------------------------
$ python main.py
HTTP server is unavailable
del_ogg is unavailable
filename will not be written
CSV file will be saved
data will be analyzed
OS = Linux,BSD,etc
Spec_Recorder Ver.1.21
Executed freq_exec.py
executed freq_send_mail.py
Audio fileneme is ocv1503081615.ogg
Waiting 5 minutes
Filename is ocv1503081615.ogg
Recording start
sox WARN alsa: can't encode 0-bit Unknown or not applicable
Input File : 'default' (alsa)
Channels : 2
Sample Rate : 48000
Precision : 16-bit
Sample Encoding: 16-bit Signed Integer PCM
In:0.00% 00:00:58.88 [00:00:00.00] Out:2.82M [ ===|=== ] Clip:0 1
In:0.00% 00:01:09.03 [00:00:00.00] Out:3.31M [ =|= ] Clip:0 1
In:0.00% 00:01:19.19 [00:00:00.00] Out:3.80M [ -===|===- ] Clip:0 1
In:0.00% 00:01:29.26 [00:00:00.00] Out:4.28M [ -===|===- ] Clip:0 1
:
-----------------------------------
今回もFM放送で動作を確認。
Raspberry PiにはAudio入力の端子はついてないんで、市販のUSB Audioを追加。
たまたま昔買って手元にあったPLANEX PL-US35APを使っているサイトがあったんで、その通りに設定。
参考にしたサイト
http://cubic9.com/Devel/%C5%C5%BB%D2%B9%A9%BA%EE/RaspberryPi/%C6%FC%CB%DC%B8%EC%B2%BB%C0%BC%C7%A7%BC%B1/
-----------------------------------
pi@raspberrypi2 ~ $ lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0d8c:0008 C-Media Electronics, Inc.
pi@raspberrypi2 ~ $ cat /proc/asound/modules
0 snd_usb_audio
1 snd_bcm2835
pi@raspberrypi2 ~ $ amixer
Simple mixer control 'PCM',0
Capabilities: pvolume pswitch pswitch-joined penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 151
Mono:
Front Left: Playback 44 [29%] [-20.13dB] [on]
Front Right: Playback 44 [29%] [-20.13dB] [on]
Simple mixer control 'Mic',0
Capabilities: cvolume cvolume-joined cswitch cswitch-joined penum
Capture channels: Mono
Limits: Capture 0 - 16
Mono: Capture 0 [0%] [0.00dB] [on]
Simple mixer control 'Auto Gain Control',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [on]
-----------------------------------
|
2015年03月02日(月)
やっと到着。 ラズパイ2
一月遅れになったけど、ようやくラズパイ2が届いた。
買ぅて何に使うん? っていういつもの無意味な自問を繰り返してる間に在庫がなくなってて。
で、このままやといつになっても買われへんかもと思って、とりあえず発注しといたんが、3週間経った今日、ようやく到着。
到着を待ってる間に使い道も決まって、ちょっと残念。
Windows10が出たらこれで遊ぼうと思って、Windows Developer Programにも登録してるのに。。
落ち着いたら、もう一台買う?!
Raspberry Pi 2 Model B
|
2015年02月22日(日)
Linuxで流星の電波観測(HRO)
流星の電波観測(HRO)用のソフトはWindowsで動作するHROFFTが有名やけど、今回はWindows XPからLinuxにOSを入れ替えた古いPCの有効活用を考えてMINT 13(Maya)へSpec-Recorderをインストールしてみた。
現在の最新版をダウンロード。
http://sourceforge.jp/projects/spec-recorder/
Spec-Recorder Ver.1.40.zip
インストールは簡単。
添付のRead me.pdfに書かれている必要なライブラリのうち、インストールされてないものをパッケージマネージャで入れてツールを実行するだけ。
実行したら、結果が5分毎に分割されてファイルに保存されていく。
HTTPサーバーを使ったりとか設定のカスタムはconfigファイルでできる。
-----------------------------------
$ python main.py
HTTP server is unavailable
del_ogg is unavailable
filename will not be written
CSV file will be saved
data will be analyzed
OS = Linux,BSD,etc
Spec_Recorder Ver.1.21
Executed freq_exec.py
executed freq_send_mail.py
Filename is ocv1502220920.ogg
Audio fileneme is ocv1502220920.ogg
Waiting 5 minutes
Recording start
Input File : 'default' (alsa)
Channels : 2
Sample Rate : 48000
Precision : 16-bit
Sample Encoding: 16-bit Signed Integer PCM
In:0.00% 00:00:59.73 [00:00:00.00] Out:2.86M [ | ] Clip:0 1
In:0.00% 00:01:09.72 [00:00:00.00] Out:3.34M [ | ] Clip:0 1
In:0.00% 00:01:19.79 [00:00:00.00] Out:3.83M [ | ] Clip:0 1
In:0.00% 00:01:29.94 [00:00:00.00] Out:4.31M [ | ] Clip:0 1
:
-----------------------------------
ちゃんと動作しているように見えたけど、正時に異常が発生して測定結果のPNGが作成されへんとかCtr-Cで停止できへんとかの現象が。
-----------------------------------
:
In:0.00% 00:00:10.84 [00:00:00.00] Out:516k [ | ] Clip:0 Waiting for ocv1502220955.png
In:0.00% 00:00:11.43 [00:00:00.00] Out:545k [ | ] Clip:0 Waiting for ocv1502220955.png
In:0.00% 00:00:11.86 [00:00:00.00] Out:565k [ | ] Clip:0 ocv1502220955.png is exist
make csv
make zip
Traceback (most recent call last):
File "main.py", line 189, in <module>
if int(start_minute) >= 0 and int(start_minute) < 5 and conf.get("file", "auto_make_rmob") == "on":
File "/usr/lib/python2.7/ConfigParser.py", line 618, in get
In:0.00% 00:00:12.03 [00:00:00.00] Out:573k [ | ] Clip:0 raise NoOptionError(option, section)
ConfigParser.NoOptionError: No option 'auto_make_rmob' in section: 'file'
In:0.00% 00:00:12.29 [00:00:00.00] Out:586k [ | ] Clip:0 start making list
In:0.00% 00:00:54.19 [00:00:00.00] Out:2.60M [ | ] Clip:0 finished making list
:
-----------------------------------
異常が出ている行を見たら、cofigファイル「sr.conf」の「auto_make_rmob」をチェックしているのが分かる。
そやけど、「sr.conf」には「auto_make_rmob」の設定が記載されてへん。
処理としては、毎正時に「auto_make_rmob = on」やったら、RMOBに関係する何かの処理をするのかなぁ?という感じ。
配布サイトの情報を見るとRMOBの処理はまだ実装中のように読めたんで、「sr.conf」に「auto_make_rmob = off」を追加して対応。
-----------------------------------
:
[file]
header = ocv
del_ogg = off
write_filename = off
write_csv = on
make_zip = on
auto_make_rmob = off
:
-----------------------------------
とりあえず、異常なしで動作するようになった。
FM放送で動作を確認。。
|
2014年11月09日(日)
Raspberry Pi にLCD液晶を付けて時計を作ってみた
LCD液晶の動作を確認するために時計のサンプルを作ってみた。
使用したLCD液晶は、トラ技2014年7月号に掲載されていたもの。
ストロベリー・リナックス http://strawberry-linux.com/
I2C低電圧キャラクタ液晶モジュール(16x2行) メーカー品番:SB1602B
http://strawberry-linux.com/catalog/items?code=27001
使い方は、ストロベリー・リナックスで公開されている資料と
使用されているコントローラー(ST7032i)のデータシートを参考に。
I2Cのアドレスを確認
--------------------------------------------
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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
pi@raspberrypi ~ $
--------------------------------------------
そうそう、I2Cを使うのに、libi2c-dev だけではダメみたいで、i2c-tools もインストールしてた。
下のソースが時計のサンプル。
アイコン表示の動作を確認するために、26秒間だけ動作。
ソース
--------------------------------------------
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <wiringPiI2C.h>
#define LCD_ADDRESS 0x3e
#define LCD_CMDADRS 0x00
#define LCD_DATADRS 0x40
// Prototype
int lcd_init(int fd);
int lcd_write(int fd, char* buf, int line);
int lcd_clear(int fd);
int lcd_icon(int fd, int num, int disp);
/**
* main
* Initialize ST7032i (LCD Controller)
* ICON Control
* Write DATE,TIME
*/
int main(void)
{
int fd_lcd; // ST7032i (LCD Controller)
char disp_buf[17]; // Display Buffer
int icon_num; // ICON Number
int icon_disp; // ICON (1:display 0:clear)
int loop;
time_t timer;
struct tm *local;
char wday_buf[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
/** Device open */
if((fd_lcd = wiringPiI2CSetup(LCD_ADDRESS)) == -1) { return 1; }
/** Initialize ST7032i (LCD Controller) */
if (lcd_init(fd_lcd) == -1) { return 1; }
icon_num = 0;
icon_disp = 1; // ICON display
for (loop=0; loop<26; loop++) {
/** ICON */
if (loop == 13) { // 0-12:Display 13-:Clear
icon_num = 0;
icon_disp = 0; // ICON clear
}
lcd_icon(fd_lcd, icon_num, icon_disp);
icon_num++;
/** CLOCK */
timer = time(NULL);
local = localtime(&timer);
sprintf(disp_buf,"%4d/%02d/%02d %s",
local->tm_year+1900, local->tm_mon+1, local->tm_mday, wday_buf[local->tm_wday]);
lcd_write(fd_lcd, disp_buf, 1);
sprintf(disp_buf,"%02d:%02d:%02d",
local->tm_hour, local->tm_min, local->tm_sec);
lcd_write(fd_lcd, disp_buf, 2);
sleep(1); // 1sec
}
/** LCD clear */
lcd_clear(fd_lcd);
return 0;
}
/**
* sub:lcd_init
* ex. ST7032i dataseet (Command , Initilaize flowchart)
*/
int lcd_init(int fd)
{
delay(40); // 40msec
/** Function Set (8bit bus mode, 2-line mode,normal font,normal instruction mode) */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b00111000);
delayMicroseconds(30); // 26.3usec
/** Function Set (IS=1 : extension instruction mode) */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b00111001);
delayMicroseconds(30); // 26.3usec
/** Internal OSC frequency (BS=Low, Freq=183Hz, VDD=3.0V) */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b00010100);
delayMicroseconds(30); // 26.3usec
/** Contrast set (lower 4bit) */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b01111010);
delayMicroseconds(30); // 26.3usec
/** Power (ICON ON/Boost ON/Contrast higher 2bit) */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b01011111);
delayMicroseconds(30); // 26.3usec
/** Follower control (Fon ON/Rab1 ON) */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b01101010);
delay(200); // 200msec (for Power stable)
/** Display ON/Cursor ON/Blink ON */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b00001111);
delayMicroseconds(30); // 26.3usec
/** Clear Display */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b00000001);
delay(2); // 2msec
/** Entry Mode Set (Cursor moves to right) */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b00000110);
delayMicroseconds(30); // 26.3usec
return 0;
}
/**
* sub:lcd_write
*/
int lcd_write(int fd, char* buf, int line)
{
int cnt;
char addr;
/** Set DDRAM Address */
if (line == 1) {
/** Line 1 (0x00) */
addr = 0b10000000;
} else {
/** Line 2 (0x40) */
addr = 0b11000000;
}
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, addr);
/** Write Data To DDRAM */
for (cnt=0; buf[cnt]!=0; cnt++) {
wiringPiI2CWriteReg8(fd, LCD_DATADRS, buf[cnt]);
}
return 0;
}
/**
* sub:lcd_clear
*/
int lcd_clear(int fd)
{
/** Clear Display */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b00000001);
delay(2); // 2msec
/** Return Home */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b00000011);
delay(2); // 2msec
return 0;
}
/**
* sub:lcd_icon
*/
int lcd_icon(int fd, int num, int disp)
{
char icon;
// ICON address table (Lower 4bit) OFFSET : ADDR: BIT : ICON
char icon_addr_buf[13] = { 0x00, // 0 : 00H : S1 : ANT
0x02, // 1 : 02H : S11 : TEL
0x04, // 2 : 04H : S21 : SP
0x06, // 3 : 06H : S31 : CON
0x07, // 4 : 07H : S36 : UP
0x07, // 5 : 07H : S37 : DN
0x09, // 6 : 09H : S46 : KEY
0x0b, // 7 : 0BH : S56 : ?
0x0d, // 8 : 0DH : S66 : BAT
0x0d, // 9 : 0DH : S67 : BAT
0x0d, // A : 0DH : S68 : BAT
0x0d, // B : 0DH : S69 : BAT
0x0f // C : 0FH : S76 : ?
};
// ICON bits table (Lower 5bit) OFFSET : ADDR: BIT : ICON
char icon_bits_buf[13] = { 0b00010000, // 0 : 00H : S1 : ANT
0b00010000, // 1 : 02H : S11 : TEL
0b00010000, // 2 : 04H : S21 : SP
0b00010000, // 3 : 06H : S31 : CON
0b00010000, // 4 : 07H : S36 : UP
0b00001000, // 5 : 07H : S37 : DN
0b00010000, // 6 : 09H : S46 : KEY
0b00010000, // 7 : 0BH : S56 : ?
0b00010000, // 8 : 0DH : S66 : BAT
0b00001000, // 9 : 0DH : S67 : BAT
0b00000100, // A : 0DH : S68 : BAT
0b00000010, // B : 0DH : S69 : BAT
0b00010000 // C : 0FH : S76 : ?
};
if (num > 12) { return 1; }
/** Function Set (IS=1 : extension instruction mode) */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b00111001);
delayMicroseconds(30); // 26.3usec
/** Set ICON Address */
icon = 0b01000000 | icon_addr_buf[num]; // Lower 4bit
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, icon);
delayMicroseconds(30); // 26.3usec
/** Write Data To RAM */
if (disp == 1) {
/** ICON display */
icon = icon_bits_buf[num];
} else {
/** ICON clear */
icon = icon_bits_buf[num] ^ icon_bits_buf[num];
}
icon = 0b00000000 | icon; // Lower 5bit
wiringPiI2CWriteReg8(fd, LCD_DATADRS, icon);
/** Function Set (IS=0) */
wiringPiI2CWriteReg8(fd, LCD_CMDADRS, 0b00111000);
delayMicroseconds(30); // 26.3usec
return 0;
}
--------------------------------------------
--------------------------------------------
gcc -o lcdsample lcdsample.c -l wiringPi
--------------------------------------------
|
2014年11月03日(月)
Raspberry Pi にRTCを追加
Raspberry Pi単体で動くようにしようとLCD液晶とRTCを追加した。
購入したLCD液晶はトラ技2014年7月号に載ってたのを。
RTCも同じサイトで扱っていたもの。
ストロベリー・リナックス http://strawberry-linux.com/
M41T62 リアルタイムクロック(RTC)モジュール
http://strawberry-linux.com/catalog/items?code=12062
M41T62のドライバーを確認してみると...ない?!
--------------------------------------------
pi@raspberrypi /lib/modules/3.10.25+/kernel/drivers/rtc $ ls -l
合計 316
-rw-r--r-- 1 root root 7001 1月 8 2014 rtc-bq32k.ko
-rw-r--r-- 1 root root 12226 1月 8 2014 rtc-ds1305.ko
:
:
-rw-r--r-- 1 root root 8048 1月 8 2014 rtc-isl12022.ko
-rw-r--r-- 1 root root 15377 1月 8 2014 rtc-isl1208.ko
-rw-r--r-- 1 root root 10558 1月 8 2014 rtc-m41t80.ko
-rw-r--r-- 1 root root 8059 1月 8 2014 rtc-m41t93.ko
-rw-r--r-- 1 root root 7363 1月 8 2014 rtc-m41t94.ko
-rw-r--r-- 1 root root 7587 1月 8 2014 rtc-max6900.ko
:
:
-rw-r--r-- 1 root root 9175 1月 8 2014 rtc-s35390a.ko
-rw-r--r-- 1 root root 12472 1月 8 2014 rtc-x1205.ko
pi@raspberrypi /lib/modules/3.10.25+/kernel/drivers/rtc $
--------------------------------------------
ネットで検索してみると、どうやらrtc-m41t80が対応しているみたい。
http://code.metager.de/source/xref/raspberrypi/linux/drivers/rtc/rtc-m41t80.c
M41T62を認識できてるか確認したら...出た!
--------------------------------------------
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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
pi@raspberrypi ~ $
--------------------------------------------
ということで、M41T62をRTCとして設定。
--------------------------------------------
pi@raspberrypi / $ sudo modprobe rtc-m41t80
pi@raspberrypi / $
pi@raspberrypi / $ sudo su
root@raspberrypi:/# echo m41t62 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
root@raspberrypi:/#
--------------------------------------------
現在の時刻をハードウェアクロックに設定。
--------------------------------------------
pi@raspberrypi / $ date
2014年 10月 5日 日曜日 12:00:08 JST
pi@raspberrypi / $ sudo hwclock -w
pi@raspberrypi / $ sudo hwclock -r
2014年10月05日 12時01分58秒 -0.057212 seconds
pi@raspberrypi / $
--------------------------------------------
Raspberry Pi起動時にハードウェアクロックからシステムクロックを設定するように、/etc/rc.lodalに以下を追加。
--------------------------------------------
echo m41t62 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sleep 1
hwclock -s
--------------------------------------------
問題は、NTPサーバーで時刻校正した結果をハードウェアクロックに反映する仕組みになってないってこと。
LCD液晶は、そのうちに。
|
2014年09月23日(火)
Raspberry Pi にレベルメータ
センサーとかで読み取った内容を表示しようと、レベルメータを付けてみた。
使えそうなLEDを探してたら10セグメントのLEDが見つかって、その隣にレベルメータICってものが出てた。
で、これらを使おうと思って必要な部品を探そうとしたら、キットも売ってた。
あれこれ部品を買い集めるのも面倒なんで、このキットを買って、超簡単にレベルメータを実装。
コンパクトレベルメータキット SK-LV39
http://eleshop.jp/shop/g/g7AD113/
GPIO 18はH/W PWMとして使えるんで、この信号をレベルメータに入れる。
レベル調整は、キット基板上の半固定抵抗で。
--------------------------------------------
#include <wiringPi.h>
#define LED_PIN 1 // GPIO 18
#define DELAY_TIME 500 // usec
#define LOOP_CNT 10
int main(void)
{
int pwm;
int cnt;
if(wiringPiSetup() == -1) return 1;
pinMode(LED_PIN, PWM_OUTPUT);
for (cnt=0; cnt<LOOP_CNT; cnt++) {
// Up
for (pwm=0; pwm<=1023; pwm++) {
pwmWrite(LED_PIN, pwm);
delayMicroseconds(DELAY_TIME);
}
// Down
for (pwm=1023; pwm>=0; pwm--) {
pwmWrite(LED_PIN, pwm);
delayMicroseconds(DELAY_TIME);
}
}
return 0;
}
--------------------------------------------
|
2014年08月17日(日)
Raspberry Pi その後
Raspberry Piを買ってから2ヶ月。
ほとんど触ることもなく。
Raspberry Pi以降にインストールしたもの。
・I2C通信を行うためのライブラリ。
--------------------------------------------
pi@raspberrypi ~ $ sudo apt-get install libi2c-dev
--------------------------------------------
・GPIOを制御するためのC言語ライブラリ。
--------------------------------------------
pi@raspberrypi ~/Workspace $ git clone git://git.drogon.net/wiringPi
pi@raspberrypi ~/Workspace $ cd wiringPi/
pi@raspberrypi ~/Workspace/wiringPi $ ./build
--------------------------------------------
・赤外線リモコンを使用するためのライブラリ。
--------------------------------------------
pi@raspberrypi ~ $ sudo apt-get install lirc
--------------------------------------------
Raspberry Pi起動時にlircを起動するよう設定
変更するファイル:
/etc/modules
変更内容:
ファイルの最後にlirc〜の2行を追加。
(GPIO 22,23を使用した場合)
--------------------------------------------
pi@raspberrypi /etc $ more modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
snd-bcm2835
lirc_dev
lirc_rpi gpio_in_pin=23 gpio_out_pin=22
pi@raspberrypi /etc $
--------------------------------------------
で、これらを使って何種類かの機能を実装してみた。
・shutdownボタン
1秒間隔でスイッチの状態をチェックして3秒間の長押しでシャットダウン。
rc.localからバックグラウンドで起動。
--------------------------------------------
/home/pi/Workspace/shutdown/shutdown_btn &
--------------------------------------------
ソース
--------------------------------------------
#include <wiringPi.h>
#include <stdio.h>
#define BUTTON_PIN 0 // GPIO 17
#define SLEEP_TIME 1 // sec
#define SHUTDOWN_CNT 3
int main(void) {
int dat = 0;
int cnt = 0;
if(wiringPiSetup() == -1) return 1;
pinMode(BUTTON_PIN, INPUT);
while(1) {
dat = digitalRead(BUTTON_PIN);
if(dat == 0) {
cnt = 0;
} else {
cnt++;
if(cnt >= SHUTDOWN_CNT) {
// printf("Shutdown!!dat=%d , cnt=%d\n", dat, cnt);
system("shutdown -h now");
break;
}
}
// printf("dat=%d , cnt=%d\n", dat, cnt);
sleep(SLEEP_TIME);
}
return 0;
}
--------------------------------------------
デバッグ時の状態
--------------------------------------------
pi@raspberrypi ~/Workspace/shutdown $ sudo ./shutdown_btn
dat=0 , cnt=0
dat=0 , cnt=0
dat=0 , cnt=0
dat=0 , cnt=0
dat=1 , cnt=1
dat=1 , cnt=2
Shutdown!!dat=1 , cnt=3
--------------------------------------------
・温湿度モニタ
DHT11温湿度モジュールを使ったて温湿度モニタ。
ソース
こちらのをそのまま使用。(GPIOは変更)
http://www.rpiblog.com/2012/11/interfacing-temperature-and-humidity.html
実行中の表示
--------------------------------------------
pi@raspberrypi ~/Workspace/dht11 $ sudo ./dht11
Interfacing Temperature and Humidity Sensor (DHT11) With Raspberry Pi
Humidity = 38.0 % Temperature = 29.0 *C (84.2 *F)
Humidity = 39.0 % Temperature = 28.0 *C (82.4 *F)
Humidity = 39.0 % Temperature = 28.0 *C (82.4 *F)
:
--------------------------------------------
・赤外線リモコン
温湿度をモニタして扇風機やエアコンを制御するのが目的やけど、リモコンを覚えさせることができへんかった。
TVは制御できるのに...
GreenFanの電源スイッチをONした時の受信結果
--------------------------------------------
pi@raspberrypi ~ $ mode2 -d /dev/lirc0
space 2993751
pulse 8957
space 4557
pulse 553
space 583
pulse 533
:
:
space 1695
pulse 573
^C
pi@raspberrypi ~ $
--------------------------------------------
受信はできてるように見えるのに、覚えさせようとしたら、タイムアウトになる。。
・無線LANモニタ
手元にあったUSBの無線LANモジュール(コレガ CG-WLUSB300AGN)をRaspberry Piに挿してみたら使えたんで、アクセスポイントのモニタソフトを作成。
無線LANモジュールの認識状況
--------------------------------------------
pi@raspberrypi ~ $ lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 07aa:003f Corega K.K. CG-WLUSB300AGN
pi@raspberrypi ~ $
--------------------------------------------
モニタソフトの実行結果 (同じ内容をファイルへ保存)
--------------------------------------------
pi@raspberrypi ~/Workspace/wlanmon $ sudo ./wlanmon
2014/08/16 21:24:09
Cell,Address,Ch,Freq(GHz),Quality(%),Signal(dBm),Enc,ESSID,Cipher,Auth
01,70:73:CB:BB:xx:xx,36,5.18,34,-86,on,"xxxxxxxxxxxxx",CCMP,PSK
02,70:73:CB:BB:yy:yy,11,2.462,42,-80,on,"yyyyyyyyyyyyy",CCMP,PSK
03,00:01:8E:9F:zz:zz,1,2.412,40,-82,on,"zzzzzzzzzzzz",,
04,00:1D:73:40:**:**,2,2.417,40,-82,on,"************",TKIP,PSK
05,28:C6:8E:0F:**:**,48,5.24,90,-47,on,"",CCMP,PSK
06,00:1D:73:A6:**:**,2,2.417,34,-86,on,"************",TKIP,PSK
07,34:76:C5:1B:**:**,1,2.412,42,-80,on,"************",TKIP CCMP,PSK
08,00:0D:02:CC:**:**,7,2.442,31,-88,on,"***************",,
pi@raspberrypi ~/Workspace/wlanmon $
--------------------------------------------
ちなみに上の結果に対応する生データ
--------------------------------------------
pi@raspberrypi ~/Workspace/wlanmon $ sudo iwlist wlan0 scan
wlan0 Scan completed :
Cell 01 - Address: 70:73:CB:BB:xx:xx
Channel:36
Frequency:5.18 GHz (Channel 36)
Quality=24/70 Signal level=-86 dBm
Encryption key:on
ESSID:"xxxxxxxxxxxxx"
Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=000004c8c0ad50f7
Extra: Last beacon: 1680ms ago
IE: Unknown: 000D736B326272206E6574776F726B
〜中略〜
IE: Unknown: 200100
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
IE: Unknown: 2D1AEF111BFFFFFF0000000000000000000000000000000000000000
〜中略〜
IE: Unknown: DD0B0017F20100010100000007
Cell 02 - Address: 70:73:CB:BB:yy:yy
Channel:11
Frequency:2.462 GHz (Channel 11)
Quality=30/70 Signal level=-80 dBm
Encryption key:on
ESSID:"yyyyyyyyyyyyy"
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s
Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=000004e402adea2f
Extra: Last beacon: 2180ms ago
IE: Unknown: 000D736B326272206E6574776F726B
〜中略〜
IE: Unknown: 32043048606C
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
IE: Unknown: 2D1AAD511BFFFFFF0000000000000000000000000000000000000000
〜中略〜
IE: Unknown: DD0B0017F20100010100000007
Cell 03 - Address: 00:01:8E:9F:zz:zz
Channel:1
Frequency:2.412 GHz (Channel 1)
:
:
--------------------------------------------
iwlist wlan0 scan の結果
無線LANドライバの種類によって出方が違うみたい。
例えば、MINTなノートPC内臓の無線LANの場合は、上のCell 02と同じAPやのに...
--------------------------------------------
eth1 Scan completed :
Cell 01 - Address: 70:73:CB:BB:xx:xx
ESSID:"xxxxxxxxxxxxx"
Protocol:IEEE 802.11bg
Mode:Master
Frequency:2.462 GHz (Channel 11)
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Quality=65/100 Signal level=-61 dBm
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
Extra: Last beacon: 80ms ago
--------------------------------------------
Raspberry Piとブレッドボードを組み合わせたケースをレゴブロックで作ってみた。
裏面と側面に作業性を考慮した隙間を作って排熱に気を付けて、ついでにLEDの近くは透明のブロックを使って
LEDの状態を見られるように。
|
2014年07月05日(土)
2014年06月15日(日)
Raspberry Pi
とうとう買った。
まずは部屋の温度をロギングして...というのが目的で。。
先々週の暑い日に思い立って、先週末に発注。
昨日、無事に初期設定が完了して使える状態になった。
情報はネットに豊富に出てるんで、参考本はええかなと思ってたけど、ちょうどトラ技7月号でRaspberry Piが特集されていたんでトラ技を
ついでに本屋さんで眺めた本は↓の3つ。
・Raspberry Piで遊ぼう
オールカラーで絵や写真がふんだんにあって、重くて高い!
SSHやSCPの使い方まで丁寧に書かれてるんで、Windowsしか知らへん人向きかも。
・Raspberry Piアイデア実験室
回路図とかも載ってるんで、普通に参考になると思う。
・トラ技7月号
要所要所に回路図,ブロック図,タイミング図,フローは載っとるし、コードのコメントも解りやすく書かれているんで、ソフトが苦手なエレキ屋さんにもハードが苦手なファーム屋さんにも役立ちそう。
何といっても安いし必要な情報は入ってる。
やったこと。
・http://www.raspberrypi.org/からRaspbianをダウンロードしてSDカードに書き込んで
・SDカードをRaspberry Piに装着して電源投入。
・電源はスマフォに付いてたのを使用。
・初回起動時にraspi-configが立ち上がって、一通りの初期設定を。この時、SSHの有効化とUpdateを実施。
その他の設定は...
・IPアドレスを固定設定。(/etc/network/interfaces)
・xrdpをインストールしてRemote Desktopできるように。
・ksnapshotをインストールしてScreen Shotを採れるように。
ここまでしといたら、Raspberry Piにモニタやキーボートとかを繋ぐ必要がないんで、邪魔にならへんところで動かして作業ができる。
この後は、トラ技の記事を参考に、必要な部品を調達して週末に備えようかと。
Remote Desktopでアクセス
SCPでアクセス
SSHでアクセス
|
2013年09月15日(日)
レゴ EV3 にTelnet
レゴ EV3には、Linuxが入ってるってことなんで、手元のLANアダプタで繋いでみた。
アダプタが2種類あったんで、その両方を試してみることに。
どちらもPlanexの製品で、Linuxを使ったモノをネット化する時に使えるんで重宝する。
で、レゴでも使えるかなと。。
UE-100TX-G3は、日経Linux誌の記事で紹介されてたんで、使えるのはわかっとるけど。
UE-200TX2
pegasus 2-1:1.0: eth1,
ADMtek ADM8511 "Pegasus II" USB Ethernet
UE-100TX-G3
asix 1-2:1.0: eth3: register 'asix' at usb-0000:00:1d.7-2,
ASIX AX88772 USB 2.0 Ethernet
無事、二つ共、使えた。
|
2013年05月19日(日)
Win XP ノートPCのメモリ増設&Linux入れ替え
Win XP PCをリストアする時にメモリ増強を考えて内蔵メモリの位置を確認してて、その時は内蔵メモリの位置が増設メモリと反対側のマザーボード?の表側に付いてて、結構バラさなあかんやろし面倒やなぁと思って断念してた。
内蔵メモリ512Mと増設メモリ512Mなんで、増設メモリだけ1Gに交換しても
モッタイナイなぁと。。。
そやけど、メモリの価格がそんなに高くないことが分かって、それやったら他にも内蔵メモリを交換してる人がおるんちゃう?と思ってPCの型名とメモリ交換をキーに検索したら...ヒットした。
内蔵メモリはキーボードと本体を留めているネジ2本と噛み合わせのツメ3箇所を外すだけで交換できる。
さすがPC組み立てメーカー(E社)のPCだけあって、バラすのも簡単。
元にもどすのはキーボードをパチンと押し入れてネジを留めればいい。
これで、メモリは2GByteになって、WindowsもLinuxも気持ちよく使えるカナ??
ついでに、LinuxもPlamo Linuxからもっと使いやすそうなのに入れ替えを。
ネットで調べてみたら、Linux Mint 13っていうのがPAE非対応のPCに対応してて2017年までサポートされるみたい。
ってことで...
インストール方法とかは、↓の情報そのまま。
http://linuxcom.info/install-linuxmint-13.html
BUFFALO ノートPC用増設メモリ PC2700 (DDR333) 1GB DN333-A1G/E
|
2013年05月06日(月)
|