Programmeren met Dash en Dot

Het goed kunnen omgaan met en het gebruiken van computers is superbelangrijk. Vandaag heb ik daarom als hulpouder de kinderen uit groep 6 van onze basisschool wat opweg geholpen met het leren programmeren. In dit geval is dat Dash and Dot robotjes. Robotjes met wieltjes en sensoren die je via een tablet kan besturen en programmeren.

Voor mijzelf was dit ook de eerste kennismaking met deze robot, dus heb ik samen met vier jongens uit groep 6 de mogelijkheden van Dash en Dot eens verkend.

Als eerste introductie zijn we even aan de slag gegaan met ‘Go’, een app waarmee je Dash (Dot hebben we voor nu in de doos laten zitten) op afstand kan besturen als ware het een modelautotje. het allerleukste was natuurlijk om Dash zelf opgenomen geluidjes te laten horen. Daarna zijn we snel doorgegaan met ‘Path’, een app waarmee je een parcours kan tekenen die Dash gaat aflopen. Op het parcours kan je allerlei icoontjes slepen voor van alles en nog wat.

Het meeste tijd zijn we bezig geweest met Blockly, de app waarmee echt geprogrammeerd kan worden, vergelijkbaar met Scratch. Hier heb ik iedereen steeds een opdracht gegeven die steeds weer iets moeilijker werd of een nieuw element bevatte. We zijn zo de volgende opdrachten doorlopen:

  • Laat Dash een vierkantje rijden: vooruit; draaien; vooruit; draaien; etc.
  • Laat Dash je eigen voorletter rijden en laat aan het einde of tussen door je favorietje geluidjes horen.

Als laatste oefening (met het filmpje hieronder als resultaat) hebben we een parcours gemaakt waarin Dash tussen blokken doorgeloodst moest worden. In eerste instantie hebben we een vast startpunt gebruikt zodat het nog mogelijk is om Dash vaste afstanden te laten rijden en op het juiste moment bochten te laten maken. Uiteindelijk heb ik het startpunt gewisseld waardoor we de sensoren van Dash ook zijn gaan gebruiken: bij het detecteren van een muur stoppen een bocht maken, en verder gaan.

Filmpje: https://youtu.be/FiWCY0qoc-k

 

 

Slag bij Noordhorn

Tijdens de tachtigjarige oorlog, in het najaar van 1581 heeft een veldslag plaatsgevonden vlakbij Noordhorn: ‘De slag bij Noordhorn’. De Spaanse troepen onder leiding van kolonel Francisco Verdugo streden tegen de Hollandse (en Friese) troepen onder leiding van graaf Willem Lodewijk. Het schijnt nogal een bloedige strijd te zijn geweest, met veel slachtoffers aan beide kanten.

Op 30 augustus 2015 kan deze veldslag opnieuw worden herbeleefd. De slag bij Noordhorn wordt die dag nagespeeld door re-enacters, een unieke gebeurtenis. Meer informatie over het herbeleven van deze veldslag is beschikbaar op de website van de Schansenkrijg:  http://schansenkrijg.nl

Noordhorn
Gravure van de slag bij Noordhorn
Genoeg aanleiding om van het betrokken gebied in beeld te brengen met een serie luchtfoto’s. Op 18 april 2015 heb ik met de vlieger een serie luchtfoto’s gemaakt van het gebied tussen de Friesche straatweg en het dorp Noordhorn. Hoe zit dit gebied er nu uit? Zijn er nog sporen van de slag terug te vinden? Wie weet levert een archeologisch onderzoek nog nieuwe vondsten op.

Photo & Video Sharing by SmugMug
Noordhorn in het voorjaar van 2015

De volledige fotoserie is hier beschikbaar.

 

What is Pebble talking about?

The Pebble smartwatch is one of the most popular smartwatches. Sofar 1 million smartwatches  have been sold, which made the Pebble the second best selling smartwatch of 2014 according to the Smartwatch Group. Probably due to the relative low price point of the Pebble, and their tech oriented user/developer community,  the company seems to stay a bit under the rader in terms of market share. At this moment Pebble has started a new chapter in their story with a new kickstarter campaign for the Pebble Time, a smartwatch with a color display. With their second Kickstarter campaign they recaptured the position as most funded project with more than $18 million dollars in pledges.

Due to the availability of SDK’s, a large developer community, onlin development environments, lots of samples, the Pebble smartwatch is a very developer friendly smartwatch. But it’s always interesting to explore the possibilities and inner workings of the Pebble even further.  For example, the wireless communication between Pebble and your telephone. How does it work?

When a Pebble is coupled to a smartphone, they communicate via an emulated serial port (RFCOMM) where both the watch and phone exchange binary encoded messages with each other. The innner workings of this protocol was disclosed by Hexxeh (Liam McLoughlin) with his release of the LibPebble library, a Pebble communication library written in Python. While most of the data communication between Pebble and Smartphone is known, the communication pattern i.e. ‘when to say what’ is not completely clear.

Messages sent from phone or Pebble have a variable length and make use of the same encoding. All messages start with a four byte header that specify length and endpoint. The first two bytes contain the length (unsigned integer) of the encapsulated message. The total message length is thus, this length specified in the header plus, the four bytes of the header itself. The last two bytes of the header contain the endpoint (unsigned int) of the communication, and specify the communication type of the encapsulated message. Examples of endpoints are: application messages, logs, and time. And each endpoint makes use of its own message structure.

 

Pebble message structure
Pebble message structure

 

While LibPebble is great, it seems that it does not implement the complete Pebble bluetooth protocol. For instance DATA_LOG type messages (endpoint 6778) are not described. And that is where Android developer mode, and Wireshark come to the rescue. With an android phone, all bluetooth traffic can be captured in a logfile. This logfile can be loaded by the Wireshark network sniffer and protocol analyser. And on top of that we can add a custom dissector for the Pebble protocol so that we can closely follow what the Pebble is talking about!

In order to get it all working, you need to have an Android smartphone with developer mode enabled. If you don’t know how to do that, It is probably better to stop reading this post, and find your luck elsewhere.  The Developer options contain an option to enable logging of all bluetooth traffic. When this option is checked, a file (located at: /sdcard/btsnoop_hci.log) is created that traces all bluetooth traffic.

enabling bluetooth logging on Android

When you think you have traced enough, transfer the btsnoop_hci.log file to your PC and open the file in Wireshark.

The only thing we need to do is create a dissector for Pebblish, the protocol spoken by the Pebble, and make this dissector available for Wireshark. For this purpose I wrote a minimalistic dissector in Lua that extracts the length, endpoint of each message, and the start of application messages.  The code for this dissector is available on Github

I’m not going to explain how to add the dissector to Wireshark. There are more than enough good tutorials available on the web that explain how to do this (for example here).

When the  dissector is enabled and the btsnoop_hci.log is loaded in Wireshark, use ‘pebble’ (without quotes) as the filter expression to show only the messages sent/received by the Pebble smartwatch. The result is shown below in the screenshot that displays the conversation between Pebble and smartphone.

Wireshark showing a Pebble conversation

Although the dissector is far from complete, it already gives a lot of insight in the conversation between the Pebble and Smartphone.