2020年02月


●人感センサー SR501 を使って、ambientにESP32でデータを送っている時、
 人がいないのに検知してしまう事がありました。
 ネットで調べたら、WiFiの電波に反応し、誤検知するみたいとの事。

 よって、センサーをビニルテープで、巻いた後、アルミホイルで巻いて
 電波を遮蔽してみたところ、誤検知が無くなりました。

 S__43491385

sr501誤検知


・raspberry Pi Model 3B 最新版OS 2020-02-05-raspbian-buster-full
  で イーサネットコンバータ を作ってみました。


raspicon

今回のイーサネットコンバータ概要
①raspberry Pi Model 3B
②最新版OS 2020-02-05-raspbian-buster-full.img
③内蔵WiFiをwlan0とする。
④wlan0で、上位WiFiを受け、有線eth0に中継する。
⑤eth0のIPアドレスは、192.168.4.1
⑥DHCPの範囲は、192.168.4.100,192.168.4.200,255.255.255.0,24h
⑦Dnsmesq version 2.80 (dnsmesq -v)
⑧dhcpcd 8.1.2 (dhcpcd --version)

1.ソフトウェアのインストール

 sshしたら、必要なソフトウェアをインストールします。
 以下の順でコマンドを実行。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install dnsmasq

2.dnsmasqとインストールが終わったら、
 これらのサービスを確認し、起動していたら終了させます。

$ service dhcpcd status
$ service dnsmasq status

$ sudo systemctl stop dnsmasq

3.dhcpの設定

 次に設定ファイルを編集していきます。
 まずはdhcpの設定。

$ sudo nano /etc/dhcpcd.conf

「^w」「^v」で最後の行まで飛び、以下を追加します。

denyinterfaces eth0

 eth0をdhcpの対象から除外します。

「^o」で保存し、「^x」で終了します。

 ではdhcpを再起動させます。

$ sudo service dhcpcd restart


4.dnsmasqの設定

 次はdnsmasqの設定です。
 オリジナルの設定ファイルは、コピーしてバックアップを取っておきます。

$ sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.org
$ sudo nano /etc/dnsmasq.conf

「^w」「^v」で最後の行まで飛び、次の3行を追加します。

server=8.8.8.8
interface=eth0
dhcp-range=192.168.4.100,192.168.4.200,255.255.255.0,24h

dhcp-rangeの設定は、dhcpの時に設定したアドレスと照らし合わせて記入してください。

 同じく「^o」で保存し、「^x」で終了します。

 ここまで来たら、dnsmasqを起動します。

$ sudo systemctl start dnsmasq


起動したことを確認してみます。

$ service dhcpcd status
$ service dnsmasq status

*緑色で active (running) と表示されていればOKです。
 違ってたら、設定ファイルを見直してみて下さい。


5.次に、IP転送の設定をします。

$ sudo nano /etc/sysctl.conf

 次の行を探しコメントを外して保存終了します。

#net.ipv4.ip_forward=1

6.IPマスカレードの設定をします。

 下記コマンドを実行してください。

$ sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
$ sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT  
$ sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT

$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

7.次に、ラズパイが起動後に自動実行するように下記のファイルに追記します。
 *どうしてもeth0に固定IPアドレスを振ることが出来なかったのでここで
  192.168.4.1の固定アドレスを設定しています。
 *他の方法で、設定できた方は、お教えください。

$ sudo nano /etc/rc.local

 一番下にexit 0とあるので、その上に以下の2行を追加します。

sudo ifconfig eth0 192.168.4.1
iptables-restore < /etc/iptables.ipv4.nat

 追加したら保存して終了。

8.これで設定は終わりです。
最後にRaspberryPiを再起動しましょう。

$ sudo reboot

有線LANにケーブルを接続して、インターネットに接続してみましょう。
めでたしめでたし

9.付録 複数の上位WiFiに自動接続させるために
***********************************************************************
WiFi設定ファイル
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
        ssid="AP-1"
        psk="12345678"
        key_mgmt=WPA-PSK
        priority=6
}
network={
        ssid="AP-2"
        psk="12345678"
        key_mgmt=WPA-PSK
        priority=5
}
network={
        ssid="AP-3"
        psk="12345678"
        key_mgmt=WPA-PSK
        priority=4
}
network={
        ssid="test-ap"
        psk="12345678"
        key_mgmt=WPA-PSK
        priority=3
}

・raspberry Pi Model 3B+  最新版OS 2020-02-05-raspbian-buster-full
  で ルーター機能付き WiFi中継器 を作ってみました。

raspiwifirep

S__43483159


今回の中継器概要
⓪raspberry Pi Model 3B+
①最新版OS 2020-02-05-raspbian-buster-full.img
②中華製格安WiFiドングルを挿してwlan1とする。
③内蔵WiFiをwlan0とする。
④wlan1で、上位WiFiを受け、wlan0に中継する。
⑤wlan0のIPアドレスは、192.168.4.1
⑥DHCPの範囲は、192.168.4.100,192.168.4.200,255.255.255.0,24h
⑦hostapd v2.8-devel (hostapd -v)
⑧Dnsmesq version 2.80 (dnsmesq -v)
⑨dhcpcd 8.1.2 (dhcpcd --version)

1.ソフトウェアのインストール

 sshしたら、必要なソフトウェアをインストールします。
 以下の順でコマンドを実行。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install dnsmasq hostapd

2.dnsmasqとhostapdのインストールが終わったら、
 これらのサービスを確認し、起動していたら終了させます。

