Hallo,
ich möchte einmal mein Arduino Nano Testboard vorstellen bzw. zur freien Verfügung stellen. Grundsätzlich passen Nanos mit 328P, 328PB und Every drauf. Die aktuelle Pin Beschriftung vom Projekt ist für meinen Every. Kann jeder für sich abändern.
I2C und SPI sind direkt mit den entsprechenden Nano Leitungen verbunden. Pullups sind vorgesehen, weil die orignalen Nanos keine onboard haben.
Der Footprint von K1 und K7 sind für meine Wago 250-14xx Klemmen. Ist aber doppelt ausgelegt und auch für RM 2.54 Schraubklemmen passend. Der Footprint der PT15 Potis ist ebenfalls "doppelt" ausgelegt. Es gibt Potis mit Abgriffpin am Gehäuserand und welche mit nach innen gebogenen Pin.
Die 5 Cursor Tasten und die vom Encoder sind auf einem Spannungsteiler zusammengefasst.
Die berechneten Widerstandswerte für den Spannungsteiler sind bspw.,
wenn man mit 10k anfängt: 10k, 2k, 3k, 5k, 10k, 30k
wenn man mit 20k anfängt: 20k, 4k, 6k, 10k, 20k, 60k
wenn man mit 30k anfängt: 30k, 6k, 9k, 15k, 30k, 90k
für eine gleichmäßige Verteilung der ADC Digits als Richtwerte.
K4 ist gedacht für eine Verbindung per Flachbandkabel und extra Platine auf ein Steckbrett o.ä..
K8, K9, K11, K13 und K19 sind bewusst nicht fest verdrahtet, damit man diese flexibel an den Nano per Jumperkabel verbinden kann. Damit hat man genügend Flexibilität. Programmiertechnisch kann man sich daran sicherlich austoben.
K4-33 und K4-34 sind bewusst nicht verbunden um eine Masseschleife zu verhindern. Kann man notfalls immer noch eine Brücke einlöten.
Eine Anmerkung zu den K14 ... K17. Platzmäßig passen neben den Molex Mini Spox RM 2.5 auch JST XH RM2.5/2.54 und Molex KK 6373 RM 2.54, wobei es Letztere von verschiedenen Herstellern gibt. Die 3 Footprints sind in der local... Libs enthalten. Der JST XH Footprint ist geändert auf 2.54mm, KiCad hat den Originalen mit 2.5mm. Die Chinesen verkaufen die JST XH auch gern mit 2.54mm. Muss man ggf. etwas verschieben.
Eine Anmerkung was es mit L1 auf sich hat. Das Everyboard ist hinsichtlich AREF etwas anders beschalten wie ein Nano mit 328P. Beim Every hängt ein 100nF und 4,7µF Kondensator an AREF. Wenn man 3,3V und AREF direkt verbindet sorgt das für einen Reset. Weil die Spannung kurz zu weit zusammenbricht. Deswegen habe ich am AREF Pin noch einen 0805er Footprint vorgesehen. Man kann einen Widerstand zwischen 10 und 100 Ohm oder einen 10µH Ferrit (bspw. TDK MLZ2012) einsetzen. Das dazu falls sich jemand wundert.
Bei dem Ein-Kanal 9001 OPV sollte man den richtigen Typ bestellen. Durfte ich Leidvoll erfahren. Der mit 'I' in der Bezeichnung IDBVR ohne 'U' ist richtig. Es gibt nämlich zwei verschiedene Pinbelegungen mit gleichen Gehäuse. Man kann auch wahlweise den 6001er nehmen. Generell sind die OPV Eingänge offen gestaltet um Einflüsse auf weitere Beschaltungen zu vermeiden. Deswegen sind die Leds auch mit OPV entkoppelt. Wer es "stabil" mag muss bei unbenutzten Pin die Pullups aktivieren.
Direkt steckbar sind Bluetooth Module HC-05 oder HC-06 und nRF24. Der Every kann auf Grund besserer Spannungsversorgung das nRF24 Modul direkt versorgen, beim Nano mit 328P sollte man spätestens bei höherere Sendeleistung extern 3,3V einspeisen. Dafür dient die Schraubklemme mit einfachen Verpolungsschutz und dem Jumper JP2.
Da es viele unterschiedliche Footprints für die DC Buchse gibt sind mehrere Footprints vorhanden. Alles in den local... Libs. Im Großen und Ganzen ist es noch lötfreundlich gestaltet. Viel mehr gibts dazu eigentlich nicht zu sagen.
Das .zip File ist ein KiCad 7 Projekt.
Nano-Every-AdapterBoard_230922_v1.02.zip (2,5 MB)
3D Modelle extra wegen Dateigröße. Siehe unten.
Mit "local... Libs" sind gemeint "localSymbols bzw. "localFootprints".
Sketch für die Tasterabfrage
struct Taster {
const uint8_t pin {A0};
uint32_t lastMillis {};
uint8_t temp {};
uint8_t alt {};
uint8_t neu {};
} taster;
uint8_t oldButton;
void setup (void)
{
Serial.begin(250000);
Serial.println(F("\nuC Reset ####"));
}
void loop (void)
{
// Demo für eine Anzeige bzw. Ausgabe
const uint8_t n = aktiverTasterIst(taster);
if ( oldButton != n ) {
Serial.print(F("Taster ")); Serial.println(n);
oldButton = n;
}
}
uint8_t aktiverTasterIst (Taster &b)
{
const uint32_t ms {millis()};
bool stabil {false};
if (ms - b.lastMillis >= 10) {
b.lastMillis = ms;
b.temp = readAnalogTasterPin(b.pin);
if (b.neu == b.temp) { // wenn eingelesener Taster gleich vorherigen eingelesen Taster,
b.alt = b.temp; // dann wird aktueller Taster als stabil betrachtet
stabil = true;
}
else if (b.neu != b.temp) { // wenn eingelesener Taster verschieden vom vorherigen eingelesen Taster,
b.neu = b.temp; // dann Änderung merken
}
}
return (stabil ? b.neu : b.alt);
}
uint8_t readAnalogTasterPin (const uint8_t pin)
{
const uint8_t BUTTONS {6};
const uint16_t RESOLUTION {1024};
const float AVG = RESOLUTION / float(BUTTONS);
uint8_t taster {0};
const uint16_t val = analogRead(pin);
for (uint8_t i = 0; i < BUTTONS; i++) {
if (val < ((i + 0.5) * AVG)) {
taster = i + 1;
break;
}
}
return taster;
}
Das Projekt ist nach besten Wissen und Gewissen erstellt. Die Infofelder sollten ausreichend sein. Ich kann nur noch viel Spaß damit wünschen oder für eigene Zwecke abändern oder oder ...
Edit:
Schaltplan einzeln: Nano-Every-AdapterBoard.pdf (1,1 MB)
Edit:
Ich hatte noch kurzerhand ein zweites HC-05 3D Modell hinzugefügt und aktiviert, aber vergessen das .zip zu aktualisieren. aktualisiertes 3D Modell .zip Paket


