2018年07月

raspberry piにUSBメモリを接続してsambaで共有する

FAT32フォーマットで既にファイルが存在するUSBメモリを
そのまま使う。

sambaのインストール手順は割愛。

■USBメモリのマウント 
 こちらを参照
 先にマウントポイントになる物理ディレクトリを作成
 $ mkdir ~/usb_m
 $ ls /dev/sd* コマンドをメモリ接続の前後で実行し、接続されたUSBメモリを探す。
 または、$ sudo fdisk -l コマンドで接続されているディスクを探す。
 今回は、/dev/sda1がUSBメモリの場所。
 
 $ sudo mount -t vfat -o codepage=932,iocharset=utf8,uid=pi,gid=pi,umask=000 /dev/sda1 ~/usb_m

 vfatがfatでマウント
 codepage=932,iocharset=utf8を指定しないと右クリックからのファイル新規作成が出来なかった
 umask=000指定しないと書込みが出来ないので誰でも書込可能にしておいた
 uidとgidは指定しないと所有者がrootになるのでとりあえず、自分のユーザ名を入れておく

■samba設定ファイルの編集
 
$ sudo nano /etc/samba/smb.conf

 最終行に以下を追記する
 [pi_usb]
 path = /home/pi/usb_m
 writable = yes
 guest ok =Yes
 guest only = yes
 create mode = 0777
 directory mode = 0777
 sambaサービスの再起動
 
$ sudo service smbd restart 


■USBメモリのアンマウント
 
$sudo umount /dev/sda1

 失敗する場合は以下のコマンドでアクセス中のユーザを探す
 
$ fuser -v ~/usb_m

RX-DT75のリモコンその1

パナソニックの古いラジカセ、RX-DT75。
リモコンがなくてAUXに切り替えができないので、
Raspberry PiにLIRCをインストールしてRemotes Databaseから取得した
リモコンコードで制御できないか試した。
手順はこちらのHPを参照した。
Raspbian Jessie 2017-07最終版で LIRCを使って学習リモコン、赤外線リモコンを送受信する方法

■準備
 ・Raspbian Jessieの最終バージョンをインストールしたRaspberry Pi Zero
 ・赤外線LED(いらなくなったリモコンから取り出した)
 ・C1815トランジスタ
 ・抵抗(50Ω位と1kΩ)
■パーツの接続
  3.3vOut-50Ω-Ledのアノード
  Ledカソード-トランジスタ(コレクタ)
  トランジスタ(エミッタ)-GND
  トランジスタ(ベース)-1kΩ-GPIO17
■手順
 lircのインストール
 $ sudo apt install lirc
 /etc/lirc/hardware.confの中身を編集
  LIRCD_ARGS="--uinput"
  DRIVER="default"
  DEVICE="/dev/lirc0"
  MODULES="lirc_rpi"
 
 /boot/config.txtに以下のテキストを追加
  dtoverlay=lirc-rpi
  dtparam=gpio_out_pin=17
  dtparam=gpio_in_pin=18
  dtparam=gpio_in_pull=up

 再起動
   $ sudo reboot
   /dev/lirc0の存在を確認
   $ ls -l /dev/lirc*
   crw-rw---- 1 root video 243, 0 Jul  2 06:16 /dev/lirc0
   lircを止める
   $ sudo /etc/init.d/lirc stop
 リモコンデータベースからパナソニックのリモコン定義ファイルをダウンロード
 $ mkdir ir && cd ir &&  wget https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/panasonic/EUR7711110.lircd.conf?format=raw -o EUR7711110.lircd.conf

 定義ファイルをコピー
 $ sudo cp EUR7711110.lircd.conf /etc/lirc/lircd.conf

 サービスの再起動
 $ sudo /etc/init.d/lirc restart
 定義内容の確認
 $ irsend LIST "" ""
 irsend: Panasonic_EUR7711110
 $ irsend LIST Panasonic_EUR7711110 ""
 各ボタンに割り当てられた値が表示される
 
 AUX信号を送信
 $ irsend SEND_ONCE Panasonic_EUR7711110 KEY_AUX
リモコンデータベースから一応パナソニックのラジカセかミニコンポであろうリモコン定義ファイルを使用したつもりだが、赤外線は飛んでいるがラジカセに反応はなかった。
そうこうしているうちに別のパナソニックのリモコンを見つけたのでそちらを使用したところ
AUXに切り替えることが出来た。
せっかくなので、信号を記録しておくことにした。
RX-DT75のリモコンその2


