diff --git a/software/frontend/index.html b/software/frontend/index.html
index cd70a29..7cce847 100644
--- a/software/frontend/index.html
+++ b/software/frontend/index.html
@@ -384,6 +384,12 @@
'root.LED_COUNT': {
'input-type': 'number'
},
+ 'root.WLAN.SSID': {
+ 'input-type': 'text'
+ },
+ 'root.WLAN.PASSPHRASE': {
+ 'input-type': 'text'
+ }
};
function renderObject(obj, path) {
diff --git a/software/src/main.py b/software/src/main.py
index e1e7b15..d3a0ca3 100644
--- a/software/src/main.py
+++ b/software/src/main.py
@@ -37,14 +37,22 @@ hwconfig.board_init()
machine.mem32[0x40030000 + 0x00] = 0x10
-def setup_wifi():
+def setup_wifi(ssid='', passphrase='', sec=network.WLAN.SEC_WPA2_WPA3):
network.hostname("TonberryPico")
- wlan = network.WLAN(network.WLAN.IF_AP)
- wlan.config(ssid=f"TonberryPicoAP_{machine.unique_id().hex()}", security=wlan.SEC_OPEN)
- wlan.active(True)
+ if ssid is None or ssid == '':
+ apname = f"TonberryPicoAP_{machine.unique_id().hex()}"
+ print(f"Create AP {apname}")
+ wlan = network.WLAN(network.WLAN.IF_AP)
+ wlan.config(ssid=apname, security=wlan.SEC_OPEN)
+ wlan.active(True)
+ else:
+ print(f"Connect to SSID {ssid} with passphrase {passphrase}...")
+ wlan = network.WLAN()
+ wlan.active(True)
+ wlan.connect(ssid, passphrase if passphrase is not None else '', security=sec)
- # disable power management
- wlan.config(pm=network.WLAN.PM_NONE)
+ # configure power management
+ wlan.config(pm=network.WLAN.PM_PERFORMANCE)
mac = ubinascii.hexlify(network.WLAN().config('mac'), ':').decode()
print(f" mac: {mac}")
@@ -71,8 +79,11 @@ def run():
# Setup LEDs
np = NeoPixel(hwconfig.LED_DIN, config.get_led_count(), sm=1)
- # Wifi with default config
- setup_wifi()
+ if machine.Pin(hwconfig.BUTTONS[1], machine.Pin.IN, machine.Pin.PULL_UP).value() == 0:
+ # Force default access point
+ setup_wifi('', '')
+ else:
+ setup_wifi(config.get_wifi_ssid(), config.get_wifi_passphrase())
# Setup MP3 player
with SDContext(mosi=hwconfig.SD_DI, miso=hwconfig.SD_DO, sck=hwconfig.SD_SCK, ss=hwconfig.SD_CS,
diff --git a/software/src/utils/config.py b/software/src/utils/config.py
index 0ab4ad2..f5891b6 100644
--- a/software/src/utils/config.py
+++ b/software/src/utils/config.py
@@ -22,7 +22,11 @@ class Configuration:
'PREV': None,
'NEXT': 1,
},
- 'TAGMODE': 'tagremains'
+ 'TAGMODE': 'tagremains',
+ 'WIFI': {
+ 'SSID': '',
+ 'PASSPHRASE': '',
+ }
}
def __init__(self, config_path='/config.json'):
@@ -87,6 +91,12 @@ class Configuration:
def get_tagmode(self) -> str:
return self._get('TAGMODE')
+ def get_wifi_ssid(self) -> str:
+ return self._get('WIFI')['SSID']
+
+ def get_wifi_passphrase(self) -> str:
+ return self._get('WIFI')['PASSPHRASE']
+
# For the web API
def get_config(self) -> Mapping[str, Any]:
return self.config