25 Jahre Innovation: Ein Blick auf die Reise unseres Programmierblogs – mit Jubiläumsumfrage

Liebe Leserinnen und Leser,

wir stehen Heute am beeindruckenden Meilenstein des 25-jährigen Bestehens unseres Blogs – ein Vierteljahrhundert, in dem wir die Welt der Programmierung gemeinsam erkundet haben. Würde mich über die Beantwortung von nur 3 Fragen freuen. Dafür habe ich diese kurze Umfage gemacht.

Es scheint wie gestern, dass wir unsere digitale Reise begannen, und doch haben wir zusammen eine Ewigkeit an Wissen und Erfahrungen gesammelt.

Von den ersten Zeilen Code in Java bis hin zu den komplexen Netzwerken der Blockchain haben wir jede Entwicklung nicht nur beobachtet, sondern auch aktiv gestaltet. Unsere Plattform hat sich zu einem Treffpunkt für Gleichgesinnte entwickelt, die eine Leidenschaft für Technologie teilen und den unersättlichen Drang haben, Neues zu lernen und zu erschaffen. „25 Jahre Innovation: Ein Blick auf die Reise unseres Programmierblogs – mit Jubiläumsumfrage“ weiterlesen

Günstige Web-Cam ESP32-CAM Installation mit Arduino IDE

Ein ESP32-Cam ist ein Entwicklungsboard, das auf dem ESP32-Chip von Espressif basiert und eine Kamera enthält. Der ESP32 ist ein kleiner, aber leistungsfähiger Mikrocontroller, der WLAN und Bluetooth-Konnektivität unterstützt und auf einer Dual-Core-CPU läuft. Durch das Hinzufügen einer Kamera auf dem Board kann der ESP32-Cam Bilder und Videos aufnehmen und über WLAN oder Bluetooth übertragen. Und das ganze kostet keine 10 Euro inkl. Versand aus der Bucht.

Vorderseite mit Kamera:

Das ESP32-Cam ist ein beliebtes Entwicklungsboard für Projekte, die eine drahtlose Übertragung von Bildern oder Videos erfordern, wie zum Beispiel Überwachungskameras, Baby-Monitore, Roboter oder Drohnen. Es gibt auch eine große Community von Entwicklern und Bastlern, die das ESP32-Cam-Board nutzen, um innovative und kreative Projekte zu realisieren. Mein Teil ist vor ein paar Tagen angekommen.

Die Kamera kann entfernt werden, wenn die schwarzen Kabelverbindung nach oben geklappt wird: „Günstige Web-Cam ESP32-CAM Installation mit Arduino IDE“ weiterlesen

20 Jahre vs. 10 Jahre WordPress Blog – wenzlaff.de – 1226 Beiträge

Vor 20 Jahren ging wenzlaff.de ans Netz, wie hier schon mal berichtet.

Aber genau heute am 28.3.2009 also vor 10 Jahren wurde der erste WordPress Blog Eintrag hier auf wenzlaff.info veröffentlicht.

Wie die Zeit vergeht.

1226 Beiträge sind hier zu finden.

Zu Themen wie Java, Eclipse, Raspberry Pi, ESP32, SDR, Linux, Arduino und Planespotting … „20 Jahre vs. 10 Jahre WordPress Blog – wenzlaff.de – 1226 Beiträge“ weiterlesen

ESP-32S NodeMCU Development Board 2.4GHz WiFi+Bluetooth

Aus der Bucht eingetroffen, ESP32 ESP-32S NodeMCU Development Board 2.4GHz WiFi+Bluetooth Dual Mode.

Der ESP32 hat 2,4-GHz-WLAN und Bluetooth in Low Power 40-nm-Technologie.

Der Stromverbrauch ist mit 56 mA sehr gering. Die Leistungsaufnahme mit dem Blink Testprogramm liegt bei 283 mW. Die Vorderansicht mit der Antenne oben und dem USB Anschluss unten: „ESP-32S NodeMCU Development Board 2.4GHz WiFi+Bluetooth“ weiterlesen

Arduino Nano Programm und Video: Anzeige der 100 am meisten verwendeten Wörter in Englisch

Dies Programm zeigt die 100 am meisten verwendeten englischen Wörte an. Diese 100 Wörter machen die Hälfte alles geschriebenen in Englisch aus. Allein die ersten 25 Wörter aus der Liste, sind schon ein Drittel alles gedruckten in englisch.

Hier C++ Programm mit der Wortliste und einen Fortschrittsbalken, unter Verwendung der U8gLib. „Arduino Nano Programm und Video: Anzeige der 100 am meisten verwendeten Wörter in Englisch“ weiterlesen

Eclipse IDE für die Arduino C++ Entwicklung

Vor ein paar Tagen hatte ich hier beschrieben, wie ein Arduino mit der Arduino IDE geflasht wird. Als Java-Entwickler will man am Besten alles in Eclipse machen. Also auch die Arduino-Programmierung. Das geht auch mit dem Eclipse C++ IDE for Arduino 2.0. Für den Anfang ist wohl die Arduino IDE etwas einfacher zu bedienen. Aber mit dieser Anleitung geht es auch in ca. 1 Stunden. Also los …

Über den Eclipse Marketplace installieren:

Das dauert etwas …

Dann ein Arduino Projekt anlegen: „Eclipse IDE für die Arduino C++ Entwicklung“ weiterlesen

Arduino Nano mit OLED Display „Don’t give up!“ Ansteuerung

Hatte noch ein OLED Display liegen. Das wollte ich mal an einen Arduino anschließen. An einem Raspberry Pi geht auch. Da es nur 4 Drähte sind, ist es mit der u8glib schnell gemacht.

Einfach Plus (VDD) an Plus (VDD, Pin4) und Minus (GND) an Minus (GND, Pin2) und SDA an A4, Pin 8 und SCK an A5, Pin 7.

