logo elektroda
logo elektroda
X
logo elektroda

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

p.kaczmarek2  11 3222 Fajne? (+7)
📢 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:

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?

O autorze
p.kaczmarek2
Inżynier programista z wieloletnim doświadczeniem embedded i full stack developer. Specjalizuje się w: embedded, Full-Stack Developer p.kaczmarek2 napisał 14403 postów o ocenie 12335 , pomógł 650 razy. Jest z nami od 2014 roku.

Komentarze

czareqpl 01 Mar 2024 13:54

Nie napisałeś dokładnie w jaki sposób wysłałeś plik PDF w celu jego analizy kontekstowej. [Czytaj dalej]

p.kaczmarek2 01 Mar 2024 14:03

Wchodzisz na stronę ChatPDF.com, nie musisz się nawet logować, po prostu przerzucasz plik PDF na takie pole: https://obrazki.elektroda.pl/2345657200_1709297924_thumb.jpg Wersja darmowa, podobnie... [Czytaj dalej]

speedy9 01 Mar 2024 16:26

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... [Czytaj dalej]

silvvester 01 Mar 2024 17:46

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... [Czytaj dalej]

gulson 01 Mar 2024 19:42

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. [Czytaj dalej]

pixel7 02 Mar 2024 08:34

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

andrzejlisek 03 Mar 2024 14:52

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... [Czytaj dalej]

pixel7 05 Mar 2024 06:53

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? [Czytaj dalej]

andrzejlisek 05 Mar 2024 12:20

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... [Czytaj dalej]

czareqpl 05 Mar 2024 13:05

Czyli w sumie jak inteligentny człowiek, który nie jest krową o niezmiennych poglądach. [Czytaj dalej]

pixel7 05 Mar 2024 16:22

Właśnie o "dokładacza" pytam. Będzie miał wręcz nieograniczone kompetencje. [Czytaj dalej]

%}