WiPy on the home network
Recently there was a Kickstarter about “an Arduino that runs Python”, the WiPy. This is a small IoT board with WiFi on it (which is not available on stock Arduinos) for an attractive price. And being able to use a high level language along with a lot of existing libraries makes it attractive too.
A few days ago I got the WiPys that I backed and the first obstacle to get the running was the power supply as they do not have a (micro) USB connector on board (and I also did not back the extension boards they offered).
Luckily I still had an old defunct USB hub from which I could solder out the connector and put it on a small PCB for this purpose (while doing that exercise I also found out that the 5V of the USB port are allowed to be 4.75-5.25V and on the end of a hub even being as low as 4.4V).
WiPy on Breadboard with USB power supply connector.
Now that the WiPy is on the breadboard, I set up my computer to scan for the WLAN of the WiPy and then telneted into the device. I poked around and tried to inspect the WLAN settings as described in the manual:
>>> from network import WLAN >>> wlan = WLAN() # we call the constructor without params
This immediately made the connection drop. It turned out I needed to first update the firmware to the latest version (v1.1 at time of the writing), which was painless (but a bit confusing, as they also supply a bootloader.bin
, that is not needed).
After the firmware upgrade the above worked and I tried to change the device to talk to my home network. The caveat here is that at the moment you issue
wlan.init(WLAN.STA)
to put the machine into station mode (default is being an access point), the connection drops. Some users have solved that by connecting via UART and serial line, but I did not really want to go that route.
Instead I edited boot.py
on my local computer and then uploaded it via ftp into /flash
. I found out, that if you don’t terminate the ftp client and have a telnet connection open as well, I could easily (syntax) check the uploaded file by pressing Ctrl-D in the terminal:
MicroPython v1.5-1-ge954604 on 2015-10-21; WiPy with CC3200 Type "help()" for more information. >>> <control-D> <-- here PYB: soft reboot Traceback (most recent call last): File "boot.py", line 17, in NameError: name not defined
The WiPy tells me that there is an error in my file, so I edit it locally and upload it again via the ftp connection. And only at the end when the WiPy is happy, I press the hard-reset button.
Now for reference my boot.by that worked for me:
from network import WLAN SSID = 'home_SSID' # SSID of your home network AUTH = (WLAN.WPA2, 'very_secret') # WPA secret as 2nd param IP = '10.1.2.42' # Fixed IP the device should get ROUTER = '10.1.2.3' # IP of your router DNS = '10.1.2.3' # IP of your DNS server NETMASK = '255.255.255.0' # Netmask to use import machine wlan = WLAN() if machine.reset_cause() != machine.SOFT_RESET: wlan.init(WLAN.STA) # configuration below MUST match your home router settings!! wlan.ifconfig(config=(IP, NETMASK, ROUTER, DNS)) if not wlan.isconnected(): wlan.connect(ssid=SSID, auth=AUTH, timeout=5000) while not wlan.isconnected(): machine.idle() # save power while waiting print('WLAN connection succeeded!')
Parts of that script were taken from the WiPy WLAN tutorial and this WiPy Forum post.
Reference: | WiPy on the home network from our JCG partner Heiko Rupp at the Some things to remember blog. |