- Библиотека для Arduino IDE, сделана в виде класса. Позволяет получить информацию из аксессуара с разъемом Lightning. Подобный функционал реализует iCopy
- Протокол реализован программно (софтверно), использует несколько стандартных функций Arduino IDE.
pinMode();
digitalRead();
digitalWrite();
delayMicroseconds();
- Для наблюдения за сигналами можно использовать мою версию декодер SWI-Protocol-Decoder.
- Необходимо использовать согласователь уровней, например TXS0108E(HW-221) или подобный, иначе спалите контроллер аксессуара!
- Есть подсчет контрольной суммы CRC8 принятых данных.
- Список плат и ядер, с которыми работает библиотека. Проверен мной лично. Не забывайте про согласование уровней!
Плата | Ядро | Согласователь |
---|---|---|
STM32F103C8T6 | Arduino_STM32 | TXS0108E |
STM32F103C8T6 | Arduino_Core_STM32 | TXS0108E |
STM32F401CCU6 | Arduino_STM32 | TXS0108E |
STM32F401CCU6 | Arduino_Core_STM32 | TXS0108E |
STM32F411CEU6 | Arduino_STM32 | TXS0108E |
STM32F411CEU6 | Arduino_Core_STM32 | TXS0108E |
STM32_F4VE | Arduino_Core_STM32 | TXS0108E |
ESP8266 WeMos D1 Mini | Arduino ESP8266 | TXS0108E |
ESP8266 WeMos D1 R2 | Arduino ESP8266 | TXS0108E |
ESP32 Devkit V4 | arduino-esp32 | TXS0108E |
Arduino Nano | Встроенное | TXS0108E |
Arduino Uno | Встроенное | TXS0108E |
Arduino Leonardo R3 | Встроенное | TXS0108E |
Arduino Pro Micro | Встроенное | TXS0108E |
Arduino Pro Mini | Встроенное | TXS0108E |
- Создать объект с именем (в данном случае SWI), указав вывод микроконтроллера к которому подключен контакт ID0 или ID1 (он же ID_BUS, он же ACC_ID).
SWI SWI (uint8_t pin);
- Проверить соединение с чипом в аксессуаре. Запрашивает CHIP_ID и проверяет первый байт на значение 0x75. Костыль, но работает.
bool isLightningConnected(void);
- Запрос значений ChipID побайтово. Допустимые num_byte от 1 до 6.
byte getLightningChipID(uint8_t num_byte);
- Запрос значения VID.
byte getLightningVID(void);
- Запрос значения PID.
byte getLightningPID(void);
- Запрос значения VER.
byte getLightningVER(void);
- Запрос значения AV.
byte getLightningAV(void);
- Запрос значения IDSN побайтово. Допустимые num_byte от 5 до 10.
byte getLightningIDSN(uint8_t num_byte);
- Запрос значений ASN.
char* getLightningASN(void);
- Запрос значений MSN.
char* getLightningMSN(void);
- Запрос побайтово регистра который не описан должным образом. Допустимые num_byte от 1 до 4.
byte getLightningUnknownPack(uint8_t num_byte);
Скачать ZIP-архив нужной версии из раздела Releases. Запустить Arduino IDE. Выбрать Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку. В появившемся окне выбрать скаченный архив. Наглядная инструкция. Не забудьте изучить скетч из примеров.
- Для устойчивой связи, необходимо подключить подтягивающий резисторы номиналом 4.7кОм - 10кОм, между питанием и линией данных, на каждой стороне согласователя. TXS0108E имеет встроенные резисторы, но их может быть недостаточно из-за большого номинала.
- Подключать USB линию нет необходимости. Чип в кабеле работает от фантомного питания 2.5В.
- Использовать напряжение питания чипа выше 2.6В нельзя!.