OnBB.jpg (1656271Bytes)
WalleWatching.jpg (1719956Bytes)
WalleWatching_0.jpg (1448698Bytes)
Wipy_board.jpg (441314Bytes)
WiPy_Box.jpg (138113Bytes)
So this has been a long time coming! :-)
As this is my first review any feedback would be greatly appreciated.
Quite a while ago I was lucky enough to be put forward to review the WiPy by our very own franciscodr. The WiPy appealed to me greatly; while I love the Arduino platform and it's IDE, I have an affinity with Python that I would love to explore. Not long after the original Kickstarter campaign ended I received one of the first ever, hand assembled boards to play with.
UNBOXING
I had been forewarned by the manufacturer that the packaging had not been produced for the board yet, so was being sent in a plain box. It was well protected, so I'm happy with that! The support documentation was also still in development, so I was sent links to the site, where the most up to date versions were available for my perusal. The documentation seems really straight forward and clear, so I'm looking forward to get playing with it!
UPDATE - having been sent some images of the official packaging i must say it looks great - all the instructions to get started are printed right on the box; you can get started without the moment you unbox it (and no manuals to read!!)
The Board
The WiPy is the second board to feature a stripped back version of the Python language, known as Micropython. While, at the time of writing, there aren't a great deal of libraries available in comparison to the full language, the community is growing and libraries are being ported all the time, so I am quite excited to see how both this product and indeed the language develop over time. The manufacturers tout this device as the next level in IoT development, and I intend to establish just that over the next few segments of my review.
The specs for the device are, as listed on the site:
Size: 25mm x 45mm (1.0″ x 1.77″)
MCU: Cortex-M4 @ 80MHz (TI CC3200)
WiFi: 802.11b/g/n 16Mbps
RAM: 256 KBytes
Flash: 2 MBytes
GPIO: Up to 25
Interfaces: UART (x2), SPI, I2C, I2S, SD card
Analog channels: 3×12 bit ADCs
Timers: 4×16 bit with PWM and input capture.
RTC: Of course
Hash and encryption engines: SHA, MD5, DES, AES
DMA: All over the place
3v3 output: Capable of sourcing up to 250mA
In order to fully test the board I have been looking for a project to incorporate the WiPy into... Since disembowling Wall-e robots is what I did for my first project, it seems appropriate to do the same for my first review. In the next poart of the review I hope to have the WiPy controlling a L298N breakout board and hopefully have it controlled via wi-fi....
An alternative is winging its way to me thanks to Kevin Biagini, and his wonderful Bob. The 3D parts are in the mail... When they arrive I may well use the WiPy to control his servos.
Looking over the Documentation
At first glance, it is a dream to play with! The WiPy has a built in Wifi Access Point and FTP server; You can upload/edit your Python code using any FTP client (I just used Filezilla Portable) and finding the boot.py and main.py scripts on the /flash directory of the board - it's that simple! There are shileds which can be used with the WiPy, one of which includes an SD card shield... According to the documentation it shows up on the FTP server as /sdcard, meaning content of the card can be easily referenced in your Python scripts to store data, load sounds... all sorts.
If you are comfortable using a more command line-based interface the Wipy's filesystem is also available using a simple Telnet connection. I don't mind using either, however using the FTP to transfer your Python scripts in an almost drag-and-drop Fashion is a great feature, especially for beginners who may not be comfortable outside of a GUI-driven environment.
Getting Started
Getting the WiPy up and running was easy - simply a case of supplying power. I used a breadboard power board to power the 5v rail on the breadboard and ran the wires to vin and ground. Once powered, boom - the wipy appears as a wifi access point! There are breakout shields and suchlike available for the WiPy that would render the breadboard unnecessary, but either way, it is really simple to get going.
Telnet
Using putty I found it really easy to access the WiPy's filesystem - great for debugging and also testing code live on the device. It was as easy as entering the WiPy's IP (192.168.1.1) and using the default port (23) - I was asked for the username and password ('micro' and 'python' as default) just like you would when SSH'ing a Raspberry Pi, so it felt very familiar. Once at this stage you are good to go - using the os python library you can navigate through and manipulate the directory (directories if an sd card shield is in use). I also tried typing in some python to trigger a pin on, then off, and it worked! I will videonit tomorrow, as it's nearly 2am now ha ha. The ability to live-type is a great way of testing chunks of code on the fly. I love it!
FTP
The WiPy has an FTP server built in to allow easy dragging and dropping of code; no compiling, no thumb-twiddling while watching a status bar - just move the file like you are copying something to a pen drive.
Unfortunately Filezilla Portable is not letting me establish a connection to the device, but I think it is more my setting being wrong than anything else. I have posted in the forum to check settings so hopefully tomorrow i should be able to plow on and develop my code...
UPDATE - got an email from one of the WiPy's co-creators regarding my issue. Theu guy is currently on the road, but still took the time to assist me. He pointed me in the direction of slme documents on the WiPy github that I had overlooked, which details every step of configuring Filezilla to play nice with it. Good Times!! After connecting via the suggested way, i was straight in:
Sample Code
Today has been an incredibly busy day at work, and I have been drafted into another office to cover; as a result I have yet to finally test uploading code to the WiPy itself. As I am hoping to eventually use the WiPy to control a L298N driver board for some simple, over-the-internet remote control I have written a hypothetical test script over on my Github; the code has yet to be tested, but hopefully it will trigger motors on for 2 seconds, then off for two seconds, and repeat.
I have crafted the code from the examples over on the WiPy's docmentation section; the 'pyb' library offers a lot of the basic functions used in the 'full-fat' version of Python.
If this code works when I upload it in the morning I will look to introduce PWM control to two of the pins, and then look to connecting the WiPy to the internet and implementing web control.
Once I have this code working I will then document the Wall-e build as an out-and-out project, and will write a third and final part of this review to serve as a conclusion for this wonderful little board.
17/11/2015 UPDATE
I have not forgotten about this review and the end project, I can assure you.
I spent a lot of time looking at my Walle's, and unfortunately the aren't in a fit state to re-hack; my first one is in pieces due to a catastrophic motor meltdown (destroying all the meccano gearing that was in there) and the other is in active service with my son. I have a third Wall-e, but I do not have the components to hand to get this toy into shape and fit for a WiPy!
I then turned my attention to Bob...
Bob is a wonderful little 4-servo biped created by Kevin Biagini; there are hundreds of these in existence; people love to print these as a test item when they get a 3D printer.
Traditionally Bob is controlled by a small arduino and powered by a few batteries. The Arduino code that makes Bob walk is well documented, so I am going to find a copy of the sketch itself and attempt to port it to MicroPython.
If I manage to replicate the basic function of Bob i would LOVE to build on this by adding a web-based GUI to control Bob, and also add an SD card to store files/music and even add a speaker.
People can then add files to this walking FTP server and maybe use a jukebox GUI to play music/sound files!
Unfortunately I have yet to receive my parts for Bob from my original source (someone was sending me a fre set of parts to play with), so am seeking an alternative pritner of Bob.
I shall, in the mean time, start work on updateing my Github!
Update - 9/1/16
Things are taking shape now; I have my Bob parts, my shiny new servos have arrived, and I have salvaged my ping sensor from another project.
Next I need to develop a board to share power to my 4 servos and the WiPy and I also need to work out the best battery/charging options too.
Pics of assembly to follow next week!