arduino – Bytespeicher https://bytespeicher.org Hackspace Erfurt Fri, 27 Sep 2019 22:33:42 +0000 de-DE hourly 1 [Veranstaltungshinweis] Hackathon #HYE19 an der Fachhochschule Erfurt https://bytespeicher.org/2019/veranstaltungshinweis-hackathon-hye19-an-der-fachhochschule-erfurt/ Fri, 27 Sep 2019 22:33:42 +0000 https://bytespeicher.org/?p=3584 [Veranstaltungshinweis] Hackathon #HYE19 an der Fachhochschule Erfurt weiterlesen ]]> Vom 25. bis 27. Oktober 2019 findet wieder der Hackathon „Hack Your Environment“ an der Fachhochschule statt, veranstaltet von der Fachschaft Informatik.

Bei „Hack your Environment“ bist Du Teil eines bunt gemischten Teams aus Studierenden, Schülerinnen und Schülern ab der 8. Klasse, dessen Ziel es ist, innerhalb eines Wochenendes eine tolle Idee zu entwickeln. Doch nicht nur das Schreiben von Code spielt eine Rolle, sondern auch die Projektumsetzung miteinander. Euch erwartet ein spannendes Event mit vielen netten Leuten, leiblicher Verpflegung und ausreichend Kaffee. Auf die besten Teams warten attraktive Preise. Du wirst zu Beginn des Events einem Team zugeteilt, sammelst Ideen und setzt diese innerhalb der vorgegebenen Zeit in Code um.

Es gibt kostenfreie Verpflegung inklusive gemütlichem Grillabend, eine vielfältige Umgebung und spannende Möglichkeiten eurer Kreativität freien Lauf zu lassen. Unterstützung durch Studenten und Dozenten der FH-Erfurt und attraktive Preise: Raspberry Pis und Tablets. Die Anmeldung ist kostenlos.

]]>
Start der Smart Home User Group Erfurt https://bytespeicher.org/2019/start-der-smart-home-user-group-erfurt/ Sat, 05 Jan 2019 01:07:40 +0000 https://bytespeicher.org/?p=3489 Start der Smart Home User Group Erfurt weiterlesen ]]> Der Bytespeicher organisiert ein Treffen für Hausautomatisierungs-Interessierte, um dem Wissensaustausch und die Entwicklung eigener, neuer Projekte zu fördern. Das Treffen wird am 15. Januar um 18 Uhr stattfinden.

Neben der Möglichkeit, Projekte und Themen in einem Vortag zu präsentieren soll das Treffen vor allem den Anwendungen und Problemen gewidmet werden, Smart Home Installationen besser, sicherer und einfacher zu machen.

Ziel ist 2019 eine Smart Home User Group aufzubauen, die regelmäßige Treffen und Veranstaltungen organisiert, Workshops anbieten kann und Kompetenzen und Erfahrungen aufbaut. Der Bytespeicher steht für quelloffene und Hersteller unabhängige Infrastrukturen. Als Beispiel können wir zeigen, wie eine 10-€-WLAN-Steckdose aus dem Baumarkt vom chinesischen Cloud-Anbieter befreit und per quelloffener Firmware Tasmota per MQTT über eigene Apps gesteuert werden kann.

Wir werden auf dieser ersten Veranstaltung zunächst über den Aufbau dieser User Group sprechen, sodass sich alle Teilnehmer mit ihren Interessen kennenlernen können. Ihr könnt eure eigenen Geräte mitbringen und präsentieren.

Weitere Informationen werden im Wiki zusammengestellt. Die Anmeldung ist auch über die Plattform Meetup.com möglich.

]]>
Signalübertragung durch den Körper https://bytespeicher.org/2016/signaluebertragung-durch-den-koerper/ https://bytespeicher.org/2016/signaluebertragung-durch-den-koerper/#comments Sun, 16 Oct 2016 12:10:10 +0000 https://bytespeicher.org/?p=2792 Signalübertragung durch den Körper weiterlesen ]]> Datenübertragung durch die Luft ist längst Standard. Was gibt es da alles: WLAN, Bluetooth, NFC/RFID.
Nachteil, Daten die auf diesem Wege übertragen werden, können abgefangen werden, ohne dass der Sender oder Empfänger dies bemerken können. Aber zurück zum Kabel? Auch nicht das Wahre.

