From f11ad293b4377a81d5b0763240eb64a2d8b22186 Mon Sep 17 00:00:00 2001 From: uvok cheetah Date: Sun, 19 May 2019 14:39:30 +0200 Subject: Continue migrating posts Ubiquity, added deprecation paragraph Identica Arduino project, migrated code and images --- _posts/2009-02-28-ubiquity.md | 49 +++++ ...009-03-02-webtip-microblogging-with-identica.md | 34 +++ ...09-04-talk-to-me-ein-kleines-arduino-projekt.md | 240 +++++++++++++++++++++ 3 files changed, 323 insertions(+) create mode 100644 _posts/2009-02-28-ubiquity.md create mode 100644 _posts/2009-03-02-webtip-microblogging-with-identica.md create mode 100644 _posts/2010-09-04-talk-to-me-ein-kleines-arduino-projekt.md (limited to '_posts') diff --git a/_posts/2009-02-28-ubiquity.md b/_posts/2009-02-28-ubiquity.md new file mode 100644 index 0000000..5c2b317 --- /dev/null +++ b/_posts/2009-02-28-ubiquity.md @@ -0,0 +1,49 @@ +--- +layout: post +title: "TechTip: Ubiquity" +date: "2009-02-28T17:17:00.004+01:00" +author: uvok +tags: + - firefox + - TechTip +modified_time: "2009-06-14T15:49:01.472+02:00" +blogger_id: tag:blogger.com,1999:blog-3402054131713474507.post-4427420545965883048 +blogger_orig_url: https://uvok.blogspot.com/2009/02/ubiquity.html +--- + +*Update vom 19.05.2019 (Datum der Migration): Dieses Add-On wird anscheinend nicht mehr +weiterentwickelt und ist auch nicht mehr verfügbar.* + +Es gibt eine Unzahl von Erweiterungen für Firefox - allein auf +addons.mozilla.org finden sich zur Zeit ca 7000 Add-Ons (4000 davon +experimentell). + +Vor kurzem bin ich auf die Erweiterung Ubiquity +aufmerksam geworden und nachdem ich mir das Demo-Video (s. Projektseite) +angesehen habe, habe ich die Erweiterung auch gleich installiert. + +Um +es kurz zu fassen:
Ubiquity soll viele tägliche Aufgaben leichter machen. +So kann man z.B. ein Bild markieren und es gleich in Google Mail einfügen +lassen.
Ubiquity kann auch übersetzen - wahlweise einzelne Wörter oder +ganze Texte (da für die Übersetzung Google Sprachtools verwendet werden, kommt +dabei nicht viel sinnvolles raus), es ist sogar möglich, markierte Begriffe in +der Wikipedia nachzuschlagen.
Es gibt noch mehr Features, am besten, ihr +schaut euch das Demo-Video aus und probier es selbst aus! + +Meine +Einschätzung:
Obwohl es noch als experimentell gekennzeichnet ist, gibt es +keine großen Probleme. Der Funktionsumfang ist noch eingeschränkt und es sind +noch nicht sehr viele Skripte verfügbar, allerdings wird es dieses Problem mit +der Zeit nicht mehr geben. + +Übrigens: Ubiquity bedeutet übersetzt +"Allgegenwart". + +## Links + +- Offizielle Add-On Seite von Mozilla +- Projektseite von Ubiquity (und Download) +- Ubiquity Wiki +- Tutorial +- Wikipedia zu Ubiquity diff --git a/_posts/2009-03-02-webtip-microblogging-with-identica.md b/_posts/2009-03-02-webtip-microblogging-with-identica.md new file mode 100644 index 0000000..5a1567e --- /dev/null +++ b/_posts/2009-03-02-webtip-microblogging-with-identica.md @@ -0,0 +1,34 @@ +--- +layout: post +title: 'WebTip: Microblogging with identi.ca' +date: '2009-03-02T16:38:00.004+01:00' +author: uvok +tags: +- twitter +- WebTip +modified_time: '2009-07-18T18:46:46.156+02:00' +blogger_id: tag:blogger.com,1999:blog-3402054131713474507.post-5779708773033430340 +blogger_orig_url: https://uvok.blogspot.com/2009/03/webtip-microblogging-with-identica.html +--- + +Wer kennt nicht Twitter, mit ca. 6 Millionen Nutzern das größte +Microblogging-Netzwerk? Allerdings habe ich als Linux-User etwas gegen alles, +was closed-sourced ist ;-) Beim stöbern bin ich über einen Link zu identi.ca +gestolpert - und habe mich probehalber mal angemeldet. Mit Twitter kann +identi.ca zur Zeit zwar nicht mithalten (so kann man z.B. keine Bilder posten), +aber um Freunden & Bekannten mitzuteilen, was man gerade macht, ist +identi.ca ideal. identi.ca bietet Gruppen und Tags. Um In einer Gruppe zu +posten, setzt man einfach das Ausrufezeichen vor den Gruppennamen (z.B. +!lionking), einen Tag markiert man mit der Raute (#tagging). Weiterhin kann man +bestimmte User anschreiben (@uvok). Viel mehr gibt es nicht zu sagen, außer +vielleicht, dass man auch über das Jabber-Netzwerk Nachrichten versenden und +empfangen kann, das heißt, man muss sich nicht einmal die Mühe machen und sich +auf der Website einloggen (für die 1. Registrierung muss man das natürlich +machen). + +## Links + +- Wikipedia über +Micro-Blogging +- Homepage von identi.ca +- Mein Account auf identi.ca diff --git a/_posts/2010-09-04-talk-to-me-ein-kleines-arduino-projekt.md b/_posts/2010-09-04-talk-to-me-ein-kleines-arduino-projekt.md new file mode 100644 index 0000000..fa49350 --- /dev/null +++ b/_posts/2010-09-04-talk-to-me-ein-kleines-arduino-projekt.md @@ -0,0 +1,240 @@ +--- +layout: post +title: "[WIP] Talk to me - Ein kleines Arduino-Projekt." +date: '2010-09-04T14:45:00.005+02:00' +author: uvok +tags: +- arduino +modified_time: '2010-10-28T17:29:33.408+02:00' +thumbnail: https://1.bp.blogspot.com/_iYx36V-6wFY/TIkfJI4BEaI/AAAAAAAAABI/ufuH0QHoFvI/s72-c/ardu.png +blogger_id: tag:blogger.com,1999:blog-3402054131713474507.post-5167631921540516517 +blogger_orig_url: https://uvok.blogspot.com/2010/09/talk-to-me-ein-kleines-arduino-projekt.html +--- + +*Update vom 19.05.2019 (Datum der Migration): Links zum Code wurden in den Post integriert. +An dieser Stelle gilt ein riesiger Dank der +[Wayback Machine vom Internet Archive](https://web.archive.org){:target="_blank"}{:rel="noreferrer"}, +ohne deren Hilfe der Code nicht mehr verfügbar wäre.* + +(last edit : 28.10.2010) + +(Anmerkung: Zur Zeit ist das wirklich nur eine +sehr kurze Anleitung, die ich zu einem späteren Zeitpunkt hoffentlich noch +ausbauen kann) Vor kurzem habe ich ein Arduino-Board erworben. Da ich noch +zusätzlich ein LCD hatte, wollte ich natürlich auch damit arbeiten. Nach einiger +Einarbeitung kam ich auch zum Beispiel "Texte per serieller Schnittstelle an das +Arduino-Board senden". Da war auch schon die Idee da: Ich lasse mir übers +Internet Nachrichten ans LCD schicken. + +Neu ist die Idee nicht, ich hab das schon irgendwo mal gesehen. Dennoch +wollte ich das mal probieren. Da ich kein Ethernet-Shield habe, muss das Board +per USB am PC bleiben, die Kommunikation erfolgt per serieller Schnittstelle. +Das Board muss also die ganze Zeit am USB hängen. Da ich eigentlich an meiner +Belegarbeit arbeiten müsste, nur eine (ganz kurze) Projektvorstellung: Was wird +benötigt? + +## Hardware + +Erstmal braucht man ein Board. Ich verwende das Arduino Duemilanove. Wer das +ältere Diecimila benutzt, ist sogar besser dran - siehe weiter unten, warum.
+Weiterhin +braucht man ein LCD (jedes sollte funktionieren, sofern es sich per +LiquidCrystal-Bibliothek ansteuern lässt), evtl. eine Diode (ich hab hier eine +1N4007). Ein Potentiometer zur Kontrasteinstellung sollte auch vorhanden sein. +Wer ein Board mit Autoreset hat, braucht auch einen 110~120 Ohm Widerstand. (2x +220 Ohm parallel tun es natürlich auch). (edit, 09.09.2010) + +Fritzing sei dank kann ich euch meine +Schaltung zur Verfügung stellen: + +
+ + + +
+ +Für den Aufbau der Schaltung siehe obige Abbildung.
Weiterhin verweise ich +hier auf +https://arduino.cc/en/Tutorial/LiquidCrystal +und auf +https://www.ladyada.net/learn/lcd/charlcd.html. +Lest zur Pinbelegung des LCD auf jeden Fall das Datenblatt. Meins LCD +verträgt z.B. nur 4,2 Volt am Eingang des Backlight-Pins. Daher brauch ich die +Diode, um die Spannung von 5V auf 4,3 V runterzubekommen. (Wenn Ihr wollt, könnt +ihr auch einen Spannungsteiler mit einem 2. Poti aufbauen, damit ihr die +Helligkeit regeln könnt). + +Nochmal zum Autoreset: Wenn ihr per echo Daten an +/dev/ttyUSB0 sendet, resettet sich das Board, Das führt dazu, dass die Nachricht +am Ende nicht auf dem LCD angezeigt wird. Deshalb muss der Reset-Pin über einen +110 Ohm-Wiederstand mit 5V verbunden werden. Ist der Widerstand größer, resettet +sich das Board trotzdem, ist er kleiner, zerschießt ihr evtl. euer Board (danke +an die Leute vom arduino.cc Forum) DAS führt natürlich dazu, dass Arduino(IDE) +das Board beim Programmieren nicht automatisch resettet. Also den Wiederstand +beim Programmieren entfernen oder manuell resetten. (Ich muss sowieso den +5V-Stecker beim Programmieren entfernen, da der Programmer sonst nicht +erreichbar ist.) Wie oben erwähnt: Die älteren Diecimila haben kein +Autoreset und brauchen das nicht. + +## Software + +Ich gehe hier nur auf Linux ein. Ich hab keine Ahnung, wie man unter Windows +Daten direkt an nen COM-Port per Kommandozeile schickt. Vll. kann ja jemand was +dazu beitragen.
Weiterhin solltet ihr auf eurem PC einen Webserver mit +PHP-Unterstützung haben. Ich hab hier Lampp laufen.
Arduino-Entwicklungsumgebung +sollte installiert sein, wenn ihr wisst wie, könnt ihr auch direkt in Emacs +rumhacken, das ganze per avr-gcc kompilieren und dann mit avrdude brennen +(Arduino-Entwicklungsumgebung macht nichts anderes). Hier der Code von der +Sketch: + +~~~ c +// include the library code: +#include + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(2, 3, 8, 9, 10, 11); +int count=0; + +void setup(){ + // set up the LCD's number of rows and columns: + lcd.begin(16, 2); + // initialize the serial communications: + Serial.begin(9600); + lcd.print("Send serial data"); +} + +// Scrolling *very* long messages results in error (line jumping etc). +// This function *should* prevent it +void overflow() { + // Autoscroll schonmal aus, brauchen wir dann bis zum "neuen" 32. Chr eh nicht mehr + lcd.noAutoscroll(); + + // lass den Nutzer noch zu Ende lesen + delay(1500); + + // Loeschen und zur ersten Position + lcd.clear(); + + // Counter wieder auf 0 + count=0; +} + +void loop() +{ + // when characters arrive over the serial port... + if (Serial.available()) { + // wait a bit for the entire message to arrive + delay(100); + // clear the screen + lcd.clear(); + // read all the available characters + while (Serial.available() > 0) { + // display each character to the LCD + count++; + lcd.write(Serial.read()); + + // wechsele in die naechste Zeile + if(count==16) lcd.setCursor(0,1); + + // Autoscroll an und warten bis der Nutzer die Displayanzeige gelesen hat + if(count==32) { lcd.autoscroll(); delay(2000); } + + //Und los geht das scrollen + if(count>=32) delay(500); + + // Bevor der Pufferueberluf (?) beginnt + if(count==54) overflow(); + } + lcd.noAutoscroll(); + } + count = 0; +} +~~~ + +Ich hab hier ein 16x2 LCD mit meiner Anschlussbelegung. Wie das +LCD-Objekt initialisiert werden muss, steht auch auf der arduino.cc Seite.
Wenn +ihr ein 4-zeiliges LCD habt, könnt ihr den Quelltext natürlich anpassen. + +Bash-Skript: + +~~~ bash +#Pfad zur Text-Datei anpassen +FILE="/opt/lampp/htdocs/test/text.txt" +LASTMOD=`stat -c '%Y' $FILE` + +while [ 1 ]; do +NOWMOD=`stat -c '%Y' $FILE` +if [ $NOWMOD -ne $LASTMOD ]; then + LASTMOD=$NOWMOD; + cat $FILE > /dev/ttyUSB0 + #Zusätzliches Nachrichtenlog + cat $FILE >> /home/user/arduino/newslog.txt + echo >> /home/user/arduino/newslog.txt +fi +~~~ + +Das Bash Skript prüft die Text-Datei, in die per PHP die Nachrichten geschrieben +werden.
Das Bash-Skript muss evtl noch ergänzt werden, sodass zu Beginn der +/dev/ttyUSB-Port mit einer Baud von 9600 initialisiert wird. Dazu wird der +Befehl stty -F /dev/ttyUSB0 9600 als erstes ausgeführt werden. Falsche +Baud führt jedenfalls zu falschen Zeichen auf dem Display Zuletzt noch die +Seiten für den Webserver:
Das Formular: + +~~~ html +
+ +

Nachricht eingeben:
+

+ + + +
+~~~ + +Und die Seite, die die Eingaben verarbeitet: + +~~~ php += 43 ) { + echo "Nachricht zu lang!"; + exit; +} + +if ( strlen($text) == 0 ) { + echo "Keine Nachricht eingegeben!"; + exit; +} + +if ( $text <> "" ) { + $handle = fopen ( "text.txt", "w" ); + fwrite ( $handle, $text ); + fclose ( $handle ); + echo "Nachricht wurde gespeichert: " . $text; + exit; +} +?> +~~~ + +Es empfiehlt sich ggf, das Formular mit einem Captcha zu schützen oder andere +Schutzmaßnahmen einzubauen. Ansonsten kann es passieren, dass man zugespammt +wird. Mit curl ist es z.B. möglich, Daten an Formulare (sowohl POST als auch +GET) zu senden. Sollte ich in meiner Eile was vergessen haben, sagt Bescheid +^^
Hier noch ein Bild vom Ergebnis. Hier kann man auch gleich etwas von der +Verkabelung erkennen, der +Pin ist 5V, der -Pin logischerweise auf GND + + +ArduLCD + -- cgit v1.2.3