이글의 전부 또는 일부, 사진, 소스프로그램 등은 저작자의 동의 없이는 상업적인 사용을 금지합니다. 또한, 비상업적인 목적이라하더라도 출처를 밝히지 않고 게시하는 것은 금지합니다.


 

$5 정도의 저렴한 가격으로 arduino 용 W5100 ethernet shield를 구입했습니다.

 

이 ethernet shield가 arduino 표준 장치입니다.

이 것을 Atmega32 arduino와 연결하여 보았습니다.

 

W5100 ethernet shield의 회로도를 보니까 SPI로 통신합니다.

아니나 다를까 스케치에 기본적으로 포함된 Ethernet 폴더 안의 예제들을 보니까 다 SPI로 통신을 합니다.

SPI 통신을 위해 연결합니다.

 

W5100 ethernet shield의 회로도를 보니까 D13에는 노란색 led가 달려 있고,  D12와 D11은 아무 것도 연결되지 않았으며, D10에는 W5100의 SS 단자와 연결되어 있습니다. SPI 통신에 필요한 MOSI, MISO, SCK는 micro SD 단자 옆에 있는 ICSP 단자에 연결되어 있습니다. 다음과 같이 연결해야 합니다.

 

atmega32 

 W5100

 PB4(SS)

 D10

 PB5(MOSI)

 ICSP 4(MOSI)

 PB6(MISO)

 ICSP 1(MISO)

 PB7(SCK)

 ICSP 3(SCK)


 

아무생각 없이 ATmega32 arduino를 standard로 설정하고 D10, D11, D12, D13과 연결하니까 제대로 동작하지 않습니다.

당연히 안 될 수 밖에 없는게 ATmega32의 SPI는 PB4(SS), PB5(MOSI), PB6(MISO), PB7(SCK)를 사용하는데 어뚱한 핀에다 연결하였으니 될리가 없었습니다.

 

Bobuino 보드 핀 맵은 보니 PB4가 D10, PB5가 D11, PB6이 D12, PB7이 D13으로 맞습니다.

SPI를 이용하는 프로그램을 짤 때에는 babuino로 설정해야할 것 같습니다.

 

5V, 3.3V, GND 등 전원을 연결합니다.

 

스케치의 [파일] 메뉴에서 [예제] - [모든 보드의 예제] 중의 [Ethernet] - [WebServer]를 선택하여 엽니다.

이 예제는 아나로그 핀의 입력 값을 측정하여 웹브라우저로 보냅니다.

소스 중 아나로그 입력 값을 보내 주는 내용을 약간 수정하여 다음과 같이 고정된 문자열을 보내도록 수정하였습니다.

 

원래의 소스

 

    for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
        int sensorReading = analogRead(analogChannel);
        client.print("analog input ");
        client.print(analogChannel);
        client.print(" is ");
        client.print(sensorReading);
        client.println("");
    }

 

 

 

이 내용을 지우고 다음과 같이 입력하였습니다.

    client.println("Here is XXXXXXX, XXXXX's Home!!!\n");
    client.println("I love my family.");
    client.println("I love my life and cook something.\n");
    client.println("Arduino ATmega32 WebServer.");

 

HTML 문서에서 국가 코드를 넣지 않아서 그런지 한글은 깨져서 나옵니다.

 

 

연결하여 동작하는 사진입니다.

 

 


 

 


 

 

AVR은 주로 어셈블리로 프로그램을 짜 와서, C로 짜는 것이 좀 어색합니다. 게다가 아두이노는 처음 접하는 생소한 것이라 다소 헤매는 중입니다.ㅠㅠ

블로그 이미지

엠쿠스

Microprocessor(STM32, AVR)로 무엇인가를 만들어 보고자 학습 중입니다.

,