INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 2 Bewertungen - 2 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino <=> Nexus 7 los geht´s
28.12.2017, 10:35 (Dieser Beitrag wurde zuletzt bearbeitet: 28.12.2017 10:36 von ArduTux.)
Beitrag #1
Arduino <=> Nexus 7 los geht´s
Ich hatte bisher mit dem Duemilanove und einem Mega inkl. 3,2 Zoll Touch-Screen meinen Spaß. Seid längerem liegt hier auch noch ein Nexus-7 Tablet ungenutzt herum.

Damit habe ich so lange ich nicht aufgebe und vor allem Zeit genug habe ein neues Projekt.

Klar ist jetzt schon das ich für mein Projekt versuchen werde alles selbst zu Basteln.
Das IoT hat sicherlich für jeden Bastler viel zu bieten, aber ich bin zu geizig um mich auf eine endlos Schleife von App-Käufen ein zu lassen.
Also fest steht jetzt schon das es eines dieser langzeit Projekte werden wird.
Ich habe noch nicht alles an Hardware die ich brauche hier liegen, aber ich kann mit dem älterem Equipe schon mal etwas Basics Üben und mich mit dem Thema App´s beschäftigen.

Ich möchte mit der Hardware:
-Duemilanove
-WiFi-Shield
-Nexus 7

und der Software;
Arduino-Nightly
Android-Studio

anfangen. Falls ich mehr Kapazitäten brauche kann ich auch das Mega nutzen.

Warum ich als Hobby-Coder ausgerechnet das Android-Studio benutzen möchte liegt einfach nur daran das ich auch wenn die Software sehr umfangreich ist und eine menge Zeit auffressen wird mir die alternativen:
-Appinventor (google Account)
-Evothings
-Blynk
-Virtuino usw.

nicht unbedingt zu sagen. Bestimmt gibt es im IoT noch reichlich andere Lösungswege aber irgendwann soll auch gut sein.

Meine ersten geh Versuche mit einem älteren Ethernet-Shield waren recht nervig.
Ich mag in der Natur auch die Vielfalt, aber nicht bei Chipsätzen!
Doch das Kung Fu in der Community ist meistens stärker so das immer irgendwo jemand Hilfestellung geben kann.
Ergebnis ist das ich eine Seite mit Text Online zeigen kann.

Wichtig hier war natürlich die MAC-Adresse von dem Ethernet-Shield.
Leider hatte ich keinen Aufdruck oder Button auf dem Shield und musste erst mal die Adresse irgendwie heraus bekommen.
Mit meinem Desktop-PC und meinem Router konnte ich die Adresse dann ermitteln und danach war es nicht mehr schwer eine Online bzw. LAN Verbindung zum Arduino zu bekommen.

Mein Weg dahin:
-> Arduino über USB mit PC Verbunden und das Ethernet-Shield mit LAN-Kabel auch an den gleichen PC. Alle anderen Verbindungen durch Stecker ziehen getrennt.
-> Mit der GUI von meinem Tool für Netzwerkverbindungen dann die MAC-Adresse notiert die er dann noch in der Geräteliste drin stehen hatte. Heute weiß ich das es die MAC vom PC war.
-> Diese MAC dann in den Sketch eingetragen und geschaut was der Router in seiner Liste stehen hat. Und siehe da endlich hatte mein CH6649 Router 2 Lan Benutzer erkannt. Vorher war da mit den üblichen Methoden nie eine 2. MAC zu sehen.

Wichtig war auch darauf zu achten das die Arduino-Bibliothek den Chipsatz vom Ethernet-Shield auch unterstützt! Die default Bibliothek Ethernet von Arduino unterstützt den Chipsatz ENC28j60 nicht, also benötigt man an der Stelle die Bibliothek Ethercard damit der Frust nicht zu groß wird.

Auch wenn das wenige nervig war hat es Spaß gemacht.
Und ich freue mich das es doch noch geklappt hat bevor ich die neue WiFI Hardware mit den üblichen Chipsätzen bekomme. Jetzt werde ich mich so lange das Shipping dauert mit dem Android-Studio beschäftigen. Den einen oder anderen Button werde ich bis dahin schon irgendwie hin bekommen.

Fortsetzung folgt!

"It is better to make a good copy, than to have a bad original"