Achtung nicht Plus mit Minus vertauschen. Das hatte ich für ein paar Minuten gemacht, und hatte mich gewundert, warum das Display kochend heiß wird und keinen Text anzeigt. Es hat es aber überstanden, ist also sehr robust!

Hier die Ausgabe eines einfachen „Dont give up!“ Text der nach 2 Sekunden angezeigt wird, nachdem OK, Start… beendet wurde:

Dont give up!

Es geht aber auch einen Menge mehr, wie diese Gallerie zeigt.
„Arduino Nano mit OLED Display „Don’t give up!“ Ansteuerung“ weiterlesen

Digistump AVR Boards (Digispark) für die Arduino IDE ergänzen für ATTINY85 und Raspberry Pi

Wie können die Menü Einträge, für die Digispark AVR Boards in der Arduino IDE ergänzt werden? Evl. fehlen diese Einträge im Menü: „Werkzeuge – Board

Dann in dem Menü: „Arduino – Einstellungen“ auf den Button „Zusätliche Boardverwalter-URLs“ klicken und die folgende URL ergänzen:

URL:

Nun noch unter dem Menüeintrag: „Werkzeuge – Board – Board Verwalter …“ den Digistump AVR Boards auswählen und installieren:

Schon sind die Menüeinträge vorhanden. Dann kann der ATTINY85 ja geflasht werden.

ATTINY85 General Micro USB Development Board für Arduino und Raspberry Pi

Für 1,28 Euro inkl. versand aus China eingetroffen …

… und von hinten:

Hier ein paar tech. Daten vom Anbieter.

Dann mal an dem Raspberry Pi anschließen, aber nicht mehr heute. Oder andere Ideen?

Wie kann der ESP8266 mit dem Raspberry Pi verwendet werden?

Wie kann der ESP8266 mit dem Raspberry Pi verwendet werden. Das Teil gibt es für ein paar Euros in der eBucht. Habe nun auch so eine Platine liegen. Dazu erst einmal eine Mindmap (ESP8266) erstellt, für den schnellen Überblick.

Es gibt schon viele Seiten zu dem Thema. Welche sind wichtig? Was kann man da mit machen? Ideen?

Oder doch besser am Arduino verwenden?

Vorschläge gern als Kommentar.

Arduino: Drahtlos senden von Geräuschen (analog oder digital)

Es können mit diesen günstigen Modulen Geräusche analog oder auch digital drahtlos übertragen werden.

Die VirtualWire Library kann für die Ansteuerung verwendet werden. Hier ein Beispiel mit dem Arduino der Raspberry Pi würde natürlich auch gehen.

Tech. Daten

Empfänger
1.Product Model: MX-05V
2.Operating voltage: DC5V
3.Quiescent Current: 4MA
4.Receiving frequency: 315 MHZ (in Deutschland nicht zugelassen, dort z.B. 433 Mhz verwenden)
5.Receiver sensitivity:-105DB
6.Size: 30 * 14 * 7mm
7.External antenna: 32CM single core wire, wound into a spiral

Sender
1.Product Model: MX-FS-03V
2.Launch distance :20-200 meters (different voltage, different results)
3.Operating voltage :3.5-12V
4.Dimensions: 19 * 19mm
5.Operating mode: AM
6.Transfer rate: 4KB / S
7.Transmitting power: 10mW
8.Transmitting frequency: 315 M (in Deutschland nicht zugelassen, dort z.B. 433 Mhz verwenden)
9.An external antenna: 25cm ordinary multi-core or single-core line
10.Pinout from left → right: (DATA; VCC; GND)

Mikrofon
LM393 oder KY-038

Das Sender Programm, das in den Arduino geflasht werden muss:

Der ganze Aufbau des Senders:
Arduino Sender
Der Arduino:
Arduino Sender
Das Micro im Detail:
Arduino Sender

Das Empfänger Programm in den Empfänger Arduino flashen. In dieser Version werden die Daten nur in der Konsole ausgegeben. Cool…

Arduino Empfänger

Arduino Empfänger

Reichweite:
Bisher habe ich die Daten nur von einem Raum in den anderen übertragen. Weiter Tests folgen…

Arduino: Neue Arduino IDE Version 1.6.2 veröffentlicht

Die neue Arduino IDE steht nun seit ein paar Tagen kostenlos zum Download für Mac OS X, Linux und Windows bereit.
Logo

Hier ein paar Highlights:

So sieht die IDE nach dem Start aus:

Arduino IDE 1.6.2
Arduino IDE 1.6.2

Also, dann mal los.

Arduino: Wie können RFID Tags eingelesen werden?

Wie können RFID-Tags eingelesen werden?

Das geht ganz einfach mit einem Arduino Nano und ein 125 kHz EM4100 RFID card reader module (RDM630 UART) das keine 5 Euro inkl. Versand kostet.

Die Belegung des RFID-Readers:
RDM630
Die PINs:

Spec RDM630: Baud Rate: 9600bps,N,8,1, Frequenze: 125 kHz, DC 5V (+-5%), <50 mA, Empfangsbereich: 2 bis 5 cm, Checksum card 10byte Data mit XOR So sieht der Aufbau aus: EM4100

Es sind nur 3 Verbindungen zwischen dem Arduino und dem RDM630 nötig und zwar:

Dann folgende Software RFIDReader.ino auf den Arduino laden, die den Vorteil hat, das die serielle Konsole frei bleibt.

Compile mit der Arduino 1.5.8 IDE.

Arduino IDE
Arduino IDE

Einstellung in der IDE:
Board Arduino Nano, Prozessor Arduino ATMega328, Programmer USBtinyISP
Serielle Konsole auf 57000 Baud stellen
und einen RFID-Tag an die Antenne halten:

