BOB-Platine für FiPy

Hallo Clemens,
die Library GitHub - bogde/HX711: An Arduino library to interface the Avia Semiconductor HX711 24-Bit Analog-to-Digital Converter (ADC) for Weight Scales. vom 24.02.2019 scheint stabil zu laufen.

2 Likes

Ich habe gerade den Prototypen in der Garage in Betrieb genommen. Morgen wird Caro ihn begutachten und wir werden das weitere Vorgehen besprechen.
Meine Frage an alle: Welche Pins des FiPy werden für SD-Card, LTE und Lora benutzt?
Herzliche Grüsse
Didi

Das pinout des FiPys sollte das hier sein, darunter der Link zum PDF:

https://docs.pycom.io/.gitbook/assets/fipy-pinout.pdf

Das LTE-Modul verwendet:

  • 7, 10, 11, 12, 13

für LoRa sind diese pins reserviert:

  • 16, 34, 38

Für die SD-Karte müssen wir uns das Erweiterungs-Board anschauen (PDF-Version ebenfalls unten):

https://docs.pycom.io/.gitbook/assets/expansion3-pinout.pdf

Dort sieht man, dass die SD card mit G10, G11, G15 arbeitet, nun wird es etwas kompliziert, da die Nummern noch für das WiPy-Board Version 1 sind, ich denke es sind beim FiPy die “normalen” Pins

  • 17, 21, 22

(ohne Gewähr :-)

2 Likes

Ich war grad mal auf der suche nach freien Pins auf dem FiPy. Wenn ich mir das Pinout Diagramm so ansehe, könnte das schwierig werden, genug zu finden, die wir nicht “eventuell” an anderer Stelle benutzen wollen würden.

Vorschlag:

I²C:    P9-P10
1-Wire: P11
HX711:  P22-P23
free:   P3

Weiß jemand, ob man z.B. wenn die SD karte grad nicht gelesen oder geschrieben wird, sdDATAn auch für andere Zwecke genutzt werden kann?

1 Like

Ich bin gerade auch bei der Pin-Belegung. P23 für HX711 kollidiert mit SD_CLK.
Mein Vorschlag kommt in Kürze. Ich mache gerade eine Tabelle mit allem.

Bis später.

Hier kommt meine vorläufige Tabelle. Ich möchte sie aber noch durch Sketche verifizieren, bevor ich mich an das Layout des BOB-HAT mache.
Hat jemand einen für das Beschreiben der SD-Karte? Die 3 Pins SD_CMD GPIO15, SD_DATA GPIO2 und SD_CLK GPIO14 kommen mir zu wenig vor. Was ist mit Chip-Select?

BOB-HAT-Material.pdf (35,5 KB)

3 Likes

Na, Betriebsspannung und GND braucht sie noch, und allermindestens 100n, besser 1µ keramisch parallel dazu, ganz nahe an der SD ! ;)

Nichts, den brauchst Du hier nicht.

Die SD wird bei pycom im 1 bit-SDIO -Modus betrieben; der CS wäre nur im SPI-Modus für eine SD nötig.

2 Likes

Danke für die ausführliche Tabelle! Bekommst du das nochmal in CSV exportiert? Dann könnte man das leichter in das hier genutzte markdown format exportieren.

1 Like

Wir brachen also bei der Belegung von

sdDATA1 (p3)
sdDATA2 (p9)
sdDATA3 (p10) 

nicht auf die SD-karte rücksicht nehmen, weil nur sdDATA0 (p8) benutzt werden würde.

1 Like

Nachdem Caro am Freitag meinen Prototypen angesehen hat, habe ich die Pinbelegung bearbeitet. Die neuste Version kommt heute abend.
Ich habe das Layout in Fritzing angefangen und am Wochenende etwas Lehrgeld bezahlt.
Ich habe vor 20 Jahren meine letzte Platine gemacht. Kurz: ich muss noch üben, bin aber guten Mutes. Vielleicht kann mir ja jemand helfen?
Die nächste Frage: Micropython oder Arduino-IDE? Ich habe alle Testprogramme in Arduino, auch die von Clemens überarbeitete HX711-Library. Ich teste mit Windows10 und der Arduini-IDE V1.88. Die normalen Arduinos und ESP32 funktionieren ganz einfach damit. Für den FiPy benötigt man (zwingend) den Taster Reset und den Taster Flash, auch wenn das in der Doku anders steht. Deshalb habe ich auch die beiden Taster auf dem Board.

1 Like

Hi @didilamken, bin auch gerade an der Platine, lass uns das gerne zusammen machen!! Fritzing ist zwar nicht “engineer’s first choice”, man kann neben einfachem Platinen-Design aber auch eine schöne breadboard-Ansicht zeichnen, um einfach zu zeigen wo welche Kabel hin sollen.

@einsiedlerkrebs hat am Donnerstag schon eine Platine als Prototyp gelötet, die als “Zwischenlage” zwischen das PyCom-Erweiterungsboard und den FiPy / LoPy passt. Man könnte damit etwas Platz sparen und ggf. auch die Platine mit FiPy ohne das Erweiterungsboard verwenden, falls man keine SD-Karte braucht.

Magst du schon mal die Pin-Belegung hier posten, damit wir die gleiche Belegung verwenden?

MIt C/C++ / Arduino und MicroPython schlagen auch bei mir zwei Herzen in der Brust. Da ich auch schon lange C/C+±Code für Arduino verwende und schreibe ist das naheliegend und war auch meine erste Wahl und so mit @caro noch Anfang des Jahres eigentlich ausgemacht.

Wir sehen aber gerade an verschiedenen Ecken, dass die ESP32-boards mit ihren zwei Kernen doch etwas komplexer und komplizierter sind als ein Arduino, bei dem nur alles seriell abgearbeitet wird und bei dem man sich wenig kümmern muss, dass Dinge sich nicht gegenseitig behindern. Alles hat schon mit dem ESP8266 angefangen, bei dem immer wieder das WLAN-Modul Kernel-Leistung brauchte, damit es nicht abgeschmiert ist. Man musste z.B. damals an diversen Stellen der HX711-lib ein yield(); einfügen, damit der kernel dem WLAN-thread auch wieder erlaubt hat zu schauen, ob über die Funkschnittstelle neues reingekommen ist.

Das ist aber nur ein Aspekt, da PyComs first choice MicroPython ist, entwickeln sie für ihre Hardware erst mal in MicroPython, ggf. gibt es dann jemanden, der die Dinge auch für das Arduino-Universum erschließte, wann das passiert und welche Qualität das hat ist aber nicht berechenbar. Wir haben gerade noch Probleme den neuesten LTE-Standard der FiPy-Module mit MicroPython zu erschließen, der ja eigentlich offiziell von PyCom unterstützt wird, aber selbst das ist noch tricky, wie und ob das überhaupt mit dem Arduin-Core finktionieren würde, wissen wir momentan gar nicht. Da ist die “sicherere” Bank auf den “offiziellen” MicroPython-Code zu setzen, der laut @Andreas auch allgemein die beiden cores meist besser unterstützt.

Ich weiß viele “wenn” und “aber”, wir sind auch hier bei der Nutzung der Technologie relativ weit vorne und nahe dran an Dingen, die noch nicht lange fertig oder gar noch in der Entwicklung sind. Das ist auf der einen Seite super toll, die “Speerspitze” zu sein, Dinge mit als erste für ein neues Anwendungsgebiet zu erschließen, manchmal aber auch frustrierend und demotivierend, weil Dinge noch nicht so funktionieren, wie sie sollen oder wir uns das wünschen. Es ist eben keine consumer-Elektronik, die wir hier einsetzen, und selbst die funktioniert manchmal ja nur holprig! ;-)

Langer Rede kurzer Sinn: Lass es uns mit MicroPython versuchen, @vinz von der Uni Bremen hat da auch schon gut vorgelegt, @Andreas ebenfalls.

1 Like

