China Post – USB Charger Doctor

USB Charger Doctor
USB Charger Doctor in Aktion

USB Port und Geräte prüfen

Den USB Charger Doctor gibt es bereits ab 2€. Ihn schaltet man zwischen Gerät und Netzteil, Ladegerät bzw. USB-Buchse am PC. Der Charger Doctor zeigt per LED-Anzeige Strom und Spannung des angeschlossenen Gerätes an. Den Charger Doctor gibt es in zahlreichen Varianten. Mit dem Doctor kann man die Funktion und Leistungsfähigkeit von Kabeln und Ladegerät checken. Auf jeden Fall einfacher als mit einem Multimeter. Die Ladeströme von Smartphone und Tablett lassen sich ebenso leicht prüfen. Auch der Stromverbrauch von Arduino und Raspberry Pi lässt sich schnell checken.
Für den Preis kann man nicht viel falsch machen.

Typische Werte eines Charger Doctor

  • Spanung: 3V-7.5V
  • Strom: 0A-2.5A
  • Genauigkeit: 1%



RGB LED mit dem Arduino steuern – NeoPixel Library von Adafruit

DSC00147RGB LED mit dem Arduino

Nichts macht in der Elektronik mehr Spaß als mit Leuchtdioden zu experimentieren.

Von der letzten Makerfaire lagen noch ein paar RGB LED Ringe von Watterott rum. Dazu gesellte sich ein RGB LED-Strip aus China.
Beide haben je RGB-LED einen WS8212 Treiber Chip.
Der WS8212 regelt die Helligkeit der 3 LED#s und damit die Farbe.
Alle Controller mit ihren LED’s hängen hintereinander. Der Ring/Strip funktioniert wie ein großes Schieberegister. Ein Arduino braucht daher nur einen Ausgang je LED-Strip, um diese Armada von LED´s zu steuern.
Diese Strips nicht mit den LED Bändern verwechseln wo man nur Farbe und Helligkeit des gesamten Bandes steuern kann.

Bei mehreren Strip´s könnte ein Arduino Uno Probleme mit seiner Rechenleistung bekommen. Dann ein anderes Board mit höherer Taktung wählen.

Anschluss am Arduino

  • 5 Volt Betriebsspannung und Pegel für den Strip
  • Nur kurze Strips können über den Arduino mit Spannung versorgt werden.
  • Mehrere Strips sind mit einem Arduino steuerbar.
  • Je Strip ein Digitalpin am Arduino für Kommunikation erforderlich.
  • Die Betriebsspannung bei längeren Strips mit 1000 µF Kondensator absichern.
  • >= 300  Ohm Widerstand zwischen Arduino Pin und Strip vorsehen.

Neben Strip´s gibt es auch RGB LED’s die als Ring oder Matrix aufgebaut sind.

Je nach LED Anzahl (12 bis 60 je Ring) liegen die Preise zwischen 4 und 20€.


Am einfachsten lassen sich die WS8212 LED mit der Adafruit NeoPixel Library ansteuern. Hier bei Github herunterladen. Die verschiedenen Prozeduren am besten einzeln ausprobieren.

 


// In den arduino Sketch die Bibliothek einbinden:

  #include <Adafruit_NeoPixel.h

// Die LED-Anzahl, den Arduino Pin und den Chiptyp wählen.

#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);

// In der setup-Funktion den Strip initialisieren.

void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'

// Die Helligkeit setzen
strip.setBrightness(64);

}

void loop() { 

// Dies ist die Syntax um einen einzelnen Chip auszuwählen:
strip.setPixelColor(n, red, green, blue);

// n...Die Stelle der LED bei 0 beginnend.

// Die Farbintensität geht von 0 (aus) bis 255 (Maximum). 
// Damit lassen sich alle Farben mischen.

  
//onepoint(strip.Color(255, 0, 0), 10); // Red
//onepointback(strip.Color(255, 255, 255), 10); // White
  
// onepoint(strip.Color(random(255), random(255), random(255)), 200); // Red
//onepointback(strip.Color(random(255), random(255), random(255)), 200); // White
  
//colorWipe(strip.Color(255, 0, 0), 50); // Red
//colorWipe(strip.Color(0, 255, 0), 50); // Green
//colorWipe(strip.Color(0, 0, 255), 50); // Blue
// Send a theater pixel chase in...
//theaterChase(strip.Color(127, 127, 127), 500); // White
//theaterChase(strip.Color(127,   0,   0), 50); // Red
//theaterChase(strip.Color(  0,   0, 127), 50); // Blue

//rainbow(20);
//rainbowCycle(20);
//theaterChaseRainbow(50);
}

