Neues Board: Genuino 101

Die Arduino Boards sind ja schon eine feine Sache. Viele GPIO Pins, auch Analogpins und eine sehr große Community, welche für viele Standardsensoren und Bauteile Libs dazu liefert.
Gut, manchmal muss man sich dann doch etwas rumquälen, aber das macht eben auch ein bisschen den Charme aus.
Angefangen habe ich mit dem Leonardo, weil es den mal zu einem Abo dazu gab. Irgendwann hab ich den aber so geliefert, dass er keinerlei neue Programme mehr aufspielt. Vermutlich muss man nur mal den Bootloader neu installieren. Hatte ich aber dann damals kein Nerv dazu und da ich sowieso mehr Pins haben wollte, einfach den Uno verwendet.

Der Uno ist quasi das Standardboard, dass man auch beim Chinesen um die Ecke für wenig Geld bekommen kann. Die Qualität ist oft erstaunlich gut. Das einzige Problem sind meist nur verbogene Pinleisten, die man aber leicht nachbiegen kann. Doch der Uno hat leider auch ein kleines Problem. Nur 8bit, 16MHz und vor allem nur 32kb Speicher. Da kann man schon mal ein kleineres Projekt mit machen: Keypad, LCD, Relais und einen kleinen Codegenerator mithilfe eines RTC Moduls bauen, aber dann ist auch schon fast Sense.
Dafür reicht die Geschwindigkeit auch super aus. Mit einem ESP8266 könnte man vielleicht sogar noch WLAN hinzufügen (hab ich noch nicht getestet).

101Doch nun ist Intel auch ins Mikrocontroller Geschäft eingestiegen und nach eher mäßigen Versuchen mit dem Edison Board haben sie nun ein ziemlich nettes und Arduino kompatibles Arduinoboard entwickelt. Den Genuino 101 (oder Arduino 101 in Amerika). Er ist genauso wie der Uno, hat ein bisschen mehr Speicher (196 kB und 24 kB RAM) und ein BLE Modul drauf. Dazu noch einen zweiten Prozessor für andere Aufgaben.
Wie gut, das in der Praxis dann funktioniert muss man testen. Anders als bei anderen Boards mit 3,3 V Pegel ist der Genuino 101 wohl auch 5V tolerant. Das hört sich gut an, so muss man sich dann keine großen Gedanken über vorhandene Bauteile mit 5V machen.

Golem hat es aber mal angetestet. Mal schauen, was sich damit dann alles anstellen lässt. Aber zum Herumexperimentieren dürfte es sicherlich reichen. Hoffentlich löst Intel dann auch mal sein Versprechen ein und veröffentlicht die Dokumentationen zum Chip und die Ansteuerung dazu.

Arduino: Keypad Tasten zuordnen

Wer einmal mit einem Keypad gearbeitet hat, kennt die Situation vielleicht: Man hat einige Pins, aber weiß nicht, wo man welche Pins einstecken soll. Dabei gibt es eine relativ einfach Lösung um die Zuordnung der Tasten im Code anzupassen. Man lädt sich folgenden Code in Arduino rein. Öffnet später dann den Serial Monitor und drückt eine Taste. Nun sieht man welche Taste man angezeigt bekommt. Stimmt diese nicht mit der gedrückten Taste überein, muss die Taste an der entsprechenden Stelle im „keys[ROWS][COLS]“ Array angepasst werden.
Ist man mit allen Tasten durch, lädt man den aktualisierten Code nochmal auf den Arduino und prüft erneut die Angabe.

Die Keypad Lib ist die Standardlib von Arduino. Wenn ihr irgendwann mal etwas mit dem offiziellen GSM Modul von Arduino und einem Keypad machen wollt, sei dieser Thread empfohlen. Dann sind nämlich Anpassungen an der Keypad Lib notwendig.

#include <keypad .h>
#include <stdio .h>
#include <wire .h>

//Keypad Deklaration
const byte ROWS = 4; 
const byte COLS = 4; 
char keys[ROWS][COLS] = {
  {'D','C','B','A'},
  {'#','9','6','3'},
  {'0','8','5','2'},
  {'*','7','4','1'}
};

//Keypad PINS.
byte rowPins[ROWS] = {2,3,4,5}; //connect to row pinouts 
byte colPins[COLS] = {6,7,8,9}; //connect to column pinouts
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void Keyeingabe()
{
    char key = keypad.waitForKey();    
    Serial.println(key);
}

void setup() 
{
    Serial.begin(9600); //Für Debugging notwendig.
    
}

void loop() 
{   
    Keyeingabe();
}
</wire></stdio></keypad>