Hardware: SainSmart Mega 2560 R3 + 3,2" LCD-Touch-Screen/Arduino Duemilanove
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.12.2017, 20:32
Beitrag #2
RE: Arduino <=> Nexus 7 los geht´s
Die aktuelle IDE ist hier.
Schau Dir mal die aktuellen ESP8266-12E an, falls Du WLAN nutzen willst/kannst. Nimm aber lieber die NodeMCU 1.0 oder WMOS D1 mini pro mit USB-Anschluß.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2017, 07:47 (Dieser Beitrag wurde zuletzt bearbeitet: 30.12.2017 07:49 von ArduTux.)
Beitrag #3
RE: Arduino <=> Nexus 7 los geht´s
(28.12.2017 20:32)Tommy56 schrieb:  Die aktuelle IDE ist hier.
Schau Dir mal die aktuellen ESP8266-12E an, falls Du WLAN nutzen willst/kannst. Nimm aber lieber die NodeMCU 1.0 oder WMOS D1 mini pro mit USB-Anschluß.
Gruß Tommy
Ahh OK ich komme noch mal drauf zurück wenn das Shipping rum ist.

Heute hab ich mich nicht los reißen können ohne kleine fortschritte gemacht zu haben.
Ich habe ziehmlich lange gebraucht um irgendein Button mit Android Studio ohne Warnungen und Errors zu basteln. Dabei hab ich irgendwann überlegt das es bestimmt irgendwo Tutorials oder so geben muss die einem viel Arbeit abnehmen Wink.

Gefunden habe ich nach längerem hin und her dan diese Links:
Für mein Ethernet-Shield v1.1 (ENC28J6) und der Bibliothek EtherCard bin ich hier mit bisher am weitesten gekommen. Nach dem ich google genug fragen gestellt und gelesen habe brachten diese Seiten einen kleinen Fortschritt.

Java Problem
Lösung Anwenden
Test App Importieren

Ergebnis:
Ich ahbe eine Test App und schon ein Incomming Packet am Arduino hin bekommen. Jetzt muss ich das ganze noch verarbeiten und der App sagen wenn der Arduino fertig ist. Zur Zeit "Tippe" ich ein Button und danach hängt es noch und nichts mehr passiert. Könnte daran liegen das der Arduino noch nicht Antwortet.
Hier das Bildchen vom PC und dem Nexus 7 ->
   

Jetzt muss ich eben noch schnell zum EDEKA an die Fleich Theke sonst bekomme ich für morgen nichts mehr und das wäre nicht gut Wink

Gruß und allen Lesern einen Guten Rutsch 2018

"It is better to make a good copy, than to have a bad original"

Hardware: SainSmart Mega 2560 R3 + 3,2" LCD-Touch-Screen/Arduino Duemilanove
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2017, 18:55
Beitrag #4
RE: Arduino <=> Nexus 7 los geht´s
Ups TimeOut Dodgy hab gepennt und den Sketch Code vergessen Cool Ich muss jetzt noch im Code Arduino Antworten lassen...
Code:
#include <EtherCard.h>
byte Ethernet::buffer[500]; // tcp/ip send and receive buffer
int led1 = 5;
int led2 = 6;
static uint8_t mac[6] = {0x36, 0x30, 0x2D, 0x30, 0x30, 0x00};
void setup()
{
  Serial.begin(115200);
  ether.begin(sizeof Ethernet::buffer, mac);
  ether.dhcpSetup();
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
}

void loop()
{
  uint16_t nexus7 = ether.packetLoop(ether.packetReceive());
  if (nexus7)
  {
    char* incomingData = (char *) Ethernet::buffer + nexus7;
    Serial.println(incomingData);
  }
}

"It is better to make a good copy, than to have a bad original"

Hardware: SainSmart Mega 2560 R3 + 3,2" LCD-Touch-Screen/Arduino Duemilanove
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.01.2018, 02:43
Beitrag #5
RE: Arduino <=> Nexus 7 los geht´s
Weiter geht´s, obwohl ich in der 1.Stunde des neuen Jahres gemerkt habe das der AKKU vom Tablet gestorben ist. Nix ging mehr mit dem Ding Huh

