このページで示した[Raspberry Pi]のインストールと[UMEHOSHI ITA]を制御できた後のページです。
Raspberry Pi 3 Model A+]に接続した[UMEHOSHI ITA]基板を乗せるモータ付き台車の制作
| 4ビットDIPスイッチの設定 (2進表現で ?のビットは任意) | 起動状態の設定と 目標 |
|---|---|
| 0b??00 | 自宅のWifiに接続する。ステーションモード (STA接続) /etc/dhcpcd.confに、/etc/dhcpcd.d/dhcp.confをコピー) /etc/wpa_supplicant/wpa_supplicant.confに、/etc/wpa_supplicant/home.confをコピー |
| 0b??01 | Raspberry Pi自身をWifiの親機。アクセスポイントモード (APモード)) /etc/dhcpcd.confに、/etc/dhcpcd.d/ap.confをコピー) |
| 0b??10 | 職場AのWifiに接続する。ステーションモード (STA接続) |
| 0b??11 | 職場BのWifiに接続する。ステーションモード (STA接続) |
#!/usr/bin/python3
import RPi.GPIO as GPIO
import subprocess
#import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
GPIO.setup(21, GPIO.OUT) # GPIO21を出力に設定
GPIO.output(21, GPIO.HIGH) # ON(3.3V)
GPIO.setwarnings(True)
for no in [6, 16, 17, 22, 23, 24, 25]:
GPIO.setup(no, GPIO.IN, pull_up_down=GPIO.PUD_UP) # プルアップ付き入力
sw1 = "OFF" if GPIO.input(22) == GPIO.HIGH else "ON"
sw2 = "OFF" if GPIO.input(23) == GPIO.HIGH else "ON"
sw3 = "OFF" if GPIO.input(24) == GPIO.HIGH else "ON"
sw4 = "OFF" if GPIO.input(25) == GPIO.HIGH else "ON"
dip = 0b0001 if sw1=="ON" else 0
dip += 0b0010 if sw2=="ON" else 0
dip += 0b0100 if sw3=="ON" else 0
dip += 0b1000 if sw4=="ON" else 0
if dip == 0:
subprocess.run(["cp", "/etc/dhcpcd.d/dhcp.conf", "/etc/dhcpcd.conf"])
elif dip == 1:
subprocess.run(["cp", "/etc/dhcpcd.d/ap.conf", "/etc/dhcpcd.conf"])
elif dip == 2:
subprocess.run(["cp", "/etc/dhcpcd.d/static1.conf", "/etc/dhcpcd.conf"])
elif dip == 3:
subprocess.run(["cp", "/etc/dhcpcd.d/dhcp.conf", "/etc/dhcpcd.conf"])
# GPIO.output(21, GPIO.LOW) # OFF
[Unit] Description=Network mode selector based on DIP switch DefaultDependencies=no After=local-fs.target Before=network.target dhcpcd.service hostapd.service dnsmasq.service [Service] Type=oneshot ExecStart=/usr/bin/python3 /usr/local/bin/network-select.py RemainAfterExit=yes [Install] WantedBy=multi-user.target上記の起動確認と停止は、『systemctl start network-select.service』と『systemctl stop network-select.service』です。
# --- WiFi AP mode static IP settings --- interface wlan0 static ip_address=192.168.4.1/24 nohook wpa_supplicant
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="000740E60153"
psk=3b648a0a819f13f67b5bafd6366a00726fb364aae5415a76fd099bbef8596ad0
}