Serielle Konsole Arduino NANO RFIDReader
Serielle Konsole Arduino NANO RFIDReader

Es wird eine Reichweite von ca. 4 cm erreicht. Wenn die Antenne unter der Schreibtischplatte montiert wird, kann der RFID-Tag sicher gelesen werden, wenn der Tag oben drauf liegt (Anwesendheitskennung).

Habt ihr eine Idee, wie die Reichweite vergrößert werden kann?
Oder einen guten Anwendungsfall?

Wie kann der JeeLink (=JeeNode) mit neuen Sketch für Fhem auf den Raspberry Pi geflasht werden?

Im JeeLink ist der Demo Version 5 Sketch wie schon mal hier beschrieben.

Wie hier beschrieben, kann der JeeLink mit neuen Sketchen für PCA301, Lacrosse, Energy Count 3000, JeeLabs RoomNode und anderen geflasht werden.

Dazu die 36_LaCrosse-LaCrosseITPlusReader.zip
und die master.zip laden.

Beide in ein Verzeichnis ohne Sonderzeichen auspacken. Also das Verzeichnis jeelib-master in jeelibmaster umbenennen. Sonst kommt es zu Fehlern. Hier mal die Verzeichnisstruktur: „Wie kann der JeeLink (=JeeNode) mit neuen Sketch für Fhem auf den Raspberry Pi geflasht werden?“ weiterlesen

Der neue Arduino-Clone ist heute eingetroffen: „Schokuino“ ( neue essbare Nanotechnologie )

20140225-090947.jpg

Der neue Arduino-Clone „Schokuino“ wurde mir heute von den lieben Kollegen zum Abschied überreicht. Das Arduino-Logo mit den 2 x + gefällt mir auch besser als das Orginal. Welche CPU da wohl verbaut wurde? Bahlsen-CPU aus Hannover oder eine von Dauerbrot.de? Der Kuchen inkl. Leiterbahnen hat auch sehr lecker geschmeckt.

Da bleibt nach 7 Jahren kein Auge trocken 😉 Danke … keeping in touch …

Wie kann eine Kommando Shell (bitlash) für Arduino verwendet werden?

Es gibt für Arduino eine Kommando Shell mit Namen Bitlash. Auch eine Anleitung ist auf Hompage des Entwicklers zu finden.

Hier die nötigen Schritte, um ein Arduino (Nano) damit zu bestücken.

Zuerst einmal die neueste Version (2.0) von bitlash installieren, dazu in das Libraries Verzeichnis von Arduino wechseln und per git die Neueste Version holen:

cd ~/Documents/Arduino/Libraries
git clone https://github.com/billroy/bitlash.git

oder auch als ZIP und dann auspacken.

Dann die Arduino IDE (1.5.2) starten und über das Menü: Datei-Beispiele-bitlash-Bitlashdemo das Beispiel Sketch laden, compilieren und auf den Arduino hochladen.

Wenn dann der Serielle-Monitor aufgemacht wird, ist es bei mir mit dem Nano abgestürzt.
Deshalb habe ich die Geschwindigkeit auf 9600 geändert. Hier das angepasste Beispiel Sketch:

/**
twbitlash.pde Thomas Wenzlaff http://www.wenzlaff.de Version 1.0 vom 31.08.2013

        Beispiel einen einfachen Kommandointerpreter für den Arduino Nano.
        
        Basis Beispielprogramm von:

Bitlash is a tiny language interpreter that provides a serial port shell environment
for bit banging and hardware hacking.

This is an example demonstrating how to use the Bitlash2 library for Arduino 0015.

Bitlash lives at: http://bitlash.net
The author can be reached at: bill@bitlash.net

Copyright (C) 2008-2012 Bill Roy

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
**/

#include "bitlash.h"

void setup(void) {

// Initialisierung und setzen der Baud Rate 57000 bricht beim Nano ab
// Startet den Kommandozeileninterpreter und führt den startup Makro aus
initBitlash(9600);
}

void loop(void) {
runBitlash();
}

und dann läuft dieses Beispiel.

Nach öffnen des Seriellen Monitors in der IDE (1.5.2) erscheint:

Bitlash Startbildschirm
Bitlash Startbildschirm

Alle Kommandos lassen sich mit help anzeigen:
Bitlash 2.0 Online Hilfe
Bitlash 2.0 Online Hilfe

Wie dann die erste Funktion erstellt wird, steht hier.
Kurz, um die LED 13 blinken zu lassen folgende Befehle eingeben:

function toggle13 {d13 = !d13;}
function startup {pinmode(13,1); run toggle13,1000;}
startup
boot

Funktionen lassen sich mit ls anzeigen:
Erstes Beispiel
Erstes Beispiel

Weitere Doku hier.

Berechnung der zu erwartenden Größe der Arduino Log Datei

Ausgehend von einem Eintrag, den der Arduino mit 2 Temp. Sensoren erzeugt, in dieser Form:

11-11-2013_11:11:11 Arduion.Temperatursensor_1 T: 20.12

Die Länge ist 55 Zeichen lang.
Bei einer Messung alle 10 Sekunden mit 2 Sensoren ergibt das
55 x 6 x 2 = 660 pro Minute
das sind am Tag
660 x 60 x 24 = 959.400
im Monat
959.400 x 30 = 28.512.000
im Jahr
28.512.000 x 365 = 10406880000
das sind dann in MB
10.406.880.000 / 1.000.000 = 10406,88 MB
also in GB
10.406,88 MB / 1000 = 10,40688 GB im Jahr.

Das ist zuviel für einen 8 GB USB-Stick.
Wenn die Messzeit um den Faktor 100 verlängert wird, also alle 10 x 100 = 1000 Sekunden (alle 16 Minuten), müsste im Jahr
10,40688 GB im Jahr / 100 = 0,1040688 GB im Jahr anfallen,
das sind dann pro Monat:
0,1040688 GB / 12= 0,0086724 GB oder
0,1040688 GB / 1000 = 104,0688 MB pro Monat

