jamct / radio-mailbox

ESP32 with LoRa and a proximity sensor
GNU General Public License v3.0
33 stars 12 forks source link

Ordner 05_optimized #1

Closed TobiasBg closed 2 years ago

TobiasBg commented 5 years ago

Hallo @jamct,

schönes Projekt, vielen Dank dafür!

Im Artikel ist noch ein Ordner "05_optimized" erwähnt, könntest du den ggf. noch ergänzen?

Viele Grüße, Tobias

eikaramba commented 5 years ago

Ich schliesse mich meinem vorredner an. Bitte hochladen, ich habe eh schon zu viele Probleme mit dem Projekt gehabt über die ich hier demnächst mal schreiben werde (falsche pin belegung, falsche diagramme, falscher code)

michaelradtke commented 5 years ago

Hallo @eikaramba, ich hatte mir das Projekt auch mal angeschaut - so "out of the box" funktioniert es bei mir ebenfalls nicht. Wäre schön, wenn Du deine Erfahrungen hier teilen würdest.

eikaramba commented 5 years ago

sry für die späte antwort, ich werde nacher nach der Arbeit hier meine erkenntnisse runterschreiben. In der Zwischenzeit gibt es auch hier ein paar infos schon mal (siehe kommentarsektion) https://www.heise.de/ct/artikel/Erste-Schritte-mit-den-Mikrocontrollern-ATtiny84-und-85-4399393.html

