Sterownik NetIO
Tak jak pisaliśmy w poprzedniej części: "Historia jednej płytki (cz. 1)", elementem pośredniczącym pomiędzy adapterem EMS a Ethernet'em będzie prosty kontroler firmy Pollin o nazwie AVR NetIO (link tutaj)| Sterownik AVR-NET-IO firmy Pollin |
Oszczędność kosztów energii można uzyskać poprzez bezpośrednie zasilanie 5V/1A na złącze "J6" NET-IO. Ten sposób zasilania, potwierdzony doświadczeniami autora, pozwala również zasilić płytę adaptera (poprzez 10-pinowe złącze).
Oprogramowanie Ethersex
Tak, Wasze skojarzenia są prawidłowe. Zwłaszcza że logo "Ethersex"Chodzi oczywiście o niezwykle prostą w konfiguracji platformę, która nawet osobom nie będącym biegłymi w programowaniu mikrokontrolerów pozwala samodzielnie zbudowanie działającego i kompletnego oprogramowania.
Pobranie pakietu Ethersex możliwe jest poprzez stronę GitHub: https://github.com/ethersex/ethersex/. W Ethersex Wiki można znaleźć wyczerpujące instrukcje instalacji i konfiguracji, tak więc nie będziemy się tutaj na ten temat rozpisywać. Natomiast niejaki Danny Baumann (zwany "Danny") dodatkowo zintegrował w Ethersex "układ ramkowania EMS", więc nasza instalacja staje się jeszcze prostsza. Dziękujemy Danny!
Po ściągnięciu plików i rozpakowaniu (tak! na serwerze Lunux'owym!), możemy przystąpić do wyboru konfiguracji. Uruchamiamy terminal, przechodzimy do katalogu, w którym rozpakowaliśmy Ethersex i wpisujemy polecenie "make menuconfig" a następnie zaznaczamy opcje jak poniżej:
General setup --->
(AVR) Target Architecture
(ATmega644P) Target MCU
(16000000) MCU frequency
(NetIO) Hardware / Periphery Class
[*] Status LEDs --->
[*] Status LED (Transmitted)
[*] EMS TX
[*] Status LED (Received)
[*] EMS RX OK
[*] Status LED (Error)
[*] EMS RX Failure
[*] VFS (Virtual File System) support --->
[*] VFS file inlining --->
[*] Inline IO
[*] Inline ADC
[*] Inline OneWire
[*] Support Inline SVG
Network --->;
Host Name: "EMS"
(500) Network Buffer Size
[*] Ethernet (ENC28J60) support --->
MAC address: "the MAC address from the label of the ATmega32 Enter"
--- Static IPv4 configuration
- IP address: "192.168.xxx.xxx"
- Netmask: "255.255.255.0"
[*] TCP support
[*] ICMP support
I / O --->
(Simple) I / O abstraction model (Port I / O)
[*] Onewire support --->
[*] Onewire device detection support
Protocols --->
[*] ECMD (Ethersex Command) support --->
[*] TCP / Telnet
(2701) TCP port
[*] EMS Support --->
(64) EMS Buffer Length
(7950) EMS TCP port
[*] Statistics ECMD
Applications --->
[*] System clock support --->
[*] Date and Time support
TimeZone --->
(60) Local time offset to UTC (minutes)
--- Daylight saving
(60) Time offset (minutes )
--- Begin of daylight saving
(3) Month (1-12)
(5) Week (1-5)
(0) Day of week (0-6)
(2) Hour (0-23)
--- End of daylight saving
(10) Month (1-12)
(5) Week (1-5)
(0) Day of week (0-6)
(3) Hour (0-23)
[*] HTTP server --->
(80) HTTP port (default 80)
(8000) HTTP alternative port (default 8000)
AVRDUDE configuration ---> If you work with AVRDUDE: Select your programmer. The fuses are assigned as follows: (e7) Fuse Low byte (FLB) (dc) Fuse High byte (FHB) (ff) Extended Fuse byte (EFB)
Po dokonaniu konfiguracji polecenie "make show-config" powinno zwrócić następujące informacje:
MCU: atmega644p Hardware: netio These modules are currently enabled: ====================================== * ADC * ADC_INLINE * CLOCK * CLOCK_CPU * CLOCK_DATETIME * ECMD_PARSER * ECMD_TCP * EMS * ENC28J60 * ETHERNET * HTTPD * HTTP_FAVICON * I2C_MASTER * I2C_PCF8574X * ICMP * IPV4 * IRMP * NET * NTP * ONEWIRE * ONEWIRE_DETECT * ONEWIRE_DETECT_ECMD * ONEWIRE_INLINE * PORTIO_SIMPLE * STATUSLED_EMS_RX_FAIL * STATUSLED_EMS_RX_OK * STATUSLED_EMS_TX * STATUSLED_ERROR * STATUSLED_RX * STATUSLED_TX * TCP * UDP * UIP * UPTIME * VFS * VFS_INLINE * VFS_INLINE_INLINESVG * VFS_IO_INLINE * WHM
Oczywiście moduły takie jak: przetwornik analagowo-cyfrowy (ADC), mini serwer webowy (HTTPD), interface OneWire czy VFS są niezależne od oprogramowania EMS i mogą być w miarę potrzeb i życzeń włączane lub wyłączane.
Ostatecznie, zanim skompilujemy przygotowaną konfigiracę potrzebne są jeszcze zmiany w pliku"./pinning/hardware/netio.m4":
ifdef (`conf_ONEWIRE ',` dnl / * OneWire port range * / ONEWIRE_PORT_RANGE (PD5, PD5) ') dnl ifdef (`conf_EMS ',` pin (EMS_UART_TX, PD3) ') ifdef (`conf_STATUSLED_EMS_TX ',` pin (STATUSLED_EMS_TX, PD4, OUTPUT) ') ifdef (`conf_STATUSLED_EMS_RX_OK ',` pin (STATUSLED_EMS_RX_OK, PD6, OUTPUT) ') ifdef (`conf_STATUSLED_EMS_RX_FAIL ',` pin (STATUSLED_EMS_RX_FAIL, PB0, OUTPUT) ')
Przypisanie portów w ATmega644P jest teraz następujące:
PD2 = RX PD3 = TX PD4 = LED TX PD5 = 1-Wire PD6 = LED RX OK PD7 = n/c PB0 = RX LED FAIL
Teraz już tylko pozostaje nam polecenie "make" i powiniśmy otrzymać plik typu .hex: "ethersex.hex", który możemy wprogramować do naszej ATmegi644P.
WAŻNE!
Podczas programowania ATmegi należy pamiętać o poprawnym ustawieniu "fuse-bitów". Muszą mieć one następujące wartości:Fuse Low byte (FLB) = e7, Fuse High byte (FHB) = dc, Extended Fuse byte (EFB) = ff
W moim przypadku złe ustawienie fuse-bitów spowodowało taktowanie ATmegi zegarem dzielonym 8x, więc działał, ale nie nadążał czytać telegramów EMS
.
Hexfile
Jeśli nie chemy, nie umiemy lub nie możemy wykonać powyższych kroków, można skorzystać z gotowego pliku, który znajduje się tutaj.Uwaga! w powyższym skompilowanym pliku adres IP ustawiony jest na:
192.168.0.0, a MAC na FF: FF: FF: FF: FF: FF (broadcast).Należy to odpowiednio zmienić! W Net-IO jest to możliwe poprzez przeglądarkę w następujący sposób:
http://192.168.0.0/ecmd?mac "nowy MAC"(wpisujemy bez "". MAC swojego Net-IO można znaleźć na etykiecie naklejonej na ATmega32)http://192.168.0.0/ecmd?ip "nowe IP"(wpisujemy IP bez "").
"... /ecmd?help" wyświetla wszystkie dostępne polecenia, a bardziej szczegółowo można zapoznać się z nim tutaj.Co dalej?
W części 3 opiszemy, jak skonfigurować nasze Raspberry Pi, aby zbierało i prezentowało dane z EMS-Net-IO Adaptera.Ogromne podziękowania dla Ingo Fischer - powyższy tekst powstał na bazie jego opracowania znalezionego pod adresem:
aktualizacja 2016-06-01: http://emswiki.thefischer.net/doku.php
Brak komentarzy:
Prześlij komentarz