Wie kann mit Arduino die serielle Ausgabe über TCP ausgegeben werden auf dem TP-WR703N Gerät?

Der Arduino (NANO) wird per USB an den TP-WR703N (12.09) angeschlossen. Wie kann nun von einem anderen Rechner darauf per TCP (Telnet) zugegriffen werden?

Dazu erst socat auf den WR703 installieren mit

opkg update
opkg install socat

Socate (Version 1.7.2.1) kann bidirektionale Verbindungen aufbauen. Es verbindet den USB Port mit dem TCP Port.
Dann das folgende Script erstellen start-temp.sh, und evl noch die Schnittstelle DEV und den PORT und BAUD anpassen.

#!/bin/bash

DEV=/dev/ttyUSB0
PORT=1234
BAUD=9600

while true; do
if [ -e $DEV ]
then
socat tcp-l:$PORT,reuseaddr,fork file:$DEV,nonblock,raw,echo=0,waitlock=/var/run/tty,b$BAUD
else
sleep 2
fi
done

und ausführbar machen mit

chmod +x start-temp.sh

Dann kann das Script mit ./start-temp.sh & im Hintergrund auf dem WR703N gestartet werden.

Nun kann von einem anderen Rechner mit
telnet ip-adresse 1234 die Ausgabe ausgegeben werden.

Will man das das Script autom. beim hochfahren des WR703N startet, muss es noch in der /etc.rc.local eingetragen werden (aber vor exit 0). Das geht auch über Luci:

Luci Startskripte
Luci Startskripte

Evl. muss der USB Port einmal reconnected werden.

Arduino Mega Projekt: Ansteuerung der besuchten Urlaubsorte auf einer Weltkarte mit Arduino Mega mit LEDs

Wollte lange schon mal, zur Erinnerung an schöne Urlaube eine Markierung auf der Weltkarte anbringen wo wir waren. Als IT-Berater muss es dann aber schon eine Micro-Computer gesteuerte Version sein. Ein roter Punkt reicht da nicht.

Also hier das Ergebnis als Video, und weiter unten dann die Details:

Also so sieht die Weltkarte von vorne aus:

Die Weltkarte in einem Bilderrahmen
Die Weltkarte in einem Bilderrahmen

Hier die Rückseite. Ein Arduino Mega wurde verwendet, weil der bis zu 60 Ausgänge hat, die einzeln angesteuert werden können.

Die ganze Rückseite, es fehlen noch die analogen Eingänge die als digitale Ausgänge geschaltet werden
Die ganze Rückseite, es fehlen noch die analogen Eingänge die als digitale Ausgänge geschaltet werden

An jedem besuchten Urlaubsort wurde ein 3 mm Loch gebohrt und eine LED reingesteckt. An einen Pin der LED wurde jeweils noch ein 220 Ohm Widerstand angelötet. Ja, es sieht etwas wild aus:

An jede LED kommt noch ein Widerstand
An jede LED kommt noch ein Widerstand

Eine Nahaufnahme des Arduino Mega.

Weltkarte5

Ein Reed-Kontakt habe ich noch an einem Interrupt-Eingang des Arduino geschaltet, so kann man von vorne mit einem Magnet über den Null-Meridian fahren, und schon leuchten unsere TOP 3 Urlaubsorte (Hawaii, Tokio, Seychellen) permanent.

Reed-Kontakt für die TOP 3 Urlaubsorte
Reed-Kontakt für die TOP 3 Urlaubsorte

Hier das C-Programm, welches in den Arduino geflasht wird und die Ansteuerung durchführt.

Das ist die 1. Version, da werde ich noch einiges ergänzen.
„Arduino Mega Projekt: Ansteuerung der besuchten Urlaubsorte auf einer Weltkarte mit Arduino Mega mit LEDs“ weiterlesen

Arduino MEGA 2560 Board R3 16U2 – Quicktest am USB Hub unter Mac OS X

Hochladen eines Testprogramms über einen „alten“ USB-Hub. Als Board muss in der IDE „Arduino Mega 2560 …“ ausgewählt werden und die Serielle-Schnittstelle muss ausgewählt werden. Die werden am Mac OS X nur angezeigt wenn das Gerät angeschlossen ist. Es ist auch eine andere wenn der USB-Hub angeschlossen ist, bei mir z.B. dev/cu.usbmodemfd1421, der ist aber auf jedem System anders.

Der Arduino Mega 2560
Der Arduino Mega 2560

Der ATMega2560 R3 ist ein Microcontroller auf Basis des ATmega2560 mit diesen technischen Daten:
Microcontroller ATmega2560
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 54 (of which 14 provide PWM output)
Analog Input Pins 16
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 256 KB of which 8 KB used by bootloader
SRAM 8 KB
EEPROM 4 KB
Clock Speed 16 MHz

Der Arduino Mega am USB-Hub
Der Arduino Mega am USB-Hub

Flashen des TP-Link TL-WR703N mit OpenWrt über den seriellen Port und einrichten der Luci Gui

Durch das flashen des TP-Link TL-WR703N mit einem Image unbekannter Herkunft,
hatte das schöne Teil leider seinen Geist aufgegeben.

Es kann aber wiederbelebt werden, aber nur über die Serielle-Schnittstelle die nicht nach draußen geführt ist.
Also musste ich doch die drei Kontakte nach draußen führen. Nach dem öffnen des Geräts, und freilegen der Platine,
sind die drei Kontakte (TX, RX, Masse) schnell lokalisiert, dank der guten Fotos auf http://forums.openpilot.org/blog/52/entry-92-unbrick-wr703n-wifi-router/

Eine gute Anleitung ist hier zu finden