außerdem muss an dieser zeile(https://github.com/jamct/radio-mailbox/blob/df29e9ba6395ec00ffd4b26e0ce11105b23a5a0a/01_calibrate/src/main.cpp#L39) noch ein = 0hin, ansonsten wird die messung nicht resetet.

Ich hab das alles inzwischen am laufen, anfang noch mit dem infrarotsensor inzwischen jedoch mit einem einfachen reedkontakt(magnetschalter), der den attiny aufwachen lässt wenn meine briefklappe aufgeht und dann das signal schickt. dadurch schläft der attiny jetzt quasi 99,99% der zeit. Ich stelle nacher den code online

eikaramba commented 5 years ago

hier die richtige pin belegung wenn man platformIO mit attiny nutzt. die roten analogen pins sind die wichtigen Ps8XM

hier mein code als gist: https://gist.github.com/eikaramba/fb9d98a17c99a9b33e9ec6119d3ce9fa

der reedkontakt ist als interrupt auf int0 bzw. digitalpin 2 geschaltet. Heißt der magnetkontakt ist normalerweise geschlossen(HIGH auf pin 2) und wenn er offen geht feuert der interrupt und lässt den arduino aufwachen. Der Code fürs schlafen sieht etwas kompliziert aus, macht aber auch nichts außer alles lahm legen damit möglichst wenig strom verbraucht wird. Hier sei noch gesagt das const EN der input ist für diese lorawanmodul um die stromzufuhr abzuschalten. ich schalte also auch das komplette modul quasi ab solange der attiny schläft (https://www.adafruit.com/product/3072)

Als Reedkontakt habe ich die genutzt: https://smile.amazon.de/gp/product/B00F0BTTBU/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1 (einfach ausprobieren welches kabel wo dran muss)

falls du doch lichtschranke nutzen willst empfehle ich die Doku PDF für den HSDL - 9100 zu googlen, weil ich glaube sogar das Diagram dafür war in der c't falsch von der belegung. bin mir da aber nicht mehr sicher, schadet jedenfalls nicht das nochmal zu prüfen.

michaelradtke commented 5 years ago

Vielen Dank dafür @eikaramba , das Du Deine Erfahrungen teilst.

entttom commented 5 years ago

@eikaramba hast du am EN input des rfm95 auch irgendwas angeschlossen? Sehe ich das richtig das der Magnet Kontakt an den Anschlüssen 5 und 11 des attiny hängt?

eikaramba commented 5 years ago

Ja habe ich das ist der PIN hier im code https://gist.github.com/eikaramba/fb9d98a17c99a9b33e9ec6119d3ce9fa#file-briefkastensensor-cpp-L14 Ich lasse damit das Modul an und ausschalten, das bringt ein ganz klein wenig Stromeinsparung nach meinen messungen statt es nur im idle zu lassen.

Der Magnetkontakt hängt an Pin 5 bzw. INT0 bzw. ArduinoPin2 gemäß der obigen Grafik richtig, das ist dann im Code hier: https://gist.github.com/eikaramba/fb9d98a17c99a9b33e9ec6119d3ce9fa#file-briefkastensensor-cpp-L13 Aber nicht Pin 11, sondern an Ground
=> also Ground <-> MagnetReedKontakt <-> ArduinoPin2

An Pin11 bzw. ArduinoPin8/A2 hängt das rfm95 modul mit dem CS Pin siehe https://gist.github.com/eikaramba/fb9d98a17c99a9b33e9ec6119d3ce9fa#file-briefkastensensor-cpp-L13

PS: Ich habe das ganze Teil inzwischen ja schon länger im Einsatz, ich habe teilweise noch das ich manchmal kein push bekomme wenn meine klappe aufgeht aber leider weiß ich noch nicht wirklich woran es liegt. Vielleicht kommt einfach das LORAWAN signal manchmal nicht an :(

entttom commented 5 years ago

@eikaramba danke habe es nun verstanden! an der umsetzung hapert es leider - wobei es theoretisch funktionieren sollte ich aber nicht weis ob ich ein ausreichende abdeckung mit lora hier habe - habe mir mal ein gateway bestellt und das sehen wir weiter!

wie hast du den teil mit push realisiert? iOS oder android?

eikaramba commented 5 years ago

man kann ganz gut auf https://ttnmapper.org/ oder https://www.thethingsnetwork.org/map sehen was so in der nähe ist an stationen. Wenn du noch fragen hast frag, leider habe ich von meiner Lötplatine nur ganz schwierig zu verstehende handgezeichnete Skizzen. Das bringt nicht viel, sonst hätte ich da die verkabelung mal gezeigt von meinem teil.

Bzgl push das ist nicht schwer. läuft egal ob auf android oder ios mit ifttt. kannst natürlich auch selber eine app schreiben aber das war mir gerade zu viel arbeit. und da ich ifttt eh nutze habe ich deren push service einfach genomen. Einfach der anleitung in der ct folgen und thethingsnetwork(TTN) account machen und einrichten. Danach dort ifttt einbinden und dann lasse ich eine notification anzeigen, wenn der request reinkommt. Nur die Oberfläche von IFTTT ist etwas blöde, hat gedauert bis ich erstmal gefunden habe wo ich da das konfigurieren konnte für TTN

entttom commented 5 years ago

@eikaramba vielen lieben dank da habe ich schon nachgesehen und theoretisch sollte ich eine abdeckung haben - in etwa 1-2 km luftlinie - bin mir nur nicht sicher ob das reicht!

ahh das ist ja easy wenn das mit IFTTT läuft das war mir nicht bewusst dass man das einbinden kann :)

habe mal ne skizze von meiner verkabelung gezeichnet - vielleicht wirfst du einen blick drauf ob alles seine richtigkeit hat um nachfolgenden das leben zu erleichtern? :)

sheet

entttom commented 5 years ago

ich bin langsam wirklich am verzeifeln - es mag nicht klappen und ich weis nicht woran es liegt -_- die verkabelung ist wie folgt:

ATtiny84 - Adafruit RFM95W

  1. VCC - +
  2. Pin0 - auf LED
  3. Pin 1 - RST (RFM95W))
  4. Pin 2 - Magnetkontakt - GND
  5. MOSI (RFM95W)
  6. MISO (RFM95W)
  7. SCK (RFM95W)
  8. Pin8 - CS (RFM95W)
  9. Pin 9 - G0 (RFM95W)
  10. Pin10 - EN (RFM95W)
  11. GND

@eikaramba hast du irgendwas anders verkabelt? event ist mein modul defekt? - habe mir mittlerweile extra einen gateway gekauft weil ich dachte dass ich keine signalabdeckung habe - aber daran liegt es auch nicht -_- jemand eine idee?

eikaramba commented 5 years ago

ich habe auch gefühlt 10 mal fast abgerbochen vor verzweiflung, also kenne ich ;)

Ich würde erstmal nur das lorawanmodul testen, also direkt in die loop funktion mal das ganze feuern lassen. Klappt das denn? Wenn nicht wissen wir es liegt daran.

Allgemein ist natürlich immer gut auch den code zu sehen den du nutzt.

Ich habe bei mir übrigens in der FRM95.cpp zeile 265-267 mit while (digitalRead...) auskommentiert, weil mich nicht interessiert ob der Call erfolgreich war oder nicht, da ich eh nichts anderes mache und darauf warten müsste. Wird natürlich nicht dein Problem lösen, aber.... naja nur so als hinweis.

Update: AHHHHH ich glaube ich weiß wo dein Problem liegt ;) Ich sehe du hast RST verkabelt, genau den gleichen Fehler habe ich auch gemacht und irgendwann zum Spass die Verkabelung entfernt, danach hat es geklappt. ;) ich habe RST gar nicht mehr verkabelt bei mir, probier das mal. Wäre ja witzig wenn du wirklich genauso wie ich das problem hättest. Hab da auch stunden verloren wegen...

entttom commented 5 years ago

@eikaramba ich hab’s endlich geschafft :D der Fehler lag daran dass MISO auf MOSI gehört und Vize Versa - warum auch immer?! Das Problem mit dem RST ist auch ein heißer Kandidat für alle die es nachbauen wollen, im Produktblatt bzw der Homepage steht dass man es als LOW deklarieren muss wenn man es verkabelt :)

eikaramba commented 4 years ago

sehr gut! Ich habe auch einen fehler in meinem gist gefunden, hatte irgendwie das lorawan modul nicht wieder mit EN vom strom getrennt. daher sind meine batterien immer sehr schnell leer gegangen. wird wohl hoffentlich der grund sein wieso es nicht geklappt hat manchmal.

eikaramba commented 4 years ago

FYI: Ich habe inzwischen 2 AA 3000mah Batterien (6Ah) verbaut, jetzt surrt der Briefkastensensor wie ein Kätzchen :) Rechnerische macht das keinen Sinn, aber egal, das Ding hat genug Power noch zum laufen, selbst wenn BER irgendwann fertig wird. 🥇

entttom commented 4 years ago

@eikaramba bin mittlerweile vom adafruit modell weg weil es einfach das 5fache vom normalen RFM95W modul kostet und das funktioniert genauso :) weiters habe ich noch die sleep Library ausgetauscht und verwende nun diese hier: https://github.com/sleemanj/SimpleSleep funktioniert wunderbar wenn man dem letzen bsp auf der seite folgt. der standbyverbauch liegt jetzt irgendwo bei 2 uA (wobei ich das ergebnis nicht ganz glauben kann - theoretisch ergibt sich da aus ner CR2023 ne akkulaufzeit von 14 jahren) - im gegensatz zu 2mA die es vorher verbraucht hat auf jeden fall ne ganze ecke weniger!

eikaramba commented 4 years ago

Voll cool das du hier noch weiter postet, danke für den Input! Ja ich habe auch mal 4 RFM95W Module auf Halte bestellt, die sind einfach günstiger und bestimmt genauso gut. Das Adafruit Teil hat glaube ich noch mehr Toleranz was Spannung anbelangt, aber passt schon ;) Minimalismus FTW :)

Die Sleep Library schaut echt gut aus, toller Fund. Merke ich mir direkt mal. Hab nämlich auch kein Bock mehr eigentlich immer das Low Level mäßig selber manuell zu machen.

Ich habe übrigens das Problem mit der Batterie gelöst indem ich 2x3000mha Akkus dran gepackt habe. Das sollte erstmal die nächsten Jahre halten ;)