๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[์•„๋‘์ด๋…ธ] ๋ฉ€ํ‹ฐ ํƒœ์Šคํ‚น ํ•˜๊ธฐ - EEPROM & ์‹œ๋ฆฌ์–ผ ํ†ต์‹  ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ป IoT (Embedded)/Arduino

[์•„๋‘์ด๋…ธ] ๋ฉ€ํ‹ฐ ํƒœ์Šคํ‚น ํ•˜๊ธฐ - EEPROM & ์‹œ๋ฆฌ์–ผ ํ†ต์‹ 

์ง•์ง•์•ŒํŒŒ์นด 2023. 4. 5. 12:19
728x90
๋ฐ˜์‘ํ˜•

<๋ณธ ๋ธ”๋กœ๊ทธ๋Š” ์—˜๋ฆฌ์Šค IoT 1๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :-)>

(์ฝ”๋“œ๋Š” ์ €์ž‘๊ถŒ์ƒ ๊ณต์œ  ์•ˆ๋ฉ๋‹ˆ๋‹น!!)

 

๐Ÿฅ‘ EEPROM

: ATmega328 ๋งˆ์ดํฌ๋กœ ์ปจํŠธ๋กค๋Ÿฌ์—๋Š” ์„ธ ์ข…๋ฅ˜์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํฌํ•จ

 

๐Ÿ” Flash Memory

: 32K

: ํ”„๋กœ๊ทธ๋žจ(์Šค์ผ€์น˜) ์ €์žฅ

: ๋น„ํœ˜๋ฐœ์„ฑ

: ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€

 

๐Ÿ” SRAM

: 2KB

: ๋ฐ์ดํ„ฐ ์ €์žฅ

: ํœ˜๋ฐœ์„ฑ

: ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

: ๊ฐ€์žฅ ๋น ๋ฆ„

 

๐Ÿ” EEPROM

: 1KB

: ๋ฐ์ดํ„ฐ ์ €์žฅ

: ๋น„ํœ˜๋ฐœ์„ฑ (์ „์› ์ฐจ๋‹จ๋˜๊ฑฐ๋‚˜ ๋ฆฌ์…‹ ๋˜๋”๋ผ๋„ ๊ฐ’ ์œ ์ง€)

: ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

: ๊ฐ€์žฅ ๋Š๋ฆผ

#include <EEPROM.h>

// EEPROM ์˜ address ์œ„์น˜์— value ๊ธฐ๋ก
EEPROM.write(address, value);
EEPROM.put(address, value);

// EEPROM ์˜ address ์œ„์น˜์—์„œ ๊ฐ’ ์ฝ์–ด์™€ ๋ฐ˜ํ™˜
int value = EEPROM.read(address);
EEPROM.get(address, value);

// address ์˜ value๊ฐ€ ํ˜„์žฌ ์ €์žฅ๋œ ๊ฐ’๊ณผ ๊ฐ™๋‹ค๋ฉด ๊ฐ’ ์“ฐ์ง€์•Š๊ณ ,
// ๊ฐ’์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ(value ๋ณ€๊ฒฝ) ์—๋งŒ ๊ฐ’ ๊ธฐ๋ก
EEPROM.update(address, value);

 

๐Ÿฅ‘ EEPROM ํ™œ์šฉํ•˜๊ธฐ

: EEPROM์€ ๋น„ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•œ ์ข…๋ฅ˜๋กœ ์ „์›์ด ์ฐจ๋‹จ๋˜๊ฑฐ๋‚˜ ๋ฆฌ์…‹๋˜๋”๋ผ๋„ ๊ฐ’์„ ์œ ์ง€

: ๋ฆฌ์…‹๋˜์–ด๋„ ๊ฐ’์„ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์€ ๋ณ€์ˆ˜, ์ƒํƒœ๋ฅผ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ

: EEPROM์— ๋งˆ์ง€๋ง‰์œผ๋กœ ์ €์žฅ๋œ ์˜จ๋„ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์™€์„œ ์‹œ๋ฆฌ์–ผ ๋ชจ๋‹ˆํ„ฐ(ํ„ฐ๋ฏธ๋„ ๊ฒฐ๊ณผ ํ™”๋ฉด)์— ์ถœ๋ ฅ

 

๐Ÿฅ‘ ์‹œ๋ฆฌ์–ผ ํ†ต์‹ 

: ์ง๋ ฌ

: ์—ฐ์†์ ์ธ ๋น„ํŠธ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜๋Š” ๋ฐฉ์‹์˜ ํ†ต์‹ 

: ๋””์ง€ํ„ธ 0๋ฒˆ, 1๋ฒˆ, USB ํ…Œ์ด๋ธ”์„ ํ†ตํ•ด PC์™€ ์‹œ๋ฆฌ์–ผ ํ†ต์‹  ๊ฐ€๋Šฅ 