RX-DT75のリモコンその2

前回、LIRCのデータベースから取得した定義ファイルでは動作しなかったDT-75。
同一メーカーの別のリモコンが見つかって一部操作可能になったので記録しておく。
今回はArduinoでリモコン信号の記録を行う。
■準備
 赤外線を受信する部品と送信するLEDが必要
 Arduinoでリモコンを制御するライブラリ(IRremote)をインストール
 IDEを起動して、"スケッチ"-"ライブラリをインクルード"-"ライブラリを管理"を選択
 ライブラリマネージャが起動するので検索窓から”irremote”を検索
 IRremote by shirriff バージョン2.2.3を選択してインストール

■リモコンコード受信
 Arduinoに赤外線受信部品を接続する
 IDEから"ファイル"-"スケッチ例"-"IRremote"-"IRrecvDumpV2"を開く→Arduinoに書込み
 シリアルモニタを開き右下の速度を9600bpsに合わせる
 赤外線受信部分にむかってリモコンを操作する
 シリアルモニタに信号が出力されるので、メモ帳等にコピーしておく

■リモコンコード送信
 Arduinoに赤外線LEDを接続する
 IDEから"ファイル"-"スケッチ例"-"IRremote"-"IRSendRawDemo"を開く
 
"IRSendRawDemo"を適当な名前にリネームする
 void loop内のコードを一部編集
  以下コード{}の中身を先に受信したコードで書き換える
  $ unsigned int irSignal[] = {9000, 4500, 560, 560, 560, ・・・}
  例えばAUXの場合
  $ unsigned int irSignal[] = {3450,1750, 450,400, 450,1300, 400,450, 450,400, 450,400, 450,450, 400,450, 450,400, 450,400, 450,450, 400,450, 450,400, 450,400, 450,1300, 450,400, 450,400, 450,450, 400,450, 450,400, 450,400, 450,450, 400,1300, 450,400, 450,1300, 450,400, 450,1300, 400,450, 450,400, 450,400, 450,450, 400,1350, 400,1300, 400,1300, 450,400, 450,450, 400,1300, 450,1300, 450,1300, 400,400, 450,1350, 400,1300, 400,1350, 400,400, 450,1300, 450,1300, 400,450, 400,1350, 400,1300, 400}

 Arduinoに書き込み、送信する

以下、記録したリモコンコード。
rawData[99] = 以下の{}部分をコピーすれば操作できるはず。

//======電源ボタン==================================================
Encoding  : UNKNOWN
Code      : 9DB59EAD (32 bits)
Timing[99]: 
     +3400, -1750     + 400, - 450     + 400, -1350     + 400, - 450
     + 400, - 450     + 400, - 500     + 350, - 500     + 400, - 450
     + 400, - 450     + 400, - 500     + 350, - 500     + 400, - 450
     + 400, - 450     + 400, - 500     + 350, -1350     + 400, - 450
     + 400, - 500     + 350, - 500     + 400, - 450     + 400, - 450
     + 400, - 500     + 350, - 500     + 400, -1300     + 400, - 500
     + 350, -1350     + 400, - 450     + 400, -1350     + 400, - 450
     + 400, - 450     + 400, - 500     + 350, - 500     + 400, -1300
     + 400, -1350     + 400, -1300     + 400, -1350     + 400, -1300
     + 400, -1350     + 400, -1350     + 350, -1350     + 400, - 450
     + 400, -1350     + 400, -1300     + 400, - 500     + 350, -1350
     + 400, -1350     + 350, -1350     + 400, - 450     + 400, -1350
     + 400, -1300     + 400
unsigned int  rawData[99] = {3400,1750, 400,450, 400,1350, 400,450, 400,450, 400,500, 350,500, 400,450, 400,450, 400,500, 350,500, 400,450, 400,450, 400,500, 350,1350, 400,450, 400,500, 350,500, 400,450, 400,450, 400,500, 350,500, 400,1300, 400,500, 350,1350, 400,450, 400,1350, 400,450, 400,450, 400,500, 350,500, 400,1300, 400,1350, 400,1300, 400,1350, 400,1300, 400,1350, 400,1350, 350,1350, 400,450, 400,1350, 400,1300, 400,500, 350,1350, 400,1350, 350,1350, 400,450, 400,1350, 400,1300, 400};  // UNKNOWN 9DB59EAD

