INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Nano als I/O Erweiterung für den RPi
09.01.2020, 07:52 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2020 10:40 von Bitklopfer.)
Beitrag #1
Nano als I/O Erweiterung für den RPi
Hallo zusammen,

Mein Name ist Michael um meine C++ Kenntnisse nicht einrosten zulassen habe ich dieses Projekt an gefangen.

Eigentlich sollte es ein reines Software Projekt bleiben und die Hardware kaufen und zusammen Stecken aber irgend wie hat das nicht geklappt. Jetzt hole ich doch wieder Steckbrett und Lötkolben raus was ich über Jahre nicht mehr gemacht habe.

Wirkliche Mikrocontroller Programmierung Erfahrung habe ich keine.
Was mir wichtig ist ist die Nachbaubarkeit des Projektes und deswegen bin ich zum Arduino gekommen. Weil ich dachte das kann ja wirklich jeder und so ist das anpassen der I/O für den Einzeln etwas einfacher. Doch ganz ehrlich ich komme an meine Grenzen. Gerade was das Wissen um Elektrische Signale und so angeht.

Der PI hat ja kein Analogdigital Wandler und da ich auch die Rechnen Leistung für anderes brauche soll der Arduino Nano dem PI ein bisschen was ab nehmen. Auch hat der PI nur einen "echten" PWM den man eigentlich für den Sound braucht es sei den man macht die Soundausgabe per HDMI bzw braucht sie gar nicht...

Vor diesem Hintergrund und der schon sehr langen Projekt Laufzeit wäre sicher wenn alles wie von Vorne Anfängt einiges einfacher zu lösen möchte aber Ungerne alles neu Kaufen.

Crosspostings sind sicher nicht doll aber werden sich hier wahrscheinlich nicht ganz vermeiden lassen da in diesem Form die CarPC Tummeln und das Projekt ja beides ist.

1. Step ist jetzt das Protokoll (weiß nicht wie ich das anders Nennen soll) zwischen Nano und PI. Und da brauche ich Ideen.

Der Nano ist via Levelshifter am I²C des PI's angeschlossen. Grundsätzliche Kommunikation geht. Zwar habe ich jetzt ein echtes 5Volt / 3,3 Volt Problem aber dazu vielleicht Später mehr.

Aufgabe des Nano soll sein Foto Diode einlesen (AD) und zwei mal PWM einmal für den Lüfter vom PI (der nervt wenn man in Fest an 5Volt hängt). Und das zweite PWM fürs HDMI Display (Hintergrundbeleuchtung). Dafür auch die Fotodiode erkennen der Helligkeit. Keine Ahnung ob das mit der Diode von den Werten her ausreicht aber erstmal Probieren den Sensor kann man später auch noch mal Tauschen. Das PWM für das Display muss 3,3 Volt sein aber jetzt soll es erstmal um das Protokoll gehen zwischen Nano und PI.

Die RS232 des Pi ist durch das Netzteil belegt (ATMega 48 eigene Platine) und USB ist schon mehr verbraucht als da ist so blieb nur der I²C.

https://raspicarprojekt.de/showthread.php?tid=1866

Jemand Ideen wie ich das jetzt am einfachestens auf Setze ? Ist es sinvoll den Nano nach Neuen Werten zu pollen oder eher auf eine INT Leitung setzen ? Der Level Shifter hat ja noch 2 Kanäle frei zur Zeit. Ich träume von so einer Lösung ala geben wert X weiter der PI weiß dann per Konfig was das ist. Nur die zwei PWM und das Licht sind fest.

Ich hoffe den Mega Text versteht irgend wer hier

Mein Projekt
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.01.2020, 10:43
Beitrag #2
RE: Nano als I/O Erweiterung für den RPi
(09.01.2020 07:52)DerkleinePunk schrieb:  Hallo zusammen,
....
Ich hoffe den Mega Text versteht irgend wer hier