http://wiki.villagetelco.org/index.php?title=Building_a_Serial_Port_for_TL-WR703N
und auch
http://www.bitzof.me/doku.php?id=electronics:wr703n:unbricking

Das größte Problem dabei ist an die kleinen Kontakte, passende Drähte anzulöten. Die Kontakte sind wirklich nur ca. 0,4 mm klein. Gefühlt 0,0000001 mm.
Ein Kollege hatte noch den passenden Draht, der wirklich dünner als ein Haar ist und konnte mir einen Meter überlassen.

Also die Brille gesucht und es hat beim ersten Versuch geklappt.

Das war der komplizierteste Teil.

Um den Mac zu schonen, habe ich das flashen der neuen Firmware auf einen alten Windows-Rechner gemacht.

Was war nötig alles nötig?

1. Den seriellen to USB Adapter cf20… an den WR-703N anschließen:

PIN 4 TX an WR TX
PIN 5 RX an WR RX
PIN 6 GND an WR GND

Achtung! Nicht RX an TX und TX an RX .so wie sonst, dann klappt es nicht und das Terminal Fenster bleib schwarz.

2. Treiber für den cf20 von geladen.
Der Treiber richtet einen virtuell COM Port ein. Port in den Systemeinstellungen auf 115200/8/N/1/XON-XOFF stellen.

3. Putty laden und seriell Einstellungen auf: 115200/8/N/1/XON-XOFF

4. TFtp Server von laden und neue OpenWrt Firmware (openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin) in das Verzeichnis kopieren.
Habe den langen Namen noch gekürzt, in firm.bin.

Install Verzeichnis des TFTP32 Server
Install Verzeichnis des TFTP32 Server

Einstellungen des TFTP Servers
Einstellungen des TFTP Servers

5. Rechner IP Adresse setzten 192.168.1.100. Unter Netzwerkverbindungen-Lan-Verbindung-Allgemein-Eigenschaften-Internetprotokoll-Eigenschaften-Folgende-IP-Adresse verwedne-IP-Adresse.
Wichtig: Verbindung vom Rechner zum WR703N per Ethernet nicht vergessen!

6. Nach verbinden des WR-703N hat man max. 1 Sekunde zeit, im Terminal „tpl“ und Enter einzugeben um auf dem Prompt zu kommen.
Beim dritten Versuch hat es bei mir geklappt. Wenn hornet> angezeigt wird, hat man gewonnen.

7. Dann folgende Befehle eingeben:

hornet> tftpboot 0x81000000 openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin
hornet> erase 0x9f020000 +0x3c0000
hornet> cp.b 0x81000000 0x9f020000 0x3c0000
hornet> bootm 9f020000

flash

Lösch Befehl
Lösch Befehl

und warten bis alles abgeschlossen ist. Dann Enter drücken und der OpenWrt-Prompt mit OpenWrt-Logo erscheint.

8. Ethernet verbinden. Mit Telnet 192.168.1.1 verbinden und wenn der OpenWrt Prompt kommt,
das Passwort setzen mit passwd. Ab dann ist kein Telnet mehr möglich. Neu verbinden mit SSH.

9. Eine andere statische IP vergeben, die im Namensraum vom DNS Server des Internet Routers liegt vergeben.

10. Per SSH anmelden und das Netzwerk einstellen: /etc/config/network

config interface 'lan'
option ifname 'eth0'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.2.123' # feste statische Adresse des Routers
option netmask '255.255.255.0'
option ip6assign '60'
option dns '8.8.8.8' # Adresse des Google dns, oder anderen
option gateway '192.168.2.1' # Adresse des gateway

reboot
Ethernet Kabel an Router anschließen.
ping wenzlaff.de
muss erfolgreich laufen

11. Dann die Web-Gui luci installieren
opkg update
opkg install luci luci-i18n-german luci-theme-bootstrap

12. Web Server starten
/etc/init.d/uhttpd start
und damit es beim nächsten start automatisch läuft:
/etc/init.d/uhttpd enable

13. Im Browser die feste statische Adresse aufrufen und anmelden mit User: root und den vergebenen SSH Passwort anmelden.

Bildschirmfoto 2013-07-11 um 21.53.08

Bildschirmfoto 2013-07-11 um 21.53.45

5 V 4-Phase Stepper Motor und Driver Board ULN2003 für Arduino

So, der 4-Phasen-Stepp_Motor ist schon mal gekommen für das nächste Projekt.
Diese techn. Daten soll er haben:

  • Spannung: DC5V
  • 4-Phase
  • Reduction Ratio: 1/64
  • Step Torque Angle: 5.625°/64
  • DC Resistance: 200Ω ± 7% (25℃)
  • Insulation Resistance: >10 MΩ (500 V)
  • Dielectric Strength: 600V AC / 1mA / 1 s
  • No-load Pull in Frequency: >600 Hz
  • No-load Pull out Frequency: >1000 Hz
  • Pull in Torque: >34.3 mN.m (120 Hz)
  • Detent Torque: >34.3 mN.m
  • Temperature Rise: < 40 K (120 Hz)
  • Geräusch: < 40dB (120 Hz, No load, 10 cm)
  • Größe der Platine: ca. 29 ×21 mm

20130709-205443.jpg

Arduino Nano Relais Ansteuerung (Relay test)

Mit dem Arduino kann leicht auch 230 Volt geschaltet werden. Dazu kann ein Relais an den digitalen Pin 7 und + VCC und – Masse verbunden werden.

In diesem Video kann man hören und sehen, wie das Relais alle 5 Sekunden an und wieder aus geschaltet wird.

Folgendes Sketch ist in den Arduino Nano hochzuladen.
/*
TWRelais

Dieses Programm schaltet das Relais alle 5 Sekunden an und aus.

Thomas Wenzlaff 02.07.2013

Das Relais wir an den digitalen Pin 7 angeschlossen und VCC 5 V und Masse verbunden

Größe des compilierten Programm: 1108 Byte
*/