Vor einiger Zeit kam in den Medien immer mal wieder das Thema auf die Daten durch den Körper übertragen zu können. So habe ich das vor kurzem in einem Online-Artikel gelesen und mir gedacht, dass man dafür kein Wissenschaftler sein muss, um sowas selbst aufzubauen, die Daten zu übertragen und dann die Signale wieder auslesen zu können.

Zuallererst ein wenig Biologie und Physik. 😉
Der menschliche Körper besteht aus Zellen, diese wiederum aus Molekülen und diese wiederum aus Atomen. Nun kommt der Schritt in die Physik, ein Atom besteht aus Protonen und Elektronen. In der Elektronik sind die Elektronen das was wichtig ist. 😉
Der menschliche Körper hat im Grunde, aus elektrotechnischer Sicht, zwei Eigenschaften: er ist ein Widerstand und eine Kapazität zugleich. Der Widerstand liegt für gewöhnlich zwischen 1 MOhm und 2 kOhm. Diese große Differenz ergibt sich aus der Hydration des Körpers, des Alters usw. Die Kapazität liegt zwischen 100 und 200 pF.
Wenn man den menschlichen Körper nun als elektronisches Bauteil ansieht, wird es recht einfach, denn der Körper ist dann nur eine Leitung mit hohem Widerstand.

Also habe ich mir einen Arduino geschnappt und einen Programmcode geschrieben, der „SOS“ als Morsecode in Form von HIGH und LOW Signalen ausgibt. Das wäre die Transmitterseite, nun braucht es noch eine Empfängerseite. Denn bei hohen Widerständen kommt es zu einigen Verlusten. Der Arduino gibt 5V an den Ausgängen aus, durch den Körper (Hand zu Hand) verliert der Körper knapp 3V (gemessen), also 60% der Spannung.
Die Empfängerseite besteht aus einer Transistorverstärker-Schaltung und einer LED. Das schwache Signal wird von den Transistoren verstärkt und mit der Spannung des Akku erreichen diese dann eine verstärkte Spannung, welche hoch genug ist, um die LED durchzuschalten bzw. die Signale optisch auszugeben.

Das wars dann auch, nun ging es daran das Ganze zu testen, und da hat sich die Laura als Probandin zum Testen zur Verfügung gestellt, dafür ein großes Danke. 😉

Wie ihr sehen könnt geht das weiße Kabel in Lauras Hand. Das Signale durchquert ihren Körper und verlässt die andere Hand und geht dann zur Verstärkerschaltung und lässt die LED simultan mit der LED auf dem Arduino aufblinken.

Wissenschaft ist fantastisch, nicht wahr? 😉

Als nächste Experimentierphase ist geplant, dass ein anderer Arduino das Signal auslesen und das Wort was zuvor in den Körper geschickt wird, dekodiert und am Computer ausgeben wird. 🙂

P.S.: das Experiment war zu keinem Zeitpunkt gefährlich, da bei Lauras Körperwiderstand nur ein Strom von 20µA fließen konnte und bei 5V keine Gefahr besteht. Zur Info: erst ab 500µA, also das 25-fache des vorhanden gewesenen Stromes, ist es möglich diesen überhaupt empfinden zu können. Für weitere Informationen zur Sicherheit und Gefahren durch hohe Spannungen und Strömen hilft die VDE und entsprechende Wikipedia-Artikel.

]]>
https://bytespeicher.org/2016/signaluebertragung-durch-den-koerper/feed/ 3
Compiling QM lib examples on arduino https://bytespeicher.org/2015/compiling-qm-lib-examples-on-arduino/ Wed, 23 Dec 2015 13:55:39 +0000 https://bytespeicher.org/?p=1208 Compiling QM lib examples on arduino weiterlesen ]]> If you, like I did, want to use a graphical tool to enter state machines and, like I did, get convinced to use proper event driven software development when programming your Arduino to get the best battery life possible and are, like I am, way to lazy to program all that event queues and dispatching yourself you may, like I did, stumble upon the Quantum Leap Framework. It sounds good on paper, being open source but still rather professional and mature.
The framework is portable to Arduino devices and there even is a special release for Arduino and da rather good application note serving as a tutorial.

If it would just work.

If you are, like I am, owner of an Arduino Leonardo, your first build of the example project „blinky“ from within the QM Modelling Tool will greet you with a lot of fails.

Here is how I solved it:

TIMER2_COMPA_vect, TCCR2A and others not declared