China Post – Einkauf bei eBay, BangGood und Alibaba

Post aus Hongkong
Post aus Hongkong

Einkauf in China, Singapur und Taiwan

Aufgrund niedriger Preise ist der Einkauf von Elektronik in Asien recht verlockend. Online-Verkaufsportale und Zahlungssysteme wie PayPal machen Transaktionen einfach und sicher. Damit das Ganze dennoch nicht in Frust endet, gilt es einige Einfuhrbestimmungen und Zollvorschriften zu beachten.
Die meisten Käufer werden mit eBay, BangGood und Alibaba in Kontakt kommen. Wobei Alibaba mit größeren Mindestmengen eher auf kommerzielle Käufer ausgerichtet ist.
Die angebotenen Produkte sind meistens günstiger als in der EU. Die Versandkosten gering bis kostenlos. Allerdings sind anfallende Versandkosten beim Verkäufer nicht rabattierbar.

Was gilt es bei dem Einkauf in China zu beachten:

  • Qualität
  • Netzspannung
  • Vorschriften
  • Zoll, Umsatzsteuer
  • Lieferzeiten
  • Garantie, Gewährleistung, Rückgabe
  • Keine Ware erhalten
  • Fälschungen

Qualität
Je komplexer die Ware um so größer das Risiko eines Defektes. Die Qualität kann man erst beurteilen wenn man es in der Hand hält. Per se sind Waren aus China aber nicht minderwertig.

Netzspannung
Bei Geräten mit Netzanschlüsse beachten, ob diese für unser 230 Volt Netz geeignet sind und die entsprechenden Netzstecker besitzen. Das gilt auch für Importe aus Übersee.
Sind Bedienungsanleitungen wenigstens auf Englisch?

Vorschriften
Geräte ohne CE Kennzeichen dürfen nicht importiert werden. Findet der Zoll diese, werden sie beschlagnahmt. Auch bei der Bezahlung auf dem Zollamt kann das passieren.

Zoll, Umsatzsteuer
Ab gewissen Beträgen fallen Zoll und Mehrwertsteuer an. Für die Berechnung des Warenwertes wird die Summe aus Artikelpreis und Porto herangezogen.

  • Fall1: Warenwert unter 22€
    Hier fallen weder Zollgebühren noch die Einfuhrumsatzsteuer an. Gebühren unter 5€ werden in der Regel nicht erhoben. So das man praktisch bis 26€ abgabenfrei davonkommt.
  • Fall2: Warenwert über 26€ unter 150€
    Hier fällt die Einfuhrumsatzsteuer von aktuell 19% an. Das kann immer noch lohnend sein. Leider wird aber der Gang zum nächsten Zollamt fällig, um die Ware abzuholen. Je nach Entfernung lohnt es sich dann eher die Ware innerhalb der EU zu erwerben.
  • Fall3: Warenwert über 150€
    Neben der Einfuhrumsatzsteuer kommt noch eine Zollgebühr von maximal 17,5% hinzu. Die Zollgebühr hängt von der Warengruppe ab.
    Dem Zollamt muss man die Rechnung vorlegen

Manche Verkäufer tricksen auch, in dem sie einen zu niedrigen Warenwert ausweisen oder die Lieferung als Geschenk deklarieren. Als Käufer würde ich mich darauf nicht verlassen.

