Pic3Com

Rozhraní: COM port (9600 8N1), Ethernet
Obslužný SW: Web browser, AprsDos, WinAprs, UIView, …
Procesor: PIC 16F877A (cena v GM prosinec 2005 cca 150,- )
Snímané veličiny/Čidla: SMT teplota, výstup z PIC WX full, výstup z aprsd Linux démona, Telnet, Http

Schema:

Schéma ve vyšším rozlišení

 

Osazovací plán:

 

Funkce ovládacích prvků:

jumper/ tlačítko funkce
S1 HW reset Procesoru
JP4,JP2 Volné I/O porty
JP1,JP3,JP5 Při neosazení DS1302
také volné

 

 

Předloha desky plošných spojů:

Eagle 4.03 (zobrazená bitmapa není v měřítku)

 

Fotografie hotového prototypu

Desku plošného spoje si můžete objednat u firmy Spoj, pod označením Pic3Com. Cena nevrtané desky je 73Kč, vrtané 102Kč.

 

Seznam použitých součástek

Díl         Hodnota

C1 20p
C2 20p
C3 100n
C4 100n
C5 100n
C6 470u
C7 1M
D1 LED3MM
D2 LED3MM
IC1 7805T
IC2 DS1302
IC3 Gretz 0.5A
JP1 Dutinka
JP2 Dutinka
JP3 Dutinka
JP4 Dutinka
JP5 Dutinka
Q1 4/10/20MHz
Q2 32.768KHz
R1 1K
R2 1K
R3 10K
R4 330
R5 10K
R6 2k2
R7 1k
R8 1k
R9 1k
R10 1k
S1 DTE6
S2 Prepinac 250V
TR1 230/6V-300mA
U1 PIC16F877A/P
X1 W237-02P (šroubovací svorkovnička 2póly/5mm)
X1-ISA ISA konektor (v GM el. ze dvou kusů 2×31 a 2×18 pinů)
X2 M09H (Canon 9 samec do pl. spoje)
X3 W237-02P (šroubovací svorkovnička 2póly/5mm)

 

Napájení

V případě napájení stabilizovanými 5V se IC2 (stabilizátor) nahradí drátovým spojem. Jinak je napájecí napětí v rozsahu 7-30V na svorkách X1 nebo, při osazení transformátorku, síťových 230V na svorkách X3

 

Zdrojový kód programu PIC

Pic3Com_001.zip (formát pro Microchip assembler)

V souboru jsou přednastavené IP adresy a APRS řetězce v EEPROM, nezapomeňte je změnit tak, aby odpovídaly Vašim.

HEX přeložený program

pro PIC 16F877 a 20MHz krystal

V souboru jsou přednastavené IP adresy a APRS řetězce v EEPROM, nezapomeňte je změnit tak, aby odpovídaly Vašim.

 

Popis zapojení

 

Pic3Com (ve verzi 0.1) jsem vytvořil s cílem mít základ pro spolupráci PIC16F877 procesoru s prostředím Ethernetu (TCP/IP protokolem) za použití ISA NIC 3C509
– Verze 0.1 obsahuje kód pro:

  • inicializaci ISA karty 3c509 (3c509B) – karta musí bý předem nastavena pro komunikaci přes I/O=0x300 a INT=10
  • address resolution protocol – ARP
  • internet protocol – IP (s využitím gateway pro komunikaci v Internetu)
  • ping (ICMP Echo Request / Reply)
  • TCP protokoly – TELNET (server i klient) a HTTP (server, včetně 2KB pro vlastní stránky))
  • UDP protocol daytime – pro sychnronizaci vlastního RTC realizovaného obvodem DS1302
  • změření teploty (až 7mi) připojených čidel SMT 160 (na dotaz přes Telnet protokol)
  • připojení se na aprsd stream s možností autorizace a odesílání dat z připojené meteostaničky
  • možnost volby výstupního formátu dat, přijatých z aprsd streamu mezi TNC2 a UIView log
  • možnost několikaúrovňového debugu běhu programu
  • ovládání přes RS-232 port
  • konfiguraci pomocí EEPROM procesoru

 – Ve verzi 0.1 zbývá ještě skoro 2KB volné programové paměti (1,5KB při maximální debug úrovni) pro implementaci dalších funkcí

 – Celý zdrojový kód je maximálně komentován, pro snadnější orientaci, pokud byste jej chtěli využít nebo měnit, což je pro nekomerční účely dovoleno.

 – Po zapnutí by měla LED bliknout 2x krátce a 1x dlouze, pokud proběhne správně inicializace 3c509 karty. Pak program skočí do hlavní smyčky a čeká na data z internetu (Telnet nebo Http požadavky) nebo z připojené meteostaničky, počítače,… na RS-232. Případně si (dle konfigurace) ještě zjistí MAC adresu pro gateway, vyšle UDP požadavek protokolem daytime na konfigurací daný server, aby si sesynchronizoval čas svého RTC nebo se připojí na aprsd démona serveru v konfiguraci, kde se může i autorizovat a následně odesílat data z připojené meteostaničky.
