Я пытаюсь расшифровать сигналы, идущие на регистры сдвига в моей стиральной машине. Регистры STP16CPC05 также являются драйверами светодиодов. Я пытаюсь получить статус от моей стиральной машины, например, оставшееся время, какой цикл, проверить, сделано ли это, и т. д. с помощью ESP12. Если я могу прочитать сигналы, идущие к драйверам светодиодов, я могу определить, какие биты для какого светодиода, а затем определить статус в моей программе.
Моей первой мыслью было использовать собственный сдвиг, но мне с этим не повезло (и, предположительно, digitalread() в любом случае слишком медленный), и я везде читал, что мне следует «просто использовать SPI», поскольку он быстрее. Мне удалось успешно прочитать сигналы с помощью логического анализатора и даже написать скрипт для Arduino Pro Mini, который эмулирует сигналы регистров, чтобы мне было легче отлаживать свой ESP12, не запуская шайбу весь день. Написать мастер SPI относительно легко, но ведомый — это сложная часть. Вот код для Arduino Pro mini, чтобы он мог эмулировать сигналы шайбы:
// SPI master code for Arduino Pro Mini "washing machine clone"
#include <SPI.h>
void setup (void)
{
SPI.begin ();
SPI.setClockDivider(SPI_CLOCK_DIV8);
}
void loop (void)
{
delayMicroseconds(200);
SPI.transfer(0x00); //00 00 11 01 08 01 08 02 02 00 00 0C 67 66 80
SPI.transfer(0x00);
SPI.transfer(0x11);
SPI.transfer(0x01);
SPI.transfer(0x08);
delayMicroseconds(180);
SPI.transfer(0x01);
SPI.transfer(0x08);
SPI.transfer(0x02);
SPI.transfer(0x02);
SPI.transfer(0x00);
delayMicroseconds(180);
SPI.transfer(0x00);
SPI.transfer(0x0C);
SPI.transfer(0x67);
SPI.transfer(0x66);
SPI.transfer(0x80);
delayMicroseconds(200);
}
Кто-нибудь знает, как сделать простой ведомый SPI на esp? Или есть лучший способ понюхать эту шину регистра сдвига? Тактовый сигнал составляет 1 МГц, поэтому он не очень быстрый. Мне нужно только прочитать 15 байт за раз.
Это было многообещающе, но потребовалось много работы, чтобы сократить его до того, что я хочу: https://github.com/JiriBilek/WiFiSpi. Я могу заставить его распечатать данные один раз, но потом я думаю, что у него возникают проблемы со сбросом прерывания приема, потому что он ожидает интерактивного мастера.