Lieferzeiten
In der Regel 4 bis 6 Wochen. Ich hatte auch schon Artikel die 3 Monate unterwegs waren. Bevor bei eBay die First für den Käuferschutz von 30 Tagen ausläuft würde ich das Produkt anmahnen. Teilweise kommt die Ware per Einschreiben. Wie sich das bei einem Artikel für wenige Euro rechnet ist mir ein Rätsel.

Garantie, Gewährleistung, Rückgabe
Hier würde ich nichts drauf geben. Deutsches Verbraucherrecht wird man in China nicht durchsetzen können. Am besten nur Waren kaufen deren Defekt man verschmerzen kann. Defekte bei Lieferung kann man allerdings sehr gut bei eBay regeln. Einen chinesischen Digital Oszi für mehrere hundert Euro habe ich lieber bei einem deutschen Importeur gekauft.

Keine Ware erhalten
Bei Ebay und Banggood dank Käuferschutz/PayPal kein Problem. Unbedingt die Fristen einhalten.

Fälschungen
Der “Made in Itali” Arduino aus China ist keine Seltenheit, aber bestimmt nicht echt. Auch das “CE” Kennzeichen wird gern durch ein “C E” imitiert, was dann offiziell “China Export” heißt.

Allgemeine Empfehlungen für den Einkauf in Asien

  • Seriöse Shops verwenden.
  • Zahlungen per PayPal
  • Bei Nichtlieferung vor Ablauf des Käuferschutzes aktiv werden. Sich nicht über diese Frist vom Verkäufer hinhalten lassen.
  • Unter 26€ bleiben. Das spart den Gang zum Zollamt.

Eigene Erfahrungen (Elektronikteile)

Eigentlich nur Gute.
Bisher kein Schund, sondern Qualität. Allerdings stanken die Weichmacher von Kabeln schon mal längere Zeit.
Der Versand dauert oft sehr lange. Ich reklamiere, wenn die Versandfrist des Verkäufer überschritten ist.
Da ich nur Kleinteile kaufe, ist mir bisher der Gang zum Zollamt erspart geblieben.
Eine Kleinteillieferung hatte mal eine CE Beanstandung vom Zoll, wurde aber nicht eingezogen.

Lohnt sich der Einkauf – ein Rechenbeispiel
Mein Prusa I3 3D-Drucker wird von einem Arduino Mega plus Ramps 1.4 Shield  gesteuert.
Der Ramps inkl. 5 Schrittmotortreiber kostete bei Amazon 13€, der Arduino Mega “Made in China” 9€.
In einem deutsche Shop hätte das 90€ gekostet. (bei vermutlich gleicher Herkunft)

China Post – Arduino DHT Sensor Temperatur und Luftfeuchtigkeit messen

Der DHT11 als Billigsensor für Temperatur und Luftfeuchtigkeit

DHT11 Sensor Temperatur Relative Luftfeuchtigkeit
DHT11 Sensor Temperatur Relative Luftfeuchtigkeit

Der DHT11 ist ein preiswerter Sensor (Ebay 2€) für Temperatur und Luftfeuchtigkeit. Die Kommunikation läuft über 1-Wire Protokoll. Dafür das er nur 2€ kostet muss man bezüglich Genauigkeit einige Abstriche machen. Alternativ kann man den etwas besseren DHT22 einsetzen. Vom DKT11 sind 3 und 4-polige Versionen im Umlauf.

Eigenschaften

  • 3 bis 5V Spannungsversorgung und E/A
  • 2.5mA max. Stromaufnahme
  • Messbereich Luftfeuchtigkeit 20-80% ±5%
  • Messbereich Temperatur 0-50°C ±2°C
  • Messrate maximal 1 Hz

Beschaltung (3polige Version)

  • Pin1 Betriebsspannung
  • Pin2 Kommunikation
  • Pin3 Masse

Fazit

Einfach und günstig. In 5 Minuten eingerichtet.

Arduino Bibliothek
Von Adafruit die DHT library herunterladen oder direkt in der Arduino Bibliothek suchen und installieren. Einen Digital Pin zur Kommunikation festlegen “#define DHTPIN 2 ” und fertig. Ausgabe auf dem seriellen Monitor oder Plotter.

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN 2     // what digital pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors.  This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");

  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements.
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
}

