Arduino 1-wire sniffer (2 / 4 steg)
Steg 2: PC - miniterm (först kontakta)
I Tutorial 214; Med hjälp av en UART att genomföra ett 1-Wire Bus Master beskrivs hur man generera/Hämta 1-wire bussen puls sekvenser. Tyvärr har närvaro & Återställ pulser genereras på 9600 baud medan alla andra (läsa, skriva av 0 och 1) måste skapas med 115200 baud. Som påpekas i App. Obs 74; Läsa och skriva 1-Wire enheter via seriella gränssnitt: "Även om effektiv under operativsystem såsom DOS, moderna operativsystem göra tillgången till UART register ganska ineffektiv" och eftersom vi inte vill använda en DS2480B, vi måste leva med det faktum att en snabb switch av överföringshastigheten vid en kontrollerad buffert är omöjligt.
För det system som jag var detta inte ett problem eftersom jag kunde på ett tillförlitligt sätt upptäcka närvaro & Återställ pulser på en överföringshastigheten 115200 som 0x00 0x00 sekvens. Faktiskt kommer från 9600 till 115200 skulle resultera i 12 byte istället för 1, men i detta fall har vi bara 2 start bits - således 2 byte endast. Även om 0x00 kan vara en skriva 0 - jag såg aldrig värden under 0x80 på bussen och därmed skulle kunna diskriminera mellan skriva 0 och Återställ & närvaro. Vid andra system används (Master & slavar) kunde den exakta tiden och därmed detta faktum ändra.
(Jag använde en OW Server 2 ENET med 1 DS2438 som ett system för dessa tester.)
Att alla sagt, för en första kontakt vi inte har faktiskt att bry sig för mycket, vi måste bara bestämma vad vi vill se och välj sedan rätt överföringshastigheten. Jag använde Python skript miniterm.py som kommer med pySerial modul (Använd mer sistnämnd ändå - gränssnitt Python och Arduino med pySerial är mycket användbar i allmänhet) för att öppna porten och titta på den inkommande trafiken:
$ miniterm.py -D -D -D /dev/ttyACM0 9600
$ miniterm.py -D -D -D /dev/ttyACM0 115200
(Andra portinställningarna är: 8 bitar, ingen paritet, 1 stoppbit vilket är standard i miniterm.)
När vi har en förbindelse som upprättas och se data kommer in, kan vi börja att analysera Bussa trafikerar. Titta på de hexadecimala värden som förekommer (bör vara ca 5 olika värden bara kommer om och om igen), konvertera hex för att lite sekvenser och studera buss tidpunkten, försöker skilja mellan Skriv och Läs operationer, etc.
Om du vill ha en titt på ett mycket skit, tidig och enkel ("proof of concept stat som") skript för att få en uppfattning om hur du fortsätter härifrån, fortsätt sedan till nästa steg.