warning: 'TIMER2_COMPA_vect' appears to be a misspelled signal handler [enabled by default]
error: 'TCCR2A' was not declared in this scope
...

and other undefines symbols like TCCR2A and WGM01.

These are predefined symbols for registers, constants and functions set in the AVR library to control the interrupt system, timers and watchdogs of the CPU.
The Leonardo is based on the ATmega32u4 CPU in contrast to the UNO (ATmega328P) or the Mega (ATmega1280). This also means that the interrupt system is quite different.

Board Digital Pins Usable For Interrupts Timers
Uno, Nano, Mini, other 328-based 2, 3 2x8bit (0,2), 1x16bit (1)
Mega, Mega2560, MegaADK 2, 3, 18, 19, 20, 21 2x8bit (0,2), 4x16bit (1,3,4,5)
Micro, Leonardo, other 32u4-based 0, 1, 2, 3, 7 1x8bit (0), 2x16bit (1,3), 1x10bit@64MHz (4)
Zero all digital pins, except 4 5x16bit, 3x24bit
Due all digital pins 9x32bit

So the Leonardo has only one 8bit timer/counter and as the indexing is fixed, it is missing Timer2.
There are architecture-independent library functions in the Arduino library to configure them for PWM duty cycles and other things, but most example code I found (and so does the QM example) writes to the hardware registers directly.

As Timer2 is missing, we need to replace all symbol names to reference Timer0 instead. Luckily, they use a clear naming scheme where we only need to replace the number literal 2->0 (eg. TCCR2A->TCCR0A).

BEWARE! Timer0 is internally used for functions like delay(), millis() and is even re-configured by libraries like ’servo‘. If you use these in your code, you have to switch to a 16bit counter like Timer1, which is probably more complicated due to different configuration.

ASSR not declared

error: 'ASSR' was not declared in this scope
error: 'AS2' was not declared in this scope

Same reason as above. The ATmega32u4 is missing the possibility to use an external clock input for the timers. So switching between internal and external is not needed. The register ASSR does not exist. Comment it out.

USB_VID not declared


error: 'USB_VID' was not declared in this scope
error: 'USB_PID' was not declared in this scope

When building from inside the QM Modelling Tool, all Arduino libs will get compiled from source again. The USB lib will fail due to undefined symbols. The USB Vendor- and Product-ID seems not to be set in the code, but supplied as pre-processor define when calling the compiler. The Android IDE handles this for you, the QM tool does not.
Open the External Tool Settings, select the ‚build‘ tool and add „USB_PID=0x0036 USB_VID=0x2341“ (with the quotes) to the end of the ‚Argument‘ field.

__cxa_guard_release link error

undefined reference to __cxa_guard_acquire'
undefined reference to
__cxa_guard_release'

This function was once implemented as a stub in the Arduino libs. Instead a compiler switch is now used to circumvent its usage. Again, the Arduino IDE handles this for you, the QM tool does not.
The g++ compile switch is -fno-threadsafe-statics (you can find it in the platform.txt definition file in the <Arduino_Program_Dir>\hardware\arduino\avr folder).
You need to add it to the switches already defined for the QM Tool in the file <Arduino_Project_Dir>\tools\scripts\build_avr.tcl. Search for set CXXFLAGS, line 102 in my file.

This will make the example compile and that is where I am now. So I can’t guarantee that it actually ‚works‘ by now or even that it ‚works as intended‘. Stay tuned for an update.

(article image CC 3.0 BYSA from arduino.cc)

]]>
Bytespeicher Notizen Kalenderwoche 51 https://bytespeicher.org/2015/bytespeicher-notizen-kalenderwoche-51/ Sun, 20 Dec 2015 22:59:32 +0000 https://bytespeicher.org/?p=1167 Bytespeicher Notizen Kalenderwoche 51 weiterlesen ]]> Hallo Welt! In den Bytespeicher Notizen veröffentlichen wir regelmäßig Themen, die uns auf Treffen  und in den verschiedenen Kommunikationskanälen in den zurückliegenden Wochen beschäftigt haben (Schlagworte und Links).  Und hier ist die aktuelle Ausgabe, gültig  für die 51. Kalenderwoche des Jahres 2015.

Die Vorweihnachtswoche war wieder etwas ruhiger. Nur Petr ist mit seiner Projektarbeit aktiv.  Aber der 32C3 erscheint am Horizont und lässt auf viele neue Themen und Ideen hoffen.