China Post – Arduino Motortreiber L9110

L9110 Motor Driver
L9110 Motor Driver

Arduino L9110 Motorsteuerung für 2 Motoren

Dieses kleine Modul verfügt über zwei unabhängige HG7881 (L9110S) Motor-Treiber-Chips, die jeweils 800mA Dauerstrom liefern können. Logik und Spannungsversorgung der Motoren können von 2,5 V bis 12 V betrieben werden, so dass dieses Modul mit 3,3V und 5V Mikrocontrollern verwendet werden kann.
Ein PWM Pulsweitenmodulationssignal wird verwendet, um die Drehzahl eines Motors zu steuern und ein digitaler Ausgang wird verwendet, um seine Richtung zu ändern. Dieses Modul kann 2 Gleichstrommotoren oder einen zwei Phasen-Schrittmotor antreiben. Die Ausgänge verfügen über Integrierte Schutzdioden. Einen Temperatur-/ Überlastungsschutz gibt es wohl nicht. Bei einem 1A Steppermotor fingen die Treiber-IC an zu rauchen. Erstaunlicherweise haben sie dies überstanden. Die maximale Chiptemperatur ist mit 80 Grad angegeben.

Betrieb Gleichstrommotoren am Arduino
Motor an Klemme A bzw. B.
Eingang IA steuert per PWM vom Arduino die Drehzahl. Für IB reicht ein einfacher Digital Pin für die Drehrichtung.

Betrieb Stepper am Arduino

Arduino L9110 Stepper Modul
Arduino L9110 Stepper Modul

4 Digitalpins. Die zwei Wicklungen an den A bzw. B-Ausgang. Polung beachten bzw. ausprobieren. Der L9110 Treiber kommt mit der Arduino Stepper Bibliothek gut zurecht. Der Funktionsumfang ist allerdings bescheiden.

Für den Treiber auf jeden Fall eine externe Versorgungsspannung verwenden.
Mangels Kühlung kommen die Treiber bei größeren Motoren schnell an ihre Grenzen.

Bei eBay wird das Modul ab 2€ gehandelt.

Motor Control Interface
Pin Description
B-IA Motor B Input A (IA)
B-IB Motor B Input B (IB)
GND Ground
VCC Operating Voltage 2.5-12V
A-IA Motor A Input A (IA)
A-IB Motor A Input B (IB)


IA IB Motor State
Low Low Off
High Low Forward
Low High Reverse
High High Off

Fazit:
Billig, klein und einfach zu verwenden. Für Modellbau-Gleichstrommotoren (fischertechnik & Co) und kleinere Schrittmotoren ideal.

/* Adafruit Arduino - Lesson 16. Stepper */

#include &lt;Stepper.h&gt;

int in1Pin = 10;
int in2Pin = 11;
int in3Pin = 12;
int in4Pin = 13;

Stepper motor(512, in1Pin, in2Pin, in3Pin, in4Pin);  

void setup()
{
  pinMode(in1Pin, OUTPUT);
  pinMode(in2Pin, OUTPUT);
  pinMode(in3Pin, OUTPUT);
  pinMode(in4Pin, OUTPUT);

  // this line is for Leonardo's, it delays the serial interface
  // until the terminal window is opened
  while (!Serial);
  
  Serial.begin(9600);
  motor.setSpeed(20);
}

void loop()
{
  if (Serial.available())
  {
    int steps = Serial.parseInt();
    motor.step(steps);
  }
}
/*
 HG7881_Motor_Driver_Example - Arduino sketch
  
 Arduino digital output D10 to motor driver input B-IA.
 Arduino digital output D11 to motor driver input B-IB.
 Motor driver VCC to operating voltage 5V.
 Motor driver GND to common ground.
 Motor driver MOTOR B screw terminals to a small motor.
*/
 
// wired connections
#define HG7881_B_IA 10 // D10 --> Motor B Input A --> MOTOR B +
#define HG7881_B_IB 11 // D11 --> Motor B Input B --> MOTOR B -
 