– Přijde-li ARP požadavek na IP Pic3Com modulu, je tento obsloužen
– Přijde-li ICMP ping požadavek, je vráceno Echo Reply – zde, ale i jinde v síťové komunikaci je omezení max. délky paketu na 222 bytů, v případě pingu to znamená vrácení max. 180ti bytů datové části ping paketu.
– Pro TCP spojení si program maximální délku paketu sám určuje podle standardu TCP – pro telnet spojení ji omezuje, pro http nikoli, neboť jej zajímá pouze první písmenko požadovaného dokumentu. Nicméně i zde platí, že tento znak se musí vejít do 222 bytů celého Ethernet paketu. Neomezování délky je z důvodu, aby klient mohl poslat celý dlouhý HTTP GET dotaz v jednom paketu a nemusel jej dělit do několika paketů, na které by už Pic3Com nereagoval.
– V případě, že dojde k výpadku spojení s aprsd serverem, tak se jej program Pic3Com bude, po timeoutu, zkoušet opětovně navázat.
– Časová synchronizace protokolem daytime/udp je opakována po cca 2h, aby byl zajištěn správný čas vlastního RTC. K tomu, aby fungovala je nutné tuto službu na nějakém stroji v Internetu povolit, můžete si zvolit libovolný port, na kterém poběží a ten uložit do konfigurace v EEPROM.
– Přijde-li Http požadavek, což je TCP/IP paket s TCP portem 80 (nebo aprsd portem 14501) program podle prvního písmene požadované stránky vrátí tuto stránku, uloženou v patřičném formátu přímo v programové paměti procesoru. Pokud požadovanou stránku nenajde, vrací implicitní index stránku.
– Přijde-li Telnet požadavek na telnet server port (23), program vrátí prompt a čeká na příkazy. Všechny příkazy potvrzuje promptem. Momentálně jsou implementovány pouze příkazy q = quit (ukončení telnet relace) a pokud je při kompilaci povoleno, tak i reset programu.
– Přijde-li telnet požadavek na SMT server port (18624), program provede měření teploty připojených čidel (dle konfigurace) a vrátí časové razítko (získané z DS1302 RTC modulu – je-li osazen), následované teplotními údaji ve stupních Celsia jednotlivých čidel. Následně telnet realci ukončí.
– Během běhu program poslouchá i na RS-232 portu a zpracovává případné příkazy (řetězec z meteostaničky je pro něj také příkazem – ulož následující data jako WX řetězec do paměti)
– Při prvním zapnutí je nutno v EEPROM povolit inicializaci DS1302 RTC, jinak pravděpodobně nebude komunikovat. Pokud je RTC zálohováno kondenzátorem, je možno inicializaci zrušit. Pouze pokud by se kondenzátor vybil, bude nutné inicializaci opět povolit.

 – Pokud program nenajde 3c509 kartu, bude LED neustále rychle blikat a program se zde zastaví. Zkontrolojte, zda je karta správně zasunuta do slotu, resp. zda je funkční (nejlépe v PC).
– Pokud program kartu sice najde, ale nebude nakonfigurována pro komunikaci přes I/O=0x300, tak bude LED blikat 2x s následnou delší pauzou. Zde proveďte nastavení parametrů karty na I/O=0x300, INT=10, Media=TP. Pic3Com nepodporuje jiné, než TP rozhraní karty. U karet s možností PNP tuto (PNP) funkcionalitu vypněte.

 – U zdrojového souboru jsou přibalené i soubory vnitřních html stránek včetně jejich html vzorů a programu pro jejich převod z html kódu do RETLW instrukcí. Byty s hodnotou 0x1A v souboru w*.htm jsou místa, která se nahradí aktuálními hodnotami z meteostaničky.

Konfigurace

Pro stažení obsahu EEPROM do souboru a jeho nahrání zpět doporučuji používat pro Windows program Piceerw, od Petra OK1MAB, (komunikuje rychlostí 9k6, 8N1) plná instalace 1.4MB; pouze exe,vyžaduje ocx knihovny (36kB)).

Pro nakonfigurování souboru se staženou EEPROM bude (snad ho v lednu nebo v únoru stihnu napsat) k dispozici program P3C_CFG
Zatím je nutno konfiguraci ve stažené EEPROM provést hexadecimálním editorem. Význam jednotlivých bytů je dostatečně popsán na konci
zdrojového souboru. POZOR – první byte z EEPROM se neposílá, takže v souboru jsou data posunutá (byte na adrese 0x00 v souboru bude v EEPROM ležet na adrese 0x01)

 

Popis příkazů posílaných po RS-232

 

Modul reaguje na následující příkazy ( ^ zde znamená klávesu ESC, znak Escape 0x1b )

  • ^D – zápis následujících bytů do EEPROM (nedoporučuji používat ručně)
  • ^U – přečtení konfigurace EEPROM, pošle délku dat jako první byte (zde 255) a pak data z EEPROM od adresy 0x01 do 0xff
  • ^R – vypíše obsah registrů procesoru – binarne
  • ^r – vypíše obsah registrů procesoru – v ASCII formatu
  • ^W – vypíše obsah WX registrů – tj. řetězec z meteostaničky
  • ^w – zapíše WX řetězec do registrů (meteostanička posílá řetězec počínaje ^w) formát řetězce je <Esc>w000/000g000tnnnbnnnnnhnn<CR>znnnC, kde nn jsou naměřené hodnoty a z je znaménko „-“ pro zápornou teplotu stupňů Celsia nebo mezera pro kladnou
  • ^T – vypíše čas z RTC
  • ^t – nastaví čas RTC dle řetězce následujícího za ^t – formát řetězce je <Esc>tssmmhhDDMMWWYY, ss=sekundy, mm=minuty, hh=hodiny, DD=den, MM=měsíc, WW=den v týdnu, YY=rok
  • ^O – nastaví formát výstupu aprs dat na RS-232 (je-li dalším znakem U, pak bude formát UIView logu, jiný znak znamená TNC2 formát)
  • ^V – vypíše verzi firmware

Kontakt: případné dotazy směrujte na: Tomáš OK1VCF

Tomáš OK1VCF