Getest: 1Sheeld Arduino Shield voor Android

20160626_135304De 1Sheeld (met”ee“) zou de vervanging moeten zijn voor al je andere Arduino shields (met “ie“). Dat mag ook wel, want heel goedkoop is hij niet, ruim 50 euro. Daar moet hij dus wel wat voor kunnen. Voldoende reden dus voor een uitgebreide test.

In de basis is de 1Sheeld een gewone shield die je op je Arduino Uno / Leonardo etc. plaatst. De site geeft aan dat bijna alle modellen ondersteund (5V en 3,3V) worden, maar dat geldt dan eigenlijk vooral voor de modellen met de pinnen op vergelijkbare wijze als een Uno, want anders is er weinig te plaatsen. Dus een Arduino Micro of Pro Mini zullen in principe wel kunnen werken, maar handig is het niet.

En handig is juist een uitgangspunt van de 1Sheeld. Het is namelijk niet zo dat je de functionaliteit niet zou kunnen nabouwen, maar dat kost dan ongetwijfeld meer tijd en werk. Wat je nu namelijk doet is dat je een app op je Android telefoon installeert, via Bluetooth verbinding maakt met de 1Sheeld en dan de keuze hebt uit een 40-tal “shields”.

In het filmpje hieronder zie je een aantal voorbeelden van shields die alleen of in combinatie worden toegepast:

Het eerste voorbeeld dat je ziet is het LED-shield: je telefoon laat dan een afbeelding van een LED zien en vanuit je Arduino zet je die (draadloos/via bluetooth) aan of uit. Niet de meest spannende natuurlijk, maar het was de eerste die ik uitprobeerde, klein beginnen. De code ervoor kun je hier vinden (de LED zat op digitale pin #4) .
Al wat interessanter is het Button-shield, ook te zien in de video. Je telefoon functioneert dan als (draadloze) knop. Ik heb in het filmpje een LED op de Arduino aangesloten en zet die vanaf de telefoon aan of uit. Die op de Arduino aangesloten LED kan van alles zijn, een motor, een relay, noem maar op. De code ervoor kun je hier vinden.
Overigens: in de video zie je een micro-USB aansluiting aan de telefoon hangen, die is er alleen omdat de accu redelijk leeg was. Dit is namelijk de Wolfgang Android telefoon die ik eind 2013 bij de Aldi kocht. Ik weet niet wat de exacte ondergrenzen voor de app zijn, maar Android 4.2 op een niet al te krachtige telefoon is genoeg.

Na die eerste twee eenvoudige pogingen was het tijd voor iets nuttigere zaken.

Een van de shields is een Terminal-shield. Daarmee kun je dezelfde soort informatie als dat je anders via het serial venster op je computer krijgt zichtbaar maken. Helaas niet helemaal “zomaar”, je zult de “serial.” opdrachten in je code moeten vervangen door “Terminal.” opdrachten, maar dat is kwestie van zoeken + vervangen in de editor. Een eerste test die ik er mee deed was in combinatie met een DHT11, een veelgebruikte sensor die temperatuur en luchtvochtigheid meet. Ik heb hem op de Arduino aangesloten, code geüpload en toen kon ik via het Terminal-shield de berichten bekijken. De code ervoor kun je hier vinden (de datapin van de DHT11 zat op de digitale poort #2).

Een andere interessante shield is de Data Logger-shield. Daarmee kun je data die je verzameld, op je smartphone laten opslaan in een CSV-bestand.  De code waarmee ik dat doe kun je hier vinden. Daarbij maak ik dan ook gebruik van de Toggle Button-shield waarmee ik het loggen aan en weer uit kan zetten.
onesheeld_mail
Nog weer een stapje verder is het gebruik van de Text to speech-shield en de Voice recognizer-shield. Ook die zie je in de video voorbij komen. De eerste verteld me hoe warm en hoe vochtig het is en of logging aan staat of uit. En de tweede shield reageert op mijn voice-commando “status”. De herkenning van mijn Engels is redelijk, het gaat opvallend genoeg beter als ik slecht Engels praat, dus zoals op de video met een zwaar Nederlandse uitspraak (tja). De code voor deze combinatie kun je hier vinden. Zoals je ziet, is het nog steeds allemaal best wel eenvoudige code.

Het laatste voorbeeld waar ik aan toegekomen ben maakt een foto met de camera van de smartphone en mailt die naar mezelf op het moment dat het loggen aangezet wordt (zie de screenshot hierboven). De code staat hieronder.

En daarmee heb ik nog lang niet alle shields uitgeprobeerd. Een complete lijst is hier te vinden. Een aantal daarvan zijn zoals je ook nu al kon zien, heel handig. Er is bv ook een Internet Shield, daarmee kun je de data dus ook naar online webservices posten. Er zijn Facebook en Twitter shields, maar je hebt ook toegang tot de accelerometer van de telefoon, een van de demo’s van het bedrijf is dat je zo een auto (kleintje) op afstand kunt besturen.  Ook de GPS Als je telefoon een sensor niet heeft, dan kan 1Sheeld hem natuurlijk ook niet toevoegen, maar Aldi telefoon had geen NFC, dan zal die shield ook niet werken. Idem voor de “magnetometer”, een “drukmeter” en de “thermometer”

Conclusie

Ik begon met de opmerking over de prijs. Dat blijft. Als je echt een hardcore maker / knutselaar bent, dan zul je dit allemaal zelf, op maat, voor minder geld kunnen, maar ook wíllen bouwen. Daar staat tegenover dat het bouwen van een spraakgestuurde logger waarbij de data van een thermometer in CSV formaat opgeslagen wordt op mijn telefoon, me heel wat meer tijd zou hebben gekost dan dat het me nu gedaan heeft. En idem voor wat betreft een logger die de data dan doorstuurt naar een webservice. Dus als je géén hardcore coder bent, als je er dan al niet eens aan zou beginnen omdat je de complexiteit van de oplossing niet zou kunnen overzien of daar gewoon geen zin in hebt, dan is dit zeker iets om naar te kijken.
Daarom denk ik dat het shield in bijvoorbeeld het onderwijs, bij situaties waarbij je leerlingen / studenten wél met een Arduino aan de slag wilt laten gaan, bijvoorbeeld als je ze een meetinstrument wilt laten bouwen, maar waarbij het proces en het resultaat belangrijker is dan dat ze het echt tot op de laatste schakeling en codeblok helemaal zelf tot in detail bouwen. Ook dan denk ik dat het een component kan zijn die bruikbaar is.

Het gebruik van de shield is niet ingewikkelder dan de Arduino zelf. Je hebt een library nodig binnen je sketch, die kun je vanuit de Arduino IDE installeren. Je moet tijdens het gebruik even een paar dingen in de gaten houden, zoals de UART-schakelaar op het shield die je moet omzetten als je een nieuwe versie van je sketch wilt uploaden. Ook moet je er aan denken dat je niet alleen een shield in de code moet aanroepen, maar die ook in de app moet selecteren voordat hij gebruikt wordt. Tip is om te kijken naar de #define opdrachten boven aan een sketch. Bij de sketch hierboven staat bijvoorbeeld:

#define INCLUDE_TOGGLE_BUTTON_SHIELD
#define INCLUDE_TERMINAL_SHIELD
#define INCLUDE_EMAIL_SHIELD
#define INCLUDE_CAMERA_SHIELD
#define INCLUDE_DATA_LOGGER_SHIELD
#define INCLUDE_NOTIFICATION_SHIELD
#define INCLUDE_TEXT_TO_SPEECH_SHIELD
#define INCLUDE_VOICE_RECOGNIZER_SHIELD

Elke define is een shield dat je moet toevoegen in de App voordat alles goed werkt, dus: Toggle Button, Terminal, Email, Camera, Data Logger, Notification, Text to speech, Voice Recognizer.
Belangrijk ander aandachtspunt bij deze versie van de 1Sheeld is daarnaast dat hij alleen met Android werkt en niet met iOS, daarvoor heb je de nieuwere variant nodig (de 1Sheeld+, zie ook dit bericht). Wel hoef je niet je meest high-end smartphone aan de 1Sheeld te koppelen, dat scheelt wel, want wie heeft er niet nog een oud toestel liggen?
Je kunt de verschillende shields binnen de app maar beperkt koppelen. Als ik bijvoorbeeld via spraak een opdracht geef dat het bijhouden van de data stopgezet moet worden, kan ik er niet voor zorgen dat de knop op het andere shield ook op “uit” gezet wordt. En ik kan wel een foto mailen, maar niet het CSV-bestand dat de datalogger aanmaakt. Kan natuurlijk ook voor de standaard-app allemaal werk-in-uitvoering zijn.

20160626_134915_klein  20160626_134707 20160626_120650 20160626_163051

Kortom, de 1Sheeld is een interessante shield voor gebruikers met de juiste achtergrond en wensen. Enerzijds gebruikers die op deze manier een aantal wat complexere zaken eenvoudig willen maken. Die hun Android telefoon draadloos aan hun Arduino experiment willen kunnen koppelen zonder helemaal een applicatie te hoeven bouwen.
Van de andere kant is hij ook geschikt voor mensen aan de andere kant van dat spectrum. De SDK, de ontwikkelkit voor het board is namelijk gewoon beschikbaar naast de code voor de library. Dat betekent dat als de 1Sheeld app voor Android voor jou te beperkt is, als je met meerdere 1Sheeld apparaten tegelijkertijd verbinding wilt kunnen maken, als  je een Nederlandstalige app wilt maken, of als je wél het CSV-bestand van de datalogger wilt kunnen laten mailen, je dat ook kunt. Dan kost het je wat meer werk, maar het kan.

Disclosure
logo-prototype-shopDit bericht is onderdeel van een serie berichten die ik maak op basis van componenten / producten die gratis aan mij beschikbaar gesteld worden door de prototype-shop.nl.
Ik heb zelf de keuze gehad welke producten ik test. Voor mij staat hierbij hetzelfde uitgangspunt centraal als wanneer ik ze wél zelf koop: ik moet het interessant vinden om ermee aan de slag te gaan, het moet niet iets zijn dat al door iedereen anders ook al getest is, ik moet er wel nog iets aan toe kunnen voegen.
Behalve de afspraak dat ik bij deze berichten een link opneem naar de prototype-shop.nl, zijn er geen andere afspraken gemaakt, de inhoud van deze berichten komt volledig voor mijn rekening.
Het volgende bericht in deze serie kun je volgende week maandag verwachten.