// functional connections
#define MOTOR_B_PWM HG7881_B_IA // Motor B PWM Speed
#define MOTOR_B_DIR HG7881_B_IB // Motor B Direction
 
// the actual values for "fast" and "slow" depend on the motor
#define PWM_SLOW 50 // arbitrary slow speed PWM duty cycle
#define PWM_FAST 200 // arbitrary fast speed PWM duty cycle
#define DIR_DELAY 1000 // brief delay for abrupt motor changes
 
void setup()
{
 Serial.begin( 9600 );
 pinMode( MOTOR_B_DIR, OUTPUT );
 pinMode( MOTOR_B_PWM, OUTPUT );
 digitalWrite( MOTOR_B_DIR, LOW );
 digitalWrite( MOTOR_B_PWM, LOW );
}
 
void loop()
{
 boolean isValidInput;
 // draw a menu on the serial port
 Serial.println( "-----------------------------" );
 Serial.println( "MENU:" );
 Serial.println( "1) Fast forward" );
 Serial.println( "2) Forward" );
 Serial.println( "3) Soft stop (coast)" );
 Serial.println( "4) Reverse" );
 Serial.println( "5) Fast reverse" );
 Serial.println( "6) Hard stop (brake)" );
 Serial.println( "-----------------------------" );
 do
 {
 byte c;
 // get the next character from the serial port
 Serial.print( "?" );
 while( !Serial.available() )
 ; // LOOP...
 c = Serial.read();
 // execute the menu option based on the character recieved
 switch( c )
 {
 case '1': // 1) Fast forward
 Serial.println( "Fast forward..." );
 // always stop motors briefly before abrupt changes
 digitalWrite( MOTOR_B_DIR, LOW );
 digitalWrite( MOTOR_B_PWM, LOW );
 delay( DIR_DELAY );
 // set the motor speed and direction
 digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward
 analogWrite( MOTOR_B_PWM, 255-PWM_FAST ); // PWM speed = fast
 isValidInput = true;
 break; 
 
 case '2': // 2) Forward 
 Serial.println( "Forward..." );
 // always stop motors briefly before abrupt changes
 digitalWrite( MOTOR_B_DIR, LOW );
 digitalWrite( MOTOR_B_PWM, LOW );
 delay( DIR_DELAY );
 // set the motor speed and direction
 digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward
 analogWrite( MOTOR_B_PWM, 255-PWM_SLOW ); // PWM speed = slow
 isValidInput = true;
 break; 
 
 case '3': // 3) Soft stop (preferred)
 Serial.println( "Soft stop (coast)..." );
 digitalWrite( MOTOR_B_DIR, LOW );
 digitalWrite( MOTOR_B_PWM, LOW );
 isValidInput = true;
 break; 
 
 case '4': // 4) Reverse
 Serial.println( "Fast forward..." );
 // always stop motors briefly before abrupt changes
 digitalWrite( MOTOR_B_DIR, LOW );
 digitalWrite( MOTOR_B_PWM, LOW );
 delay( DIR_DELAY );
 // set the motor speed and direction
 digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse
 analogWrite( MOTOR_B_PWM, PWM_SLOW ); // PWM speed = slow
 isValidInput = true;
 break; 
 
 case '5': // 5) Fast reverse
 Serial.println( "Fast forward..." );
 // always stop motors briefly before abrupt changes
 digitalWrite( MOTOR_B_DIR, LOW );
 digitalWrite( MOTOR_B_PWM, LOW );
 delay( DIR_DELAY );
 // set the motor speed and direction
 digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse 
 analogWrite( MOTOR_B_PWM, PWM_FAST ); // PWM speed = fast
 isValidInput = true;
 break;
 
 case '6': // 6) Hard stop (use with caution)
 Serial.println( "Hard stop (brake)..." );
 digitalWrite( MOTOR_B_DIR, HIGH );
 digitalWrite( MOTOR_B_PWM, HIGH );
 isValidInput = true;
 break; 
 
 default:
 // wrong character! display the menu again!
 isValidInput = false;
 break;
 }
 } while( isValidInput == true );