TychoNano

Verfasste Forenbeiträge

Ansicht von 15 Beiträgen - 76 bis 90 (von insgesamt 553)
  • Autor
    Beiträge
  • als Antwort auf: Problem: Projekte mit Arduino Uno R3 und ESP8266 ESP-01 nachbasteln #852
    Jonathan
    Teilnehmer

    OK hab dann mal durchgetestet Baudraten 9600, 19200, 38400, 57600, 115200

    In der Reihenfolge: Immer im Sketch (Tag 1) 2x Baudrate geändert, im Monitor Schnittttellengeschw. geändert, Sketch Upload, 5V auf auf ESP8266, RESET am Uno. Am ESP8266 in der Hand Temp. gefühlt, (noch zum Anfassen). Im Monitor schreibt es -unbrauchbare Zeichen viele yyyy das über 20 Sek. Eingabe AT+RST oder AT+GMR dann habe ich abgebrochen und die 5V getrennt. Zuerst hatte ich an Pin 12 den Spannungsteiler mit 1,5KOhm und 1KOhm lt. http://arduino-hannover.de/2014/12/11/wifi-kochbuch-mit-esp8266/ aber es funktionierte auch nicht.

    als Antwort auf: Rainer's Uhr #853
    Rainer
    Teilnehmer

    Hallo,

    ich habe mal wieder etwas gespielt und das NTP Beispiel aus der Time Library an das ESP Modul angepasst.

    Dieses Programm verbindet sich mit dem NTP Server der Telekom ( geht aber auch für andere Server ) und ruft alle Stunde die Uhrzeit zur Synchronisation ab, dazwischen läuft es autonom mit der internen Uhr aus der Time Lib.

    Das Beispiel aus der Lib basiert auf einer LAN Verbindung, die verwendeten IP adressen für die Server scheinen nicht mehr aktuell zu sein. Ich habe den Code umgeschrieben und den Code aus dem Kalender für UDP Verbindungen damit ergänzt, um das WLAN Modul zur Verbindung mit meinen WLAN zu benutzen.
    Über den seriellen Monitor werden Datum und Uhrzeit ausgegeben, auf dem LCD Display ist nur die Zeit sichtbar.

    Das Protokoll für den NTP Server benutzt binäre Daten und muss für das SEND Kommando umgewandelt werden. Hier darf zum Abschluss kein CR/LF angehängt werden ! Die 4 Bytes mit den Sekundenbruchteilen werden nicht genutzt.

    An mancher Stelle werden sich guten Programmieren die Nackenhaare sträuben, ich wollte das nur quick & dirty zu Ende bringen, bevor das Wochenende um ist. Es funktioniert aber gut, man muss nur die SSID und das Passwort eintragen. Das Timeout zur WLAN Anmeldung ist auf 20 Sekunden gesetzt, bei mir dauert die Anmeldung manchmal recht lange.

    Für eine tiefere Beschäftigung mit NTP habe aich auch eine etwas ältere Dokumentation des NTP Protokolls angehängt, ich habe nicht weiter nach aktuelleren Ausgaben gesucht, diese hier hat mir gute Dienste getan.

    Ich bin für alle Verbesserungsvorschläge offen !

    Rainer

    • Diese Antwort wurde geändert vor 8 Jahren, 9 Monaten von Rainer.
    als Antwort auf: User Projekte #857
    erik
    Mitglied

    Hallo Forum,

    für alle Anfänger, die mit dem Arduino-Board noch etwas
    experiemtieren wollen, hier eine kleine Spielerei:

    Über den Taster werden die 3 Farben der RGB-LED durchgeschaltet.

    Der gemeinsame Pol der LED liegt auf Masse, die einzelnen
    Anschlüsse der LED’s über einen Widerstand von 1kOhm an
    folgenden Ausgängen:

    Led rot – Digital 4
    Led grün – Digital 5
    Led blau – Digital 6

    Der Taster liegt einerseites auf GND, mit dem anderen
    Kontakt auf Digital 3.

    Durch Betätigen des Tasters werden die einzelnen Farben
    nacheinander durchgeschaltet.

    Viel Spaß beim Nachbauen.

    • Dieses Thema wurde geändert vor 8 Jahren, 9 Monaten von erik.
    Attachments:
    als Antwort auf: Problem: Projekte mit Arduino Uno R3 und ESP8266 ESP-01 nachbasteln #860
    Raabinator
    Mitglied

    Schade, tut mir leid, dass dir das auch nicht weitergeholfen hat.
    Entweder hat’s dir die Konfiguration des Moduls komplett verhagelt, es ist eine andere Firmware drauf oder das Ding hat tatsächlich das zeitliche gesegnet.
    Sorry…

    als Antwort auf: Rainer's Uhr #861
    Hartmut
    Mitglied

    Prima Projekt, dass ich auch verfolge. Eigentlich fehlt ja nur noch eine vernünftige Fehlerbehandlung (z.B. ein reconnect nach Abbruch), die aber den Aufwand durchaus mal verdoppeln kann (vorsichtig gerechnet). Aber mehr als ein Proof-Of-Concept ist Deine Uhr ja schon.

    Eine kleine Bemerkung zur Time-Library.
    Mit setSyncProvider(getNtpTime); übergibts Du einen Funktionspointer an die Time-Library. Die Funktion selbst wird dabei aber gar nicht aufgerufen. Dies geschieht erst in der Funktion now() und zwar alle 5 Minuten (300 Sekunden). Dieses Intervall kann man mit Hilfe der Funktion setSyncInterval(time_t interval) verändern, z.B. häufiger für Debug Zwecke und noch seltener für die Produktion. Der Aufruf von setSyncProvider(getNtpTime); in der Loop ist also überflüssig.

    als Antwort auf: Rainer's Uhr #862
    Rainer
    Teilnehmer

    Hallo Hartmut,

    danke für den Hinweis, ich habe mich mit der Time Lib ( noch ) nicht näher befasst, wollte das Ganze nur mal ans laufen bringen, daher auch keinerlei Fehlerbehandlung,

    Ich habe den Aufruf setSyncProvider(getNtpTime) auch bereits wieder aus der loop entfernt, da war zusätzlich zu Deiner Bemerkung noch ein Gedankenfehler bei der IF Abfrage !

    Dafür zeige ich jetzt auch das Datum im LCD Display an !
    Wenn ich dann noch eine über UDP ansprechbare Wetterstation finde, werde ich dann auch noch das Wetter anzeigen, habe noch ein Display mit 4 Zeilen, das sollte reichen !

    Beste Grüße,

    Rainer

    als Antwort auf: Sonstiges #863
    Klaus
    Teilnehmer

    Aufgrund des Posts hier: http://iot.fkainka.de/day-13 (Post Nummer 1355, weiß leider nicht wie man den verlinken kann) habe ich mal ein kleines Tool geschrieben, was für unsere Zwecke ausreichen dürfte.
    Damit ist es möglich, Texte (HTML-Quelltexte) von einer Version in eine andere zu konvertieren. Das Tool unterstützt derzeit Plaintext, C++-Strings und Byte-Arrays, LF, CRLF und kann alles hin und her konvertieren. Es ist ein Windows-Programm, müsste sich aber auch mit Mono unter Linux starten lassen (mono-complete und mono-basic wird benötigt, Repository von Monoproject, nicht in Distributionen eingebaute!!)
    Falls irgendwas noch nicht funktioniert, einfach melden.

    Attachments:
    als Antwort auf: Adventskalender #865
    Klaus
    Teilnehmer

    Hallo zusammen,

    ich hab mal wieder etwas gebastelt und bis dabei gleich noch auf einen Fehler im Programm gestoßen.
    Meine Version zeigt nun die zuletzt gewählte Farbe im Colorpicker an.

    Dabei kamen immer wieder Zeichen zum Browser, die ich gar nicht im Quellcode habe. Dann habe ich festgestellt, dass im PROGMEM noch mehr Zeichen stehen, als man sieht. Deshalb darf die Schleife nicht
    for (int i = 0; i <= sizeof(site); i++)
    sondern
    for (int i = 0; i < sizeof(site)-1; i++)
    heißen, da 2 Zeichen zu viel aus dem Speicher gelesen werden. Eines wäre mir ja noch klar, wenn es nur das Nullbyte wäre. Aber warum 2? Kennt jemand den Grund dafür?

    als Antwort auf: Tag 14 – Letzte Farbe anzeigen #868
    Raabinator
    Mitglied

    Also, bei mir hängen drei Nullen dran (siehe Bild)

    • Die erste ist die Null im String, die mit /0 erzeugt wird (ist unnötig)
    • Die zweite Null ist die, die der Compiler automatisch an die Zeichenkette anhängt (site ist eins Größer als Zeichen angegeben sind)
    • Die dritte Null ist das was zufällig als nächstes im Programmspeicher kommt. Leider gibt die Arduino-IDE kein .map-File aus. Dort könnte man nachsehen, was als nächstes kommt.

    Um das komplette Array zu senden (inkl. der automatischen Ende-Null) sollte die Schleife so aussehen:
    for (int i = 0; i < sizeof(site); i++)

    Da wir aber eine Zeichenkette senden könnten wir auch die Null als Ende verwenden, dann so:

    int i = 0;
    while (meinArray[i] != '\0')
    {
      // ... mach was mit dem Zeichen ...
      i++;
    }
    

    Das wird aber unübersichtlich, da wir das Zeichen erst mit der Funktion pgm_read_byte_near aus dem Flash lesen müssen.

    Im Sketch des Autors wird der String durch das <= um ein Zeichen überlesen. Richtig wäre <. Damit wird auch die Ende-Null gesendet, die der Browser aber nicht braucht. Daher ganz richtig mit < sizeof(site)-1.

    • Diese Antwort wurde geändert vor 8 Jahren, 9 Monaten von Raabinator.
    Attachments:
    als Antwort auf: Tag 14 – Letzte Farbe anzeigen #872
    Klaus
    Teilnehmer

    OK, die ersten beiden leuchten mir ja jetzt ein. Aber warum sendet er dann noch ein drittes Byte zu viel?
    Das mit < sizeof(site) leuchtet ja auch ein, wenn man mal drüber nachdenkt. Man fängt bei 0 an. Die Größe fängt natürlich bei 1 an. Deshalb muss man ja 1 früher aufhören. Aber wie kommt es dann zustande, dass er trotzdem 1 übers Ende raus liest?
    Btw, bei mir liest er anscheinend nur 2 Bytes zu viel, was anhand der Erklärung automatisch \0 dran hängen und Größe fängt bei 0 an, auch logisch ist.
    Ich müsste mal den Sniffer anwerfen, um zu sehen, was er genau sendet. Oder ob das dritte Byte bei mir nur nicht zu sehen ist.

    als Antwort auf: TextConverter #873
    Klaus
    Teilnehmer

    Da war noch ein Fehler in der Umwandlung nach „C++/PHP String“.
    Hat jemand das Programm schon mal ausprobiert?

    Attachments:
    als Antwort auf: Hardware #875
    Jan
    Mitglied

    Hallo,

    bisher hatte ich viel Freude mit dem Adventskalender. Bis zum Tag 13 lief auch alles gut bis perfekt. Bin fasziniert.

    ABER: Seit gestern kommt offenbar keine Verbindung mehr zum ESP zustande. Der Uplaod der Programme funktioniert, die Programme starten, nur wenn der ESP angesprochen werden soll, dann kommen Fehlermeldungen. Auch bei vorhergehenden Projekten, die bisher reibungslos funktionierten, Am Beispiel von Tag 2:

    Reset Error
    CWMODE Error
    WLAN Connect Error
    Ping Error

    Habe den Timeout für „AT+RST“ am Tag 2 sogar auf 10 Sekunden erhöht. Gleiches Ergebnis.

    Bin ratlos, was ich noch versuchen soll und würde mich über Tipps freuen.

    Vielen Dank!

    Jan

    als Antwort auf: ESP defekt? #877
    fk
    Administrator

    Hi,
    hast du mal mit dem Programm vom ersten Tag versucht AT Befehle Manuelan das Modul zu senden? Und hast du vllt aus versehen den Befehl AT+restore benutzt?
    Kannst du sehen ob das Modul sich im Router vllt noch Anmeldet (auch ohne Befehl verbindet sich das Modul nach einer gewissen mit dem Zuletzt bekannten Netzwerk)

    als Antwort auf: ESP defekt? #878
    Jan
    Mitglied

    Hallo,

    danke für die Tipps.

    Habe das Programm vom 1.Tag nochmal hochgeladen. -> Keinerlei Ausgaben auf dem Seriellen Monitor, Eingaben erzeugen keine Reaktion

    Der Befehl AT+restore wurde nicht benutzt.

    Im Router meldet sich das Modul nicht an, auch gibt es keinen AP.

    Gibt es noch weitere Hinweise?

    Viele Grüße

    Jan

    als Antwort auf: Tag 14 – Letzte Farbe anzeigen #879
    Raabinator
    Mitglied

    Hallo Klaus

    Das kann man mit Wireshark gut beobachten (http://www.wireshark.org).

    sizeof() gibt die Größe des Array zurück. Die Indizierung des ersten Elementes beginnt bei 0, das letzte Element ist damit also sizeof()-1.
    Um alle Elemente zu indizieren müsste die Schleife bis <= sizeof()-1 oder gleichbedeutend < sizeof() laufen. Dies beinhaltet dann die 0 in der Zeichenkette und die automatische 0, die auch in die Größe mit eingerechnet ist.
    Mit <= sizeof() wird nochmal ein Byte mehr gelesen (durch das =), nämlich das array[sizeof(array)]-Byte. Da an dieser Stelle im Speicher zufällig eine 0 steht -> die dritte 0.

    • Diese Antwort wurde geändert vor 8 Jahren, 9 Monaten von Raabinator.
    • Diese Antwort wurde geändert vor 8 Jahren, 9 Monaten von Raabinator.
    • Diese Antwort wurde geändert vor 8 Jahren, 9 Monaten von Raabinator.
Ansicht von 15 Beiträgen - 76 bis 90 (von insgesamt 553)