$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로 짜는 것이 좀 어색합니다. 게다가 아두이노는 처음 접하는 생소한 것이라 다소 헤매는 중입니다.ㅠㅠ
'ARDUINO > AVR' 카테고리의 다른 글
ATmega32 arduino로 LCD Smartie 만들기 (0) | 2018.11.09 |
---|---|
atmega32용 arduino 만들기 (0) | 2018.11.09 |
atmega128용 arduino 만들기(2편) - 소프트웨어 작업 (0) | 2018.11.09 |
atmega128용 arduino 만들기(1편) - 하드웨어 작업 (0) | 2018.11.09 |