//Hinweis: Wegen HTML muss die letzte Zeile und die #include Zeilen beim Kopieren angepasst werden. Der Code zeigt aber schon mal schön, wie es funktioniert. :)

Arduino: GSM Modul und Keypad zusammen macht Probleme

So dele, seit Anfang diesen Jahres bastle ich mehr oder weniger regelmäßig in meiner Freizeit an einem „Schloss“ für ein Baumhaus.
Die Idee: Der Arduino bekommt vom Webserver einen Code als SMS gesendet, der ausgewertet wird. Die SMS enthält ein bisschen Text (geheimer Prefix! Aus Securitysicht natürlich ein Witz. :) ) und hinterher dann den Code. Dieser Code ist dann solange gültig, bis irgendwann eine Lösch SMS kommt. Der Code wird via Keypad eingegeben: Ist der Code richtig, öffnet sich ein Relais und damit das Schloss.
Sobald aber nun ein Code drin ist, ist der Arduino im „Code Eingabe“ Modus und leider gibt es keinen Interrupt vom GSM Modul, der mir mitteilen würde, dass gerade eine SMS gekommen ist.
Deshalb hängt sich der Arduino regelmäßig auf und nach ein paar Mal testen kann das Modul keine SMS mehr empfangen. Sprich die Idee ist zwar eigentlich nicht schlecht, aber momentan viel zu unzuverlässig.

Das kann nun an mehreren Sachen liegen:
1. Die Hardware ist doof. (Würde ich aber fast mal ausschließen wollen, da es selbst mit einem Original Arduino nicht zuverlässig funktioniert!)
2. Ich hab einen Mist programmiert (dabei hab ich die logischen Dinge schon in Funktionen ausgelagert, damit sie nur dann aufgerufen werden, wenn es explizit erforderlich ist)
3. Das GSM macht generell zu viele Probleme.

Vermutlich eine Mischung aus allen 3 Punkten + X!

Irgendwann stelle ich vielleicht den Code nochmal online. Muss dazu aber noch ein paar Dinge wie PIN und Prefix entfernen!

Aber es gibt ja noch andere Ideen: Man nimmt statt einem GSM Modul ein RTC Modul, mit dem man immer ein aktuelles Datum hat. Anhand vom Datum kann man einen Code generieren (ein paar Mal multiplizieren, damit es nicht ganz so offensichtlich ist.) und einem Teil für die Anzahl der Tage. Hinterher kann dann der Besucher einmal den Code eingeben und er wird solange gültig sein, bis irgendwann die Anzahl der Tage überschritten wurde. Das sollte relativ einfach und zuverlässig funktionieren. Der Code Generierungsalgorithmus ist dann einmal auf dem Arduino und einmal auf dem Webserver. Beide sollten gegen Reverse Engineering einigermaßen sicher sein. Zumindest vom Arduino fällt mir gerade keine einfach Methode ei

Alternative 2: Man generiert einen QR-Code und liest diesen dann per Kamera an einem Raspberry Pi aus. Das hätte auch Stil und wäre bequem. Wie zuverlässig es funktioniert bleibt mal dahin gestellt. Wenn ich ab und an mal ein Paket bekomme, dass in der Packstation gelagert wird war es oft mühselig den normalen Barcode erfolgreich einscannen zu lassen. Aber wahrscheinlich hab ich es nur nicht im richtigen Winkel hingehoben oder bin einfach zu doof. Nach Quadrilliarden Versuchen hat es aber dann doch immer geklappt. ;)

Soviel mal zu diesem Thema. Näheres dann, wenn alles klappt. Den Code werde ich dann vermutlich mal einscannen. Den Algorithmus aus Gründen der nationalen Sicherheit natürlich nicht! Das dürfen findige Hacker selbst herausfinden! So schwer wird es aber nicht sein.

Ganz aufgeben möchte ich das GSM Modul noch nicht. Denn zumindest der SMS Versand funktioniert recht zuverlässig. Also könnte man diese Funktion in Form einer Alarmsicherung mit Reedkontakt noch gut verwenden! Jetzt muss aber erstmal ein funktionerendes Schloss her, danach sehen wir weiter! Der Rest ist eher nettes Beiwerk!

Als dritte Alternative kann man sich auch einfach „Android meets Arduino“ ansehen. Die Smartphones sind nicht mehr teuer und haben schon einiges an Sensoren dabei, da wäre es ganz nett wenn man diese auch nutzen könnte.

WTF Duino – Aus „einfach“ wird kompliziert