Ich habe das Akku gestern mal Ausgebaut, -> youtube wusste wie so was geht<-, und 30 Minuten auf die Heizung gelegt Big Grin und siehe da es lebt wieder. Natürlich ist das Akku nach knapp 30 Minuten wieder halb leer. Aber ich konnte damit wenigstens klären das es wie so üblich am Akku liegt. Ein neues Akku kostet nicht viel ich muss nicht mal eins von diesen Kit´s nehmen Cool

Ich hab jetzt heraus gefunden wie ich das "incomming" von der APP in mein Sketch einbauen kann.
Code:
#include <EtherCard.h>

#define led1 6
#define led2 7

byte Ethernet::buffer[300];
static uint8_t mac[6] = {0x36, 0x30, 0x2D, 0x30, 0x30, 0x00};
/* ########################## */
void setup()
{
  Serial.begin(115200);
  ether.begin(sizeof Ethernet::buffer, mac);
  ether.dhcpSetup();

  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
}
/* ########################## */
void loop()
{
  uint16_t nexus7 = ether.packetLoop(ether.packetReceive());

  if (nexus7)
  {
    char* incomingData = (char *) Ethernet::buffer + nexus7;

    Serial.println(incomingData);

    String ledControl = incomingData;

    if (ledControl.substring(7, 11) == "cmd=1") digitalWrite(led1, HIGH);
    if (ledControl.substring(7, 11) == "cmd=2") digitalWrite(led1, LOW);
    if (ledControl.substring(7, 11) == "cmd=3") digitalWrite(led2, HIGH);
    if (ledControl.substring(7, 11) == "cmd=4") digitalWrite(led2, LOW);
  }
}

Jetzt noch der App Mitteilen das der Pin auch wirklich geschaltet wurde.

"It is better to make a good copy, than to have a bad original"

Hardware: SainSmart Mega 2560 R3 + 3,2" LCD-Touch-Screen/Arduino Duemilanove
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.01.2018, 08:59 (Dieser Beitrag wurde zuletzt bearbeitet: 07.01.2018 09:12 von ArduTux.)
Beitrag #6
RE: Arduino <=> Nexus 7 los geht´s
Heute habe ich das soweit hin gebastelt das ich die "Incommings" von der APP auf dem Nexus 7 an mein Mega2560 gesendet hab, dazu der APP erzähle das ich das "Incomming" gehört habe. Ich denke mehr sagt das "ether.httpServerReply(sizeof incomingData - 1);" nicht aus oder?

Auch nutze ich keine SPI Bibliothek was in vielen Beispielen die ich gelesen hab immer zusammen mit der "Wire.h" drin war. Naja erst mal funktioniert es so und ich komme da schon noch hinter. WIESO WESHALB WARUM, wer nicht ....

Hier der Sketch vom Duomilanove-Board mit dem Ethernet-Shield v1.1 als Master:
Code:
#include <EtherCard.h>
#include <Wire.h>

byte Ethernet::buffer[300];
static uint8_t mac[6] = {0x36, 0x30, 0x2D, 0x30, 0x30, 0x00};

/* ########################## */
void setup()
{
  Serial.begin(115200);
  Wire.begin();

  ether.begin(sizeof Ethernet::buffer, mac);
  ether.dhcpSetup();
}
/* ########################## */
void loop()
{
  uint16_t nexus7 = ether.packetLoop(ether.packetReceive());

  if (nexus7)
  {
    char* incomingData = (char *) Ethernet::buffer + nexus7;

    String ledControl = incomingData;

    if      (ledControl.substring(6, 11) == "cmd=1") send2mega('1');
    else if (ledControl.substring(6, 11) == "cmd=2") send2mega('2');
    else if (ledControl.substring(6, 11) == "cmd=3") send2mega('3');
    else if (ledControl.substring(6, 11) == "cmd=4") send2mega('4');

    ether.httpServerReply(sizeof incomingData - 1);
  }
}
/* ########################## */
void send2mega(byte r)
{
  byte i2cX = r;

  if ((i2cX == '1') || (i2cX == '2') || (i2cX == '3') || (i2cX == '4'))
  {    
    Wire.beginTransmission(9);
    Wire.write(i2cX);
    Wire.endTransmission();
  }
}
/* ########################## */

