Was kann die Ursache sein, das von OpenWrt kein Internet Zugriff möglich ist?
Was kann die Ursache sein, das von OpenWrt kein Zugriff auf das Internet möglich ist?
Checken ob: ping wenzlaff.de geht, wenn nicht,
dann in der /etc/confi/network Datei überprüfen,
ob der folgende Eintrag mit dem DNS und Gateway vorhanden ist:
config interface ‚lan‘
option ifname ‚eth0‘
option type ‚bridge‘
option proto ’static‘
option ipaddr ‚192.168.2.122‘
option netmask ‚255.255.255.0‘
option ip6assign ’60‘
option dns ‚xxx.xxx.xxx.xxx‘ # IP-Adresse aus Router eintragen
option gateway ‚192.168.2.1‘
Das Netzwerkkabel muss am Router angeschlossen werden und nicht an der Netzwerkkarte des Rechners.
Wie kann auf den TL-WR703N Fhem installiert werden?
Dazu muss erst einmal mehr Speicher per USB-Stick bereitgestellt werden.
Dann gem. dieser Anleitung vorgehen.
Also kurz:
1. OpenWrt installieren
2. USB-Stick vorbereiten und an WR703N anschließen
3. Perl installieren
4. Fhem aus Subversion ausschecken
5. mit make install Fhem erstellen
6. nun kann Fhem gestartet werden in /usr/src/fhem
mit: perl /opt/fhem/fhem.pl /opt/fhem/fhem.cfg
7. im Browser http://192.168.2.122:8083/fhem (ip anpassen) aufrufen, es kommt:
8. Autostart für Fhem einrichten. Datei /etc/init.d/fhem
anlegen mit folgenden Inhalt:
#!/bin/sh /etc/rc.common
# FHEM Init Script
START=11
STOP=15
start() {
# cd /usr/src/fhem/
# perl /opt/fhem/fhem.pl /opt/fhem/fhem.cfg
# auf neue Verz. angepasst:
cd /etc/src/fhem/
perl /etc/src/fhem/fhem.pl /etc/src/fhem/fhem.cfg
}
stop(){
echo "shutdown" | nc localhost 7072
}
Dann noch die /etc/init.d/fhem
Datei ausführbar machen und aktivieren.
chmod +x /etc/init.d/fhem
/etc/init.d/fhem enable
/etc/init.d/fhem start
Nach reboot
startet nun Fhem automatisch.
9. Fhem weiter konfigurieren
10. z.B. den ersten Plot anzeigen. Dazu z.B in das Verzeichnis /fhem/www/log die eine Test-Datei temp.log mit Messwerten kopieren. In der /etc/src/fhem.cfg
diese Anpassungen machen:
define Test dummy
define FileLog_Test FileLog /usr/src/fhem/log/temp.log Test
attr FileLog_Test logtype temp4:Plot,text
attr FileLog_Test room Test
define wlTest weblink fileplot FileLog_Test:temp4:CURRENT
attr wlTest room Test
Und schon wird dieses schöne Diagramm angezeigt. Es ist noch nicht viel, da die Testdaten nur ein paar Zeilen sind:
Wie kann für den TL WR703N ein externer USB-Stick als Speicher verwendet werden?
Wenn der TL WR703N mit OpenWRT 12.09 Attitude Adjustement und Luci 0.11.1 geflasht wurde, bleibt nur noch ca. 870 KB an Speicher frei.
Wie kann nun ein externer USB Stick an den WR703 angeschlossen werden?
1. USB-Stick vorbereiten
Der USB Stick muss vorher, mit ext4 an einen anderen Rechner formatiert werden, da der Speicher dafür nicht ausreicht.
Ich habe einen 8 GB Stick mit einer Partitionen wie folgt erstellt:
8 GB Stick, ext4, primäre Partition, aktive – /dev/sda1
unter Windows erstellt und formatiert mit dem Partition Wizard Home Edition wie in beschrieben.
2. Firmware flashen
Neue Firmware über Luci GUI geflasht, auf 12.09 r36088, da die „alte“ Probleme machte.
3. USB-Stick einbinden
Wie in beschrieben vorgegangen.
Dann gem. der Anleitung:
ls /dev/sd*
opkg update
opkg install kmod-usb-storage
opkg install kmod-fs-ext4 block-mount
# ab jetzt ist auch in Luci der Tab vorhanden und zwar unter System – Mount Points
mkdir -p /mnt/sda1
mount /dev/sda1 /mnt/sda1
mkdir -p /tmp/cproot
mount – -bind / /tmp/cproot
tar -C /tmp/cproot -cvf – . | tar -C /mnt/sda1 -xf –
umount /tmp/cproot
umount /mnt/sda1
vi /etc/config/fstab
# in der config mount Sektion
option target /
option enabled 1
reboot
df # zeigt den Speicher an
Speicher ist nun genug vorhanden. Das kann auch unter Luci angezeigt werden:
Und die gemachten Änderungen aus der /etc/config/fstab
werden so angezeigt:
Dreamliner (B-787) Mindmap
230 V Schalter für Arduino hat ein neues Zuhause gefunden
Airport Hannover (HAJ) Mindmap
Gute Entwurfsmuster Mindmap
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.
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
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.
TFtp Mindmap
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
Wie schreibe ich die Daten mit minicom aus der der seriellen USB-Schnittstelle in eine Datei unter Mac OS X?
Das Terminal-Programm minicom muss erste installiert werden.
Dann muss minicom auf den USB Port eingestellt werden.
Aufruf:
sudo minicom -s
Dann unter Konfiguration – Einstellungen zum seriellen Anschluss den USB Port angeben z.B. bei mir:
/dev/tty.usbserial-A501U7KD
Geschwindigkeit auf: 9600
Unter Konfiguration – Dateinamen und Pfade die Verzeichnisse für Download und Upload setzen.
Und alles speichern mit Konfiguration – Speichern als „dfl“
Minicom beenden.
Als User starten mit:
minicom -C logdateiname.txt
Ab sofort wird die ganze Ausgabe in die logdateiname.txt geschrieben.
Beenden kann man die Ausgabe mit:
Ctrl+A und dann Q
Hier ein Beispiel mit den gelesenen Luftdruck und Temperatur Parametern über den USB Port:
Lebenserwartung Mindmap oder „Satisfaction with life“
Wie kann ein TP-Link WR703N geöffnet werden?
Adrenalin bei Vorträgen nutzen – Mindmap
Lampenfieber bei Vorträgen – Die Folgen – Mindmap
CP 2102 – USB to TTL Konverter eingetroffen!
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:
Von unten:
Anschlussbelegung:
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:
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?