Trådlös Pekskärm och "router" för "intelligent" hem
Postat: 24 augusti 2012, 23:42:44
Ok då var det dags att lägga upp mitt senaste projekt,
som består av två enheter, HACS (Home Automation Central System) och WTSUP (Wireless Touch Screen Unit Pad).
Support lista (routern):
* Ethernet - TCP klient (HACS kan koppla upp mot en extern server) / server (ifrån extern nätverksenhet så som PC)
* 433 MHz RF sändare för styrning av trådlösa strömbrytare av typ, fixed code och NEXA "självlärande" koder
* 433 MHz RF mottagare (ej implementerad i mjukvara ännu), skulle kunna användas för att "routa" om befintliga fjärrkontrollers funtioner, samt att trådlösa termometrar/väderstationer skulle kunna stödas.
* 2x nRF24L01 2 Mbit RF transceivers, billiga trådlösa enheter med färdigt kontrollsystem, och har automatisk återsändning samt adressering (ca 20:- för en enhet) dessa använder jag för att styra andra prylar som kräver stabilare/snabbare data-överföring, WTSUP använder nRF24L01. Kopplas in via 4pin-SPI, de har även en interrupt-utgång.
* Radiotronics Wi.FS24-100ST, som kör Freestar protokollet, men kan uppdateras till Zigbee. Dessa moduler använde jag tidigare men de är ganska dyra (200:-) de är också långsamma 250 kbit/s radio-trafik men kör över UART på 19200 bit/s.
HACS använder PIC18F97J60 som är en PIC-micro med inbyggd ethernet-PHY (det behövs bara en RJ-45 + magnetics) för att få en komplett nätverksenhet, mjukvaran finns tillgängligt via "Microchip Solutions" som TCPIP-Demo App MDD.
Denna mjukvara har jag sedan byggt på så att ovan support-lista är uppfylld.
Mjukvaran är byggd så att jag jag kan "routa" meddelande mellan de olika systemen.
t.ex.
TCP-server -> nRF24L01, nRF24L01 -> TCP-klient
nRF24L01 -> WiFs24, WiFs24 -> nRF24L01
433 MHz systemet kopplar bara mot trådlösa strömbrytare och inga egentliga meddelande skickas över detta system.
HACS-meddelande som skickas till HACS är uppbyggda enligt föjande modell:
[system att skicka över samt eventuell adress] [data att skicka till mottagaren] [end of message terminator]
HACS-meddelanden som skickas ifrån HACS är uppbyggda enligt föjande modell:
[data att skicka till mottagaren] [källan för detta HACS-meddelande]
Källan för HACS-meddelande anger vart ifrån meddelandet skickades, detta används då källan gör en förfrågan till en enhet i systemet, och när den tillfrågade enheten svarar så skickas [källan för detta HACS-meddelande] + svardata till HACS.
T.ex.
En PC-klient öppnar en TCP-socket och skickar nRF24_A_TXWANA:[nrf dest addr]=[data]
HACS tolkar sedan detta som att data ska skickas med hjälp av nRF24 enhet A till [nrf dest addr]
sedan tas nRF24_A_TXWANA:[nrf dest addr]= bort och [källan för detta HACS-meddelande] läggs till i slutet med seperator tecknet '|'
det som sedan skickas till dest addr är
[data]|TCPC_[socketnr]
denna dest addr tolkar sedan [data] och om en respons behövs så plockas TCPC_[socketnr] ut och respons datat samt [end of message terminator] läggs till i slutet:
TCPC_[socketnr]:[respons data][end of message terminator]
detta skickas sedan tillbaka till HACS som tolkar detta med att skicka [respons data] över den eventuella öppna TCP-socket.
Ok nog med text, här kommer några bilder på min föredetta WTSUP (skärmen slutade att fungera efter att jag tappade den i golvet), skärmen som används är på 2.8",
jag har dock köpt och börjat bygga en ny prototyp som använder en 4.3" TFT med Touch,
(Köpt på eBay som färdig modul med 4.3" TFT + SSD1963 + 4-pin touch + TouchController IC). WTSUP använder i grunden en Atmel AT32UC3B0256 + ett micro-SD kort.
WTSUP använder ett egetutvecklat GUI-system där själva GUI-strukturen lagras som vanliga windows-filer (FAT16) på SD-kortet. Bilderna lagras som BMP filer.
Mjukvaran är baserad på Atmel:s "USB - SD-card mass storage" - exempel, som gör att när jag vill göra förändringar i GUI:t så ändrar jag filerna direkt i PC:n, WTSUP-startas sedan om för att läsa in GUI:t igen.
Eftersom denna MCU bara har 32 kByte i RAM så går sidbytena i GUI:t ganska långsamt, och för att lösa detta så har jag börjat(nästan slutfört en design+layout) som använder AT32UC3A0512 istället, denna MCU har stöd för externt SD-RAM upp till 128 MByte. Jag kommer bara att använda ett 32 Mbyte minne men har räknat på det och det räcker för att lagra 85 st 480 x 272 x 24-bit bilder (den befintliga skärmen är på 480 x 272) denna design mäter 5 x 5 cm (jag kommer använda iteadstudio).
Har planer på att använda en 7" TFT med touch och SSD1963 ifrån eBay (50 USD) har designat kortet med tanke på anslutningen till denna display, men med en enkel adaptor så stöds alla skärmar som har 16-bit + RD + WR + CS + RS.
som består av två enheter, HACS (Home Automation Central System) och WTSUP (Wireless Touch Screen Unit Pad).
Support lista (routern):
* Ethernet - TCP klient (HACS kan koppla upp mot en extern server) / server (ifrån extern nätverksenhet så som PC)
* 433 MHz RF sändare för styrning av trådlösa strömbrytare av typ, fixed code och NEXA "självlärande" koder
* 433 MHz RF mottagare (ej implementerad i mjukvara ännu), skulle kunna användas för att "routa" om befintliga fjärrkontrollers funtioner, samt att trådlösa termometrar/väderstationer skulle kunna stödas.
* 2x nRF24L01 2 Mbit RF transceivers, billiga trådlösa enheter med färdigt kontrollsystem, och har automatisk återsändning samt adressering (ca 20:- för en enhet) dessa använder jag för att styra andra prylar som kräver stabilare/snabbare data-överföring, WTSUP använder nRF24L01. Kopplas in via 4pin-SPI, de har även en interrupt-utgång.
* Radiotronics Wi.FS24-100ST, som kör Freestar protokollet, men kan uppdateras till Zigbee. Dessa moduler använde jag tidigare men de är ganska dyra (200:-) de är också långsamma 250 kbit/s radio-trafik men kör över UART på 19200 bit/s.
HACS använder PIC18F97J60 som är en PIC-micro med inbyggd ethernet-PHY (det behövs bara en RJ-45 + magnetics) för att få en komplett nätverksenhet, mjukvaran finns tillgängligt via "Microchip Solutions" som TCPIP-Demo App MDD.
Denna mjukvara har jag sedan byggt på så att ovan support-lista är uppfylld.
Mjukvaran är byggd så att jag jag kan "routa" meddelande mellan de olika systemen.
t.ex.
TCP-server -> nRF24L01, nRF24L01 -> TCP-klient
nRF24L01 -> WiFs24, WiFs24 -> nRF24L01
433 MHz systemet kopplar bara mot trådlösa strömbrytare och inga egentliga meddelande skickas över detta system.
HACS-meddelande som skickas till HACS är uppbyggda enligt föjande modell:
[system att skicka över samt eventuell adress] [data att skicka till mottagaren] [end of message terminator]
HACS-meddelanden som skickas ifrån HACS är uppbyggda enligt föjande modell:
[data att skicka till mottagaren] [källan för detta HACS-meddelande]
Källan för HACS-meddelande anger vart ifrån meddelandet skickades, detta används då källan gör en förfrågan till en enhet i systemet, och när den tillfrågade enheten svarar så skickas [källan för detta HACS-meddelande] + svardata till HACS.
T.ex.
En PC-klient öppnar en TCP-socket och skickar nRF24_A_TXWANA:[nrf dest addr]=[data]
HACS tolkar sedan detta som att data ska skickas med hjälp av nRF24 enhet A till [nrf dest addr]
sedan tas nRF24_A_TXWANA:[nrf dest addr]= bort och [källan för detta HACS-meddelande] läggs till i slutet med seperator tecknet '|'
det som sedan skickas till dest addr är
[data]|TCPC_[socketnr]
denna dest addr tolkar sedan [data] och om en respons behövs så plockas TCPC_[socketnr] ut och respons datat samt [end of message terminator] läggs till i slutet:
TCPC_[socketnr]:[respons data][end of message terminator]
detta skickas sedan tillbaka till HACS som tolkar detta med att skicka [respons data] över den eventuella öppna TCP-socket.
Ok nog med text, här kommer några bilder på min föredetta WTSUP (skärmen slutade att fungera efter att jag tappade den i golvet), skärmen som används är på 2.8",
jag har dock köpt och börjat bygga en ny prototyp som använder en 4.3" TFT med Touch,
(Köpt på eBay som färdig modul med 4.3" TFT + SSD1963 + 4-pin touch + TouchController IC). WTSUP använder i grunden en Atmel AT32UC3B0256 + ett micro-SD kort.
WTSUP använder ett egetutvecklat GUI-system där själva GUI-strukturen lagras som vanliga windows-filer (FAT16) på SD-kortet. Bilderna lagras som BMP filer.
Mjukvaran är baserad på Atmel:s "USB - SD-card mass storage" - exempel, som gör att när jag vill göra förändringar i GUI:t så ändrar jag filerna direkt i PC:n, WTSUP-startas sedan om för att läsa in GUI:t igen.
Eftersom denna MCU bara har 32 kByte i RAM så går sidbytena i GUI:t ganska långsamt, och för att lösa detta så har jag börjat(nästan slutfört en design+layout) som använder AT32UC3A0512 istället, denna MCU har stöd för externt SD-RAM upp till 128 MByte. Jag kommer bara att använda ett 32 Mbyte minne men har räknat på det och det räcker för att lagra 85 st 480 x 272 x 24-bit bilder (den befintliga skärmen är på 480 x 272) denna design mäter 5 x 5 cm (jag kommer använda iteadstudio).
Har planer på att använda en 7" TFT med touch och SSD1963 ifrån eBay (50 USD) har designat kortet med tanke på anslutningen till denna display, men med en enkel adaptor så stöds alla skärmar som har 16-bit + RD + WR + CS + RS.