//======AUX====================================================
Encoding  : UNKNOWN
Code      : 4DF1F5EF (32 bits)
Timing[99]: 
     +3450, -1750     + 450, - 400     + 450, -1300     + 400, - 450
     + 450, - 400     + 450, - 400     + 450, - 450     + 400, - 450
     + 450, - 400     + 450, - 400     + 450, - 450     + 400, - 450
     + 450, - 400     + 450, - 400     + 450, -1300     + 450, - 400
     + 450, - 400     + 450, - 450     + 400, - 450     + 450, - 400
     + 450, - 400     + 450, - 450     + 400, -1300     + 450, - 400
     + 450, -1300     + 450, - 400     + 450, -1300     + 400, - 450
     + 450, - 400     + 450, - 400     + 450, - 450     + 400, -1350
     + 400, -1300     + 400, -1300     + 450, - 400     + 450, - 450
     + 400, -1300     + 450, -1300     + 450, -1300     + 400, - 400
     + 450, -1350     + 400, -1300     + 400, -1350     + 400, - 400
     + 450, -1300     + 450, -1300     + 400, - 450     + 400, -1350
     + 400, -1300     + 400
unsigned int  rawData[99] = {3450,1750, 450,400, 450,1300, 400,450, 450,400, 450,400, 450,450, 400,450, 450,400, 450,400, 450,450, 400,450, 450,400, 450,400, 450,1300, 450,400, 450,400, 450,450, 400,450, 450,400, 450,400, 450,450, 400,1300, 450,400, 450,1300, 450,400, 450,1300, 400,450, 450,400, 450,400, 450,450, 400,1350, 400,1300, 400,1300, 450,400, 450,450, 400,1300, 450,1300, 450,1300, 400,400, 450,1350, 400,1300, 400,1350, 400,400, 450,1300, 450,1300, 400,450, 400,1350, 400,1300, 400};  // UNKNOWN 4DF1F5EF

//======Vol + ===================================================
Encoding  : UNKNOWN
Code      : 46FC6D91 (32 bits)
Timing[99]: 
     +3450, -1700     + 450, - 450     + 400, -1300     + 450, - 400
     + 450, - 450     + 400, - 450     + 400, - 450     + 450, - 400
     + 450, - 450     + 450, - 400     + 400, - 450     + 450, - 400
     + 450, - 450     + 450, - 400     + 400, -1300     + 450, - 450
     + 450, - 400     + 450, - 400     + 450, - 400     + 450, - 450
     + 400, - 450     + 450, - 400     + 450, -1300     + 400, - 450
     + 450, -1300     + 450, - 400     + 450, -1250     + 450, - 400
     + 500, - 400     + 400, - 450     + 450, - 400     + 450, -1300
     + 450, -1250     + 450, - 400     + 450, - 450     + 400, - 450
     + 450, - 400     + 450, -1300     + 400, -1300     + 450, - 450
     + 450, -1250     + 450, - 400     + 450, -1300     + 450, - 400
     + 450, - 400     + 450, -1300     + 450, - 400     + 450, -1300
     + 400, -1300     + 450
unsigned int  rawData[99] = {3450,1700, 450,450, 400,1300, 450,400, 450,450, 400,450, 400,450, 450,400, 450,450, 450,400, 400,450, 450,400, 450,450, 450,400, 400,1300, 450,450, 450,400, 450,400, 450,400, 450,450, 400,450, 450,400, 450,1300, 400,450, 450,1300, 450,400, 450,1250, 450,400, 500,400, 400,450, 450,400, 450,1300, 450,1250, 450,400, 450,450, 400,450, 450,400, 450,1300, 400,1300, 450,450, 450,1250, 450,400, 450,1300, 450,400, 450,400, 450,1300, 450,400, 450,1300, 400,1300, 450};  // UNKNOWN 46FC6D91

//======Vol - ==================================================
Encoding  : UNKNOWN
Code      : 465B1EFF (32 bits)
Timing[99]: 
     +3500, -1700     + 450, - 400     + 450, -1300     + 450, - 400
     + 450, - 400     + 450, - 400     + 450, - 450     + 400, - 450
     + 450, - 400     + 450, - 400     + 450, - 450     + 450, - 400
     + 450, - 400     + 450, - 400     + 450, -1300     + 450, - 400
     + 450, - 450     + 400, - 450     + 450, - 400     + 450, - 400
     + 450, - 450     + 400, - 450     + 450, -1250     + 450, - 450
     + 400, -1300     + 450, - 400     + 450, -1300     + 450, - 400
     + 450, - 400     + 450, - 450     + 400, - 450     + 450, -1250
     + 450, -1300     + 450, -1300     + 400, - 450     + 400, - 450
     + 450, - 400     + 450, -1300     + 400, -1300     + 450, - 400
     + 450, -1300     + 450, -1300     + 400, -1300     + 450, - 400
     + 450, - 400     + 450, -1300     + 450, - 400     + 450, -1300
     + 400, -1350     + 400