[Veranstaltungen der letzten Woche]

  • Open Space am Mittwoch

[Veranstaltungen der nächsten Woche]

  • Open Space am Mittwoch mit
    • Arbeiten mit der Linux Shell
    • Radio Bytespeicher Redaktionskonferenz
  • Foodhacking am Sonntag
  • Congress Everywhere (32C3) ebenfalls am Sonntag

[BLOG]

[WIKI]

[IRC]

[HANGOUTS]Essen

  • Steve kocht (wieder)

  • Jenaer Hacker (und viele andere) Ziel von staatlicher Twitter-Spionage? (kubieziel.de)

  • Kostenlose Finite-Element-Simulation, wenn man seine Daten veröffentlicht (heise.de)
    Versuch 1
  • Arduino im SD-Karten Format, drahtlos bestromt mit Qi (hackaday.io)
  • Petr druckt ein Schaltungsgehäuse, doch der Drucker spinntVersuch 2
  • Der zweite Versuch gelingt
  • Es gibt inzwischen 200GB SD-Karten für unter 100 Euro (amazon.de)

  • Mal wieder ein LogovorschlagLogo

[TWITTER]

[MAILINGLISTE]

  • Es gibt eine deutschlandweite Mailingliste für Hackerspaces (lists.hackerspaces.org)
  • Self-Pingbacks im Blog können mit internen Links umgangen werden (sind aber vielleicht doch nützlich)

[FREIFUNK]

  • Globally Distributed Sensor Net Monitors Air Quality and Radiation (hackaday.com)

[SDR]

[MUSIK]

In eigener Sache: Wer Input für die Notizen hat, kann diese jederzeit in das Pad https://pad.technikkultur-erfurt.de/p/newsletter_input kippen. Es wird jeweils sonntäglich geleert und ggfs. hier verwendet.

Hangouts ist ein quasi-privater Chat, ich brauche also für die Veröffentlichung von Zitaten und Bildern jeweils eure Freigabe. Wer mir eine generelle Freigabe erteilt, spart mir dabei viel Arbeit und sich die Nachfragen.

Feedback darf gerne immer hier in den Kommentaren gegeben werden. Vor allem zum Thema Menge und Auswahl der Topics.

]]>
Kinder MP3-Player (Teil 2) https://bytespeicher.org/2015/kinder-mp3-player-teil-2/ https://bytespeicher.org/2015/kinder-mp3-player-teil-2/#comments Fri, 04 Dec 2015 21:45:33 +0000 https://bytespeicher.org/?p=922 Kinder MP3-Player (Teil 2) weiterlesen ]]> Die Entwicklung geht voran. Eigentlich wollte ich ein hübsches Video zur weiteren Arbeit veröffentlichen, aber schon beim Einlöten der Kontakte auf das Arduino-Shield versagte die Aufnahme. Also fürs Erste weiter in Textform.

Stecker LötenWie schon erwähnt habe ich die mitgelieferten Steckerleisten und zusätzlich einige von Steve geschnorrte Buchsenleisten (um weiter von oben Zugriff die GPIOs zu haben) auf das Arduino-Audio-Shield gelötet. Dabei auch gleich der erste Anfängerfehler: Lötet man das ‚frei Hand‘, wird es kaum exakt rechtwinklig zum Board und passt dann nicht in die Buchsen des Arduino. Nächstes mal stecke ich die Stiftleisten vorher schon in die Arduinobuchsen und löte dann.

Beim Löten übersehen wurden die 3 Löt-Jumper, die auf dem Shield die serielle Schnittstelle von den normalen GPIOs zu den neuen Extra-Pins des Leonardo umschaltet. Das hat das Ausprobieren noch ein paar Tage verzögert.

Die Lautsprecher wurden erst einmal ‚fliegend‘ an den Verstärkerausgang gekabelt. Als Stromversorgung diente nur der USB-Port des PCs, es stehen also nur 500mA und damit bei 5V keine 2x3Watt Ausgangsleistung zur Verfügung.

Einige Probe-MP3s wurden auf die SD-Karte gespielt. Laut Anleitung des Audio-Shields werden nur 8+3 Zeichen lange Dateinamen unterstützt. Ob dies eine SW- oder HW-Einschränkung ist, weiss ich noch nicht. Zur Probe wurden sowohl lange als auch kurze Dateinamen verwendet.