// An Pin 7 ist eine Relais angeschlossen,
const int RELAIS = 7;

// Die setup Methode wird nur einmal ausgeführt und bei reset
void setup() {
// Digitaler PIN 7 mit der RELAIS ist ein Ausgang
pinMode(RELAIS, OUTPUT);
}

// Die Endlosschleife
void loop() {
digitalWrite(RELAIS, HIGH); // RELAIS anschalten
delay(5000); // 5s warten
digitalWrite(RELAIS, LOW); // RELAIS ausschalten
delay(5000); // 5 Sekunden warten
}

Luftdrucksensor BMP085 von Bosch inkl. Temperatursenor für den Arduino

Der BMP085 ist ein Drucksensor mit hoher Präzision und ultra-niedrigem Stromverbrauch für den I2C-Bus.

Technische Daten:

  • Druckbereich: 300 – 1100 hPa (9000 Meter über dem Meeresspiegel bis -500 m)
  • Versorgungsspannung: 1.8V – 3.6 V (VDDA). 1.62V – 3.6 V (VDDD)
  • LCC8 Paket: bleifreie keramische Carrier Package (LCC)
  • Geringe Leistungsaufnahme: 5 μA im Standard-Modus
  • Hohe Präzision: Low-Power-Modus, die Auflösung von 0.06 hPa (0,5 m)
  • Hohe linearen Modus mit einer Auflösung von 0.03 hPa (0,25 m)
  • Mit Temperatur-Ausgang
  • I2C-Schnittstelle
  • Temperaturkompensation
  • Reaktionszeit: 7,5 ms
  • Standby-Strom: 0.1 μA
  • Beseitigt die Notwendigkeit für einen externen Taktgeber
  • Größe: 21 x 15 x 10 mm

Die Platine mit dem BMP085 (auf GY-65) ist nur 1,5 cm x 2 cm klein.
Von oben:

Luftdrucksensor von vorne
Luftdrucksensor von vorne

Von unten:

Luftdrucksensor für Arduino
Luftdrucksensor für Arduino

Anschlussbelegung:

BMP085 Luftdrucksensor
BMP085 Luftdrucksensor

Software:
Folgende beiden Libs von Adafruit downloaden und in das Lib Verheichnis kopieren. Evl. noch die Verzeichnisnamen umbenennen, da keine Sonderzeichen vorhanden sein dürfen.

1. Adafruit Unified Basis Sensor Driver

2. Adafruit Unified Drucksensor BMP085 Driver

Diesen Sketch TWDruck hochladen:


#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085.h>

/* 
TWDruck Version 1.0 vom 06.07.2013

Thomas Wenzlaff http://www.wenzlaff.de

Programm Größe: 12296 Bytes

Dies Programm liest den Luftdrucksensor und den Temperatursensor endlos aus,
und gibt die Werte über die Serielle-Schnittstelle mit Leerzeichen getrennt aus.
Kommentare beginnen mit #.

z.B.
# Luftdruck und Temperatur Messprogramm
# TWDruck 1.0 vom 06.07.2013
# http://www.wenzlaff.de
# Sensor: BMP085
# Treiber Version: 1
# Unique ID: 10085

# [Luftdruck in hPa] [Temperatur in Grad Celsius] [Höhe in Meter] 

1022.59 26.84 -80.49
1022.73 26.84 -81.69
1022.63 26.85 -80.83
1022.51 26.85 -79.80
...

Anschluss an den Nanu Arduino:

Das BMP085 an:
    SCL   an A5
    SDA   an A4
    VDD   Plus 3.3V DC
    Masse Minus
    
*/
const long MESSINTERVAL = 5000; // Messintervall in milli Sekunden
const long SENSOR_ID = 10085; // eindeutige Sensor ID
String KOMMENTAR = "# "; // Kommentar präfix
String TRENNER = " "; // Trennzeichen der Werte

Adafruit_BMP085 bmp = Adafruit_BMP085(SENSOR_ID);

void anzeigeDetails(void)
{
  sensor_t sensor;
  bmp.getSensor(&sensor);
   
  Serial.println(KOMMENTAR +"Luftdruck und Temperatur Messprogramm");
  Serial.println(KOMMENTAR +"TWDruck 1.0 vom 06.07.2013");
  Serial.println(KOMMENTAR +"http://www.wenzlaff.de");
  Serial.print (KOMMENTAR + "Sensor: "); Serial.println(sensor.name);
  Serial.print (KOMMENTAR + "Treiber Version: "); Serial.println(sensor.version);
  Serial.print (KOMMENTAR + "Unique ID: "); Serial.println(sensor.sensor_id);
  delay(500);
}

void setup(void)
{
  Serial.begin(9600);
  
  if(!bmp.begin())
  {
    Serial.print(KOMMENTAR + "Kein BMP085 gefunden ... Prüfe I2C Adresse!");
    while(1);
  }
  
  anzeigeDetails();
}

