I2C Gerät

  • Hallo,
    habe ein Gerät mir I2C Schnittstelle. Von diesem möchte ich eine paar Werte auf dem Android Smartphone/Tablet anzeigen und später vielleicht mal setzen. Doku ist vorhanden.
    Wie schließe ich das nun an ein Smartphone an? Ich habe ein (oder das) PICKit, ein I2C->USB Adapter, aber das hat nur eine Windows -DLL dabei, also nichts für Android.
    Auf der anderen Seite habe ich Klassen für I2C in der Entwicklungsumgebung gefunden, das ist ja schon mal sehr gut, nur, wie nutze ich die?
    danke & Gruß

  • Du kannst dein PICKit nicht direkt am Smartphone anschließen.
    Es gibt zwar bei Android eine API dafür (https://developer.android.com/things/sdk/pio/i2c) die bezieht sich aber darauf, das dein PICKit (oder sonst ein IoT) auf Android basiert.
    Wenn du nur Windows Treiber dafür hast, hast du nur die Möglichkeit die Daten zu Windows zu senden bzw zu empfangen. Von Windows aus könntest du theoretisch via eine Api dann per Smartphone/Tablet die Sachen steuern.
    Dann hättest du dein Windows aber immer als Vermittlungsstelle.

  • sorry, falsch ausgedrückt, ich habe das PICKit mit einem Windows-Programm als Vorlage. Damit kann ich Werte auslesen.
    Gleiches will ich mit einer Android-App machen, aber klar, das PICKit hilft mir da nicht weiter, weil es leider keine Android-API hat.
    Frage ist, was kann ich noch nehmen, was gibt es? Letztendlich könnte es auch eine I2C->Blurtooth oder WiFi Umsatzer sein, wichtig ist halt, daß ich darüber das Geräte ansteuern kann.
    Wenn es aber in Android solche I2C Funktionen gibt, muß es doch irgendeine Verbindung zu einem solchen device geben, oder gibt es die Klasse nur deshalb, weil die Android Entwickler hoffen, irgendjemand liefert das "darunter"?

  • Hallo
    Die klasse die @Xcreen beschreibt ist für Android Things und nicht für ein Handy .
    Things ist eigentlich auch so was wie dein PICKit mit einer echten Hardware Schnittstelle zu I2C . auf dem Android läuft und da gibt es die Klasse.



    Genau da liegt beim Handy das Problem das hat das Handy nicht.

  • Genau dein Smartphone ist kein Android Things-Gerät und hat damit die API nicht. Deswegen ja den Zwischenschritt mit Windows.
    Natürlich kannst du auch via Bluetooth/Wlan-Direkt eine Verbindung zu dem Modul aufbauen, ist halt die Frage ob du via Bluetooth/Wlan Modul Befehle zum Auslesen/Setzen von Werten hat (dafür müsstest du mal in die Doku vom Modul schauen).

  • Eigentlich könntest du dein PICKit dazu benutzen als übersetzter zwischen I2C und dem Handy per USB zu arbeiten. Ich weis jetzt nur nicht genau ob es beim Handy möglich ist über Usb eine serielle Schnittstelle zu simulieren. Mit einer entsprechenden Lib denke ich Ja.
    dazu müsstest du natürlich deinen PIC Programmieren. er müsste die werte Über den I2C Bus auslesen und an UART over USB weiterreichen. Im Handy mit Otg baust du dier auch ein Uart over USB und nimmt die werte entgegen.
    die meiste logik steck somit in deinem Pic.


    Am einfachsten wäre wohl wirklich ein Things zu benutzen und dann die Daten vom Things Über Bluetooth, Wlan zu übertragen.

  • die App soll für alle "normalen" Handys sein, also ob ich nun OTG habe oder nicht spielt keine Rolle (wobei ich nicht genau weiß was OTG macht...).
    Ich sehe genau das Problem, daß ich nicht weiß, was das Kit macht. Ich dachte zuerst auch, ok, ich programmiere mal die USB-Schnittstelle, aber das hilft wenig, weil ich ja nicht genau weiß, wie das Kit dann die I2C Schnittstelle behandelt und wie ich was machen muß mit USB. Bestimmt relativ einfach, aber das weiß ich nicht. Unter Windows wird genau dies in der DLL abgewickelt, die hat dann Funktionen, wie man die Befehle an das Gerät sendet, was dazwischen passiert, ich weiß es nicht... zumal ja da noch ein Microcontroler drin ist.
    Ich habe schon gelesen, daß man sowas mit einem Arduino oder Raspberry machen kann, aber ersten bin ich kein Held mit Android programmieren und zweitens käme dann das noch dazu -> leichte Überforderung...
    Zwischenschritt mit Windows scheidet aus, weil es darum geht an mehreren Geräten "im vorbeigehen" mit dem Handy paar Werte wie Temperatur und Spannung auszulesen.

  • Hi Scheibe mal welches Kit du genau hast. Auch welchen Sensor oder Modul du an das Kit hängen willst.



    Wenn du sagst im Vorbeigehen dann fällt ja eine Verbindung über Kabel USB schon flach. Da bleibt dir nur Bluetooth, WLAN.


    Zitat

    >also ob ich nun OTG habe oder nicht spielt keine Rolle (wobei ich nicht genau weiß was OTG macht...).


    Spielt schon eine Rolle wenn du die Daten über USB auf das Handy bekommen willst. Den Ohne OTG ist es nicht Möglich eine UART Serielle Schnittstelle (RS232) über USB auf dem Handy zu betreiben.
    Genau das macht dein Kit mit dem PC auch.
    Das Kit wandelt die seriellen Signale des I2C Buses in UART(RS232) um und bindet es meisten über einen FTDi Ft232t Chip an den USB Bus an.
    Der FTDI beinhaltet schon den gesamten Protokoll Stack für eine UART(RS232) über USB.


    Einige PIC Controller haben diesen Chip schon in sich Integriert und können somit auch gleich über Usb Kommunizieren.
    Der Pc besitzt auch die entsprechenden Treiber um das seriellen Signale UART über USB zu lesen. Das könntest du sogar selber mit aufzeichnen und analysieren, um dahinter zu kommen welche Befehle geschickt werden um zb Daten aus dem Modul abzufragen. Wenn du keine Doku über das Modul hast wird dir da nichts anderes übrig bleiben.


    Mit deinem Handy kannst du dann auch wieder ein UART lib laden und die Daten auswerten.


    OTG braucht du auch um zb. einen USB- Stick anzuschließen.
    Und das haben und können leider nicht alle Handys vor allen billige nicht.


    Also es spielt schon einne Rolle und ohne Grund habe ich auch nicht gefragt.



    Mal eine Frage wie gut kennst du dich denn mit Android aus?
    Hast du schon paar Apps geschrieben?


    Kennst du dich mit Microcontroller aus sowie dein PIC auch einer ist. Denn da wirst du etwas Programmieren müssen meist in C
    oder Assembler.


    So jetzt scheibe weche Hardware du hast dann kann ich dir vielleicht helfen sonst nicht.

  • Hallo,


    "mal welches Kit du genau hast":
    -- es ist das MicroChip PICkit Serial Analyser


    "Auch welchen Sensor oder Modul du an das Kit hängen willst"
    -- wir reden hier von einem Netzteil, daß in vielen Geräten verbaut ist. Und um das mal "schnell" zu prüfen kam die Idee mit dem Handy, denn das hat heute jeder in der Tasche - im Gegensatz zu einem Notebook. Die App soll Spannung, Strom und Temp anzeigen, die I2C Schnittstelle ist dokumentiert, welche Befehle man absetzen muß und wie das Ergebnis zurück kommt.


    "im Vorbeigehen":
    -- war zu flappsig, ich meinte, Monteur geht zum Gerät "schließt" Handy an und sieht dann paar Werte und kann ggf. auch paar einstellen. Also sich mit einem Kabel verbinden würde auch noch gehen (wie das PICkit), solange man das noch halbwegs in die Hosentasche stecken kann, PC auch Notebook scheidet aus. Bluetooth wäre das beste, aber am Gerät habe ich nur I2C. Gäbe es einen I2C -> Bluetooth "Adapter" wäre das vermutlich die beste Lösung. Entweder man läßt den Adapter einfach dran oder steckt sich den mit dem Handy in die Hosentasche.


    "selber mit aufzeichnen und analysieren":
    -- im Prinzip debuggen, das muß aber nicht sein, da bin ich weder sehr fit noch sehr gut drin. So interessant wie das auch ist..


    "OTG braucht du auch um zb. einen USB- Stick anzuschließen.
    Und das haben und können leider nicht alle Handys vor allen billige nicht.":
    -- ok, da könnte man sagen, Vorrausetzung ist ein Handy mit OTG und basta. Ich habe ein Motorola G5 z.B.


    "wieder ein UART lib laden":
    -- sorry nicht ganz kapiert...


    "Mal eine Frage wie gut kennst du dich denn mit Android aus?":
    -- ok, Volltreffer, ehrlich gesagt (noch) gar nicht. Komme aus der Windows- und Datenbankprogrammierung, aber das "technische" reizt mich sehr. In Theorie halbwegs gut (Informatiker), in der Praxis nicht ganz sooo gut, fühle mich nicht als Hacker. App und Android (außer Bedienung meines Handys...) unbekannt.


    "Kennst du dich mit Microcontroller aus": leider nicht.


    "Denn da wirst du etwas Programmieren müssen meist in C oder Assembler.": C kenne (ob ich es gut kann ist was anderes) ich und kleinere Dinge sollten gehen, Assembler habe ich auch mal kurz gemacht, kenne aber zu beidem keinerlei Entwicklungsumgebungen für MicroController und wie man das alles so handelt.



    Danke & Gruß

  • Hallo ich hatte eigentlich gehoft das du den genauen typ des MicroChip PICkit Serial Analyser angibst.
    und auch um welches modul es geht.


    Das du über den Umweg der UART gehen musst habe ich auch schon gesagt.
    Selbst wenn du ein Bluetooth Modu benutzt wird das Modul über eine UART angesprochen.

    Zitat

    "selber mit aufzeichnen und analysieren":
    -- im Prinzip debuggen, das muß aber nicht sein, da bin ich weder sehr fit noch sehr gut drin. So interessant wie das auch ist..

    das war nur wenn du keine doku über die Befehle für dein zu überwachendes modul hättest.



    Zitat

    "wieder ein UART lib laden":
    -- sorry nicht ganz kapiert...

    Damit meinte ich das du auf den Handy unter Android ein Bibliothek benutzen musst um auf die Simulierte UART zuzugreifen. Android Programmierung.



    Eigentlich müsste es schon gehen wenn du mal den Adapter an das Handy anschließt . Und dir mal eine Fertige App für I2C aus dem Store holst. Oder ein Serial USB Terminal


    https://play.google.com/store/…orich.serial_usb_terminal
    https://play.google.com/store/…?id=tk.mirobicu.i2cSender


    dafür brauchst du einen OTG Adapter
    https://www.conrad.de/de/digit…AL!222!3!254339639501!!!g!!


    das könte auch interesant sein


    http://www.robot-electronics.co.uk/htm/usb_i2c_tech.htm
    https://www.antratek.de/enhanc…2eOgKQEAQYBCABEgLY_PD_BwE
    https://www.antratek.de/differential-i2c-breakout-pca9615-qwiic?gclid=EAIaIQobChMIp9nqiYqx3gIVzLDtCh2eOgKQEAQYByABEgLgs_D_BwE
    https://www.amazon.de/dp/B0791…a-614046340512&th=1&psc=1

  • danke für die ausführliche Antworten.


    "genauen typ des MicroChip PICkit Serial Analyser":
    dachte das hab ich getan..? Ok, es ist das Gerät: https://www.microchip.com/Deve…s/ProductDetails/DV164122
    Ich hoffe, da findest Du die notwendigen Infos. Was da drin steckt, weiß ich nicht. Das Board dazu habe ich nicht, kann ich aber besorgen.


    Jetzt blicke ich das auch mit dem OTG, ich was der Meinung, das Handy hat einen ganz normalen USB-Anschluß...


    Jetzt hab ich mal Stoff, werde mir da Kabel besorgen und mal so ein Terminal-Programm holen. Dann sieht man weiter oder - frage ich weiter.

  • OK ja den USB Dongle habe ich schon gefunden. Danke für den Link.
    Hast du den schon an einen i2c Bus gehangen?



    Bin mir nicht sicher ob das ohne der Platine geht. Laut Schaltplan sieht mir das nicht so aus.
    Würde sagen der Dongle dient hauptsächlich zum Programmieren eines PIC Chip über USB .
    Aus dem Dongle ist nicht die I2C Schnittstelle herausgefühlt.



    Ich würde mir einen Adapter von I2C zu USB holen . Da werden die I2C Signale auf USB umgesetzt als RS232.

  • Ok die Pins für des I2c Sind zwar nicht direkt herausgeführt .
    Ist aber über einen anderen Weg den ich jetzt nicht erklären will, über die nach außen geführten Pins möglich.
    Dazu musst du den Dongle aber immer erst in die entsprechende Betriebsart schalten über Software.
    Das müsstest du dann auch vom Handy aus machen. Ich weis nicht ob er sich den Modus merkt.


    Da finde ich eine Lösung die den I2C Bus auf USB direkt umsetz einfacher. Wie gesagt das ganze immer über eine Simulierte RS232.

  • also an dem Netzteil ist ein 2*4-adriger Anschluß, das ist für mich die I2C Schnittstelle.
    Da ist ein Kabel dran mit 8 Adern, die zu 5 und 3 Adern gepackt sind.
    Die 3 Adern gehen über einen 6poligen Stecker in das PICkit, wobei nur 3 belegt sind: _234__.
    Diese Adern sind am Kabel beschriftet:
    Common - orange
    SDA - schwarz
    SCL - grün.
    Das PICkit geht über ein USB-Kabel an einen Windows PC, wo eine Software das komplette Netzteil mit allen Funktionen steuert, also nicht nur die 3 Werte, sondern auch Version der Firmware ausliest usw. Das tut einwandfrei.
    Laut Microchip gibt es eben für Windows eine DLL, wo alle notwendigen Funktionen enthalten sind, dich ich brauche.


    Kannst Du mir den direkten Weg genauer erklären? Hardwaremäßig brauche ich den 8poligen Stecker für das Netzteil, das "OTG"-Kabel geht da ja nicht. Auf dem Handy programmiere ich dann eine logische RS232 Schnittstelle, richtig?


    Aber wie setze ich damit die I2C-Befehle ab? Ich brauche ja Funktionen, die was "in" die RS232 Schnittstelle schreiben, aber hinten was für den I2C Bus rauskommt. Da klemmt's bei mir noch gedanklich. Anders ausgedrückt: jede Schnittstelle hat ja ein Protokoll, die RS232 wohl ein anderes wie die I2C, wer setzt das wo um? Oder bin ich völlig falsch?


    Ich habe mal nach einem Adapter I2C -> USB gegoogelt, aber nichts gefunden von dem ich meine, das könnte was sein.


    Also ein Kabel/Dongle dazwischen ist akzeptabel, bißchen löten wäre auch drin (also so ein 8poliger Stecker mit paar Adern).


    Kann auch noch Bilder machen...

  • ich habe dir doch schon diesen link gegeben
    http://www.robot-electronics.co.uk/htm/usb_i2c_tech.htm
    Vorteil für den ftdi gibt es auch eine Android Lib auf der Webseite von ftdi.
    Den i2c Bus kannst du nicht direkt an das Handy anschließen.
    Da brauchst du immer einen Wandler.


    Mit den Dongle den du hast weiß ich nicht genau wie er die Signale vom rs232 an den i2c weitergibt.
    Eigentlich ist doch alles für deinen Dongle verfügbar sogar der Quellcode in C für den Controller.
    Auch alle Beispiel Programme sind in Visual Basic vorhanden.


    Wenn du es über das Handy und die Virtuelle RS232 machst. Musst du die gleichen Befehle schickern die Windows auch an die virtuelle Rs232 schickt.
    Wie die die Befehle aussehen steht bestimmt in der Doku.


    Dein Handy muss der Master für den I2C Bus sein sollte klar sein.



    Ich persönlich hätte mich wohl für den hier entschieden
    https://www.horter.de/i2c/i2c-usb-modem/i2c-usb-modem_1.html
    das ist auch ein Pic mit einem FTDI aus USB Koppler. Würde den dann in einer terminal Emulation laufen lassen . eventuell würde ich das Firmware Programm etwas anpassen um nicht so viel Arbeit im Handy zu haben. So dass der Controller den Bus selber abfragt und mir nur die relevanten Daten über die RS232 schickt.
    Da ich persönlich lieber einem AVR (ATMega Atmel) programmiere als einen PCI würde ich wohl nach einer Lösung AVR und FTDI suchen bis jetzt noch nicht gefunden.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!