Und im Mega2560 ist ja nicht viel zum tun, da hab ich die 4 Buttons von der APP sinlos verarbeitet. Es geht mir auch erstmal ums prinzip und um einen Anfang mehr draus zu machen;
Code:
void receiveEvent(int bytes)
{  
  byte i2cX = Wire.read();

  if (i2cX != ' ') //->
  {
    if ((i2cX == '1') || (i2cX == '2')) relays2.on(3);
    if ((i2cX == '3') || (i2cX == '4')) relays2.off(3);

    i2cX = ' '; //->
  }
}
.. da hab ich ja auch noch das LCD Touch Screen drauf und eine RTC glaube die hängen auch irgendwie in dem i2c Bus. Konflikte mit Adressen hatte ich keine obwohl ich nix deklariert hab. Interessantes Thema der I2C, kommt wohl auch ein Anfänger nicht drum rum darüber was zu wissen.

gruß

"It is better to make a good copy, than to have a bad original"

Hardware: SainSmart Mega 2560 R3 + 3,2" LCD-Touch-Screen/Arduino Duemilanove
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2018, 17:42 (Dieser Beitrag wurde zuletzt bearbeitet: 17.01.2018 17:47 von ArduTux.)
Beitrag #7
RE: Arduino <=> Nexus 7 los geht´s
Ich fasse jetzt mal zusammen was ich bis heute zusammen gebastelt habe. Viel Zeit habe ich nicht für meine Arduinos aber das mindert meinen Spaß an der Freude nicht.

Hardware:
Duomilanove mit dem alten Ethernet-Shield v1.1 -> dient als Empfänger für die APP.
Hier muss ich die EtherCard-Bibliothek benutzen damit der Empfang funktioniert! Einfach über den Manager Installieren.

Das alte Ethernet-Shield ist quasi nur zum ausprobieren und lernen geeignet, der Sketch frisst knapp 40% und man merkt das die alte Hardware doch viel Saft zieht.

Damit das Projekt auch etwas Sinn bekommt habe ich das Duomilanove als Master für ein Slave Mega2560 verbunden. Das Mega steuert seid längerer Zeit ein Gewächshaus -> Lüftungsklappe öffnen, Bewässerung mit Tank.Überwachung, Feuchtigkeit-Sensoren für das Substrat der Nutzpflanzen. Das ganze wurde bisher über ein 3,2" Touch-Screen überwacht und gesteuert.

Jetzt sol,l so der Plan das Tablett dazu kommen Cool

Das Shipping dauert noch bis in den April hinein, aber dann hab ich das alles mit W-Lan und ein paar besseren Sensoren.

Bis ich wieder ordentlich Arduino Coden kann um das W-Lan Spielzeug auszuprobieren usw. versuche ich mich an diesem Android-Studio.
Und bin dadurch etwas frustriert. Die IDE ist heftig umfangreich und totales Neuland für mich.
Ich habe jetzt wenigstens schon einmal eine kleine APP mit 3 Button die ich nach dem ich diese Anleitung gefunden hatte Importiert habe. (am Anfang schon erwähnt)
Als Grundlage und um überhaupt einen Anfang zu finden hat es mir auf jeden Fall geholfen.

Ich habe auch schon etwas am Design gearbeitet und anstatt einzelne Butten für ON/OFF zu haben, habe ich diese gegen Toggle-Butten getauscht.
Klingt simple aber da hab ich viel Zeit Verbrannt und ich sehe da ein sehr langfristiges Projekt an dem ich immer etwas Basteln kan so bald ich bereit bin mich intensiver mit diesem Android zu beschäftigen. Die Bildchen für die Button hat Postbitz7 gebastelt.

Falls es jemand gibt der auch mal eine 3 Button APP mit sein Arduino verbinden will kann ich die Projekt Datei gerne Senden, hier kann ich keine ~6MB als Anhang einstellen.

Die Netzwerk Einstellungen vom Sketch muss halt jeder an seine Hardware anpassen, ich denke so ein altes Ethernet-Shield haben nicht mehr viele.

   

"It is better to make a good copy, than to have a bad original"

Hardware: SainSmart Mega 2560 R3 + 3,2" LCD-Touch-Screen/Arduino Duemilanove
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.01.2018, 23:23
Beitrag #8
RE: Arduino <=> Nexus 7 los geht´s
Diese Woche habe ich versucht die Sensor Statistiken vom Slave (Mega2560) an den Master (Duemilanove) zu senden sobald die Nexus 7 APP die Daten anfordert. Das klappt auch bis hier her soweit, und ich kann schon einmal am Master alle Daten im Serial-Monitor anschauen. Die APP soll
die Daten später halt nur Anzeigen.