void loop(void)
{
  sensors_event_t event; // neues Sensor ereignis
  bmp.getEvent(&event);
 
  if (event.pressure)
  {
    Serial.print(event.pressure); // Luftdruck in hPa
    Serial.print(TRENNER);
    
    /* Calculating altitude with reasonable accuracy requires pressure *
     * sea level pressure for your position at the moment the data is     *
     * converted, as well as the ambient temperature in degress           *
     * celcius.  If you don't have these values, a 'generic' value of     *
     * 1013.25 hPa can be used (defined as SENSORS_PRESSURE_SEALEVELHPA   *
     * in sensors.h), but this isn't ideal and will give variable         *
     * results from one day to the next.                                  *
     *                                                                    *
     * You can usually find the current SLP value by looking at weather   *
     * websites or from environmental information centers near any major  *
     * airport.                                                           *
     *                                                                    *
     * For example, for Paris, France you can check the current mean      *
     * pressure and sea level at: http://bit.ly/16Au8ol                   */
     

    float temperature;
    bmp.getTemperature(&temperature);

    Serial.print(temperature); // Temperatur in Grad Celsius
    Serial.print(TRENNER);

    /* Then convert the atmospheric pressure, SLP and temp to altitude */
    /* Update this next line with the current SLP for better results */
    float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA; // 1013.25F Average sea level pressure is 1013.25 hPa
   
    Serial.print(bmp.pressureToAltitude(seaLevelPressure,
                                        event.pressure,
                                        temperature)); // Höhe in Meter
    Serial.println();
  }
  else
  {
    Serial.println(KOMMENTAR +"Sensor error");
  }
  delay(MESSINTERVAL);
}

Mit diesen Daten, wird dieses Diagramm erzeugt:

Luftdruck und Temperatur Diagramm mit  gnuplot
Luftdruck und Temperatur Diagramm mit gnuplot

Die gerade Linie im Diagramm, rührt daher das der PC sich automatisch in den Standby-Betrieb schaltet und damit die Serielle-Verbindung nicht mehr abgefragt wird.
Der dritte Wert der Daten ist die Höhe, die ändert sich nicht gross und wird deshalb nicht im Diagramm dargestellt. Wie wird bei gnuplot die 3. Y-Achse erzeugt? Geht das überhaupt?

Gnuplot der Temperaturen im Gefrierfach und Kühlschrank.

Zuerst wurde der Temperatursensor in das Gefrierfach und dann in den Kühlschrank gelegt (grüne Kurve). Der zweite Sensor, wurde außerhalb des Kühlschranks platziert (die rote Kurve).

Temperaturverlauf im Kühlfach und Gefrierteil des Kühlschranks
Temperaturverlauf im Kühlfach und Gefrierteil des Kühlschranks

Folgende gnuplot Datei ist dafür nötig:

set title "Temperaturverlauf im Kühlschrank" font "Times,18"
set ylabel "Temperatur in Grad/Celsius"
set xlabel "Messzeitpunkt am 26.06.13"
set xdata time # x-Achse wird im Datums/Zeitformat skaliert
set timefmt "%Y.%m.%d_%H:%M:%S" # Format Zeitangaben yyyy.mm.dd_hh:mm:ss
set format x "%H:%M" # Format für die Achsenbeschriftung
set yrange [-19:26] # die y-Achse geht von:bis
set zeroaxis # eine Null Linie

# Maximum und Minimum anzeigen
max_y = GPVAL_DATA_Y_MAX
set label 1 gprintf("Maximum = %g Grad/Celsius", max_y) at "2013.06.26_17:00:00",24 font "Times,12"
min_y = GPVAL_DATA_Y_MIN
set label 2 gprintf("Minimum = %g Grad/Celsius", min_y) at "2013.06.26_17:25:00",-15 font "Times,12"

set terminal png
set output "temperaturverlauf-kuehlschrank.png"plot "temperatur-kuehlschrank.txt" using 1:2 title "Zimmer Sensor" with lines, "" using 1:3 title "Sensor im Kühlschranki" with lines

set terminal aqua
replot

Diese Grafik liegen diese, mit dem Arduino gemessenen Werte zugrunde. Die Aussetzer in der Aufzeichnung rühren daher, das sich der MacBookAir nach einiger Zeit in den Sleep-Modus schaltet, dann kommen keine Daten aus der USB-Schnittstelle an. Da muss man sich dann noch was einfallen lassen.

Vergleich zweier Temperatursensoren DS18B20 mit gnuplot

Eine kurze Messung mit zwei an das Arduino-Board angeschlossene Temp.-Sensoren DS18B20 ergibt diese Daten.

Daraus läßt sich mit diesen gnuplot Befehlen

set title "Temperaturverlauf"
set ylabel "Temperatur in Grad/Celsius"
set xlabel "Messzeitpunkt"
set xdata time # x-Achse wird im Datums/Zeitformat skaliert
set timefmt "%Y.%m.%d_%H:%M:%S" # Format Zeitangaben yyyy.mm.dd_hh:mm:ss
set format x "%H:%M" # Format für die Achsenbeschriftung
set yrange [26:28] # die y-Achse geht von:bis
set terminal png
set output "temperaturverlauf.png"
plot "temperatur.log" using 1:2 title "Innen Sensor" with lines, "" using 1:3 title "Aussen Sensor DS18B20" with lines

diese Grafik plotten:

gnuplot zweier Temperatursensoren
gnuplot zweier Temperatursensoren

Die Sensoren sind mit +-0,5 Grad Celsius bei -10 bis +85 Grad angegeben.
Die Differenz beider Werte ergibt mit diesen gnuplot Befehlen:

set title "Temperatur Differenz zweier Sensoren"
set ylabel "Temperatur Differenz in Grad/Celsius"
set xlabel "Messzeitpunkt"
set xdata time # x-Achse wird im Datums/Zeitformat skaliert
set timefmt "%Y.%m.%d_%H:%M:%S" # Format Zeitangaben yyyy.mm.dd_hh:mm:ss
set format x "%H:%M" # Format für die Achsenbeschriftung
set yrange [-1:1] # die y-Achse geht von:bis
set zeroaxis # die 0 Linie
set terminal png # erzeugt eine PNG Datei
set output "differenztemperaturverlauf.png" # Name der PNG Datei
plot "temperatur.log" using 1:($2-$3) title "Temperatur-Differenz" with lines
set terminal aqua # wieder auf Terminal
replot # nochmal in Terminal plotten

folgendes Ergebnis.

Differenz zweier Temperaturmessungen
Differenz zweier Temperaturmessungen

Mit welchem gnuplot Befehl bekomme ich eine horizontale Linie bei 0,5 und -0,5 Grad hin, die mit min und max Beschriftet ist? Ok, hier die Lösung.

Per Java über die Serielle-Schnittstelle auf den Arduino zugreifen mit dem Mac OS X 10.8.4

Wie kann nun über die Serielle-Schnittstelle per Java auf den Arduino mit dem Mac zugegriffen werden?

Wie in dieser Anleitung beschrieben vorgehen.

1. Auf den Arduino den „Hallo Welt“ Sketch laden.

void setup(){
Serial.begin(9600);
}
void loop(){
Serial.println("Hello world");
delay(1000);
}

2. Den RXTX-Treiber in Version >= 2.2pre2 laden. Die 1.7 Version macht mit Mac OS X 10.8.4 Probleme, es kommt die Meldung, das der Port belegt ist.
3. Die zwei Dateien aus dem entpackten Archiv librxtxSerial.jnilib und RXTXcomm.jar in das /Library/Java/Extensions Verzeichnis kopieren
4. Die RXTXcomm.jar dem Classpath des Projektes hinzufügen.
5. Im Testprogramm den PORT_NAMES „/dev/tty.usbserial-A501U7KD“ entsprechend setzen. Im Arduino-IDO Menü Werkzeuge-Serieller-Port schauen, wie er genau heißt.
6. SerialTest starten. „Hello World“ wird auf den Konsole ausgegeben.
„Per Java über die Serielle-Schnittstelle auf den Arduino zugreifen mit dem Mac OS X 10.8.4“ weiterlesen

Temperatur Messung mit dem DS18B20 und Arduino Nano

Habe heute einen One-Wire DS18B20 Temperatursensor erhalten und ihn mit dem Arduino Nano verbunden. Der Messbereich des Sensors beträgt von -55°C bis +125°C bei ± 0,5°C Genauigkeit.

Mit den OneWire 2.2 und Dallas Temperature Control Library 3.7.2 Bibliotheken ist die
Temperaturmessung schnell zusammengebaut.

Hier das Foto des Aufbaus mit Schaltplan:

Arduino Nano Temp. Messung via 1-Wire
Arduino Nano Temp. Messung via 1-Wire

Das Programm (8038 byte) gibt zuerst die eindeutige ID des Sensors aus, (28-A2-9D-8A-04-00-00-2B) und dann jede Sekunde den neuen Messwert:


/* 
TWTemp Version 1.0 vom 14.06.2013 

8038 bytes

Thomas Wenzlaff http://www.wenzlaff.de

Temperature Sensor DS18B20 an Digitalen Port Pin 2 wie folgt verbunden
Links=Masse, 
Mitte=Data, 
Rechts=+5V, 
3300 to 4700 Ohm Widerstand von +5V nach Data.

Es wird erst die Adresse des 1-Wire-Device ausgegeben und dann wird die Temperaturmessung gestartet.

*/

/* Benötigte Bibliotheken importieren */
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2 /* Digitalport Pin 2 definieren */

OneWire ourWire(ONE_WIRE_BUS); /* Ini oneWire instance */

DallasTemperature sensors(&ourWire);/* Dallas Temperature Library für Nutzung der oneWire Library vorbereiten */

void setup()
{
delay(1000);
Serial.begin(9600);
Serial.println("Temperatur Messprogramm");
Serial.println("TWTemp 1.0 vom 14.06.2013");
Serial.println("http://www.wenzlaff.de");
delay(1000);

sensors.begin();/* Inizialisieren der Dallas Temperature library */

adresseAusgeben(); /* Adresse der Devices ausgeben */

Serial.print("Starte Temperatur abfragen ...");
}

void loop()
{
Serial.println();

sensors.requestTemperatures(); // Temp abfragen

Serial.print(sensors.getTempCByIndex(0) );
Serial.print(" Grad Celsius");
}

void adresseAusgeben(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  Serial.print("Suche 1-Wire-Devices...\n\r");// "\n\r" is NewLine
  while(ourWire.search(addr)) {
    Serial.print("\n\r\n\r1-Wire-Device gefunden mit Adresse:\n\r");
    for( i = 0; i < 8; i++) {
      Serial.print("0x");
      if (addr[i] < 16) {
        Serial.print('0');
      }
      Serial.print(addr[i], HEX);
      if (i < 7) {
        Serial.print(", ");
      }
    }
    if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!\n\r");
      return;
    }
  }
  Serial.println();
  ourWire.reset_search();
  return;
}

Um die höchstmögliche Genauigkeit des Sensors auszulesen ist im Setup noch dieser Befehl nötig, damit dauert die Messung aber etwas länger: „Temperatur Messung mit dem DS18B20 und Arduino Nano“ weiterlesen

Arduino Software für Mac OS X installieren

So vorgehen, wie in der Arduino-Anleitung beschrieben.

1. Virtual Com Device Treiber 2.2.18 von FTDICHIP laden und wie in der Anleitung beschrieben installieren.
Für Mac OSX 10.8.3 und 10.8.4 ist es nötig die FTDIUSBSerialDriver_10_4_10_5_10_6_10_7.mpkg zu installieren. Nun muss das Arduino Board an den USB-Port angeschlossen werden. Wird es nicht angeschlossen sind die installierten Treiber nicht im /dev Verzeichnis sichtbar.
Dann im Terminal im Verzeichnis /dev überprüfen ob die *usbserial* Treiber installiert wurden.

2. Entwicklungsumgebung downloaden und installieren. Starten.

3. Seriellen Port unter dem Menü: Tools – Serieller Port – /dev/cu.usbserial-A5001U7KD auswählen.

4. Beispiel auswählen und überprüfen und auf den Arduino uploaden.