$ service dhcpcd status
$ service dnsmasq status
$ service hostapd status

$ sudo systemctl stop dnsmasq
$ sudo systemctl stop hostapd

3.dhcpの設定

 次に設定ファイルを編集していきます。
 まずはdhcpの設定。

$ sudo nano /etc/dhcpcd.conf

「^w」「^v」で最後の行まで飛び、以下を追加します。

denyinterfaces wlan0

 wlan0をdhcpの対象から除外します。

「^o」で保存し、「^x」で終了します。

 ではdhcpを再起動させます。

$ sudo service dhcpcd restart


4.dnsmasqの設定

 次はdnsmasqの設定です。
 オリジナルの設定ファイルは、コピーしてバックアップを取っておきます。

$ sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.org
$ sudo nano /etc/dnsmasq.conf

「^w」「^v」で最後の行まで飛び、次の3行を追加します。

server=8.8.8.8
interface=wlan0
dhcp-range=192.168.4.100,192.168.4.200,255.255.255.0,24h

dhcp-rangeの設定は、適当に設定しています。

 同じく「^o」で保存し、「^x」で終了します。

5.hostapdの設定
 次はhostapdです。ここでアクセスポイントのSSIDやパスワードを設定していきます。

 まずは設定ファイルの例をコピーし開きます。

$ sudo cp /usr/share/doc/hostapd/examples/hostapd.conf /etc/hostapd/hostapd.conf
$ sudo nano /etc/hostapd/hostapd.conf

 開いたら以下を探して確認及び修正。

interface=wlan0
driver=nl80211
ssid=[SSID]
country_code=JP
hw_mode=g
channel=6
auth_algs=1
ieee80211n=1
wpa=2
wpa_passphrase=[PASS]
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

 同じく「^o」で保存し、「^x」で終了します。
 相当大きいファイルですので、下記コマンドで比較して変更されていることを再確認します。

$ sudo diff /usr/share/doc/hostapd/examples/hostapd.conf /etc/hostapd/hostapd.conf

 保存して終了したら、この設定ファイルを読むようにhostapdの動作ファイルを書き換えます。

$ sudo nano /etc/default/hostapd

#
#DAEMON_CONF=""

ここの#DAEMON_CONF=""をDAEMON_CONF="/etc/hostapd/hostapd.conf"と書き換えます。


 ここまで来たら、dnsmasqとhostapdを起動します。

$ sudo systemctl start hostapd
$ sudo systemctl start dnsmasq

Failed to start hostapd.service: Unit hostapd.service is masked.
もし、hostapdを起動させようとした時、上記エラーが出た場合、以下の手順でコマンドを実行してください。

$ sudo systemctl unmask hostapd
$ sudo systemctl enable hostapd
$ sudo systemctl start hostapd


$ sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf


起動したことを確認してみます。

$ service dhcpcd status
$ service dnsmasq status
$ service hostapd status

*緑色で active (running) と表示されていればOKです。
 違ってたら、設定ファイルを見直してみて下さい。


6.次に、IP転送の設定をします。

$ sudo nano /etc/sysctl.conf

 次の行を探しコメントを外して保存終了します。

#net.ipv4.ip_forward=1

7.IPマスカレードの設定をします。

 下記コマンドを実行してください。

$ sudo iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
$ sudo iptables -A FORWARD -i wlan1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT  
$ sudo iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT

$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

8.次に、ラズパイが起動後に自動実行するように下記のファイルに追記します。
 *どうしてもwlan0に固定IPアドレスを振ることが出来なかったのでここで
  192.168.4.1の固定アドレスを設定しています。
 *他の方法で、設定できた方は、お教えください。

$ sudo nano /etc/rc.local

 一番下にexit 0とあるので、その上に以下の2行を追加します。

sudo ifconfig wlan0 192.168.4.1
iptables-restore < /etc/iptables.ipv4.nat

 追加したら保存して終了。

9.これでルーター機能付きWiFi中継器の設定は終わりです。
最後にRaspberryPiを再起動しましょう。

$ sudo reboot

しばらくすると、先程hostapdで設定したSSIDが見えるようになってますので、
設定したパスワードで繋いでみましょう。
めでたしめでたし

10.付録 複数の上位WiFiに自動接続させるために
***********************************************************************
WiFi設定ファイル
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
        ssid="AP-1"
        psk="12345678"
        key_mgmt=WPA-PSK
        priority=6
}
network={
        ssid="AP-2"
        psk="12345678"
        key_mgmt=WPA-PSK
        priority=5
}
network={
        ssid="AP-3"
        psk="12345678"
        key_mgmt=WPA-PSK
        priority=4
}
network={
        ssid="test-ap"
        psk="12345678"
        key_mgmt=WPA-PSK
        priority=3
}


*********************************************************
以上 お疲れ様でした。



遂に手に入れました。年と共に目も手も衰えて来ましたので文明の利器に頼ろうと思いました。
非常に楽に取れます。


S__43474953

Raspberry Pi の ハードウェア情報 などを 表示するコマンドを紹介します。

①基板レイアウトの画像とハードウェア情報とリビジョンコードが表示されます。
$pinout

◆Raspberry Pi 400
p-50

◆Raspberry Pi 3B
pinout



下記でリビジョンコードが分かります。

②CPU情報が表示されます。
$cat /proc/cpuinfo


③Model名が表示されます。 
$cat /proc/device-tree/model


④Raspbianのカーネルモジュールのバージョンが表示されます。 
$cat /proc/version

↑このページのトップヘ