본문 바로가기

분류 전체보기

(125)
Arduino Pro Mini 핀맵
ESP8266 SPIFFS 메모리 (Wemos D1 R1 mini ) ESP8266은 내부 flash메모리가 없고 따로 외부에 EPPROM을 가지고 있다.( 전원 없어 도 안 지워짐) 이 EPPROM(512K 1M 4M 사이즈가 있다.)을 마치 디스크처럼 사용 할수 있는 것이 SPIFFS다. 사용할 SPIFFS 사이즈는 아두이노 메뉴-> 툴-> flash사이즈에서 고르면 된다. 더 많은 정보(영문)는 여기를 클릭 하세요. 사 용 예 제 #include void setup() { Serial.begin(115200); SPIFFS.begin(); writeFile("/sample.txt","Sample 텍스터 입니다."); Serial.println( readFile("/sample.txt") ); SPIFFS.remove("/sample.txt"); } void loop(..
아두이노 EEPROM EEPROM (Electrically Erasable Programmable Read-Only Memory) 전기적으로만 지울 수 있는 ROM. 전기를 노출시킴으로써 한 번에 1 바이트씩만 지울 수 있기 때문에 플래시 메모리와 비교하면 매우 느리며 반복 기록 횟수에 제한이 있는데 약 10만 번 정도이다.(위키백과) 전원이 없어도 값이 보존 된다. 그래서 프로그램의 환경변수 저장에 Good.... 보드 EEPROM용량 Uno 1KB Mega 4KB Leonardo 1KB ESP8266 EEPROM 은 실제로는 없고 외부에 있는 SPIFF 플래쉬 메모리의 일부를 사용 4KB 1KB=1024Byte 사 용 예 시 #include void setup() { String str="EEPROM 테스트용"; Seri..
C#에서 MQTT프로그램 만들기 프로젝트 -> NuGet 패키지 관리 -> M2Mqtt 설치해야 함 예제 소스 using System; using System.Drawing; using System.Text; using System.Windows.Forms; using uPLibrary.Networking.M2Mqtt; using uPLibrary.Networking.M2Mqtt.Messages; namespace MQTT { public partial class Form1 : Form { MqttClient client; string clientId; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string ..
Wemos D1, R1 (mini) 에서 MQTT 구현하기 PubSubClient 라이브러리를 설치한다. ( 라이브러리 관리에서 검색하면 나온다) MQTT사용을 위한 기본 베이스( 라이브러리 예제에 있음) #include // Wemos 사용 #include // MQTT const char* ssid = "........"; // WIFI 이름 const char* password = "..........."; // WIFI 비밀번호 const char* mqtt_server = "broker.mqtt-dashboard.com"; //무료 broker 서버중 하나 WiFiClient espClient; PubSubClient client(espClient); unsigned long lastMsg = 0; #define MSG_BUFFER_SIZE (50) c..
MQTT 다중 연결 MQTT를 이용 하여 PC , 아두이노 , 휴대폰으로 연결하기 위치에 상관 없이 인터넷으로 모든 기기를 연결하고 통신 하는 프로젝트 직접 기기간 통신은 각각의 IP가 필요하다. 그런데 WIFI에 연결시 마다 IP가 달라진다. 그때마다 IP주소를 수정 하기란 ㅠㅠㅠㅠ 반면 위 그림처럼 모든 기기가 고정된 한 곳에 접속 한다면.....엄청 간편해 진다. 다만 고정 IP유지를 위한 비용이 발생한다. 다행이 무료로 서버를 이용 할 수 있는 곳이 있다. broker.mqtt-dashboard.com 이를 이용 하여 프로젝트를 만들었다. C#으로 PC 프로그램을 하나 만들고 앱인벤트로 앱을 하나 만들었다. 앱스토어에서 MQTT사용하는 전용앱을 하나 다운 받았다.( 여러 종류가 있음 ) 아두이노는 Wemos D1 m..
USB host shield 사용시 osc did not start 에러 처음 USB host shield를 구입한 후 예제를 실행하니 osc did not start 라는 문구만 나타나고 키보드, 마우스를 인식 못하는 문제가 발생했다. 마우스에 불이 안 들어 오는것을 보니 전원 문제 인 듯도 하구................. 3~4시간 보드를 교체하고 쉴드도 교체해 가며 여러 방법을 시도 헸지만 실패했다. 그러다 유투브에서 한 동영상을 발견했고 그대로 해보니 이것도 안됐다. 그래도 힌트는 얻었다. 대충 전원 문제라는생각으로 여러 시도 끝에 성공했다. 우선 납땜이 필요하다. 따라서 보드를 망칠 수도 있다는 것을 주의 해야한다. 아래 사진의 빨간색 사각형안의 3군데 회로를 납땜으로 연결 하면 되었다. 노란색은 연결하면 안되는 경우도 생겼다. 납땜을 해도 안되면 납땜부위를 다시..
Wemos mini 핀맵 Label GPIO Input Output Notes D0 GPIO16 no interrupt no PWM or I2C support HIGH at boot used to wake up from deep sleep D1 GPIO5 OK OK often used as SCL (I2C) D2 GPIO4 OK OK often used as SDA (I2C) D3 GPIO0 pulled up OK connected to FLASH button, boot fails if pulled LOW D4 GPIO2 pulled up OK HIGH at boot connected to on-board LED, boot fails if pulled LOW D5 GPIO14 OK OK SPI (SCLK) D6 GPIO12 OK..
스위치 풀다운 풀업 회로 풀다운 스위치 저항 10K을 연결 안하면? off상태에서 잡음이 입력되어 0,1이 무작위로 입력된다. 버튼을 누르면 1 , 아니면 0 선언 : pinMode(핀번호, INPUT); 풀업 스위치 따로 저항이 필요 없다.( 아두이노 자체에서 처리) 버튼을 누르면 0 , 아니면 1 선언 : pinMode(핀번호, INPUT_PULLUP);
블루투스 모듈 연결시 주의점 ( 전압 3.3V 조정 ) 블루투스 RX에는 3.3V가 들어 가야한다. 아두이노 TX에서는 5V 신호가 나온다. 이것을 직접 연결 하여 장시간 사용 하면 블루투스가 망가진다. 처음에는 몰라서.... 그다음은 설마 하여 (귀차니즘) 10개정도 망가졌다 ㅠㅠ .. AT커맨드 모드로 세팅시(잠깐 사용)를 제외 하고는 전압 강화를 꼭 하자. 5V * ( 2 /3 ) = 3.3V 2K / (1K +2K) 5V * ( 1 /3 ) = 1.7V 물론 블루투스 TX신호는 3.3V로 나오지만 아두이노 RX는 3V이상이면 인지 하기 때문에 전압 조절이 필요 없다. ( 조절 하기도 힘들고......) 전압도 강하하고 하드웨어 시리얼 사용시 업로드 스위치도 사용 할수 있는 회로도
가변저항
YP-05 FTDI FT232L USB to TTL UART
보드에 따른 SoftwareSerial 가능 핀 보드 Chip 가능핀번호 우노 Uno ATmega328 모든 핀 가능 메가 Mega ATmega2560 10,11,12,13,14,15, 50,51,52,53, 62,63,64,65,66,67,68,69 레오나로드 ATmega32u4 8,9,10,11, 14,15,16
USB 호스트 쉴드 2.0, Arduino UNO MEGA 연결 가능 장치 HID장치 : 키보드, 마우스, 조이스틱 등 게임 컨트롤러 : 소니(Sony) PS3, 닌텐도 Wii, xbox360 USB - 시리얼 변환기 : FTDI, PL-2303, ACM 및 특정 휴대전화 디지털 카메라 : Canon EOS, Powershot, Nikon DSLR 및 P&S, PTP 대용량 저장 장치 : USB 스틱, 메모리 카드 판독기, 외장하드 드라이브 블루투스 동글. 라이브러리 다운로드
Wemos R1 D1 보드 핀맵
다중 디스플레이, 수학좌표 기능추가와 사용법이 간편해진 완전 개선판 다중 디스플레이 지원( Display 생성부분이 완전이 새로워짐) 다중 디스플레이를 위한 블루투스 연결은 하드웨어 시리얼과 소프트웨어 시리얼이 있음 Display Class는 모두 지원하고 생성자도 함수 오버레이로 동일한 형태임 기존 #define문은 사라지고 생성시 바로 시리얼 주소을 넘겨주면 됨 #include // 소프트웨어 시리얼 사용시만 SoftwareSerial Soft(A1, A0); //( Rx, Tx ) Display hp( &Serial ); // 하드웨어 시리얼의 주소를 넘겨준다 ( Mega는 4개까지 사용가능 ) Display sp( &Soft ); // 소프트웨어 시리얼 주소를 넘겨준다 hp.begin( 115200 ) sp.begin( 115200 ); // 소프트웨어 시리얼은 ..
echo()사용 위치에 따른 그래픽 속도와 표현 차이 동영상으로 확인하기 https://youtu.be/_z0arpxSNXY 아두이노 소스 1 #define _BT Serial #include "D:\\myHeader\\Display.H" Display hp; int cx,cy; void setup() { hp.begin(); hp.echo(); hp.clear(); cx=hp.width()/2; cy=hp.height()/2; } void loop() { hp.color(White); for( int r=0; r
Arduino Leonardo Tech specs MICROCONTROLLER ATmega32u4 OPERATING VOLTAGE 5V INPUT VOLTAGE (RECOMMENDED) 7-12V INPUT VOLTAGE (LIMITS) 6-20V DIGITAL I/O PINS 20 PWM CHANNELS 7 ANALOG INPUT CHANNELS 12 DC CURRENT PER I/O PIN 40 mA DC CURRENT FOR 3.3V PIN 50 mA FLASH MEMORY 32 KB (ATmega32u4) of which 4 KB used by bootloader SRAM 2.5 KB (ATmega32u4) EEPROM 1 KB (ATmega32u4) CLOCK SPEED 16 MHz LENGH 68.6 mm WIDTH 53...
하드웨어 시리얼 사용시 업로드 스위치 만들기 블루투스를 아두이노의 하드웨어 시리얼에 연결 하여 사용시 프로그램을 업로드 하려면 어느 핀을 제거 하여야 할까? 몽땅...... Ok 전원핀 .....아님 답은 블루투스의 TX핀 ( 아두이노의 RX핀)만 제거 하면 됨 위의 그림처럼 그사이 스위치를 달아 업로드시 사용하면 편리합니다.
기능 개선판 아두이노 Bluetooth Display 기능개선판 동영상 보기 앱인벤트 Timer는 interval을 0으로 세팅해도 평균 50ms이상으로(관련 글로 이동) 반응한다. 블루투스 수신을 확인 하기 위하여 Timer를 사용 하므로 선 하나 점 하나 그리는 시간이 빨라도 50ms가 걸린다는 것이다. 그래서 느림.. 그러면 혹시........... 타이머 이벤트가 발생 하면 한번에 테이타를 전송 하면 어떨까? 스스로 실험을 해보면 알겠지만 Timer Event 루프를 빠져 나오기 전까지 아무것도 안 보인다. 왜냐면 Timer Event가 끝나야 Paint Event가 발생하는 데 캔버스에 그리는 속도 보다 아두이노에서 전송되는 데이타가 더 빨라 누적되어 루프를 빠져 나오지 못한다. 그래서 연구 한 결과 기존에 그리기 함수마다 있는 응답을 기다리는 w..
Timer interval 0 로 설정하면 ? 앱인벤트의 Timer Interval을 0로 설정하면 실제로는 얼마만에 반응을 할까? 설정값보다 더 길게 나타남. 프로그램 크기와 실행중인 다른 앱에 따라 더욱 길어진다 아래의 프로그램에서 GUI를 없애고 측정하면 30전후로
앱인벤트로 라이브러리에 대응하는 블럭 만들기. 소스파일 앱인벤터에서 불러오기로 사용함 apk파일 휴대폰에 앱 설치 파일 앱을 APK로 설치시 아두이노 예제를 실행하면 /storage/emulated/0/Android/data/appinventor.ai_사용자이름.Display/files/ 디렉토리가 생성된다. 실행전에는 디렉토리 없음 /storage/emulated/0/Android/data/appinventor.ai_사용자이름.Display/이후 하위 디렉토리에는 이 앱이 접근 가능하다. 필요한 데이터도 이곳에 작성 하면 된다.
휴대폰 디스플레이 라이브러리 클래스 완성된 휴대폰 디스플레이 라이브러리 클래스 메소드 begin() 블루투스 연결로 디스플에이 시작 wait() 명령 수행후 응답을 기다리며 대기( 그리기 함수에서 사용) 그래픽이 아두이노 속도 보다 느려서 명령수행 완료후 다음을 진행하기 위해 waitDisplayStart() 디스플레이가 준비 될 때 까지 기다림 clear() 화면을 지움 단, 배경 이미지는 유지 됨 color(unsigned long c) 그리기 색상 지정 4Byte Alpha R G B ARGB_COLOR.H참조 bkColor(unsigned long c) 배경색 지정 int width(); 화면 너비 화면이 가로 세로 바뀌면 값도 변경 int height(); 화면 높이 화면이 가로 세로 바뀌면 값도 변경 textSize( int s..
그래픽 시연 사용 휴대폰 LG G3 화면을 터치하면 메뉴 on / off 동여상 보기 클릭 아두이노 휴대폰을 디스플레이로 활용하기 아두이노 휴대폰을 디스플레이로 활용하기(2) 슬라이드 메뉴 Bluetooth Display 예제1 Bluetooth Display 예제2(조이스틱 사용) Bluetooth Display 예제3 원테두리에 다른 작은원 그리기 TFT LCD 출력과 비교하기 아두이노 소스 #define _BT Serial // 하드웨어 기본 시리얼을 블루투스로 사용 #include "D:\\myHeader\\Display.H" // 디스플레이 코어 클래스( 디스플레이 앱과 통신 하는 곳 ) #define _APK_ apk파일로 앱을 휴대폰에 추가 한 경우 #ifdef _APK_ #define LoadImg; ..
아두이노 연결 하고 통신 테스트 하기 메세지 길이 헤더 : C 1 Byte X좌표 2Byte Y좌표 2Byte 반지름 2Byte 채우기 1Byte( 0 , 1 ) 1 = true 아두이노에서 메세지를 넘겨주면 ( 블루투스) 앱에서 1Byte 텍스트받기 = 'C'이면 원그리기 데이타 받기 2Byte 숫자 받기 = X 2Byte 숫자 받기 = Y 2Byte 숫자받기 = R 1Byte 숫자받기 = bool 데이타 받기 완료 원그리기 동영상으로 보기 소스를 보면 일반 TFT LCD에 출력 하는 방식과 동일 하다. 아두이노 소스 #define _BT Serial // 블루투스 기본 시리얼 0,1번핀 사용 라이브러리 전에 선언 #include "D:\\myHeader\\Display.H" // 디스플레이 라이브러리 Display hp; // 디스플레이..
휴대폰을 무선 디스플레이로 활용하기 다중 모니터 가능 계속 코드가 업그레이드 됩니다. 시간순으로 글을 작성 하니 맨 아래쪽 글이 최신판입니다. 다운로드와 복사는 2번글 : ARGB_COLOR.H 복사 하세요 8번글 : Display.H 아두이노 예제소스 복사 앱인벤터 aia apk 다운로드 하세요 TFT LCD는 사용하기 불편하다. 중요 단점만 봐도 하드웨어에 따라 코딩이 달라진다.( 머리가 아픔 ) 핀을 많이 소모한다. ( Uno는 다른 곳에 사용 할 핀이 안 남아요) 한글 출력에 별도의 작업이 필요 하고 메모리도 많이 차지하고 느림 그래서 TFT LCD보다 훨씬 저렴한 중고 휴대폰을 디스플레이로 활용 하기로 한다. 집에 남아 있는 폰이나 테블릿을 활용 하면 될것이다. 구입해도 2~3만원이면 5인치이상 구함( 블루투스는 꼭 되야 함 ) 기존의 TFT LC..
TFT LCD Arduino Mega Shield Model RS WR CS RST 21 38 39 40 41 UTFT(byte model, int RS, int WR,int CS, int RST, int SER=0); myGLCD(21,38,39,40,41);
Hangul_SD.H 를 이용한 한글 출력 ( 폰트파일 필요함 ) 한글 폰트파일과 인덱스 파일이 필요 합니다. 두 파일의 구조는 여기를 참고 Hangul_SD.H // HanGul.SD.H ver 1.0 아두이노용 한글 출력 클래스 // // 제작자 : 신 옥 진 // // 재배포 금지 링크를 사용 하세요. // // Index1 구조 ( 4 Byte Record ) [폰트offset : 4byte Long] // Index2 구조 ( 8 Byte Record ) [폰트코드 : 4byte Long][폰트offset : 4byte Long] // // Index2 사용시 소스코드에 #define _INDEX_2_ 코드 넣어야 함 // // // #define _TFTLCD_ myLcd // myLcd는 원하는 이름으로 하고 include 앞에 선언..
StreamReader.H SD카드 텍스트파일 라인읽기 메소드 StreamReader( 텍스트 파일 이름) SS핀은 10으로 자동 설정 Uno 자동 파일 open StreamReader( 텍스트 파일 이름 , SS핀 번호) Mega는 53 Uno는 10 자동 파일 open ReadLine() 한줄씩 파일을 읽어 온다 ReadLine( n ) n번쩨 줄로 이동하여 읽어 온다. ( 처음 줄 번호는 0임) open() close()후 다시 파일 사용시 첫라인부터 다시 시작 close() 파일을 닫음 endf() 파일의 끝이면 true 아니면 false StreamReader.H #ifndef _StreamReader_ #define _StreamReader_ #include #include class StreamReader { private : File _f; S..
Hangul_SD_Selected.H 를 이용한 한글 출력 Hangul_SD_Selected.H // Hangul_SD_Selected.H ver 1.0 아두이노용 한글 출력 클래스 // // 제작자 : 신 옥 진 // // 재배포는 금지, 그냥 링크를 사용 하세요. // // 영리목적( 유료 강의 자료, 판매 시스템에 포함 등 )의 사용은 사전 허락을 받아야 합니다. //// // // #define _TFTLCD_ myLcd // myLcd는 원하는 이름으로 하면 됨 // #include "c:\\Arduino\\Hangul_SD_Selected.H" // 헤더파일 전체 경로 // HanGul_TFT ht; // 한글출력 클래스 // #ifndef _Hangul_SD_Selected_ #define _Hangul_SD_Selected_..