schon verstanden und deswegen habe ich den Thread Titel ergänzt weil hier geht es um Arduino mit seinen Derivaten und nicht um Raspberry Pi...
lgbk Moderator

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.01.2020, 11:40 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2020 11:41 von Tommy56.)
Beitrag #3
RE: Nano als I/O Erweiterung für den RPi
Evtl. kannst Du für die Kommunikation hier etwas entnehmen.
Da ist der Master zwar ein NodeMCU (ESP8266) aber den Master aus dem Pi musst Du ja sowieso extra schreiben.
Vergiss den Pegelwandler zwischen beiden nicht.

Als Sensor für die Helligkeit würde ich eher einen LDR, als eine Photodiode nehmen, der reagiert linearer und ist damit besser einstellbar.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.01.2020, 11:42 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2020 11:55 von hotsystems.)
Beitrag #4
RE: Nano als I/O Erweiterung für den RPi
(09.01.2020 07:52)DerkleinePunk schrieb:  .....
Ich hoffe den Mega Text versteht irgend wer hier

So wie ich das jetzt lese, sollte es mit einem Nano gut funktionieren.

Bei dem Umfang, den du mit dem Nano erledigen musst, sollte ein Pollen reichen und bei Änderung von irgend welchen Werten werden diese wenn nötig per I2C an den Pi übertragen.

Allerdings würde ich (meine bisherige Erfahrung) zur Erkennung von Helligkeit lieber einen LDR nehmen. Den kannst du problemlos am digitalen analogen Pin auswerten und damit die Beleuchtung des Displays steuern.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2020, 10:09
Beitrag #5
RE: Nano als I/O Erweiterung für den RPi
Erst mal dank an Bitklopfer für das Anpassen des Titels.

Leider habe ich trotz der Aktivierung der Benachritigung keine Mail erhalte aber egal jetzt habe ich es ja gesehen.

Das ist der Sensor der zur Zeit am Nano hängt.

Das ist der Levelshifter der zur Zeit verbaut ist.

Alles auf Steckbrettern erst mal.

[Bild: steckbrett-entwurf_steckplatine.jpg]

Das Bild sollte sich immer mal wieder Ändern ich versuche es Aktuell zu halten.

Danke der MCU link hilf ein wenig es zu verstehen. Klar muss ich den Master im PI Schreiben das ist klar. Das wir Lustig Remote Debuggen vom PI und dann noch in der Nano gucken. Aber ich will es ja so...

Frage ist es wirklich so Sinvoll in der Callback vom Wire so viel Code aus zuführen oder ist es nicht besser da so schnell wie möglich raus zu gehen und die Antwort dann in der Mainloop zu erstellen ? Oder führt das dann zu dem Problem das die Antwort vielleicht nicht Fertig ist wenn die requestEvent kommt.

Empfinde ich das nur so oder verbraucht die Wire ein bisschen viel Speicher auf dem Chip ?

https://bitbucket.org/numberfive/sdl2gui...nd_IO_I2C/

Da ist der Code noch ist es mehr oder weniger Leer

Macht es sinn Debug ausgaben unter binden zu können oder ist das egal wenn er immer mal wieder was sendet ? Auch wenn gerade keiner rein guckt.

Mein Projekt
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2020, 10:27 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2020 10:29 von hotsystems.)
Beitrag #6
RE: Nano als I/O Erweiterung für den RPi
Warum postest du den Sketch nicht gleich hier im Forum ?

Hier dein Sketch:
Code:
#include <Wire.h>
#define SLAVE_ADDRESS 0x21
#define LED 13
#define PWM1 3
#define PWM2 11

int sensorWert = 0;
int ledState = LOW;

void setup() {
  Serial.begin(9600);
  // Define the LED pin as Output
  pinMode (LED, OUTPUT);
  // PWM as Ouputs
  pinMode(PWM1, OUTPUT);
  pinMode(PWM2, OUTPUT);

  //Setup PWM
  TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM20);
  //490.196Hz Timer 2 prescaler (64)
  TCCR2B = _BV(CS22);
  //30.637Hz Timer 2 prescaler (1024)
  //TCCR2B = _BV(CS22) | _BV(CS21) | _BV(CS20);
  
  OCR2A = 0xFF; // 100%
  OCR2B = 0xFF; // 100%
  
  Wire.begin(SLAVE_ADDRESS);
  Wire.onReceive(receiveData);
  Wire.onRequest(sendData);

  Serial.println(F("Boot Done"));
}

