Bin gerade dabei ein
- RFM95-Modul
- SIM800-Modul
- HX711
- DS18B20
- BME280 / I2C und
- I2S-Mic
an einen ESP32 anzuschließen und mir gehen etwas die "normalen", also als output und / oder input nutzbaren pins aus. Daher muss ich einige der wenigen input only-pins des ESP (GPIO 34, GPIO 35, GPIO 36, GPIO 39) ebenfalls verbraten, bin mir aber nicht sicher, welche pins der Module oben nun "input only" für den ESP sind, also vom Modul als output genutzt werden, alleine um Daten zu schicken, aber keine zu empfangen.
Beim RFM Modul sind per SPI die pins für MISO, MOSI, SCK fest vorgegeben. Wäre MISO ein Kandidat oder braucht der nen (internal) pull up, die input only pins haben beim ESP aber keine internal pull-up oder pull-downs. NSS / CS braucht einen output pin, also nix zum verlegen. Die beiden DIOx pins sind softwaretechnisch so unter GitHub - mcci-catena/arduino-lmic: LoraWAN-MAC-in-C library, adapted to run under the Arduino environment beschrieben:
In LoRa mode the DIO pins are used as follows:
DIO0: TxDone and RxDone DIO1: RxTimeout
D.h. DIO0 wird bidirektional als input und output genutzt, hab' ich das richtig interpretiert? DIO1 ist Rx, also Reciver, braucht somit auch einen ouput pin am ESP32.
Das SIM800 hat TX und RX, da könnte ich TX mit einem input only-pin verwenden!
Beim HX711 haben wir DT als input, allerdings mit INPUT_PULLUP, die "input only pins" beim ESP haben aber keine internal pull-ups.
Der Data-pin des DS18B20 arbeitet bidirektional, als nix mit input only.
Beim BME280 sind wir mit I2C auch schnell fertig, SDA ist bidirektional und SCL output. Damit auch keine Option für einen input only.
Beim I2S-Mic haben wir CLK, WS und Data. Ich staune gerade über den I²S – Wikipedia Artikel. da steht "keine bidirektionale Kommunikation". Auf https://docs.arduino.cc/learn/built-in-libraries/i2s steht "the device who generates SCK and WS is the Controller", also output pins des ESP dafür. Wenn Data aber nicht bidirektional ist, könnten wir einen input only pin für I2S Data verwenden?
Alternativen:
Ich könnte identische Pins für RFM95 und SIM800 verwenden, da vermutlich nicht beide parallel zum Einsatz kommen. Will ich aber eigentlich nicht, falls man doch mal per RFM Daten empfangen möchte und dann per GSM wegschicken muss, da kein LoRa-Gateway in der Nähe ist.
Folgende pins verwende ich bisher nicht: GPIO0, GPIO1 (TX), GPIO3 (RX), GPIO2 (onboard LED) und wollte sie eigentlich vermeiden, wegen ESP32 Pinout Reference: Which GPIO pins should you use? | Random Nerd Tutorials :
Siehe auch Strapping Pins explanation - ESP32 Forum
Doch einen von denen noch nutzen?