: ๋ฐ์ดํ„ฐ ์ฃผ๊ณ  ๋ฐ›๊ธฐ์ „, ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„ ์ผ์น˜ ์‹œ์ผœ์•ผ ํ•จ (Serial.begin ํ•จ์ˆ˜๋กœ baud rate, bpi ์ „์†ก ์†๋„ ์„ค์ •)

ํ•จ์ˆ˜ ๊ธฐ๋Šฅ
Serial.read(); ์‹œ๋ฆฌ์–ผ ํ†ต์‹  ์ˆ˜์‹  ๋ฒ„ํ„ฐ์—์„œ ๋ฐ์ดํ„ฐ ์ฝ์–ด์˜ด
Serial.readString(); ์‹œ๋ฆฌ์–ผ ํ†ต์‹  ์ˆ˜์‹  ๋ฒ„ํ„ฐ์—์„œ ๋ฌธ์ž์—ด์˜ ๋ฐ์ดํ„ฐ ์ฝ์–ด์˜ด
Serial.parseInt(); ์‹œ๋ฆฌ์–ผ ์ˆ˜์‹  ๋ฒ„ํ„ฐ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์ค‘ ์ฒซ ๋ฒˆ์งธ ์œ ํšจํ•œ Int ํ˜• ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜ (์ˆซ์ž ์•„๋‹ ๊ฒฝ์šฐ 0 ๋ฐ˜ํ™˜)
Serial.parseFloat(); ์‹œ๋ฆฌ์–ผ ์ˆ˜์‹  ๋ฒ„ํผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์ค‘ ์ฒซ ๋ฒˆ์งธ ์œ ํšจํ•œ Floatํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ˜ธ๋‚˜
Serial.readBytes(buffer, length); ์ง€์ •ํ•œ length ๋งŒํผ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ฝ์€ ๋ฐ์ดํ„ฐ๋ฅผ buffer์— ์ €์žฅ (์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ byte ์ˆ˜ ๋ฐ˜ํ™˜)
Serial.setTimeout(time); ms ๋‹จ์œ„๋กœ ํƒ€์ž„์•„์›ƒ ์‹œ๊ฐ„ ์„ค์ •

 

๐Ÿฅ‘ ํ† ์–‘ ์ƒํƒœ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๋ฌผ์ฃผ๊ธฐ

: ์›Œํ„ฐ ํŽŒํ”„ ๋ชจํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌผ์˜ ์œ„์น˜๋ฅผ ๋Œ์–ด์˜ฌ๋ ค ๋ฌผ์„ ๊ณต๊ธ‰

: ํ† ์–‘ ์ˆ˜๋ถ„ ์„ผ์„œ์—์„œ ์ธก์ •ํ•œ ์ˆ˜๋ถ„ ๊ฐ’์— ๋”ฐ๋ผ ์›Œํ„ฐ ํŽŒํ”„๋ฅผ ๊ตฌ๋™ ์‹œ์ผœ ๋ฌผ์„ ๊ณต๊ธ‰

 

๐Ÿฅ‘ ์Šค๋งˆํŠธ ํ™”๋ถ„

: ํ† ์–‘ ์ˆ˜๋ถ„ ์„ผ์„œ๋กœ ์ˆ˜๋ถ„ ์ธก์ •

: ๋ฌผ ๊ณต๊ธ‰ํ•˜๋ ค๋Š” ์„ผ์„œ์˜ ์ž„๊ณ„๊ฐ’ ์ •ํ•˜๊ธฐ

: ์ž„๊ณ„๊ฐ’์— ๋”ฐ๋ผ ์›Œํ„ฐ ํŽŒํ”„ ๋ชจํ„ฐ์™€ ๋ชจํ„ฐ ๋“œ๋ผ์ด๋ฒ„ ์—ฐ๋™์‹œํ‚ค๊ธฐ

 

๐Ÿ” ์›Œํ„ฐ ํŽŒํ”„ ๋ชจํ„ฐ

: ํŽŒํ”„๋ž€ ์ „๊ธฐ ์—๋„ˆ์ง€๋กœ ์•ก์ฒด๋‚˜ ๊ธฐ์ฒด์— ์••๋ ฅ์„ ์ฃผ์–ด ๋‚ฎ์€ ์••๋ ฅ์ธ ๊ณณ์—์„œ ๋†’์€ ์••๋ ฅ์œผ๋กœ ๋ฌผ์ฒด์˜ ์œ„์น˜ ๋ฐ”๊ฟ”์ฃผ๊ธฐ

: ์ˆ˜์ค‘์—์„œ ํŽŒํ•‘ ํ•˜์—ฌ ๋ฌผ ๋Œ์–ด์˜ฌ๋ ค์ค€๋‹ค

728x90
๋ฐ˜์‘ํ˜•
Comments