본문 바로가기

728x90
반응형

파이썬

CircuitPython 시작하기 (feat. xG24 Explorer Kit) 2023. 7. 2. Silicon Labs xG24 Explorer Kit과 CircuitPython 작은 MCU(Microcontroller Unit)의 어플리케이션을 위해서는 C 언어로 프로그램하는 것이 대세입니다. 대부분의 MCU 제조사들이 C 언어로 되어 있는 SDK(Software Development Kit)를 제공합니다. 간혹 C++가 사용되기도 하지요. 우리가 흔히 사용하는 개인용 컴퓨터와는 다르게 MCU라고 불리는 이러한 소형 컴퓨터는 주로 하드웨어의 제어에 사용됩니다. 그런데, 파이썬(Python)을 MCU 어플리케이션에서 빠르게 프로토타이핑(Prototyping) 하는 데에 사용할 수 없을까 생각하게 됩니다. 물론 라즈베리파이(Raspberry Pi)에서 파이썬을 사용하여 하드웨어 제어를 하고 동작시키는.. 더보기
버저(Buzzer)로 음악 연주하기 2023. 6. 6. 음악을 연주한다는 것은 어떤 높이의 소리를 어떤 길이로 내는 것을 연달아 이어 놓은 것입니다. 소리의 높이라는 것은 주파수를 달리함으로써 만들어 내게 됩니다. 소리라는 것은 공기의 떨림인데, 정해진 시간 동안 공기가 더 많이 떨리게 하면 높은 소리가 나는 것입니다. 버저에 다른 주파수의 신호를 인가하면 다른 소리가 나는 이유입니다. 이런 서로 다른 높이의 소리를 얼마나 길게 내느냐에 따라 음악은 또 달라지게 됩니다. 내친김에 버저로 간단하게 음악을 연주하게 만들어 봅시다. 예, 한 20년 전에는 버저로 벨소리를 만들었으니까요. 물론 버저의 특성이 모든 가청 주파수(audible frequency)에 일정한 것이 아니라서 깨끗하고 맑은 음악은 아니겠지만, 가락을 만들어 낼 수는 있을 것입니다. 소리의 높이.. 더보기
버저(Buzzer) 울리기 - 피에조 버저(Piezo Buzzer)의 구동 2023. 5. 7. 요즘의 휴대전화기는 실제 음원을 사용하여 벨소리를 만들지만, 아주 오래 전의 휴대전화기들은 버저(Buzzer)를 이용해서 벨소리를 만들었습니다. 그때의 버저음이 생각이 나서 라즈베리 파이(Raspberry Pi)에 버저를 연결해서 삑삑거리는 것을 해 볼까 생각을 하면서 살펴보다 보니 버저에 대해서 생각해 보지 않았던 것들이 많이 있더라고요. 버저를 울리기 전에 버저 자체에 대한 이야기를 먼저 시작해 볼까 해요. 일반적으로 버저(Buzzer)는 마그네틱 버저(Magnetic Buzzer)와 피에조 버저(Piezo Buzzer)로 나뉩니다. [1] 마그네틱 버저는 전자석에 의해서 자성체가 끌려오는 윈리를 이용한 것입니다. 전자석과 같은 원리를 이용하는 것이기 때문에 기본적으로 인덕턴스로 모델링이 됩니다. 때.. 더보기
여러 개의 7-Segment LED 표시하기 2023. 4. 23. 7-Segment LED에 숫자를 표시하는 법에 대해서 이야기했었습니다. 한 자리를 표시하는 방법, 한 자리를 표시하기 위한 디코딩에 관한 이야기였죠. 그런데, 보통 이런 7-Segment LED는 한 자리만 표시하는 것보다는 여러 자리를 표시하게 되죠. 전자계산기 같은 것 말이죠. 그게 뭐 어려운가? 그냥 여러 개 나란히 놓고 각각 한 자리씩 출력하면 되지. 맞습니다. 두 자리면 아마 다음 회로처럼 되겠죠. 이렇게 생각하는 것이 가장 쉽습니다. A1, B1, ..., G1, DP1은 첫 번째 자리, A2, B2, ..., G2, DP2는 두 번째 자리를 표시하도록 연결하는 것입니다. 2개의 한 자리 7-Segment LED를 나란히 놓은 것입니다. 3자리를 표시하려면? 하나 또 나란히 놓고 A3, B3.. 더보기
7-Segment LED 표시하기 2023. 4. 2. 아무리 전자 전기에 무관심한 사람이라고 하더라도 주위에 위의 사진과 같은 장치에 숫자가 표시되는 것은 많이 보았을 것입니다. 흔하게는 전자시계에 많이 나타나지요. 각각의 구분된 구간이 따로 불이 켜지는데, 이를 조합하여 숫자의 형상을 만들어 냅니다. 각각의 구분된 구간을 세그먼트(segment)라고 부르고, 숫자를 표시하기 위하여 7개의 세그먼트를 가지다고 하여 7-세그먼트(7-segment)라고 하는 장치입니다. 각각의 세그먼트가 각각 하나의 LED이기 때문에 7-세그먼트(7-segment) LED라고 부릅니다. 물론 소수점까지 표시하면 8개의 LED이지만, 숫자를 표시하는 부분만 따져서 7-세그먼트 LED라고 하지요. 각각의 7개 세그먼트는 위치에 따라 A부터 G까지 이름이 붙습니다. 숫자를 표기할 .. 더보기
아날로그(Analog)의 표현 PWM (Pulse Width Modulation) 2022. 12. 27. LED는 정방향전류($V_F$)를 조절함으로써 그 밝기를 조절할 수 있습니다. 정방향전류를 조절하는 방법은 옴의 법칙에 따라서 전압을 조절하거나 전류 제한을 위한 저항을 조절하면 되겠죠. 예전 글에서 가변 저항을 사용하여 LED의 밝기를 조절해 본 적이 있습니다. 그런데, 이것을 컴퓨터로 조절을 해 보려면 어떻게 해야 하죠? 라즈베리 파이에서 GPIO를 제어해 본 적이 있지만, 라즈베리 파이와 같은 미니 컴퓨터든 단일칩 마이크로 컨트롤러든 GPIO는 켜짐과 꺼짐, 2가지의 전압 밖에 출력을 할 수가 없는데요. 더욱이 컴퓨터로 저항(resistance)을 직접 조절할 수는 없습니다. 이런 경우에는 눈에 보이지 않을 만큼 빠르게 LED를 껐다 켰다를 반복하되 밝게 켜고 싶을 때에는 켜는 시간을 길게, 어둡게.. 더보기
스위치로서의 MOSFET 2022. 12. 20. 라즈베리 파이 GPIO의 Driver Stength에 대해서 이야기한 적이 있습니다. 디지털 신호를 나타내는 GPIO에 부하가 가해져서 그 전압이 떨어지면 원하는 동작을 예측하기가 어려워질 뿐만 아니라 원하는 동작을 제대로 만들어 낼 수가 없습니다. 전자회로를 꾸밀 때에는 모든 상황을 내가 원하는 대로 통제할 수가 있어야 합니다. 그러니까, 전류가 어느 정도 되는 필요한 부하를 연결할 때에는 직접 GPIO에 연결하는 것이 좋은 아이디어는 아닌 것이죠. 소스의 전압이 마구 떨어져 버릴 테니까요. 그러면 어떤 방법이 있을까 생각해 보겠습니다. 그림 같은 장치가 있으면 참 좋겠는데요. 그림처럼 스위치를 켜는 신호를 주면 스위치를 연결해 주고, 그렇지 않으면 스위치를 끊어주어서 전원이 연결되었다가 끊어졌다가 하.. 더보기
라즈베리 파이(Raspberry Pi)에서 RPi.GPIO Python module을 사용한 GPIO 출력 제어, 그리고 Drive Strength에 대하여 2022. 10. 29. 라즈베리 파이는 교육용으로 개발되었다고는 하지만, 대량 생산이 아닌 경우에는 여러 분야에서 외부 하드웨어 제어를 위해서 사용되기도 합니다. 개발자에게는 별도로 컴퓨팅 하드웨어를 개발하는 부담을 줄이고, 필요한 최소한의 하드웨어와 소프트웨어만으로 어플리케이션을 완성하게 하는 것이지요. 특히 라즈베리 파이에서 외부 하드웨어를 제어하고자 할 때, GPIO(General Purpose Input/Output; 범용 입출력)를 사용하여 간단한 외부 하드웨어를 제어합니다. GPIO에 대한 상세한 내용은 Wikipedia에 잘 나와 있으니 참조하시고, 우리는 라즈베리 파이의 GPIO, 나아가서는 다른 여러 MCU의 GPIO를 사용하는 데에 집중하도록 하겠습니다. ☞ https://en.wikipedia.org/wik.. 더보기

728x90
반응형