Eigentlich ist es nur ein Scherz. Ein Brite hat den Hype um Arduino ein wenig aufs Korn genommen und eine Platine in Form einer Banane entwickelt. Den WTF Duino Technisch ist es ein Klon eines ganz normalen Arduinos. Der Hauptunterschied: Die Form ist eine Banane und sie ist gelb.
Das Schwierige ist: Die GPIO Pins sind nicht gerade angeordnet, sondern immer etwas versetzt zueinander. Damit ist das einfache Anstecken auf ein Breadboard gegessen. Es funktioniert einfach nicht. Um den Schwierigkeitsgrad noch weiter zu erhöhen: Die Beschriftungen sind nicht mit der Funktion identisch. Sprich man muss erstmal herausfinden, welcher Pin zu welcher Beschreibung passt.
Und letztlich gibt es keinen Platinenplan und kein Open-Source. Das Ganze ist Closed Source.

Das Ganze hört sich bescheuert an, ist es eigentlich auch. Aber die Leute im Internet finden das so cool, dass sie eine Kickstarter Kampange fordern. Um das Getrolle endgültig auf die Spitze zu treiben, hat der Münchener CCC gleich mal ein Layout der Banane, einer Kirsche und einer Erdbeere erstellt und auf GitHub gestellt.

Hier noch zwei Video zum WTF Duino.

Sublime Text 2 mit Stino und Arduino 1.0.5 für Arduino Entwicklung

Anfang diesen Jahres hab ich mit der Arduino Programmierung bzw. Experimentieren angefangen. Was mich immer gestört hat, war diese hässliche Standard Arduino IDE. Man bekommt sie zwar kostenlos und kann damit auch schon alle Standard Boards und weitere Boards ansteuern und den Code dafür kompilieren. Aber sie hat nen weißen Hintergrund, keine Autoformatierung und vor allem keine Autocompletion. Wer unter Windows mit Visual Studio entwickelt weiß diese Autocompletion einfach zu schätzen. Das ist goldwert.

Damals hat ich auch schon probiert meine alte Sublime Text Lizenz (die mit 70$ nicht günstig ist) wieder auf meinem Laptop zum Laufen zu bekommen. Das hat auch wunderbar geklappt. Aber das tolle Stino Plugin konnte ich leider nicht zum Kompilieren überreden.
Deshalb bin ich damals doch auf ArduIDE hängen geblieben, nachdem ich vieles ausprobiert habe und irgendwie nichts wirklich funktioniert hat. Damit hab ich dann in letzter Zeit meinen ganzen Code für die Türöffnung geschrieben. Das hat gut funktioniert, das Syntax Highlighting ist schon besser. Aber das Plugin wird eben auch nicht weiter entwickelt und mir selbst fehlt die Muse und das Know How.

Dann hat Herr monkel neulich erwähnt, dass er gerade auch Sublime Text verwendet. Da morgen die GPN beginnt und ich dort ein bisschen coden möchte, hab ich eben mal wieder eine neue SIM Karte und das GSM Modem ausprobieren wollen.
Und ich hab nochmal Stino ausprobiert. Es kam immer der beknackte Error 127 und die Google Ergebnisse haben sich immer auf Mac OS bezogen. Da kann ich mit Xubuntu 14.04 einpacken. :(

Aber nun hab ich die Lösung gefunden:

1. Sublime Text 2 installieren. Da gibt es hier diesen Blogpost dazu.

sudo add-apt-repository ppa:webupd8team/sublime-text-2
sudo apt-get update
sudo apt-get install sublime-text

Natürlich sollte man sich klarmachen, dass Fremdquellen auch potenziell gefährlich sein können. Als alter Windows User klickt man aber ja auch immer überall drauf. Und ich halte diese Quelle für Vertrauenswürdig, schließlich stellt er den besten Texteditor der Welt ™ als Paket zur Verfügung.

2. Befolgt diese Anleitung:
Das nachfolgende ist nur eine grobe Zusammenfassung!
– Installiert in Sublime Text 2 „Package Control“
– Dann Package Control aufrufen (Preferences – Package Control)
– „Install“ eingeben.
– „Arduino-like IDE“ eingeben (sollte von Robert Will und sein Stino sein!)
– Dann im neuen Arduino Menu, die Preferences einstellen. Wenn man möchte auch die Sprache und vor allem den Pfad zur Arduino Version (wegen GSM brauch ich die 1.0.5).
– Sketch Ordner hinzufügen.
– Board einstellen.
– Ersten Sketch kompilieren und freuen!

Stino und Sublime Text 2 ist einfach genial.
Es gibt endlich eine Autocompletion für Arduino! Das ist soooo geil!

Oder wisst ihr alle Befehle auswendig?
Ich nicht, daher freu ich mich darüber.

Darüber freut sich jeder. Gut bei Richard Stallman würde ich vielleicht eine Ausnahme machen!

  • Seite 1 von 2
  • 1
  • 2
  • >