Neues Projekt: LIShelpers – SimpleSpellMachine

swarkn

swarkn

Stefans Schwerpunkte liegen im Umfeld von Betriebssystemen, serverbasierten Diensten und im weitesten Sinne in allgemeiner technischer Infrastruktur. Tagsüber mit strategischen IT-Themen beschäftigt, tackert er Nachts doch mal gerne ins schwarze Loch.
swarkn

Hallo zusammen,

Wie versprochen – es wird wieder Zeit für ein neues Projekt!

Diesmal handelt es sich um eine Idee, die aus meinem direkten persönlichen Umfeld entstand. Mein Schwiegervater ist vor zwei Jahren nach einer schweren Gehirnoperation am „locked-in“ Syndrom erkrankt. Für diejenigen unter euch, die sich darunter nichts vorstellen können, finden einen Artikel dazu auf Wikipedia.

Mein Schwiegervater kann sich nur noch mit zwinkern bzw. seit kurzem mit leichten Kopfbewegungen verständlich machen. Im Klartext: Mehr als „Ja“ und „Nein“ geht nicht. Meine Schwiegermutter hat mit erstem Erfolg mit dem Buchstabieren begonnen. Die Frage für mich war jetzt folgende: Was, wenn mein Schwiegervater durch eine Buchstabier-Software und entsprechender Hardware wieder befähigt werden würde, selbst zu sprechen oder zu handeln?

Damit war die Idee zu diesem Projekt geboren: LIShelpers. Ein Toolset, welches Menschen die am „locked-in“ Syndrom erkrankt sind, wieder ein Stück Selbstständigkeit und damit Würde zurück gibt.

Der Code ist vollständig in Python geschrieben und soll in den nächsten Wochen und Monaten auf unterschiedliche Plattformen portiert und durch Hardware-Interfaces erweitert werden. Die aktuelle Projektseite mit allen Links und Artikeln findet ihr hier: Projektseite

Der aktuelle Code ist in unserem Github Repository zu finden. Die README.md, welche im Repo hinterlegt ist, gibt euch erste Hinweise zur Installation des aktuellen frühen Entwicklungsstandes. Die Code ist unter der GPLv3 veröffentlicht und damit für jedermann kostenlos nutzbar und frei zugänglich.

Solltet ihr Interesse an dem Projekt haben, würde ich mich sehr gerne über Feedback freuen. Vielleicht habt ihr auch betroffene Menschen in eurem Umfeld und wollt ihnen damit helfen? Je mehr Informationen über die Verwendung und hilfreiche Kritik wir zurück bekommen, um so besser ist die Software für alle nutzbar.

Viele Grüße,
swarkn

pinterest

Beispiel-Code: Benutzen des DS1307 NVRAM

swarkn

swarkn

Stefans Schwerpunkte liegen im Umfeld von Betriebssystemen, serverbasierten Diensten und im weitesten Sinne in allgemeiner technischer Infrastruktur. Tagsüber mit strategischen IT-Themen beschäftigt, tackert er Nachts doch mal gerne ins schwarze Loch.
swarkn

Dieses Beispiel gehört zur Baugruppe: Tiny RTC I2C Module und dient der Veranschaulichung der allgemeinen Kommunikation mit dem DS1307 (lesen der RAW-Daten) und dem Schreiben der gelesenen Werte in den NVRAM.

Ihr könnt das Beispiel noch erweitern, in dem Ihr den NVRAM mit Sensordaten füllt und danach einen „roll-over“ macht. Interessant wäre auch die Möglichkeit herauszufinden, ob die RTC einen Spannungsverlust erlitten hat. Es gibt noch so viel mehr Möglichkeiten. Aber – so viel Sand und keine Förmchen.

Screenshot des seriellen Monitors

Screenshot_DS1307
//
//    This is a demo, how to use the DS1307 to read the time direct from RAM and write it into the 56 Bytes of NVRAM
//    Stefan (swarkn) from http://www.do-it-neat.com
//
//    This demo need the following libraries:
//      https://github.com/jcw/rtclib
//
//    Please note: i put things a bit appart to better understand and read the code.
//    

// includes
#include <Wire.h>
#include <RTClib.h>

RTC_DS1307 RTC;                           // Set the namespace RTC to DS1307

// global variables
byte i;                                   // counter
byte data[8];                             // hold read data

void setup(void) {

  Serial.begin(9600);                     // start serial port

  ////
  //// Start DS1307 setup
  ////
  Wire.begin();               // start I²C Bus
  RTC.begin();                // start communicating to I2C device 0x68 (DS1307)
  RTC.adjust(DateTime(__DATE__, __TIME__));             // set RTC date and time to compilation time

}

void loop(void) {
 
  ////
  //// Do the DS1307 operations
  //// 

  Serial.print("Read from low RAM (0x00-0x08): ");
  for ( i = 0; i < 8; i++) {            // read 9 bytes of time register into NVRAM
    data[i] = RTC.readByteInRam(i);
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.println();  

  Serial.print("Write to NVRAM (0x08-0x10): ");
  for ( i = 0; i < 8; i++) {            // write the 9 bytes into NVRAM
    RTC.writeByteInRam(i + 0x08,data[i]);
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.println();

  Serial.print("Read from NVRAM (0x08-0x10): ");
  for ( i = 0; i < 8; i++) {            // read the 9 bytes from NVRAM
    Serial.print(RTC.readByteInRam(i + 0x08), HEX);
    Serial.print(" ");
  }
  Serial.println();
  Serial.println();
  
  ////
  //// wait some time
  //// 
  delay(1000);
}

Viel Spaß damit :),
swarkn

pinterest