wget --header 'Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie' http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jre-8u121-linux-x64.tar.gz
Archiv der Kategorie: Allgemein
Liebesgruesse aus Shenzhen II
Arduino 4×4 Tastatur
Bei der letzten Lieferung aus China waeren zwei 4×4 Keypads dabei, welche ich fuer eine Projekt benoetige. Abweichend von den Beispielen aus dem Netz, hatte mein Keypad nicht 8 oder 12, sondern 10 Pins. Da die jeweils aussen liegenden Pins keinerlei Funktion hatten, habe ich mich auf die 8 Pins in der Mitte beschraenkt.
Die Beispiele vom Arduino Playground wollten bei mir nicht so recht funktionieren, also habe ich das Keypad einmal Pin fuer Pin mit dem Durchgangspruefer durchgemessen, und dann eine sinnvolle Kombination gefunden:
Der Code entspricht bis auf die Aenderungen der Belegung fuer die Zeilen und Spalten am Arduino dem Original vom Arduino Playground.
— snip —
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
/* Keypadtest.pde * * Demonstrate the simplest use of the keypad library. * * The first step is to connect your keypad to the * Arduino using the pin numbers listed below in * rowPins[] and colPins[]. If you want to use different * pins then you can change the numbers below to * match your setup. * */ #include <Keypad.h> const byte ROWS = 4; // Four rows const byte COLS = 4; // Three columns // Define the Keymap char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; // Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins. byte rowPins[ROWS] = { 7, 8, 9, 10 }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins. byte colPins[COLS] = { 3, 4, 5, 6 }; // Create the Keypad Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); #define ledpin 13 void setup() { pinMode(ledpin,OUTPUT); digitalWrite(ledpin, HIGH); Serial.begin(9600); } void loop() { char key = kpd.getKey(); if(key) // Check for a valid key. { switch (key) { case '*': digitalWrite(ledpin, LOW); break; case '#': digitalWrite(ledpin, HIGH); break; default: Serial.println(key); } } } |
— snap —
Liebesgruesse aus Shenzhen I
SIM800L GSM Modul mit Arduino betreiben
Fuer ein einfaches Projekt im Garten benoetige ich eine Alarmierung per SMS bei verschiedenenen Events. Da genug Material in der Bastelkiste vorhanden war, fiel die Wahl auf folgende Komponenten:
– Arduino Nano
– SIM800L GSM Modul
– LM2596S DC-DC Wandler
Der Schaltplan:
Meine Version vom SIM800L vertraegt noch keine 5V, in der Fritzing Bibliothek gab es aber nur die Gezeigte. Der Output vom LM2596S muss auf ca. 3,75V eingestellt sein.
Der Code, um die Kommunikation mit dem SIM800 zu testen:
— snip —
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <SoftwareSerial.h> //SIM800 TX an D11 #define SIM800_TX 11 //SIM800 RX an D10 #define SIM800_RX 10 //SoftwareSerial setup SoftwareSerial serialSIM800(SIM800_TX,SIM800_RX); void setup() { //Start der seriellen Kommunikation Serial.begin(9600); while(!Serial); serialSIM800.begin(9600); delay(1000); Serial.println("Bereit"); } void loop() { //Ausgabe von SIM800 lesen und ausgeben if(serialSIM800.available()){ Serial.write(serialSIM800.read()); } //Eingaben vom Terminal an den SIM800 senden if(Serial.available()){ serialSIM800.write(Serial.read()); } } |
— snap —
Sobald alles verkabelt und der Code auf den Arduino hochgeladen ist, kann man die folgenden Befehle testen. Im Serial Monitor muss dazu LN und CR aktiv sein. Wichtig: Die SIM Karte muss den PIN Schutz deaktiviert haben.
AT+CFUN? – gibt aktuellen Wert fuer AT+CFUN zurueck
AT+CFUN=? – gibt moegliche Werte fuer AT+CFUN zurueck
AT+CFUN=1 – AT+CFUN auf Wert 1 setzen
AT+CREG? – aktueller Registrierungsstatus im GSM Netzwerk
AT+COPS? – Liste aktuell erlaubter GSM Netzwerke
AT+COPS=? – Scan aller verfuegbaren Netze (Antwort dauert ein Stueck)
Komplette Befehlsreferenz: SIM800L Datasheet
Ingesamt lies sich damit fuer unter 8 Euro eine programmierbare Einheit fuer SMS Alarmierungen realisieren. Den kompletten Aufbau der Anlage schreibe ich hier, sobald er erfolgt und getestet ist.