Spisu treści:
- Krok 1: Istniejące opcje
- Krok 2: DDC to I2C
- Krok 3: Preparowanie kabla
- Krok 4: Gotowy adapter
- Krok 5: Oprogramowanie i projekty
Wideo: Najtańszy na świecie adapter I2C (I-Squared-C): 5 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:33
Stwórz interfejs czujnika dla swojego komputera za mniej niż złotówki! Aktualizacja 6/9/08: Po zbadaniu kilku możliwości doszedłem do wniosku, że nie ma praktycznego sposobu implementacji tej techniki w Microsoft Windows. To nie jest drobiazgowe walenie z systemem operacyjnym, naprawdę zwariowałem, próbując! Przepraszam! Użytkownicy systemu Windows potrzebujący funkcji I2C są najlepiej obsługiwani przez istniejące rozwiązania oparte na USB. Aktualizacja 24.05.08: Dodano obsługę systemu Linux, a także przykładowy kod dla kontrolera Nintendo Wii Nunchuk i „inteligentnej diody LED” BlinkM. Zobacz plik README.txt dołączony do kodu źródłowego, aby uzyskać wskazówki dotyczące kompilacji i konfiguracji w systemie Linux. I2C (skrót od Inter-Integrated Circuit) to dwuprzewodowa magistrala szeregowa zwykle używana w komputerach do komunikacji niskiego poziomu między komponentami wewnętrznymi. I2C jest również popularny w robotyce. Wszystkie rodzaje czujników i elementów wykonawczych są dostępne w formie zgodnej z I2C: dalmierze ultradźwiękowe, czujniki przyspieszenia, przechyłu, temperatury i ciśnienia, serwonapędy i ekspandery magistrali, które zapewniają dodatkowe linie ogólnego przeznaczenia (GPIO). Najnowocześniejsze mikrokontrolery (Atmel), Microchip PIC itp.) mają wbudowaną obsługę I2C. Jednak moc obliczeniowa dostępna w mikrokontrolerach jest ograniczona, a tworzenie oprogramowania - z wyspecjalizowanymi kompilatorami skrośnymi i środowiskami programistycznymi - może czasami być uciążliwe. Ponieważ laptopy i komputery jednopłytkowe stają się coraz mniejsze i coraz bardziej przystępne cenowo, coraz częściej stosuje się te systemy bezpośrednio w projektach z zakresu robotyki i elektroniki. Zapewnia to wystarczającą moc dla nowych możliwości, takich jak przetwarzanie wizyjne i bardziej wyrafinowana sztuczna inteligencja, i znacznie rozszerza zakres dostępnych narzędzi programistycznych i języków… ale stwarza również nowy problem: łączenie tych „zwykłych” systemów z urządzeniami peryferyjnymi odbywa się zwykle za pośrednictwem głównego nurtu porty klasy konsumenckiej, takie jak USB; nie ma dostępnego zewnętrznie „portu I2C”, do którego możemy po prostu podłączyć się, aby skorzystać z naszych czujników… a może jest?
Krok 1: Istniejące opcje
Jednym ze sposobów podłączenia urządzeń I2C do zwykłego komputera stacjonarnego lub laptopa jest przejściówka USB-I2C. Istnieje co najmniej tuzin takich opcji, od zestawów do samodzielnego wykonania z oprogramowaniem open source po wyrafinowane jednostki komercyjne z każdym dzwonkiem i gwizdkiem.
Jedną z wad podejścia USB do I2C jest koszt. W pełni funkcjonalny model komercyjny może kosztować 250 USD lub więcej. Nawet „darmowe” alternatywy homebrew zakładają zbiór części i uprzednią inwestycję w programistę mikrokontrolera i związaną z nim wiedzę, aby z niego skorzystać. Kolejną wadą jest względny niedobór obsługi sterowników poza popularną fałdą systemu Windows. Niewiele z tych urządzeń działa natywnie na komputerach Macintosh lub Linux.
Krok 2: DDC to I2C
Kiedy powiedziałem we wstępie, że na większości komputerów nie ma zewnętrznego portu I2C, skłamałem. Okazuje się, że jest i istnieje od prawie dekady, głównie uśpiony.
Większość nowoczesnych kart graficznych i monitorów obsługuje coś, co nazywa się Display Data Channel (DDC), czyli łącze komunikacyjne w kablu wideo, które umożliwia komputerowi i monitorowi negocjowanie wzajemnie zgodnych rozdzielczości i pozwala na sterowanie programowe funkcjami monitora, do których normalnie uzyskuje się dostęp za pomocą fizycznych przycisków na wyświetlacz. DDC jest w rzeczywistości po prostu implementacją magistrali I2C z kilkoma ustalonymi regułami. Podłączając się do tego połączenia między komputerem a monitorem (lub korzystając z linii DDC na wolnym, nieużywanym porcie wideo, takim jak połączenie monitora zewnętrznego w laptopie), można połączyć się z niektórymi urządzeniami I2C praktycznie bez żadnych kosztów, omijając zwykła potrzeba całkowitego urządzenia adaptera. Wszystko, czego potrzebujemy, aby fizycznie uzyskać dostęp do tej magistrali I2C, to zhakowany kabel wideo…
Krok 3: Preparowanie kabla
Dla naszego interfejsu I2C potrzebne są cztery przewody: zasilanie +5V, uziemienie, dane szeregowe i zegar szeregowy. Pinouty dla różnych typów portów wideo można znaleźć na Wikipedii lub Pinouts.ru. Pamiętaj, jeśli używasz kabla VGA, aby znaleźć taki z pełnym zestawem pinów; niektóre zawierają tylko podzbiór. Odcinając izolację i ekranowanie z zewnątrz kabla, prawdopodobnie znajdziesz w nim dwie grupy przewodów. Grubsze przewody lub wiązki przewodów owinięte w dodatkowe ekranowanie zwykle przenoszą sygnał wideo. Nie jesteśmy nimi zainteresowani i można je przyciąć. Cieńsze, nieekranowane przewody zwykle przenoszą między innymi sygnały DDC (I2C). Multimetr lub tester ciągłości może pomóc w znalezieniu odpowiednich czterech przewodów dla twojego kabla. Korzystanie z gołego złącza może być tutaj korzystne, ponieważ wystarczy przylutować cztery przewody do interesujących pinów. Uwaga dotycząca zasilania +5V: dostępny prąd jest bardzo ograniczony; około 50 mA zgodnie ze specyfikacją DDC. Większość urządzeń I2C pobiera tylko niewielką ilość prądu, więc powinno być możliwe uruchomienie kilku jednocześnie… ale jeśli używa się więcej niż jednej lub dwóch diod LED (lub innych urządzeń o stosunkowo wysokim natężeniu prądu), należy zapewnić zewnętrzne zasilanie.
Krok 4: Gotowy adapter
Oto gotowy adapter. To wszystko! Zrobiłem mój bardzo przysadzisty, aby mógł z łatwością zmieścić się w mojej torbie na laptopa, i dodałem czteropinową wtyczkę, która łączy się bezpośrednio z kontrolerem serwomechanizmu I2C, który mam.
Krok 5: Oprogramowanie i projekty
Kod źródłowy Mac OS X i Linux do pracy z adapterem można pobrać z mojej strony internetowej (link do pobrania znajduje się na dole strony). Jest napisany w C i musisz mieć zainstalowane gcc (Linux zwykle zawiera to domyślnie, podczas gdy użytkownicy komputerów Mac będą musieli zainstalować narzędzia programistyczne, które są opcjonalnym instalatorem na oryginalnym dysku systemu operacyjnego lub można je pobrać bezpłatnie od Apple). Przykładowy kod jest dołączony do odczytu czujnika temperatury, migania "inteligentnej diody LED" BlinkM, zapisu i weryfikacji szeregowej pamięci EEPROM, odczytu sterownika Nintento Wii Nunchuk (tylko Linux) i komunikacji z płytą sterownika serwo. Niestety ten schemat adaptera nie jest kompatybilny ze wszystkimi systemami. Obsługa DDC nie jest wymagana, więc nie wszystkie karty wideo obsługują tę funkcję. Do tej pory miałem szczęście z komputerami Mac, które mają układy graficzne ATI lub Intel, ale systemy oparte na NVIDIA nie mają szczęścia. Po stronie Linuksa testowałem pomyślnie tylko IBM ThinkPad A31p (grafika ATI), ale nie działałby on z Asus EeePC (Intel). Zdjęcia tutaj pokazują stanowisko testowe, które demonstruje różne urządzenia I2C w akcji. Komputer stale odczytuje temperaturę otoczenia z czujnika temperatury I2C, okresowo zapisuje te dane do szeregowego układu EEPROM I2C (tak, mógł po prostu drukować do pliku, ale to miało jeszcze bardziej zademonstrować zastosowania I2C), a następnie serwo (poprzez kontroler I2C) służy jako prowizoryczna tarcza wskaźnika. Mając już bibliotekę i przykładowy kod dla tych urządzeń, złożenie tego demo zajęło tylko kilka minut (a większość z nich polegała na zrobieniu pokrętła wskaźnika).
Zalecana:
Pierwszy na świecie zegar ze świecą światłowodową: 14 kroków (ze zdjęciami)
Pierwszy na świecie zegar ze świecą światłowodową: Postanowiłem zrobić prezent dla mojej żony i chciałem wpaść na oryginalny pomysł. Podobał mi się pomysł ruchomej rzeźby i po długich namysłach wpadłem na pomysł mechanicznego zegara, który migotał i błyskał kryształami, świecami i
Najmniejszy na świecie głośnik Bluetooth ze starych części: 8 kroków (ze zdjęciami)
Najmniejszy na świecie głośnik Bluetooth ze starych części: Jeśli podobał Ci się ten projekt, rozważ zagłosowanie na niego, aby wygrać konkurs Trash to Treasure tutaj - https://www.instructables.com/contest/trashytreasure2020/ W tym Instructable dowiesz się, jak zrobić ultra mały domowy głośnik bluetooth, który pac
Stwórz najmniejsze na świecie wkładki douszne z pojedynczą zrównoważoną armaturą: 7 kroków (ze zdjęciami)
Stwórz najmniejsze na świecie wkładki douszne z pojedynczą zbalansowaną armaturą: to projekt, który ma na celu stworzenie prawdopodobnie najmniejszych pojedynczych wkładek dousznych BA o audiofilskiej jakości dźwięku. Projekt został zainspirowany Final F7200, IEM o wysokiej rozdzielczości za 400 USD na Amazon. Dzięki komponentom dostępnym na wolnym rynku majsterkowicze mogą to zrobić w
Pierwszy na świecie odkurzacz w puszce Altoids: 18 kroków (ze zdjęciami)
Pierwszy na świecie odkurzacz w puszce Altoids: Uwielbiam robić małe odkurzacze i zrobiłem ich wiele odkąd zacząłem ponad 30 lat temu. Pierwsze były w czarnych plastikowych pojemnikach z szarymi nakładkami na zatrzaski lub na imprezowych pudełkach. Wszystko zaczęło się, gdy zobaczyłem, jak moja mama zmaga się z
Adapter I2c do znaków LCD (przykład połączenia I2c): 12 kroków (ze zdjęciami)
Znakowy adapter LCD I2c (przykład połączenia I2c): Robię schemat połączenia dla adaptera i2c do wyświetlania znaków. Sprawdź aktualizacje na mojej stronie. Teraz dodaję olso schemat połączenia okablowania, aby użyć oryginalnej biblioteki, a nie mojej rozwidlonej. Biblioteka LiquidCrystal Arduino dla znakowych wyświetlaczy LCD, rozwidlonego proje