unsigned int  rawData[99] = {3500,1700, 450,400, 450,1300, 450,400, 450,400, 450,400, 450,450, 400,450, 450,400, 450,400, 450,450, 450,400, 450,400, 450,400, 450,1300, 450,400, 450,450, 400,450, 450,400, 450,400, 450,450, 400,450, 450,1250, 450,450, 400,1300, 450,400, 450,1300, 450,400, 450,400, 450,450, 400,450, 450,1250, 450,1300, 450,1300, 400,450, 400,450, 450,400, 450,1300, 400,1300, 450,400, 450,1300, 450,1300, 400,1300, 450,400, 450,400, 450,1300, 450,400, 450,1300, 400,1350, 400};  // UNKNOWN 465B1EFF

//======Radio===================================================
Encoding  : UNKNOWN
Code      : A50BBC39 (32 bits)
Timing[99]: 
     +3450, -1750     + 400, - 450     + 450, -1250     + 450, - 450
     + 400, - 450     + 450, - 400     + 450, - 400     + 450, - 450
     + 400, - 450     + 450, - 400     + 450, - 400     + 450, - 450
     + 400, - 450     + 450, - 400     + 450, -1300     + 400, - 450
     + 450, - 400     + 450, - 400     + 450, - 450     + 400, - 450
     + 450, - 400     + 450, - 400     + 450, -1300     + 450, - 400
     + 450, -1300     + 400, - 450     + 450, -1250     + 450, - 450
     + 400, - 450     + 450, - 400     + 450, - 400     + 450, -1300
     + 450, -1300     + 400, - 450     + 400, - 450     + 450, - 400
     + 450, -1300     + 450, -1250     + 450, -1300     + 450, - 400
     + 450, -1300     + 400, - 450     + 450, -1250     + 450, - 450
     + 400, -1300     + 450, -1300     + 400, - 450     + 450, -1250
     + 450, -1300     + 450
unsigned int  rawData[99] = {3450,1750, 400,450, 450,1250, 450,450, 400,450, 450,400, 450,400, 450,450, 400,450, 450,400, 450,400, 450,450, 400,450, 450,400, 450,1300, 400,450, 450,400, 450,400, 450,450, 400,450, 450,400, 450,400, 450,1300, 450,400, 450,1300, 400,450, 450,1250, 450,450, 400,450, 450,400, 450,400, 450,1300, 450,1300, 400,450, 400,450, 450,400, 450,1300, 450,1250, 450,1300, 450,400, 450,1300, 400,450, 450,1250, 450,450, 400,1300, 450,1300, 400,450, 450,1250, 450,1300, 450};  // UNKNOWN A50BBC39

//======REW=====================================================
Encoding  : UNKNOWN
Code      : D14AF357 (32 bits)
Timing[99]: 
     +3450, -1700     + 450, - 450     + 400, -1300     + 450, - 400
     + 450, - 450     + 450, - 400     + 450, - 400     + 450, - 450
     + 400, - 450     + 450, - 400     + 450, - 400     + 450, - 450
     + 400, - 450     + 450, - 400     + 450, -1300     + 400, - 450
     + 450, - 400     + 450, - 400     + 450, - 450     + 400, - 450
     + 450, - 400     + 450, - 400     + 450, -1300     + 450, - 400
     + 450, -1300     + 400, - 450     + 450, -1250     + 450, - 450
     + 400, - 450     + 450, - 400     + 450, - 400     + 450, -1300
     + 450, -1250     + 450, - 450     + 400, - 450     + 450, -1250
     + 450, - 450     + 400, - 450     + 450, - 400     + 450, - 400
     + 450, -1300     + 450, - 400     + 450, -1300     + 400, -1300
     + 450, - 400     + 450, - 450     + 400, -1300     + 450, -1300
     + 400, -1300     + 450