Dabei geholfen hat mir diese Seite.

Code:
volatile double temperatur, humidity, dewpoint;
const byte dataCount = 24;

union TEMP {
  byte b[24];
  double d;
} TEMP;
union HUM {
  byte b[24];
  double d;
} HUM;
union DP {
  byte b[24];
  double d;
} DP;

//-> sensor daten vom slave anfordern
void readSensors()
{
  if (Wire.requestFrom(42, dataCount) == dataCount)
  {
    for (byte i = 0; i < dataCount; i++)
    {
      TEMP.b[i] = Wire.read();
      HUM.b[i] = Wire.read();
      DP.b[i] = Wire.read();
    }
    temperatur = TEMP.d;
    humidity = HUM.d;
    dewpoint = DP.d;
    
    Serial.print(temperatur); Serial.print('\t'); Serial.print(humidity);  Serial.print('\t'); Serial.println(dewpoint);

  }
  else
  {
     //-> delete any data on wire.
    while (Wire.available()) {
      byte del = Wire.read();
    }
  }
}

Wenn ich jetzt den Sketch vom Master (Duemilanove) Kompiliere wirft er trotzdem einen Fehler bzw. eine Warnung aus ->
Code:
In file included from Arduino/Nexus7/AppTest_1/AppTest_1.ino:2:0:
.../arduino-nightly/hardware/arduino/avr/libraries/Wire/src/Wire.h: In function 'void readSensors()':
.../arduino-nightly/hardware/arduino/avr/libraries/Wire/src/Wire.h:64:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)
     uint8_t requestFrom(int, int);
             ^
.../arduino-nightly/hardware/arduino/avr/libraries/Wire/src/Wire.h:61:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint8_t, uint8_t)
     uint8_t requestFrom(uint8_t, uint8_t);
             ^
Der Sketch verwendet 13878 Bytes (45%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 1183 Bytes (57%) des dynamischen Speichers, 865 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

Im Sketch vom Slave (Mega2560) ist kein Fehler bzw. keine Warnung beim Kombilieren.
Code:
//-> nur ausführen wenn daten vom master angefordert werden
void writeEvent()
{
  //-> aus meinem "float Sensoren[15];" array  die daten holen
  temperatur = Sensoren[0];  humidity = Sensoren[5]; dewpoint = Sensoren[10];

  TEMP.d = temperatur;
  HUM.d = humidity;
  DP.d = dewpoint;

  byte data[dataCount];
  byte j;

  //-> dataCount / 8 == 3 * 8 byte
  for (byte i=0; i<8; i++)
  {
    j = i * 3;
    data[j] = TEMP.b[i];
    data[j+1] = HUM.b[i];
    data[j+2] = DP.b[i];
  }
  Wire.write(data, dataCount);
}

Die Ausgabe am Serial Monitor vom Master ist dann ->

Code:
24.50    35.50    8.22

Meine Frage dazu ist: Wie kann ich die Fehlermeldung vom Duomilanove also vom Master beheben?
Es scheind ein Problem mit den daten Typen zu sein...

.. schon im voraus Danke vom TO der kein Monolog führen will Angel

"It is better to make a good copy, than to have a bad original"

Hardware: SainSmart Mega 2560 R3 + 3,2" LCD-Touch-Screen/Arduino Duemilanove
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Lightbulb Wie geht das? :) Mischa 4 2.994 02.06.2016 10:38
Letzter Beitrag: SkobyMobil
  2 LCDs und eins geht nur Gandalf 10 4.786 12.06.2015 13:59
Letzter Beitrag: eftokay83
Question [Problem] TFA Nexus über Arduino auf WeatherUnderground übertragen Alfonz_Ritzek 0 3.286 28.03.2015 10:42
Letzter Beitrag: Alfonz_Ritzek
  Arduino Neuling: Zugeklappten Laptop mit Arduino aufwecken + Kiste aufklappen? Ikearegal 2 9.265 02.02.2014 07:59
Letzter Beitrag: Ikearegal

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste