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:
1 2 | >>> 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
1 | 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:
1 2 3 4 5 6 7 | 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:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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. |