Grob wurde dem Tutorial des Herstellers gefolgt, um dem Gerät erste Töne zu entlocken. Die Arduino Entwicklungsumgebung macht es einem aber extrem leicht. Die nötige Bibliothek kann über den Bibliotheksmanager direkt gesucht (nach „VS1053“, dem Audio-Chipnamen, suchen), heruntergeladen und installiert werden. Mit dabei sind Example-Programme, die bei richtig benannten Dateien auf dem Stick schon direkt Musik spielen.

Noch habe ich keine Buttons angeschlossen, der Test wurde also über die serielle Konsole (in der Arduino Entwicklungsumgebung) gesteuert. Eine Besonderheit des Leonardo ist, dass er sich bei jedem Reset neu als USB-Gerät anmeldet. Bis die serielle Konsole wieder Kontakt hat, hat man unter Umständen schon die ersten Loggings verpasst. Eine eingestreute Warteschleife auf die verbundene Konsole hilft hier. Es empfiehlt sich ein Timeout, damit das Gerät trotzdem auch stand-alone ohne PC funktioniert.

Serial.begin(9600);
while (!Serial)
    if (millis() > 5000)
        break;

Mit langen Dateinamen kommt das System dahingehend zurecht, als dass es die Daten trotzdem liest und abspielt. Beim Listing werden sie aber verkürzt z.B. als LANG~001.mp3 dargestellt. Damit kann ich leben.

Unglücklicherweise sind sowohl die SD-Bibliothek als auch die Audioplayer-Bibliothek eher rudimentär und nicht gut aufeinander abgestimmt. Die eine liefert Filehandles, die andere erwartet Dateinamen. Um mir zusätzliche Abfragen und String-Handling in C (brrrrr!) zu ersparen, habe ich kurzerhand die Player-Bibliothek ein wenig erweitert, um auch Filehandles zu unterstützen.

Nächster Schritt ist die Erweiterung der Software über den Beispielstand hinaus und der Anschluss der Buttons und Regler.

]]>
https://bytespeicher.org/2015/kinder-mp3-player-teil-2/feed/ 1
Kinder MP3-Player https://bytespeicher.org/2015/kinder-mp3-player/ https://bytespeicher.org/2015/kinder-mp3-player/#comments Tue, 24 Nov 2015 17:10:01 +0000 https://bytespeicher.org/?p=882 Kinder MP3-Player weiterlesen ]]> EinzelteileEin weiteres Projekt momentan in Bearbeitung ist ein Kinder MP3-Player für meinen Sohn.

Inspiration ist der „hörbert„,  ein Holz-Kofferradio, das im inneren von SD-Karte MP3s abspielt und von außen mit bunten Knöpfen gesteuert werden kann. Der „hörbert“ kann auch als Bausatz gekauft werden, ist aber auch da noch ordentlich teuer.

„Wie kompliziert kann es schon sein?“ war schon der Anfang von vielen vorfristigen Enden.

Für die angefragte Funktionalität (SD, MP3, GPIOs, Batteriebetrieb) gab es 2 alternative Herangehensweisen. Man hätte einen günstigen RaspberryPi verwenden können, der alles mitbringt und sich bequem programmieren lässt. Allerdings kommt die Einfachheit zum Preis eines ganzen Betriebssystems, dass immer erst mal gebootet werden möchte und dann Strom verbraucht.

Stattdessen habe ich einen Arduino Leonardo sowie ein Adafruit Music Maker Shield bestellt. Das Shield bringt mp3 Decoding und SD-Steckplatz mit und hat als Bonus einen 2x3W Verstärker an Board. Die GPIOs sollten für die Knöpfe reichen.

Lediglich die Energieversorgung ist noch offen. 5V erreiche ich mit 4 AA Akkus nur gerade so.  Am liebsten wäre mir ein Laden im Gerät. Li-Po oder Blei sind mir im Kindergerät nichts. Möglicherweise verbaue ich einen Li-Ion aus einer Powerbank, der hätte schon 5V und könnte mit handelsüblichen USB-Ladegeräten geladen werden.

Die Bauteile warten noch verpackt auf den ersten Test. Ich suche noch meinen USB-Serial-Adapter zum Programmieren. Das Gehäuse wollte ich an Großeltern outsourcen, vielleicht gibt es aber einen 3D-gedruckten Prototypen. Bis Weihnachten wird es aber wohl leider nichts mehr.

]]>
https://bytespeicher.org/2015/kinder-mp3-player/feed/ 3