Quiet time at the popular first day of Shanghai Maker Carnival 2013 had crowds of locals and hackers and makers from Shanghai, Nanjing, Beijing, Shenzhen, Taipai, Indonesia, Singapore, Prague, America, ……
The number of companies large and small also exploded and many of the sponsors also had a major presence, including AutoDesk, Lego, DFRobots. More photos in next posts.
At the Shanghai Maker carnival I asked “the” Massimo to sign my Arduino (first of many Arduinos). He did and I have to say he is a very nice guy. Was hoping to get some feedback on the serial number and without any prompting he said “this is a collectors item” and when asked said that is was actually number 62,638.
Prior to this at the pre-maker carnival party at XinCheJian, while exchanging background information with other party goers, I was about four seconds into my background “grew up with no TV, so had to entertain myself making…” when I was interrupted with “so you are a true geek” and to make this really official – this came from a cultural anthropologist who specialises in maker culture etc!
So if chasing Massimo for an authograph wasn’t enough proof, then there is an expert opinion to back it up – yep I’m a geek 🙂
Was going to post a shorter article about below – but it felt way too much like I was just bragging – so I did not publish. Now after seeing and having the view that “XinCheJian = amazing” expressed by others – well I had to publish!
Blogged recently and in past about how amazing XinCheJian is, since then even more amazing things via XinCheJian:
Two weeks ago on the way to XinCheJian’s hackerspace in a container – went past the beginnings of the new FoxConn Shanghai building.
OK that is a bit random – how about a week ago I opened XinCheJian door to let some people in – it was the new owner of HackaDay and the CTO.
I was at XinCheJian to meet with David Li, founder of XinCheJian and so were they, so I got to listened and participate in a really interesting flow of ideas.
Turns out hackaDay is really a side project and is just on of 70 sites they own, mostly in electronics! They have been exploring Shenzhen electronics markets and are looking into ideas for HackaDay!
And it also turns out while I was impressed with meeting them and what they are planning, they were also very impressed with XinCheJian – see their interesting post.
My take on the interesting discussions …… China IS different:
very close – supply – manufacture – delivery (typically small – medium parcel is $1 for 1-2 day delivery if shop is close, else maybe 3 to 4 days) + reduced customer support and no international shipping = prices often 5-10 times cheaper than same item in “the west”
local market works/behaves in VERY different ways – the historical and ongoing impact of restricted borders impacts all aspects of online actiivity and shopping, for example local crowdfunding sites exist, but everything already on Taobao (or soon will be)
Local company presentation at XinCheJian described products which are sold worldwide, about 20 working Chinese engineers were present and were astounded that:
company could exist on such low volume production runs of 100s and 1,000s instead of their “usual” millions of units.
Engineers daily focus = massive production run of millions of units to get lowest prices
suppliers and manufacturers also sell most services on common shopping websites like Taobao!
for about $10,000 you can just start manufacturing your product – no need for massive fund raising – maybe just borrow a bit from a few friends.
example of door peephole camera
forget about http://phonebloks.com/ HIGHLY modular DIY design/make mobile phone!!!!!
…. you go Shenzhen, pick and choose your phone modules, then for about $10,000 just manufacture it!
yes this ignores the recycling take of phonebloks – but you got your phone based on modules your chose
large companies often have spare capacity – ie already paid for infrastructure and idle staff, so if you can convince the owner, manufacturing can and does occur cheaper without or only part of cost those overheads.
small production runs (less than millions)
= they won’t return your phone call
= leads to use of smaller companies, often less experienced and lower quality (eg Pebble watch issues)
BLE tiles like Tile and Lively – will be $1 next year – several Chinese companies ramping up production
Then there is also a small, but growing shift in the low volume market where more and more companies are now targeting low volume production at “affordable” cost instead of really expensive prototyping/low volume and also providing direct global access to these services, not just local access, for example: DragonInnovation and HWTrek and SnapEDA.
First power on – boots up to a preloaded Lubuntu with XBMC
similar GPIO pins to an Arduino.
GPIO pins can be controlled from many languages
access Linux commands from your code
Arduino “emulation” runs directly on the Linux hardware!
internet shows good information and code samples
looks like reasonable maturity with I2C and SPI support
usage – it all just works nicely!
Arduino “emulation” – ie running Arduino GUI with Arduino code on the pcDuino hardware – just works.
This is a really big feature that does not seem to have had much attention! There are a few differences to “standard” Arduino and some BIG extra features:-
compiled program is copied to /home/ubuntu/Arduino/YourCodeName.cpp
…and you can then run the program outside of Ard gui, even have it run on startup.
In an Arduino, you might not notice if your code crashes. In a pcDuino crashes can be more obvious! If you do something bad in your code (like going beyond array bounds) – the terminal running your Arduino code might crash!
your code does NOT run all the time power is applied like on Arduino, but only when you run it.
memory – code size limits – seem to have vanished! A simple sketch “Binary sketch size: 17,517 byes (of a 104,857,600 byte maximum) – 0% used”. Then adding MANY k of text, yet compiled code size only increased by about 1k!
reset switch is just like Arduino – it resets the entire board, but with pcDuino – this means instantly rebooting your Linux environment!
write data to SD card – no more loosing Arduino IO pins to an SD card shield (ditto for networking…)
can run shell commands etc (after all Arduino code is C/C++), like curl, wget, echo, system, etc
Found it necessary to to do a full system update via the F8 boot menu and that not all Arduino libraries are yet available/functional – eg SoftwareSerial.
The physical header layout seems odd with a non-Arduino layout and most headers on one side. Maybe some background on their design decisions on those layout choices would explain this.
Speed – guess it runs way faster than Arduino – but have not checked yet, although compilation process is quite slow.
Functionality tested so far from Arduino code:
switches on GPIO to trigger running different Linux applications
That is actually very impressive! What other capability is there to discover? Guess need to explore this device some more – for example interrupts, sleep, timers.
Co-incidentally there is a lot of press about the new Arduino Yun, which is also an Arduino + Linux hardware. The Yun has both Arduino & Linux hardware (plus WiFi) and has a serial bridge and library that allows communication between the Arduino and Linux hardware. The pcDuino does not have the additional Arduino processor, but does provide almost the same IO pins with control via the same Arduino programming IDE.
So the Yun is an Arduino (Leonardo) and has direct control of all IO, plus has some control of the Linux WiFi and other functions, and the pcDuino has direct control of all IO and Linux functions, plus if programming via Arduino IDE provides significantly extended Arduino capability.
I don’t have a Yun to try so I can’t answer this posts title question, but I can definitely say the pcDuino really delivers and shows promise of improving further!
Summary: pcDuino is a highly functional mini-Linux system that also adds several BIG features to Arduino capability, plus everything works right out of the box!
Trying to add a bit more wisdom to all the existing information that is around the web based on my tribulations with a SwarmRobot 32u4 based board (core of the Leonardo) and a SeeedStudio Xadow.
As everyone notes, on uploading your code, BOTH the computer AND the Leonardo drop/break the USB connection and then attempt to re-establish. The practical issues that this can cause, is where I had issues and found little information. So here are my 2 cents worth:
If both ends successfully re-connect:-
the port may have a different name/number. Recent Arduino programming GUI versions usually auto-detect the change. If not, you may have one of the other issues below. Older Arduino programming GUI versions did not auto-detect and you had to manually change the port.
Sometimes auto-upload works, other times you have to press the Leonardo reset button. It seems to run in streaks, working reliably for auto, then for manual reset. Don’t know how to reliably fix this. Sometimes solutions here work, often not.
Sometimes Arduino autodetects the port correctly, but does not select it, so you need to check and select it.
If either end does not re-connect, try:-
unplug USB cable, wait a few seconds then replug it in, then recheck port shows correctly in the Arduino GUI
sometimes moving USB cable to a DIFFERENT USB port helps
close and reopen the Arduino programming GUI, especially if you see red messages like “lib rxtx cannot access the com port”.
reboot your computer and power off/on the Leonardo and if you see the above message. Under Windows 7, the following message usually means a computer reboot for me “processing.app.debug.RunnerException: Couldn’t find a Leonardo on the selected port. Check that you have the correct port selected. If it is correct, try pressing the board’s reset button after initiating the upload.
do all BOTH of the above
If the com port is greyed out, try selecting the com port during that brief moment of disconnection and before reconnection after board is reset. Using your operating system sound events for this is very handy!
in addition to HID control of mouse or keyboard that you have programmed, I suspect that on some Leonardo style boards active HID control sometimes causes issues. I use a few seconds delay in setup function to avoid this at least while developing my code, in addition to the generally suggested method to easily disabled HID mouse/keyboard control.
Sometimes you end up with multiple copies of Avrdude running and using a lot of CPU. For me this occurs occasionally under OpenSuse.
All my attempts to get OpenSuse working with Xadow failed for weeks, until I left the Xadow plugged in at computer power on/boot, then ran the Arduino GUI with root privilege, then after that the GUI ran OK with userlevel privileges. I really do not understand why this is so!
Added header pins to the Xadow breakout board, plugged in the MMU 6050 sensor, uploaded the SAME code been testing on the Teensy++2 and success – the Xadow works as an air mouse!
I did comment out the button code as I have loaned my buttons to another Xinchejian Assistive devices team member. Also changed the movement sensitivity.
Will probably use the Teensy to continue the sensor – library debugging as it has heaps of IO to drive LEDs or a logic analyser. Will also move the draft code for the virtual button control to both boards and then should have a fully functional mouse. There are a lot more features planned, so this will be a highly capable and highly adaptable mouse!
A Xinchejian members first experience is in this second video – only instruction to him was hold like this and rotate! Seems like he was quite impressed!
First impression of Xadow is very good! There a lot of parts :), small – a bit smaller than end of my (man sized) thumb, but all look very well made and ideally suited for wearable items like those the Xinchejian Assistive Devices project is creating.
The SeeedStudio wiki has detailed page on each Xadow device with instructions on how to use, sample code, schematics, eagle files and if required libraries and some pages also have links to data sheet and other related software. Next step is to plug in and use, but that will have to wait until tomorrow 🙁
A big thanks to SeeedStudio for sponsoring the Xinchejian Assistive Devices project with the Xadow! Asked SeeedStudio last Wednesday evening to sponsor, they approved next day, Friday gave them address, shipped Monday 5:45, arrived 10am today, Wednesday.
The most excellent Xincehjian maker Edward introduced me to the also excellent MMU 6050 that has a 3 axis gyro and a 3 axis accelerometer and in addition has a bucket load of on-board digital motion processing (DMP) to give a huge range of 6 axis (DOF) outputs as well as motion, free fall, tap and shake detection. Amazingly, in China, you can buy it on a break out board for about $4 and get it delivered for another $1, a day or so later.
A popular library for this chip, seems to be the I2cDev library from Jeff Rowberg which not only provides access to this chip, but a HOST of other sensors AND it also provides a generic I2C lib (hence the name I2Cdev) that can and has been ported to many different host processors!
But wait there’s more, the I2cDev library offers a choice of several underlying I2C libaries, and even when using the default Arduino Wire library to provide the I2C, the common blocking – hanging issues that seem to plague many people when using the Arduino Wire library for I2C, have been resolved! I can now run I2C code for many hours, even overnight, instead of previous seconds or rare minutes!
So, I am really stoked, because the MMU 6050 delivers a lot of features that I really want to use (see Assistive devices) and those Wire I2C issues have caused me a lot of grief over the last 2 years as I tried to use several different sensors and motor controllers and even recently when I tried several different libraries, that others have created to get past these issues!
But wait there’s still more, there is also the freeIMU library, which I have been using successfully. It sits on top of the I2cDev library and provides additional features.
The last “But wait there’s more” is that as part of trying to get my head around all, well so far some of the above (tap, shake and motion detection), I delved into the documentation and code and summarised my understanding of interrupt configuration, interrupt status, raw data access and access to the DMP data. The document is still a work in progress, so please add comments to this post or contact me with updates and corrections!