unsigned int  rawData[99] = {3450,1700, 450,450, 400,1300, 450,400, 450,450, 450,400, 450,400, 450,450, 400,450, 450,400, 450,400, 450,450, 400,450, 450,400, 450,1300, 400,450, 450,400, 450,400, 450,450, 400,450, 450,400, 450,400, 450,1300, 450,400, 450,1300, 400,450, 450,1250, 450,450, 400,450, 450,400, 450,400, 450,1300, 450,1250, 450,450, 400,450, 450,1250, 450,450, 400,450, 450,400, 450,400, 450,1300, 450,400, 450,1300, 400,1300, 450,400, 450,450, 400,1300, 450,1300, 400,1300, 450};  // UNKNOWN D14AF357

//======FF====================================================
Encoding  : UNKNOWN
Code      : E051DEF9 (32 bits)
Timing[99]: 
     +3450, -1700     + 450, - 400     + 500, -1250     + 450, - 400
     + 450, - 400     + 500, - 400     + 400, - 450     + 450, - 400
     + 450, - 400     + 500, - 400     + 450, - 400     + 450, - 400
     + 450, - 400     + 500, - 400     + 450, -1250     + 450, - 400
     + 500, - 400     + 450, - 400     + 450, - 400     + 450, - 400
     + 500, - 400     + 450, - 400     + 450, -1300     + 450, - 400
     + 400, -1300     + 450, - 400     + 500, -1250     + 450, - 400
     + 450, - 400     + 500, - 400     + 450, - 400     + 450, -1300
     + 400, -1300     + 450, -1300     + 450, - 400     + 450, -1250
     + 500, - 350     + 500, - 400     + 450, - 400     + 450, - 400
     + 450, -1300     + 450, -1250     + 450, -1300     + 450, -1250
     + 500, - 400     + 450, - 400     + 450, -1250     + 500, -1250
     + 450, -1300     + 450
unsigned int  rawData[99] = {3450,1700, 450,400, 500,1250, 450,400, 450,400, 500,400, 400,450, 450,400, 450,400, 500,400, 450,400, 450,400, 450,400, 500,400, 450,1250, 450,400, 500,400, 450,400, 450,400, 450,400, 500,400, 450,400, 450,1300, 450,400, 400,1300, 450,400, 500,1250, 450,400, 450,400, 500,400, 450,400, 450,1300, 400,1300, 450,1300, 450,400, 450,1250, 500,350, 500,400, 450,400, 450,400, 450,1300, 450,1250, 450,1300, 450,1250, 500,400, 450,400, 450,1250, 500,1250, 450,1300, 450};  // UNKNOWN E051DEF9

//======EQ=====================================================
Encoding  : UNKNOWN
Code      : C38B06EF (32 bits)
Timing[99]: 
     +3450, -1750     + 400, - 450     + 400, -1300     + 450, - 450
     + 400, - 450     + 400, - 450     + 450, - 400     + 450, - 450
     + 400, - 450     + 400, - 450     + 400, - 450     + 450, - 450
     + 400, - 450     + 400, - 450     + 400, -1350     + 400, - 450
     + 400, - 450     + 400, - 450     + 450, - 450     + 400, - 450
     + 400, - 450     + 400, - 450     + 450, -1300     + 400, - 450
     + 400, -1350     + 400, - 450     + 400, -1350     + 400, - 450
     + 400, - 450     + 400, - 450     + 400, - 500     + 400, -1300
     + 400, -1350     + 400, -1300     + 400, - 450     + 450, - 450
     + 400, -1300     + 400, -1350     + 400, - 450     + 400, -1300
     + 450, -1300     + 400, -1300     + 450, -1300     + 400, - 450
     + 400, -1350     + 400, -1300     + 400, -1350     + 400, - 450
     + 400, -1300     + 450
unsigned int  rawData[99] = {3450,1750, 400,450, 400,1300, 450,450, 400,450, 400,450, 450,400, 450,450, 400,450, 400,450, 400,450, 450,450, 400,450, 400,450, 400,1350, 400,450, 400,450, 400,450, 450,450, 400,450, 400,450, 400,450, 450,1300, 400,450, 400,1350, 400,450, 400,1350, 400,450, 400,450, 400,450, 400,500, 400,1300, 400,1350, 400,1300, 400,450, 450,450, 400,1300, 400,1350, 400,450, 400,1300, 450,1300, 400,1300, 450,1300, 400,450, 400,1350, 400,1300, 400,1350, 400,450, 400,1300, 450};  // UNKNOWN C38B06EF