void receiveData(int byteCount){
  while(Wire.available()) {
    int number = Wire.read();
    Serial.print(F("data received: "));
    Serial.println(number);
    if (number == 1) {
      if (ledState == LOW){
        ledState = HIGH;
      } else {
        ledState = LOW;
      }
      digitalWrite(LED, ledState); // set the LED on
    }
  }//while
}

// callback for sending data
void sendData(){
  Wire.write(sensorWert);
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(100);
}

Dann kann ihn jeder gleich sehen und der verschwindet nicht irgend wann.
Deine seriellen Ausgaben kannst du doch als Debug einrichten und je nach Wunsch ein- bzw. ausschalten.

Edit:
Ok, der von dir verwendete Sensor geht auch, kann allerdings einfacher (LDR + Widerstand am analogen Pin) ausfallen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2020, 10:41
Beitrag #7
RE: Nano als I/O Erweiterung für den RPi
Mit dem Sensor hätte ich noch eine Option was zu machen wenn ein Bestimmter Lichtwert ereicht ist ok was sinvolles fällt mir auch die Schnelle auch nicht ein.
Ausserdem kann ich das System der Zeit nur über ein 12 V (Klemme 15) Signal wecken. An sonst ist alles Strom los im Ausgeschaltet zu stand. Meine Fantasie ist da schon mal durch gegannen als ich gesehen habe was der Gyro sensor der noch in der Zeichnung fehlt so alles kann. Wenn der das System wecken könnte. Aber ich triffte schon wieder ab.

Das Sktech hier nicht rein zu machen war Absicht noch ist nichts Funktionales drin und da der Code des ganzen Projekt dort liegt wird sich der Ort sicher nicht so schnell ändern.

So jetzt mal alles anwerfen und sehen ob wir die Kommunikation mit dem PI hin bekommen.

Soll ich jetzt lieber pollen also pro Zeit einheit fragen Nano hast du was oder ein Digipin Opfern und ein Int Signal senden ?
Jemand eine Meinung ?

Mein Projekt
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2020, 10:56
Beitrag #8
RE: Nano als I/O Erweiterung für den RPi
(10.01.2020 10:09)DerkleinePunk schrieb:  Frage ist es wirklich so Sinvoll in der Callback vom Wire so viel Code aus zuführen oder ist es nicht besser da so schnell wie möglich raus zu gehen und die Antwort dann in der Mainloop zu erstellen ? Oder führt das dann zu dem Problem das die Antwort vielleicht nicht Fertig ist wenn die requestEvent kommt.
Falls Du das auf mein Beispiel beziehst, ja das soll sicherstellen, dass die Antwort breit ist, denn im Normalfall wird die gleich nach Rückkehr der Anfrage abgerufen.
Es werden doch nur ein paar Byte gesetzt. Das sieht nur so viel aus wegen der möglichen verschiedenen Antwortfälle.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Schaltuhr Erweiterung 433Mhz Funk volvodidi 17 2.041 12.01.2020 14:50
Letzter Beitrag: hotsystems
  Arduino Nano, Sensoren und Nextion MotD 24 9.202 30.08.2018 10:42
Letzter Beitrag: hotsystems
  Laser mit arduino nano TTL modulieren Wranox 0 3.222 30.07.2015 15:38
Letzter Beitrag: Wranox
  Linienfolger mit Arduino Nano reenoh 16 11.824 27.05.2015 11:04
Letzter Beitrag: reenoh
Wink DSLR mit Arduino Nano steuern. Eichner 12 12.132 25.03.2015 17:27
Letzter Beitrag: Eichner
Rainbow RC Beleuchtungsmodul mit Arduino Nano Kyrill 7 7.407 15.03.2015 14:02
Letzter Beitrag: querkopf71
  Erweiterung für SD: fprintf_, fgets_, fscanf_ HaWe 0 1.638 08.03.2015 17:23
Letzter Beitrag: HaWe

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste