logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AI czyta noty katalogowe? Czy ChatPDF może pomóc elektronikowi?

p.kaczmarek2 01 Mar 2024 09:41 3264 11

TL;DR

  • Przetestowano ChatPDF na nocie katalogowej MCP23017/MCP23S17, sprawdzając, czy AI potrafi zastąpić ręczne czytanie dokumentacji elektronicznej.
  • Sprawdzono adresowanie I2C, podłączenie do Arduino UNO i Mega oraz przykładowy kod do ustawiania wyjść i rezystorów pull-up.
  • MCP23017 używa 7-bitowego adresu z trzema bitami A2, A1 i A0, co daje osiem adresów, np. 0b0100111 dla wszystkich stanów wysokich.
  • ChatPDF poprawnie odpowiadało na wiele pytań o datasheet, ale przy trudniejszym przenoszeniu kodu na mikroC dla PIC generowało wątpliwy, prawdopodobnie błędny kod.
Wygenerowane przez model językowy.
REKLAMA
📢 Słuchaj (AI):
  • Zrzut ekranu przedstawiający stronę dokumentacji MCP23017/MCP23S17 oraz okno czatu z pytaniem o adresy I2C.
    Każdy chyba słyszał już o ChatGPT, ale czy słyszeliście o ChatPDF? ChatPDF to narzędzie pozwalające na odbycie tytułowej "pogawędki" z plikiem PDF. W tym temacie spróbuję wykorzystać je do wyszukania informacji w nocie katalogowej pewnego expandera portów, zobaczymy jaki będzie tego skutek. Czyżby nadchodziła epoka w której elektronicy nie będą czytali not katalogowych, bo AI to zrobi za nich? Przekonajmy się!

    Eksperyment - nota katalogowa MCP23017
    Zatem wrzucamy PDF i rozmawiamy - zobaczymy, co te AI potrafi. Na pierwszy ogień poszedł expander portów z interfejsem I2C, MCP23017.
    Po wczytaniu dokumentu AI od razu opisuje czym ten dokument jest:
    Chat napisał:

    Hello and welcome to the MCP23017/MCP23S17 PDF file! This document provides detailed information about the features and specifications of these 16-bit remote bidirectional I/O ports. With high-speed I/O interfaces, configurable interrupt output pins, and low standby current, these devices offer versatile and efficient solutions for your project needs.

    Example questions:

    What are the different package types available for the MCP23017/MCP23S17 devices?
    How can the interrupt output pins be configured on these I/O ports?
    What is the operating voltage range for the MCP23017/MCP23S17 devices in different temperature conditions?

    Pora na pierwsze pytanie. Może zapytamy o sekcję adresową:
    Strona dokumentacji MCP23017/MCP23S17 z opisem adresowania urządzeń I2C i SPI
    Czy AI jest w stanie "zrozumieć" jak tworzy się te adresy?
    p.kaczmarek2 napisał:

    Which I2C addresses can have this chip?

    Chat napisał:

    The MCP23017/MCP23S17 devices support 7-bit slave addressing for I2C communication. The slave address consists of four fixed bits and three user-defined hardware address bits (pins A2, A1, and A0). Therefore, with these three address pins, you can configure up to eight different I2C addresses for the chip.

    By setting the states of pins A2, A1, and A0, you can select one of the following I2C addresses for the MCP23017/MCP23S17 devices:

    0b0100000 (A2=0, A1=0, A0=0)
    0b0100001 (A2=0, A1=0, A0=1)
    0b0100010 (A2=0, A1=1, A0=0)
    0b0100011 (A2=0, A1=1, A0=1)
    0b0100100 (A2=1, A1=0, A0=0)
    0b0100101 (A2=1, A1=0, A0=1)
    0b0100110 (A2=1, A1=1, A0=0)
    0b0100111 (A2=1, A1=1, A0=1)
    These addresses allow you to communicate with multiple MCP23017/MCP23S17 devices on the same I2C bus by assigning unique addresses to each device .

    W odpowiedzi pojawił się też link do strony 15:
    Zrzut ekranu pokazujący adresowanie 7-bitowe urządzeń MCP23017/MCP23S17.
    Dla czytelności, sam dodałem spacje:
    
    0b010 0000 (A2=0, A1=0, A0=0)
    0b010 0001 (A2=0, A1=0, A0=1)
    0b010 0010 (A2=0, A1=1, A0=0)
    0b010 0011 (A2=0, A1=1, A0=1)
    0b010 0100 (A2=1, A1=0, A0=0)
    0b010 0101 (A2=1, A1=0, A0=1)
    0b010 0110 (A2=1, A1=1, A0=0)
    0b010 0111 (A2=1, A1=1, A0=1)
    

    Odpowiedź jest całkiem niezła. AI poprawnie podało adresy 7-bitowe, ciekawe, czy też pamięta o bicie Read/Write?
    p.kaczmarek2 napisał:

    Assume that I want to write data to this chip via I2C with A2, A1 and A0 high. Which byte would I need to send first?

    Oczekuję odpowiedzi z rozpiską bitów, a co otrzymam?
    Chat napisał:

    If you want to write data to the MCP23017/MCP23S17 chip via I2C with A2, A1, and A0 set to high, you would need to send the control byte first. The control byte consists of the 7-bit slave address (including the R/W bit) followed by the register address you want to write to.

    For the MCP23017/MCP23S17 devices with A2, A1, and A0 set to high, the slave address in binary form would be 0b0100111 (A2=1, A1=1, A0=1). Since this is a write operation, the R/W bit would be 0.

    Therefore, the control byte you would need to send first for writing data to the MCP23017/MCP23S17 chip with A2, A1, and A0 high would be:

    REKLAMA


    Slave Address: 0b01001110 (R/W = 0)
    After sending this control byte, you can proceed with sending the data bytes to write to the desired registers on the MCP23017/MCP23S17 chip

    Całkiem nieźle! Rozdzielmy sobie:
    
    0b010 0111 (A2=1, A1=1, A0=1).
    

    Tu AI poprawnie dopisało bit R/W, w tym przypadku zerowy:
    
    Slave Address: 0b0100 1110 (R/W = 0)
    

    To teraz zapytajmy o połączenia. Przekonajmy się, czy AI wie np. o rezystorach pull-up:
    p.kaczmarek2 napisał:

    Ok, can you specify how can I connect MCP23017 via I2C to Arduino UNO? Which signals do I need to connect, do I need to connect anything else?

    Odpowiedź (w formie obrazka ze względu na formatowanie):
    Instrukcje połączenia MCP23017 z Arduino Uno przez I2C
    Czyli AI pamiętało o:
    - zasilaniu i masie
    - SDA i SCL (poprawnie podało piny A4 i A5 Arduino)
    Tabela przedstawiająca formy Arduino i ich piny I2C.
    - o pinach adresowych A0, A1, A2
    - a nawet o rezystorach pull-up
    - dodatkowo powtórzyło o zasilaniu
    Może dopytajmy o zasilanie:
    p.kaczmarek2 napisał:

    How to power this circuit, do I need any extra components?

    Odpowiedź:
    Instrukcje dotyczące podłączenia MCP23017 do Arduino Uno przez I2C.
    AI pamięta, że jest mowa o Arduino i niejawnie sobie założyło, że chodzi o Arduino UNO, co jest raczej poprawnym założeniem. AI też pamięta o kondensatorach odsprzęgających.
    Ciekawe co AI zrobi, jak zmienię zdanie.
    p.kaczmarek2 napisał:

    I changed my mind. I want to use Arduino Mega instead. How can I connect MCP23017 to Arduino Mega?

    Oczekuję odpowiedzi zgodnej z tym:
    Tabela pinów I2C dla różnych form czynników płytki Arduino.
    No i taką dostałem:
    Diagram połączeń MCP23017 z Arduino Mega
    To świadczy o tym, że ten model językowy po prostu zna wyprowadzenia Arduino Mega.

    p.kaczmarek2 napisał:

    Ok, on Arduino Mega, can you show a sample code that will set MCP23017 GPA1 to high state and all other port A pins to low state?

    Odpowiedź:
    Fragment kodu Arduino w języku C do sterowania układem MCP23017.
    Fragment opisu kodu dla MCP23017 z użyciem I2C na Arduino Mega
    Kod jako tekst:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Nie mam takiej konfiguracji sprzętu by to odpalić, ale co my tu mamy... do IOCON AI nic nie wpisało, ale ustawia rejestry odpowiedzialne za PORT A. Nie ustawia rezystorów pull up (trzeci rejestr), ale adresy się zgadzają, też patrzę na biblioteki obsługi MCP z Github:
    Wyciąg z kodem źródłowym, przedstawiający definicje adresów rejestrów MCP23017.
    Wygląda ok...

    To sprawdźmy jeszcze, czy AI wie jak ustawić rezystor pull up:
    Fragment kodu C++ pokazujący konfigurację rejestrów MCP23017 z użyciem pull-up.
    Wygląda ok.

    To może coś trudniejszego - spróbujmy przerzucić kod na platformę mikroC dla PIC. Tu jest dokumentacja tamtejszej biblioteki I2C:
    https://download.mikroe.com/documents/compilers/mikroc/pic/help/i2c_library.htm
    Zobaczmy, co AI wygenerowało:
    Zrzut ekranu z fragmentem kodu w mikroC do sterowania MCP23017.
    No i tu jest problem. Nie wydaje mi się, by można było to zrobić wszystko w jednej transakcji I2C. Jeszcze gdyby kolejne bajty miały być umieszczane na kolejne rejestry w pamięci (poprzez autoinkrementacje wskaźnika), to by to przeszło, ale przecież tu chcemy pisać do osobnych rejestrów. Zresztą, nawet ten tryb trzeba by włączyć:
    Fragment dokumentacji dotyczący trybów Byte i Sequential oraz operacji zapisu I2C dla MCP23017.
    Diagram sekwencyjnego i bajtowego zapisu danych do MCP23017.
    No nie przekonuje mnie ten kod. Obawiam się, że to tak nie zadziała, a jak Wy myślicie?

    Podsumowanie
    Zasadniczo mam dwa wnioski:
    - ten model językowy rzeczywiście jest w stanie znaleźć informacje w PDF
    - ten model językowy posiada też dość pokaźny zbiór wiedzy spoza podanego PDF, wie np. które piny Arduino to I2C, itd, zna mniej więcej biblioteki Arduino
    Natomiast model nie jest idealny i jak to zwykle bywa "halucynuje" bądź "zmyśla", w przypadku mniej znanych języków bądź problemów może tworzyć odpowiedzi wyglądające na poprawne ale w rzeczywistości nie działające.
    Mimo wszystko, ciekawe jak to będzie wyglądać za rok czy tam za 10 lat, zapraszam do komentowania. Czy widzicie potencjał w takim "AI pomocniku" do czytania not katalogowych?

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
    Inżynier programista z wieloletnim doświadczeniem embedded i full stack developer.
    Specjalizuje się w: embedded, Full-Stack Developer
    p.kaczmarek2 napisał 14548 postów o ocenie 12551, pomógł 654 razy. Jest z nami od 2014 roku.
  • REKLAMA
  • #2 20985602
    czareqpl
    Poziom 33  
    Posty: 1955
    Pomógł: 196
    Ocena: 579
    Nie napisałeś dokładnie w jaki sposób wysłałeś plik PDF w celu jego analizy kontekstowej.
  • REKLAMA
  • #3 20985610
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14548
    Pomógł: 654
    Ocena: 12551
    Wchodzisz na stronę ChatPDF.com, nie musisz się nawet logować, po prostu przerzucasz plik PDF na takie pole:
    Interfejs użytkownika ChatPDF.com z miejscem do przeciągania plików PDF
    Wersja darmowa, podobnie jak z GPT, ma swoje ograniczenia, ale widziałem też że pojawiają się już w sieci darmowe, możliwe do odpalenia lokalnie modele i to też postaram się omówić wkrótce.

    Polecam wszystkim poeksperymentować, dajcie znać czy u Was to narzędzie się sprawdza czy nie.

    Added after 3 [minutes]:

    EDIT: Swoją drogą wrzuciłem też notę katalogową mało znanego układu SM15115E i poprosiłem o przykładowy kod - niestety wyszła herezja, ChatPDF ubzdurał sobie, że użyje do tego biblioteki Wire z Arduino... no trudno, ale to już wiadomo było przy ChatGPT - te modele językowe robią sensowne odpowiedzi tylko na tematy które miały szeroko opisywane w danych uczących.
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #4 20985801
    speedy9
    Pomocny dla użytkowników
    Posty: 12023
    Pomógł: 1233
    Ocena: 2420
    Ja chciałbym zaznaczyć, że PDFy potrafi też czytać Microsoftowy Copilot w przeglądarce EDGE. Pomimo,że PDF jest po angielsku, to pytać można po polsku i odpowiedzi też będą po polsku. Odpowiedź na pierwsze pytanie jest inna i widać halucynacje (skąd mu się nagle D0, D1 i D2 wzięło?)
    Screenshot przedstawiający pytanie użytkownika i odpowiedź Copilot na temat adresów I2C układu MCP23017.
    Niemniej warte potestowania.
  • #5 20985906
    silvvester
    Poziom 25  
    Posty: 953
    Pomógł: 25
    Ocena: 161
    p.kaczmarek2 napisał:
    Czy widzicie potencjał w takim "AI pomocniku" do czytania not katalogowych?


    Nie nie widzę. Być może kiedyś AI przyda się do wspomagania procesów np. routingu. Być może jeśli baza półprzewodników poszerzy się do 99% jakie dostępne są na rynku, AI przyda się do wyszukiwania podzespołów o określonych parametrach czy funkcjach.
  • #6 20986108
    gulson
    Administrator Systemowy
    Posty: 29320
    Pomógł: 148
    Ocena: 6018
    silvvester napisał:
    Być może jeśli baza półprzewodników poszerzy się do 99% jakie dostępne są na rynku, AI przyda się do wyszukiwania podzespołów o określonych parametrach czy funkcjach.

    Do tego pewnie będzie to zmierzać, ale jeszcze trochę wody upłynie. Na razie ważniejsze jest generowanie kotków, memów i filmów.
    Taka gospodarka.
  • #7 20986569
    pixel7
    Poziom 24  
    Posty: 656
    Pomógł: 53
    Ocena: 160
    p.kaczmarek2 napisał:
    Czy widzicie potencjał w takim "AI pomocniku" do czytania not katalogowych?

    Lektur, uczniowie też nie będą czytać, wszystko opowie wujek GPT. I z tą wiedzą rusza w życie.
  • #8 20988346
    andrzejlisek
    Poziom 32  
    Posty: 3637
    Pomógł: 82
    Ocena: 707
    pixel7 napisał:
    p.kaczmarek2 napisał:
    Czy widzicie potencjał w takim "AI pomocniku" do czytania not katalogowych?

    Lektur, uczniowie też nie będą czytać, wszystko opowie wujek GPT. I z tą wiedzą rusza w życie.

    Można powiedzieć, że to będzie kompresja stratna tekstu literackiego. Istotne informacje będą zachowane, ale oryginalny tekst i nieistotne informacje będą bezpowrotnie utracone. Dokładnie tak samo, jak kompresja stratna obrazu.

    Dodano po 3 [minuty]:

    silvvester napisał:
    p.kaczmarek2 napisał:
    Czy widzicie potencjał w takim "AI pomocniku" do czytania not katalogowych?


    Nie nie widzę. Być może kiedyś AI przyda się do wspomagania procesów np. routingu. Być może jeśli baza półprzewodników poszerzy się do 99% jakie dostępne są na rynku, AI przyda się do wyszukiwania podzespołów o określonych parametrach czy funkcjach.

    Natomiast, jak w bazie znajdą się podstawowe półprzewodniki, jak tranzystory, tyrystory, triaki, takie AI pozwoli łatwo i sprawie uzyskać odpowiedź na jedno proste pytanie ważne przy amatorskim konstruowaniu: Która końcówka elementu to która część elementu? Żeby było wiadomo, która końcówka to baza, która to emiter, która to kolektor (w przypadku tranzystora NPN).
  • REKLAMA
  • #9 20990830
    pixel7
    Poziom 24  
    Posty: 656
    Pomógł: 53
    Ocena: 160
    andrzejlisek napisał:
    Istotne informacje będą zachowane, ale oryginalny tekst i nieistotne informacje będą bezpowrotnie utracone.

    Będziesz o tej istocie sam decydował, wspólnie ze mną, czy oddamy interpretację innym?
    Kto zostanie Wielkim Cenzorem i Nadzorcą Uczenia AI? Wyłonimy go w wyborach, czy pozostawimy losowi?
  • #10 20991159
    andrzejlisek
    Poziom 32  
    Posty: 3637
    Pomógł: 82
    Ocena: 707
    pixel7 napisał:
    andrzejlisek napisał:
    Istotne informacje będą zachowane, ale oryginalny tekst i nieistotne informacje będą bezpowrotnie utracone.

    Będziesz o tej istocie sam decydował, wspólnie ze mną, czy oddamy interpretację innym?
    Kto zostanie Wielkim Cenzorem i Nadzorcą Uczenia AI? Wyłonimy go w wyborach, czy pozostawimy losowi?


    Problem w tym, że nikt nie ma na to wpływu, a także nie jest możliwe obiektywne stwierdzenie, jaka decyzja jest słuszna, nawet zapewne sami programiści ChatGPT nie mają, bo to może zależeć od wcześniej zapodanej treści, którą ten GPT analizuje.

    Poza tym algorytm będzie zmienny, bo co rusz do "bazy wiedzy" będą dokładane nowe materiały i dzisiaj GPT wyda taką odpowiedź, a jutro już inną na to samo pytanie.
  • #11 20991208
    czareqpl
    Poziom 33  
    Posty: 1955
    Pomógł: 196
    Ocena: 579
    andrzejlisek napisał:
    Poza tym algorytm będzie zmienny, bo co rusz do "bazy wiedzy" będą dokładane nowe materiały i dzisiaj GPT wyda taką odpowiedź, a jutro już inną na to samo pytanie.


    Czyli w sumie jak inteligentny człowiek, który nie jest krową o niezmiennych poglądach.
  • #12 20991448
    pixel7
    Poziom 24  
    Posty: 656
    Pomógł: 53
    Ocena: 160
    andrzejlisek napisał:
    bo co rusz do "bazy wiedzy" będą dokładane nowe materiały

    Właśnie o "dokładacza" pytam. Będzie miał wręcz nieograniczone kompetencje.
📢 Słuchaj (AI):

Podsumowanie tematu

✨ W dyskusji poruszono temat wykorzystania narzędzia ChatPDF do analizy not katalogowych, w tym dokumentacji expandera portów MCP23017. Użytkownicy dzielą się doświadczeniami z używaniem ChatPDF, wskazując na jego ograniczenia, takie jak błędne interpretacje i "halucynacje" AI. Zauważono również, że inne narzędzia, jak Microsoft Copilot, mogą czytać PDF-y i odpowiadać na pytania w języku polskim. W kontekście przyszłości AI w elektronice, uczestnicy dyskusji zastanawiają się nad możliwością wykorzystania AI do wspomagania procesów projektowych oraz wyszukiwania komponentów. Wskazano na potrzebę dalszego rozwoju baz danych półprzewodników, aby AI mogło skuteczniej odpowiadać na pytania dotyczące elementów elektronicznych.
Wygenerowane przez model językowy.
REKLAMA