Hallo Clemens
ich bin gerade am Kochen, deshalb auf die Schnelle ein paar Screenshots:

Mein Prototyp 1 auf Lochraster

Die Pinbelegung von Prototyp 2

Der Teilschaltplan in Fritzing

Das Teillayout ( so weit bin ich bislang gekommen)

Heute Abend habe ich mehr Zeit.

Didi

Prototype: BeeBuerger v1

I just made a sandwich construction based on an Adafruit Perma-Proto 1/4 Sized Breadboard running the Hiveeyes MicroPython Datalogger Firmware.


Wiring:

P22: HX711 SCK
P21: HX711 DT
P16: General purpose input ( GPI(!O) )
P14: General purpose input ( GPI(!O) )
P13: General purpose input ( GPI(!O) )
P11: DS18x20
P10: I²C SCL
P9 : I²C SDA
2 Likes

…guten abend.

Da bin ich mir nicht so sicher, wir bespielen den hier mit dem Extension Board da brauchte es bisher keinen Tastendruck für den normalen Betrieb (reguläres Flashen), lediglich das upgrade der Firmwares brauchte solches.

Im Moment entwickeln wir an einer Micropython version. Es gibt dafür diverse Gründe, vorrangig ist für mich, dass sich mit Python leichter eine generische Firmware bauen lässt die tut was man will und weil ich finde, dass in Python der Einstieg/die Weiterentwicklung tiefere Hürden hat als Arduino/C++.

Na klar! Schickt doch einfach eine (private) Nachricht and @Andreas oder @einsiedlerkrebs mit euren Github Logins und wir fügen euch hinzu!

Nur ein kurzer Hinweis zum deinem Board-Vorschlag, @didilamken: Wir werden leider mit den Tastern alleine nicht auskommen, da wir für WLAN das Netzwerk brauchen und irgendwie das Passwort eingeben müssen, bei LTE den APN. Daher würde ich die Tara- und Justier-Funktion genau wie die WLAN oder APN-Auswahl entweder in eine setup-Routine verschieben (die über die Serielle “bedient” wird) oder (noch besser!!) den FiPy als AccessPoint starten, dann kann man sich mit einem Rechner oder Handy darauf verbinden und alle Konfiguration und Waagen-Justierungen sehr komfortabel darüber machen. @vinz hat hier schon angefangen etwas zu coden. So als Idee die Konfiguration der Feinstaubsensors von luftdaten:

Die pullups bei den Tastern kannst du übrigens physikalisch weg lassen, der ESP32 hat interne pullups und auch pulldowns, die man per Software aktivieren kann, z.B.

Hallo an alle,
ich glaube, wir können uns auf folgende Pinbelegung einigen:
P22: HX711 SCK GPIO25
P21: HX711 DT GPIO26

P11: DS18x20 GPIO22
P10: I²C SCL GPIO13
P9 : I²C SDA GPIO12

Dann können folgende Pins als Input für Taster benutzt werden
P16: SW1 GPIO39
P14: SW2 GPIO37
P13: SW3 GPIO36

und als Ausgang
P3: LED1 GPIO4
P12: LED2 GPIO21
Wer sie nicht benutzt, braucht sie nur nicht zu bestücken.

Reserviert sind für SD-Card
P4: SD_CMD GPIO15
P8: SD-DATA GPIO15
P23: SD_CLK GPIO14

Reserviert für LoRa sind
P5: LoRa_CLK
P6: LoRa_MOSI
P7: LoRa_MISO

Reserviert für LTE sind
P20: LTE_TX
P19: LTE_RTS
P18: LTE_RX
P17: LTE_CTS
P15: LTE_WAKE

Für die Programmierung mit MicroPython braucht man keine weiteren Pins.
Für die Programmierung mit Arduino-IDE sind folgene Pins nötig:
RST: Taster Reset
P2: Taster Flash

Wer also mit MicroPython UND Arduino-IDE testen will, sollte also alle Tasten einbauen.
Auch die LEDs sind sehr gut für die Programmentwicklung und zum Lernen.
Vielleicht will ja mal ein Hobbyimker auch ein Hobbyprogrammierer werden.
Meine Einführungs-Sketche gibt es unter

Clemens hat gerade erwähnt, dass man laut Doku die pullups weglassen kann. Das hat leider bei mir mit der Arduino-IDE nicht funktioniert. Deshalb sind sie auf meiner Platine.

Viele Grüsse
Didi

PS: Ich werde es in der Software testen. Die Widerstände verbrauchen viel Platz. Deshalb wäre es schön, wenn sie wegfallen.

Einige Pins haben die internen pullups / pulldowns nicht und können auch nur als input verwendet werden, das sind laut pinout-Diagramm GPIO34-GPIO39, also genau die pins, die du für die Taster vorgesehen hast, nämlich P13, P14, P16! ;-)

Der Pin P12 ist laut Datenblatt ein Schalter, ob für WLan/Bluetooth die interne oder eine externe Antenne benutzt werden soll. Ich weiß nicht, ob man ihn ohne Probleme als Ausgang nutzen kann, ohne das man Probleme mit dem WLan bekommt.
Hast Du das schon getestet?

1 Like

Das sollte passen!

Beim DS18x20 auf P11 / GPIO22 habe ich noch kurz überlegt den (ist auch MOSI) freizuräumen, falls wir perspektivisch SPI brauchen. Wäre aber eh eine größere Nummer, da CLK auch (von I²C) belegt ist und wir sowieso nix mehr frei haben. Könnte man später aber auch per Software ändern!

P14 ist eh mit einem Button des Erweiterungsboard verbunden. P16 liest am Erweiterungsboard die Batteriespannung, den könnten wir wenn wir auch die Spannung lesen nicht für einen Taster verwenden.

P12 ist – wie @vinz geschrieben hat der Auswahl-Pin für externe / Interne WLAN-Antenne, können wir damit nicht verwenden.

Genau, das passt!

Der Reset-Button ist ja schon auf dem FiPy, kannst du mit dem expansion board den FiPy ohne Tasten flashen? Hast du die Version 2 oder die Version 3 des expansion boards? s.
https://docs.pycom.io/datasheets/boards/expansion3.html#differences-between-v20-and-v30

Der Reset-Button ist ja schon auf dem FiPy, kannst du mit dem expansion board den FiPy ohne Tasten flashen? Hast du die Version 2 oder die Version 3 des expansion boards?

Ich habe das Expansionboard V3.1. MicroPython lässt sich wie dokumentiert flashen, mit der Arduino-IDE geht das leider nicht.
Die Tasten sind sehr klein und lassen sich schwer erreichen, wenn alles in einem Gehäuse versteckt ist. Wenn man alles per Software ( Konfiguration usw. ) machen kann, braucht man auf dem BOB-HAT die Tasten und LEDs nicht zu bestücken und hat freie Hand.

Ich würde gerne den BOB-HAT als Übungsplatine für Anfänger benutzen können. Dann kann man die LEDs blinken lassen, die Taster abfragen, die Sensoren einzeln testen usw. Ich könnte die Testprogrammen schreiben ( oder gibt es das schon ? ), so wie ich es mit der Arduino-IDE für ESP32 DevKitC gemacht habe. Der und mein FiPy laufen in der Garage vor sich hin und haben bald 1 Mio Messungen gemacht.

Das könnte auch Hobbyimker interessieren, die kein WLAN an der Beute haben. Die Prototypen messen Waage, BME280 und DS18B20 und geben die Messwerte auf dem Display aus. Der Abgleich funktioniert auf Tastendruck. Geplant ist die Speicherung auf der SD-Karte. Die kann dann ab und zu ausgelesen werden.

Ich messe so die Daten meiner Solaranlagen seit 2004 und habe sie bis 2016 auf einen Server der Hochschule Bremen übertragen.

http://solarserver.hs-bremen.de/
Das Haus dort ist meins. Die Daten sind leider nicht mehr sichtbar.

Viele Grüsse
Didi