Posts by joh.raspi

    Hi,


    Solange R/W am LCD LOW ist und bleibt müsste das Display still bleiben.
    Ob es mit den 3.3v Pegeln vom ESP direkt klappt hab ich nicht getestet, vermute aber schon.
    Kaputt gehen kann beim testen aber nix. Und ja, wenn es überhaupt nicht klappt Pegelwanlder für alle Leitungen.
    Man könnte dem LCD aber auch noch etwas entgegenkommen indem man die Versorgungsspannung vom ESP auf 3.6V erhöht.
    (Oder eventuell die Versorungsspannung vom LCD senken, weiß aber gar nicht wie tolerant die ist.)


    Ich hab mir vor einiger Zeit auch ein Wlan LCD mit einem ESP gebaut. Und um da bezüglich der Pegel auf der sicheren Seite zu sein hab ich das Display nicht direkt an den ESP gehängt sondern über ein 74HC595 dessen Versorgungsspannung mit einer einfachen Diode auf ca. 4.4V gesenkt wurde.
    ESP-03(3.3V) -> 74HC595(~4.4V) -> LCD(5V)
    Das Schieberegister wird dabei vom ESP per Hardware SPI mit Daten versorgt und das ganze funktioniert soweit super zuverlässig.
    Hab inzwischen auch eine kleine Platine dafür gezeichnet aber noch nicht fertigen lassen, ist eine Art "Backpack" geworden.

    Ja, "WiFi" wird wohl erst zu begin der setup() definiert(oder wie auch immer man da sagt).
    Bedeutet also WiFi.persistent(false) darf nicht ausserhalb der setup() oder loop() stehen (Funktionen natürlich aussgeschlossen).


    Gilt aber für alle WiFi Methoden, nicht nur persistent().

    Eine Lösung mit PHP kenn ich nicht, du könntest aber einfach Bilder von runden Ecken über die eckigen legen. So hat man früher auch alles "rund" gemacht. Muss man halt geschickt platzieren.
    Geht aber bestimmt auch irgendwie mit CSS alleine.


    PS: Gerade ältere Browser und Smartphones rödeln bei dem JS ewig rum. Ein Bild ist aber ratzfatz gerendert. ;)

    Mit Tippfehler hatte ich eigentlich die "<ESP8266WiFi.h>" gemeint.
    Das mit dem Serial.println() war nur für dich damit du siehst dass es an dem nicht liegen kann.
    Er sagt ja dass er 'WiFi' nicht kennt und nicht dass er "false" nicht kennt.


    Zentris
    Hab keine Ahnung. Sieht nach einer Art "Factory Reset" aus die einfach alle Einstellung löscht.
    Automatisch zusammengefügt:[hr]
    Teste mal folgendes:


    Das Beispiel macht nichts weiter wie sich mit dem Wlan Netzwerk zu verbinden und funktioniert definitiv.


    Hi,
    Klar würde das auch mit einem Mac funktionieren. Weiß aber nicht ob es da noch etwas bezüglich Treiberunterstützung zu beachten gibt. Es gibt ja verschiedene USB Seriell Adaptern (FT232, CHG340, ...). Lässt sich aber bestimmt googlen.


    Wenn du einen Raspi hast könntest du dir den USB Seriell Adapter aber auch sparen und einfach den Raspi zum programmieren verwenden.


    Muss ich gleich mal umstellen :-)


    Hast du jetzt das WiFi.persistent(false) eingebaut?
    Sofern du keine anderen WiFi Methoden verwendest die Einstellungen im Flash speichern könntest du auch einfach WiFi.begin() rauswerfen beziehungsweise das ganze so umprogrammieren dass WiFi.begin() nur wenn wirklich nötig aufgerufen wird. Also beispielsweise erst nach zehn Sekunden. Der ESP verbindet sich ja auch ohne WiFi.begin() automatisch nach dem start mit dem Wlan Netzwerk sofern er schonmal mit diesem verbunden wurde.


    PS: Hab mir auch gedacht Oha als ich das entdeckt hab. Erklärte aber den mysteriösen Tod einer meiner Temp Logger. :X

    Hi Leute,


    Ha da letztens etwas wichtiges in der inzwischen sehr umfangreichen Dokumentation vom ESP8266 Arduino Core entdeckt:
    Wifi.persistent()


    Demnach ist es normalerweise so dass bei wirklich JEDEM Aufruf von unter anderem WiFi.begin() die übergebenen Parameter erneut in den Flash Speicher geschrieben wird auch wenn sich diese gar nicht ändern.


    Programmiert man jetzt bspw. einen Logger der sich zwischen den Messungen schlafen legt oder komplett abschaltet und dann nach dem Start wie üblich WiFi.begin() aufruft wird mit JEDEM start die WiFi Konfiguration erneut in den Flash Speicher geschrieben was natürlich zu Abnützung und schlussendlich zum Tod einzelner Speicherzellen führt.
    Bei einem Projekt bei dem das nur ein paar mal am Tag passiert ist das sicher vernachlässigbar, wenn das aber beipelsweise jede Minute passiert sieht es auf ein Jahr hochgerechnet gleich ganz anders aus.


    Eine einfach Lösung für dieses Problem ist:
    WiFi.persistent(false)


    Diese WiFi Methode stellt sicher dass die Konfiguration nur erneut in den Flash Speicher geschrieben wird wenn sich diese auch geändert hat.
    Wichtig dabei ist dass Wifi.persistent(false) vor allen anderen WiFi Methoden ausgeführt werden muss.


    Allerdings muss man dabei dann bspw. folgendes beachten: (Mehr infos in den Links)

    Quote

    Please note that functions WiFi.disconnect or WiFi.softAPdisconnect reset currently used SSID / password. If persistent is set to false, then using these functions will not affect SSID / password stored in flash.



    Hier geht es zwar speziell um den ESP8266 Arduino core vermute aber, da dieses Problem tiefer geht, dass auch bspw. die NodeMCU Firmware, Micropyhton, Basic und was es nicht sonst so alles gibt davon betroffen sind.
    Die Dokumentation vom ESP Arduino core ist aber soweit ich gesehen hab die einzige die darauf eingeht und auch eine Lösung bietet.



    Links:
    WiFi config corrupted after multiple restarts - https://github.com/esp8266/Arduino/issues/1054
    WiFi.persistent() - https://github.com/esp8266/Ard…neric-class.md#persistent
    Espressif FAQ (Seite 23: Which APIs will write or save data to the flash memory?) - http://espressif.com/sites/def…tion/espressif_faq_en.pdf
    ESP8266 Reboot Cycled Caused by Flash Memory Corruption — Fixed! - http://rayshobby.net/esp8266-r…-memory-corruption-fixed/

    Hi,


    Das Problem liegt bestimmt am sudo. ;)


    sudo fragt standardmäßig nach einer gewissen Zeit erneut dem root Passwort. Wenn es das nicht bekommt kann es das Programm nicht mehr starten weil zu wenig Rechte.


    Nimm die zwei sudos aus dem Skript und starte das Skript selber mit sudo.

    dddafdsf



    Relevantes Github issue
    WiFi config corrupted after multiple restarts - https://github.com/esp8266/Arduino/issues/1054

    Leider doch nix "vici". :lol:

    Quote


    - rw-r-r-- 1 root root 21149 MAr 7 04:33 /AusgeleseneDaten.dat


    Der Timestamp ist auch zu alt. Die Datei wurde schon vor ein paar Tagen erstellt, vermutlich beim händischen ausführen/testen der /etc/rc.local.


    Ich würde jetzt einfach auch davon ausgehen dass mono obwohl das Programm nur eine Kommandozeilenanwendung ist auf die grafische Oberfläche angewiesen ist.
    Deshalb würd ich jetzt mal als erstes alle bisherigen Änderungen(Init Skript, /etc/rc.local,...) rückgängig machen und es über eine ".desktop" Datei versuchen:
    http://www.forum-raspberrypi.d…ostart?pid=35718#pid35718


    "Exec" Zeile würd ich mal so versuchen:

    Code
    ...
    Exec=mono /pfad/zum/programm/software.exe
    ...


    Wenn du willst dass das Konsolenfenster angezeigt wird kannst du noch die Einstellung "Terminal" auf "True" setzen.


    Hier noch ein paar Infos und Links zu .desktop Dateien:
    http://www.forum-raspberrypi.d…fnen?pid=149608#pid149608


    Wenn sich das mono Programm (durch anklicken) wie gewünscht über die .desktop Datei starten lässt kannst du sie in eines der autostart Verzeichnise kopieren(oder verschieben). Da dein Programm keine Rootrechte braucht würd ichs hier rein "machen": ~/.config/autostart/
    Das sollte es dann aber wirklich gewesen sein. :)

    Das Problem ist mit ziehmlicher Sicherheit dass du in deinem Programm keinen Absoluten/Vollständigen Pfad bei der Logdatei verwendest und sie somit nicht da erstellt wird(wurde) wo du sie erwartest:

    Code
    const string filename = "AusgeleseneDaten.dat";
    ...
    FileStream fs = new FileStream(filename, FileMode.Append);
    ...


    Ich hatte mal mit einem über die /etc/rc.local gestartetem Shellskript getestet was in diesem Fall passiert: Die Datei wurde dann einfach unter / erstellt.


    Poste mal die Ausgabe von:

    Code
    ls -la /AusgeleseneDaten.dat




    Das klingt auch sehr danach:

    Quote


    Habe wohl zw. bin/mono ein Leerzeichen gehabt - habe das entfernt und jetzt passiert genau das selbe wie bisher: es startet mono im Hintergrund (durch "top" bestätigt) allerdings wird das Programm an sich nicht ausgeführt.



    Das Programm wird fehlerfrei ausgeführt.


    Diese *U2 bzw *U4 Chips sind normalerweise als USB-to-TTL programmiert. Ein Problem mit diesen *U4 oder *U2 AVR's ist: wenn man den *U4 Chip falsch flasht benötigt einen externen Programmer um das Teil wieder in Betrieb nehmen zu können. Deshalb hab ich darauf lieber verzichtet und beschränke mich auf die eher günstigere und Anfänger freundlicheren Variante ;)


    Versteh ich nicht ganz. Wie meinst du das?
    Wenn da einmal der Bootloader geflash ist muss man da nichts mehr machen. Das ganze verhält sich dann wie ein ganz normales Arduino Board mit bspw. einem FTDI. Für den Sketch ist der USB Controller im ATmega völlig Transparent. Ich weiß aberauch nicht wie das mit dem Bootloader und USB Controller genau funktioniert. Man kann aber ganz normal Serial.println() nutzen. Am PC meldet sich der ATmega als ACM Device an (unter Linux /dev/ttyACMx) und kann wie jedes andere Arduino Board über die IDE programmiert werden.
    Es gibt nur ein paar Dinge die man beachten muss:
    https://www.arduino.cc/en/Guide/ArduinoLeonardoMicro#toc1
    Die stören aber wenn man sie weiß nicht wirklich wie ich finde.


    Ich benutz seit ein Weile eigentlich nur noch die Pro Micro(ebay link) wenn ich mal was teste. Die sind echt super.

    Hi du alter crafter, :)
    Hab zwar momentan nicht geplant deinen TinyRX5 einzusetzen find das ganze aber dennoch interessant. :thumbs1:


    Was mir bisher irgendwie gefehlt hat ist jemand der sagt dass er komplett auf den USB Teil verzichten und stattdessen einfach 5v, Rx, Tx und Gnd vom Pi mit den entsprechenden Pins auf dem TinyRX5 verbinden will.
    Vielleicht kannst du ja noch einen Pin Header für diesen Fall vorsehen.
    Würde mir persönlich besser gefallen wie der eigentlich unnötige "Umweg" über USB.


    Andere Möglichkeit:
    Es gibt auch AVR's mit eingebautem USB Controller: ATmega32U4. Der hätte zwar auch noch einen kleinen Bruder, den ATmega32U2, der hat aber leider keinen ADC.
    Der ATmega32U4 wird auch auf den Arduino Pro Micro / Leonardo Boards eingesetzt. Nachteil ist dass es den nur im TQFP44 Package gibt und er recht teuer (6€) ist.
    Hab selber aber noch keine Platine mit dem gemacht. Die Pro Micro sind aber super und gehören neben den Pro Mini zu meinen absoluten lieblings Arduino Boards.


    Ist jetzt aber beides nur mal so in den Raum geworfen. :)

    Hi,


    Wollt auch noch kurz meinen (unfachmännischen) Senf dazu geben. :)


    1. Ich bin auch in die inch/mm Falle getappt und habs seitdem auf inch.
    Grids hab ich mir 2 verschiedene eingerichtet. Das erste hab ich "grob" genannt und auf "0.05" und "0.025"(alt) eingestellt. Das zweite "fein" auf "0.005" und "0.0025"(alt).
    Diese Kombi hat sich für mich als ideal herausgestellt und hab da die letzen Platinen auch nichts mehr dran schrauben müssen. Am Anfang lass ich es immer auf "grob" und schalte wenn es an die feinarbeit geht auf "fein".
    Mehrere Grids einrichten geht so:
    1. Die Layer die das neue Grid haben soll aktivieren.
    2. Klick mit der rechten Maustaste auf das Grid Symbol und "new" auswählen.
    3. Dem Grid einen Namen(Alias) geben und bestätigen.
    Anschließend kann man mit einem rechtsklick auf das Gridsymbol zwischen den verfügbaren Grids hin und her wechseln.
    (Wie man ein Grid wieder löscht hab ich noch nicht herausgefunden)


    2. Leiterbahnbreite:
    https://www.mikrocontroller.net/articles/Leiterbahnbreite
    http://rn-wissen.de/wiki/index.php?title=Leiterbahnbreiten


    3.
    Auch wenn ich selber nicht alles davon verstanden hab: :rolleyes:
    https://www.mikrocontroller.ne…ignen_von_Platinenlayouts


    6. Autorouter-freier Bereich scheint so zu funktionieren: http://dangerousprototypes.com…ct-layers/#comment-182616 (habs nicht selber getestet)


    7. Ich hab bisher immer den DRC von Adafruit verwendet. Wie klein der Abstand sein darf kommt aber schlussendlich darauf an was der Hersteller machen kann. Ich hab mir darüber aber noch nicht weiter den Kopf zerbrochen.
    Ich hab den DRC von Adafruit mit ein paar anderen(default, OSHPARK, Sprakfun) verglichen und entschieden dass da die Abstände am "schönsten" sind. (Ich seh schon den ein oder anderen: :-/:no_sad: - :auslachen:"Noob!") :lol:
    Ausserdem meckert der DRC wenn Leiterbahnen nicht exakt im 45° oder 90° Winkel verlaufen was ich super finde. :)
    Bisher hatte ich damit keine Probleme und bleibe vorerst dabei.


    8. Wenn das Polygon mit GND verbunden wird sollten die "Orphans" automatisch verschwinden.

    Hehe, Supii.
    Und das noch zu dieser späten Stunde. :)


    Fand ich auch genial. Stecker eingesteckt -> Palim Palim -> "USB Gerät wurde erkannt, Treiber werden installiert" (Oder so) Da hab ich noch ein Windows benutzt - :no_sad::lol: )


    Wirklich programmiert hab ich aber mit dem VUSB Stack nie was. Das war mir damals einfach viel zu kompliziert. :^^:


    Was ich mehr oder weniger unmodifiziert am laufen hatte:
    https://www.obdev.at/products/vusb/easylogger.html
    https://www.obdev.at/products/vusb/hidkeys.html


    und das hier:
    http://www.recursion.jp/prose/avrcdc/
    Das ich auf meinem allerersten Arduino Board (das ich mir natürlich selber gemacht habe) als USB->Seriell Wandler(max. Baudrate: 4800baud) verwendet hab. (Ui, das weckt Erinnerungen... :) )


    Hab in der Projekte Sammlung auch grad wieder das (aus meiner Sicht) aller erste Digistump Dingens das es überhaupt gab entdeckt:
    http://littlewire.cc/


    Es gibt da aber wirklich so viele mega geniale Prjojekte die VUSB nutzen.
    Die Projekte Sammlung ist diesbezüglich eine wahre Goldgrube, wie ich finde.
    Was mir schon immer am besten an den ganzen Projekten dort gefallen hat ist dass es für jedes Schaltplan, Sourcecode und ein Makefile gibt. :thumbs1:
    Allerdings sind das alles keine Arduino sondern AVR Projekte. Was imho ein riesen Unterschied ist weil das zwei völlig unterschiedliche Welten sind.
    I trau mich wetten dass du in den Beschreibungen bspw. nicht einen Fritzing Schaltplan finden wirst.


    Was mir bei den AVR Projekten am besten gefällt ist dass nicht versucht wird alles zu verstecken und zu abstrahieren. Ich will ja eigentlich verstehen was im µc passiert und wieso was das passiert. Da ist Arduino wie ich immer wieder merke einfach nicht das richtige. Setze es aber dennoch immer wieder gerne ein weil ich damit sehr schnell ans Ziel komme und es einfach "bequemer" ist.


    Notiz an mich selber: Wieder mehr mit AVR und weniger mit Arduino Programmierung beschäftigen. :)


    --
    Ja, 2K sind schon ordentlich. Lässt aber zumindest bei tiny85 noch genug Platz fürs eigentliche Programm.
    Auf dem ATtiny45 wären es ja schon 50% des Speichers. Beim 25er 100%. :lol:


    Grüße,
    Joh