Search This Blog

Monday, May 14, 2018

MCP3008 - Analog to Digital Converter with SPI Interface

MCP3008 က Microchip က ထုတ်တဲ့ 8-channel, 10-bit analog to digital converter ဖြစ်ပါတယ်။


Figure. MCP3008 ၏ pin များ။


သူ့ကို single ended analog input အနေနဲ့ ရှစ်ခု သုံးလို့ ရပြီး၊ differential input pair အနေနဲ့ ဆို လေးစုံ သုံးလို့ ရပါတယ်။ Power supply ဗို့ 2.7 V ကနေ 5 V အထိ သုံးလို့ ရပြီး၊ အပူချိန် -40 °C ကနေ +85 °C အထိ ခံနိုင် ပါတယ်။ SPI interface ဖြစ်ပြီး mode 0 ဒါမှ မဟုတ် mode 3 နဲ့ သုံးနိုင် ပါတယ်။


Figure. MCP3008 အတွက် SPI mode 0 တွင် ဆက်သွယ်ပုံ နမူနာ။





Figure. MCP3008 ၏ control bit များ။


MCP3008 နဲ့ Arduino Uno ဘုတ် တစ်ခု ဆက်သွယ်ပုံ schematic နမူနာ တစ်ခု ကို အောက်က ပုံ မှာ တွေ့နိုင် ပါတယ်။


Figure. Arduino Uno နှင့် MCP3008 ဆက်သွယ်ပုံ နမူနာ။


Analog input channel 0 ကို ဖတ်ကြည့်တဲ့ နမူနာ ပရိုဂရမ် တစ်ခု ကို အောက်က စာရင်း မှာ တွေ့နိုင် ပါတယ်။
#include < SPI.h >
const int CS_Pin = 10;// set pin 10 as the chip select

SPISettings settingsA(2000000, MSBFIRST, SPI_MODE0); 
// set up the speed, data order and data mode
//SPI pin configuration: pin 11 as MOSI (SDI), 
//  pin 12 as MISO (SDO) , pin 13 as clock (SPC)

int x;
float K=0.00488758553; 
// (5/1023) V per digit for +5V full scale 
//  using 10 bit digital output

void setup() {
  Serial.begin(9600);
  pinMode (CS_Pin, OUTPUT);  
  digitalWrite(CS_Pin, HIGH);
  SPI.begin();
  SPI.beginTransaction(settingsA);
}

void loop() {
  delay(1000);
  digitalWrite(CS_Pin, LOW);//Enable SPI
  SPI.transfer(0x01);//Send start bit
  x = SPI.transfer(0x80)<<8 | SPI.transfer(0); //read channel 0
  digitalWrite(CS_Pin, HIGH);//Disable SPI
  x&=0x03FF;//mask out invalid bits
  Serial.println("x=" + String(x)+"   \t Voltage=" + String(K*x)+" V");
}



Figure. Arduino ၏ Serial Monitor အထွက်။


Friday, March 9, 2018

DIY Smart Surveillance Camera Using Raspberry Pi Camera and C++

RPi ကို သုံးပြီး smart surveillance ကင်မရာ တစ်ခု ကို ကိုယ်တိုင် ပြုလုပ် ဖန်တီး ကြည့် ပါမယ်။ ပုံမှန် ဘာမှ ထူးခြားမှု မရှိတဲ့ အချိန်မှာ 5x speed နဲ့ နေ့စဉ်၊ ဒါမှ မဟုတ် နာရီ အလိုက် ဗွီဒီယို ဖိုင်တွေ ခွဲပြီး record လုပ်ပေး နိုင် အောင် လုပ်ပါမယ်။ ဖမ်းယူ ရရှိတဲ့ ပုံရိပ် တွေကို analysis လုပ်နေပြီး လူ့ ကိုယ်ခန္ဓာ တွေကို တွေ့တာ နဲ့ ပုံမှာ အစိမ်းရောင် စတုဂံ နဲ့ ဘောင်ခတ် ပြပြီး၊ ပုံမှန် speed နဲ့ ပြောင်းပြီး record လုပ် ပါမယ်။ Passive infrared sensor (PIR sensor) ကိုပါ သုံးပြီး sensor က လူရိပ် ကို အာရုံခံ မိရင် လည်း၊ ပုံရိပ် မှာ အနီရောင် indicator ပြပြီး၊ ပုံမှန် နှုန်းနဲ့ ပြောင်း record လုပ်နိုင် ပါမယ်။

ဒီ နမူနာ ပရိုဂရမ် မှာ လုပ်လို့ ရတဲ့ အကြောင်း ကုဒ် အကြမ်း ရေးကြည့် ရုံ ဖြစ်ပြီး၊ တစ်ခုခု ထူးခြားရင် ကိုယ့်ရဲ့ အီးမေးလ် ကို လှမ်းပို့ တာ၊ အိမ်က လူတွေ ရဲ့ မျက်နှာကို မှတ်မိတာ၊ သတ်မှတ် ထားတဲ့ အချိန် အပိုင်း အခြား အလိုက် လိုသလို record လုပ်တာ စတာ တွေကို စိတ်ကူး ရှိရင် ရှိသလို ထပ်ဖြည့် နိုင် ပါတယ်။

စျေးပေါတဲ့ HC-SR505 mini PIR motion sensor လေးကို Aliexpress စတဲ့ online shop တွေ ကနေ အလွယ် တကူ မှာ သုံးနိုင် ပါတယ်။ သူ့က 3.3~V ရော၊ 5~V နဲ့ ပါ သုံးလို့ ရပြီး၊ RPi နဲ့ သုံးမှာ ဖြစ်လို့ 3.3~V ပါဝါပေး၊ sensor ရဲ့ output pin ကို RPi ရဲ့ GPIO23 နဲ့ ပုံ မှာ ပြထား သလို ဆက်နိုင် ပါတယ်။

Figure. PIR sensor ကို ချိတ်ဆက်ခြင်း။


ပုံရိပ် ထဲမှာ Body detection လုပ်ဖို့ အတွက် တော့ အရင်ပို့စ်
Real-time Face Detection
မှာ လုပ်သလို ပဲ Haar feature-based cascade classifiers ကို သုံးမှာ ဖြစ်လို့ အဲဒီ မှာ haarcascade_fullbody.xml ဆိုတဲ့ ဖိုင် နာမည် ပြောင်း လိုက်ရုံပါပဲ။ PIR sensor ဆက်ထား တဲ့ input ကို ဖတ်ပြီး၊ active ဖြစ်နေရင် PIR DETECTED ဆိုတဲ့ စာကို puttext ဖန်ရှင် သုံးပြီး အနီရောင် နဲ့ ဖော်ပြ ပါမယ်။ နမူနာ SmartCam.cpp ဆိုတဲ့ ပရိုဂရမ် လေးကို အောက်က လင့်ခ် မှာ ပြထား ပါတယ်။

https://github.com/yan9a/rpi/tree/master/SmartCam

အဲဒီ ပရိုဂရမ် မှာ computer vision နဲ့ ဆိုင်တာ တွေ အတွက် OpenCV ကို သုံးထား တာမို့ အောက်က ပို့စ် မှာ ဆွေးနွေးခဲ့ သလို OpenCV ကို RPi မှာ တပ်ဆင် ထားဖို့ လိုပါတယ်။
OpenCV on Linux using g++, CMake, Qt, Code::Blocks

Using RaspiCam with C++

USB WebCam ကို သုံး မယ် ဆိုရင် ဘာမှ ထပ်လုပ် စရာ မလို ပေမယ့် Raspberry Pi Camera Module ကို သုံးမယ် ဆိုရင် သူ့ အတွက် C++ မှာ သုံးဖို့ library တစ်ခု ထပ် တပ်ဆင် ဖို့ လိုပါတယ် [Sal17]raspicam-0.1.6.zip ကို download လုပ် ပြီးတဲ့ အခါ၊ ဖိုင်ကို uncompress လုပ်ပြီး၊ compile လုပ်ဖို့ အတွက် အောက်က စာရင်း မှာ ပြထားတဲ့ command တွေကို သုံးနိုင် ပါတယ်။
$ unzip raspicam-0.1.6.zip
$ cd raspicam-0.1.6
$ mkdir build
$ cd build
$ cmake ..
OpenCV ရှိနေ တယ် ဆိုရင် ပုံ မှာ ပြထား သလို
-- CREATE OPENCV MODULE=1
လို့ ပြနေ ပါမယ်။

Figure. RaspiCam ကို တပ်ဆင်ခြင်း။


အဲဒီ နောက် အောက်က အတိုင်း build လုပ်၊ install လုပ်ပြီး၊ ldconfig ကို update လုပ်လိုက် ပါမယ်။
$ make
$ sudo make install
$ sudo ldconfig
OpenCV ရှိနေတယ် ဆိုရင် utils ဆိုတဲ့ အခန်း ထဲမှာ raspicam_cv_test ဆိုတဲ့ နမူနာ ပရိုဂရမ် ရှိနေ မှာ ဖြစ်ပြီး တပ်ဆင်မှု အဆင်ပြေ မပြေ စမ်းကြည့်ဖို့ အတွက် အောက်က အတိုင်း run ကြည့်နိုင် ပါတယ်။ ပရိုဂရမ် output နဲ့ ပုံရိပ် တွေ အဲဒီ အခန်း ထဲမှာပဲ ရလာ တာကို ပုံ မှာ ပြထား ပါတယ်။
$ cd utils
$ ./raspicam_cv_test

Figure. RaspiCam ကို စမ်းသပ်ခြင်း။


RaspiCam ကို C++ နဲ့ သုံးဖို့ အတွက်
#include 
ဆိုပြီး သူ့အတွက် header ဖိုင် ကို ထည့်ဖို့ လိုပါတယ်။ Webcam အတွက် VideoCapture class ကို သုံးခဲ့ ပေမယ့် Raspberry Pi ရဲ့ camera module အတွက် တော့ RaspiCam_Cv class ကို သုံး ပါမယ်။
raspicam::RaspiCam_Cv cap;
ပုံရိပ် ကို ဖမ်းယူ ဖို့ အတွက် grab နဲ့ retrieve ဆိုတဲ့ method တွေကို သုံးနိုင် ပါတယ်။ RaspiCam ကို OpenCV နဲ့ တွဲ သုံးတဲ့ ရိုးရှင်းတဲ့ နမူနာ raspicamcv.cpp ကို အောက်က လင့်ခ် မှာ ပြထား ပါတယ်။
https://github.com/yan9a/rpi/blob/master/raspicamcv/raspicamcv.cpp

Camera ရဲ့ တန်ဖိုး တွေကို set နဲ့ ပြောင်းလဲ နိုင်ပြီး၊ ပြောင်းတဲ့ နမူနာ တွေကို utils အခန်း ထဲက raspicam_cv_test.cpp ထဲမှာ တွေ့နိုင် ပါတယ်။ ပြောင်းပြီး တဲ့ အခါ release လုပ်ပြီး၊ ပြန် open လုပ်ဖို့ လိုပါတယ်။ နမူနာ ပရိုဂရမ် ကို အောက်က အတိုင်း build လုပ်ပြီး run နိုင် ပါတယ်။
$ g++ raspicamcv.cpp `pkg-config --cflags --libs opencv` -o  raspicamcv \
 -I/usr/local/include/ -lraspicam -lraspicam_cv 
$ ./raspicamcv


Build and Run SmartCam

ဗွီဒီယို တွေိကို သိမ်းတဲ့ အခါ X264 ကို သုံးရင် ဖိုင် အရွယ်အစား တော်တော် သေးငယ်တဲ့ ဗွီဒီယို ဖိုင်တွေကို ရနိုင် ပါတယ်။ ဒါ ပေမယ့် Raspberry Pi ရဲ့ CPU usage က တက်လာပြီး နှေးလေး နေတာ တွေ့နိုင် ပါတယ်။ MJPG နဲ့ ဆိုရင်တော့ ဖိုင် size ကြီးပြီး၊ တွက်ချက် လုပ်ဆောင်မှု ပို ပေါ့ပါး ပါတယ်။ Raspberry Pi camera module ကို သုံးထား ပြီး RaspiCam လိုင်ဘရီ ကို တပ်ဆင်ပြီး ရင်တော့ သူ့အတွက် lraspicam လိုင်ဘရီ ကို ထည့်ပြီး build လုပ်ဖို့ လိုပါလိမ့် မယ်။ ပရိုဂရမ် မှာ c++11 standard လိုတဲ့ အတွက် build လုပ်တဲ့ အခါ အောက်က အတိုင်း bulid လုပ်ပြီး၊ run နိုင် ပါတယ်။
$ g++ SmartCam.cpp ce_io.cpp `pkg-config --cflags --libs opencv` -std=c++11 -o SmartCam \
 -I/usr/local/include/ -lraspicam -lraspicam_cv
$ gksudo ./SmartCam


Related Posts



အကိုးအကားများ

[Sal17] Rafael Munoz Salinas. RaspiCam: C++ API for using Raspberry camera with/without OpenCv. 2017.
url: https://www.uco.es/investiga/grupos/ava/node/40.

Monday, January 22, 2018

UDP/TCP Socket Programming with wxWidgets

  1. နိဒါန်း
  2. UDP
  3. TCP
  4. အကိုးအကားများ

နိဒါန်း

wxWidgets နဲ့ UDP ၊ TCP တို့ကို သုံးပြီး network ပေါ်မှာ ဒေတာ အပြန် အလှန် ပေးပို့ ဆက်သွယ် တဲ့ အကြောင်း ဆွေးနွေး ချင် ပါတယ်။ အဲဒီ အတွက် wxWidgets ကို တပ်ဆင် ထားဖို့ လိုပါ တယ်။ သူ့ကို platform အမျိုးမျိုး အတွက် တပ်ဆင်တဲ့ အကြောင်း တွေကို အောက်က လင့်ခ် မှာ ဖတ်နိုင် ပါတယ်။
အင်တာနက် စတဲ့ network တွေ ပေါ်မှာ TCP ဒါမှမဟုတ် UDP တွေသုံးပြီး စက်တစ်ခု နဲ့ တစ်ခု ဒေတာ တွေ အပြန်အလှန် ပို့ဖို့ အတွက် socket တွေကို အသုံးပြု နိုင် ပါတယ်။ ခေတ်ပေါ် operating system တွေ အားလုံးက socket layer ကို အထောက် အပံ့ ပေးကြ ပေမယ့် platform ပေါ်မူ တည်ပြီး socket ကို အသုံး ပြုရတဲ့ ပုံစံ တွေက အမျိုးမျိုး ကွဲပြား နိုင်ပါတယ်။ wxWidgets မှာ အောက်ခံ platform အတွက် ပူစရာ မလိုပဲ အလွယ် တကူ အသုံးပြုနိုင်တဲ့ socket class ပါ ပါတယ်။ အဲဒီ class ကို မတူညီတဲ့ ပုံစံ နည်းလမ်း အမျိုးမျိုး နဲ့ အသုံးပြုနိုင်ပြီး၊ အသုံးပြုပုံ နမူနာ တချို့ကို အောက်မှာ ဆက်ပြီး ဖော်ပြထား ပါတယ်။


Thursday, November 23, 2017

OpenCV with wxWidgets

  1. နိဒါန်း
  2. Linux
  3. Windows
  4. အကိုးအကားများ

နိဒါန်း

OpenCV ကို wxWidgets နဲ့ တွဲသုံး တဲ့ အကြောင်း ဆွေးနွေး ချင် ပါတယ်။ အဲဒီ အတွက် OpenCV နဲ့ wxWidgets တို့ကို တပ်ဆင် ထားဖို့ လိုပါ တယ်။ သူတို့ ကို platform အမျိုးမျိုး အတွက် တပ်ဆင်တဲ့ အကြောင်း တွေကို အောက်က လင့်ခ် တွေမှာ ဖတ်နိုင် ပါတယ်။

Linux

Linux နဲ့ terminal ပေါ်မှာ command ရိုက်ထည့် ပြီး build လုပ်တာ လွယ်ကူ ရိုးရှင်း ပါတယ်။ နမူနာ အနေနဲ့ wxcvsimple.cpp (online) ဆိုတဲ့ ရိုးရှင်း တဲ့ ပရိုဂရမ် လေး တစ်ခု ရေးကြည့် ပါမယ်။ ပရိုဂရမ် အစမှာ Application ရဲ့ OnInit() ဆိုတဲ့ method ထဲမှာ
wxInitAllImageHandlers();
ဆိုတာကို ထည့်ပါမယ်။ အဲဒီနောက် MyFrame ဆိုတဲ့ wxFrame ရဲ့ derived class ထဲမှာ ပုံရိပ် တွေကို ဖော်ပြဖို့ wxStaticBitmap variable တွေကို ကြေငြာ လိုက် ပါမယ်။ MyFrame ရဲ့ constructor မှာ wxStaticBitmap တွေကို ဖန်တီးဖို့ အောက်က ကုဒ် ကို သုံးနိုင် ပါတယ်။

Monday, November 20, 2017

OpenCV on Linux using g++, CMake, Qt, Code::Blocks

  1. နိဒါန်း
  2. GCC ၊ CMake တို့ဖြင့် အသုံးပြုခြင်း
  3. Qt ဖြင့် အသုံးပြုခြင်း
  4. Code::Blocks ဖြင့်အသုံးပြုခြင်း
  5. အကိုးအကားများ

နိဒါန်း

OpenCV ကို Linux တွင် တပ်ဆင် ရန် ပထမ အဆင့် အနေနှင့် အောက်ပါ packages များ စက်ထဲ တွင် ရှိရန် လိုအပ် သည် [Ope17g]။
  • GCC 4.4.x or later
  • CMake 2.6 or higher
  • Git
  • GTK+2.x or higher, including headers (libgtk2.0-dev)
  • pkg-config
  • Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
  • ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
  • [optional] libtbb2 libtbb-dev
  • [optional] libdc1394 2.x
  • [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
ထို packages များအား စက်ထဲသို့ ထည့်သွင်း လိုပါက Synaptic Manager သုံး၍ သော် လည်းကောင်း၊ terminal တွင် အောက်ပါ စာရင်း များပါ command များ ရိုက်နှိပ်၍ သော် လည်းကောင်း ထည့်နိုင် သည်။

Friday, October 27, 2017

Cross-platform C++ programming with wxWidgets

  1. နိဒါန်း
  2. Windows တွင်တပ်ဆင်ခြင်း
  3. Linux တွင်တပ်ဆင်ခြင်း
  4. Mac တွင်တပ်ဆင်ခြင်း
  5. အကိုးအကားများ

နိဒါန်း

wxWidgets က Windows ၊ Linux နဲ့ Mac OSX အစ​ ရှိ​တဲ့ ပ​လက်​ဖောင်း အမျိုး​မျိုး ပေါ်​မှာ GUI applications တွေ ရေး​ဖို့ အတွက် C++ library ပါ။ သူ​နဲ့ GUI code တွေ ရေး​ပြီး​ ရင် ပ​လက်​ဖောင်း အမျိုး​မျိုး ပေါ်​မှာ ကုဒ် ကို သိပ်​ပြင်​ စရာ မ​လို​ပဲ တန်း​ပြီး compile လုပ်၊ run လုပ်​လို့​ ရ​ပါ​တယ်။

wxWidgets ​က free လည်း​ပေး open source လည်း ​ဖြစ် တဲ့ software ပါ။ ကိုယ်​ပိုင် ဆော့​ဝဲ တွေ​ ထုတ်​မယ်​ ဆို​ရင် လည်း ဘာ​မှ ကန့်​သတ်​ချက်​ တွေ မ​ရှိ​ ပါ​ဘူး [wxW98]။ အဲဒါက Qt နဲ့ အဓိက ကွာခြားချက် ပါ။ Qt က LGPLv3 လိုင်စင် ကို free ပေးထားပြီး၊ ကိုယ်ပိုင် စီးပွားရေး အတွက် သုံးမယ် ဆိုရင် ကန့်သတ်ချက် တချို့ ရှိတာကြောင့် လိုင်စင် ဝယ်ဖို့ လိုကောင်း လိုနိုင် ပါတယ် [Qt17]။

Native platform ကို တတ်နိုင် သလောက် သုံးထား တာမို့ wxWidgets သုံးလို့ ရလာတဲ့ GUI တွေဟာ သုံးတဲ့ platform နဲ့ လိုက်ဖက်ပြီး ပင်ကို အမြင် အတိုင်း တသားထဲ ကျ တာကို ခံစား ရမှာပါ [wxW12]။ Standard C++ ကိုပဲ သုံးထားပြီး Qt တို့လို အထူး extension တွေ မသုံးထား တဲ့ အတွက် ရှုပ်ထွေးမှု နည်းတာ ကလည်း ကောင်းတဲ့ အချက် တစ်ခုပါ။

wxWidgets နဲ့ ရလာတဲ့ binary application တွေဟာ သေးငယ် ပေါ့ပါး တာမို့ embedded system တွေအတွက် အထူး သင့်တော် ပါတယ်။ နောက်တစ်ခါ library အရွယ်အစား တွေ ယှဉ်ရင်လည်း ဥပမာ အနေနဲ့ Qt library ကို တပ်ဆင်ရင် \(\approx 200\) MB လောက် အရွယ် ရှိပေမယ့် wxWidgets library က \(\approx 30\) MB လောက်ပဲ ယူပါတယ်။

wxWidgets က C++ အတွက် သာ မကပဲ python, perl, php, java, lua, lisp, erlang, eiffel, C# (.NET), BASIC, ruby နဲ့ javascript အတွက် တောင်မှ bindings [wxW15a] တွေ ရှိပါတယ်။ wxWidgets က တော်တော် ပြည့်စုံ ရင့်ကျက် တဲ့ GUI toolkits ဖြစ်ပြီး၊ utility classes လည်း အများကြီး ရှိတာမို့ ကောင်းမွန် သင့်တော် တဲ့ GUI toolkits အနေနဲ့ ညွှန်းဆို ချင်ပါတယ်။

wxWidgets ကို အသုံးပြုတဲ့ သူတွေ၊ အဖွဲ့အစည်းတွေ အများကြီး ရှိပြီး အဲဒီ အထဲမှာ လူသိများ တာတွေက NASA, AMD, Xerox, နဲ့ Open Source Applications Foundation (OSAF) တို့ ဖြစ်ပါတယ်။ ထင်ရှားတဲ့ wxWidgets applications တွေက AVG AntiVirus, Audacity, Filezilla, Code::Blocks, CodeLite တို့ ဖြစ်ပါတယ်။

Wednesday, September 13, 2017

Pixy

Arduino, Raspberry Pi, BeagleBone စတာ တွေနဲ့ Computer Vision အလွယ်တကူ တွဲသုံး ချင်ရင် Pixy (http://cmucam.org/projects/cmucam5) ဆိုတဲ့ Vision System လေး သုံးရတာ လွယ်ကူ အဆင်ပြေ ပါတယ်။ ကိုယ် detect လုပ်ချင် တဲ့ အရာ ဝတ္တု တွေရဲ့ အရောင် ကို သင်ပေး ပြီးတာနဲ့ သူတို့ ကို အာရုံခံ ပေးပြီး နေရာ၊ အရွယ် စတာ တွေကို UART, SPI, I2C အစရှိတဲ့ interface တွေ နေ ပို့ ပေးနိုင် ပါတယ်။

Thursday, August 3, 2017

KiCad အားစတင်အသုံးပြုခြင်း

KiCad ဆိုတဲ့ free software လေးက PCB ဆားကစ်ဘုတ်တွေ ဒီဇိုင်း လုပ်ဖို့ တော်တော် အဆင်ပြေတယ်။ အလကားပေးထားတာရယ်၊ ကန့်သတ်မှုတွေ မရှိပဲ စိတ်ကြိုက်သုံးနိုင်တာတွေရယ်ကိုတော်တော်သဘောကျမိတယ်။ စီးပွားဖြစ် အမြောက်အများထုတ်ရင် အသုံးဝင်တဲ့ BoM ၊ Gerber ဖိုင် လိုမျိုးတွေထုတ်ဖို့၊ ဒီဇိုင်းကို 3D မြင်ကွင်းနဲ့ ကြည့်ဖို့ တွေအတွက်ပါ ကိရိယာတွေပါတယ်။ Olimex တို့လို နာမည်ကြီး development ဆားကစ်ဘုတ် ပစ္စည်းကိရိယာ တွေလုပ်ရောင်းတဲ့ ကုမ္ပဏီတွေတောင် အခုနောက်ပိုင်း KiCad ကို ပြောင်းသုံးတယ်ဆိုပါတယ် [KiCad on Wikipedia]



ကျွန်တော် ကိုယ်တိုင်လည်း ဆားကစ်ဘုတ် တချို့လုပ်ပြီး သုံးကြည့်တာ အားလုံး အဆင်ပြေတာ တွေ့ရတယ်။ ဒါနဲ့ ကိုယ်တိုင်သုံးကြည့်လို့ ရတဲ့ အတွေ့အကြုံ၊ နည်းလမ်းလေးတွေကို စုပြီး မှတ်ထားချင်တာနဲ့ ၊ သူ့ရဲ့ Getting Started guide နဲ့ပေါင်းစပ်ပြီး၊ ကောင်းမယ်ထင်တဲ့ နမူနာလေးတွေနဲ့ မြန်မာလို KiCad သုံးနည်းစာအုပ်လေး ရေးဖြစ်တယ်။ စိတ်ဝင်စားရင် အောက်ကလင့်ခ်မှာ ယူပြီး ဖတ်ကြည့်ပါဦး။

https://yan9a.github.io/KiCad/kicadmm.pdf

Tuesday, June 6, 2017

Flash content protection for LPC824

LPC824 low cost 32-bit ARM Cortex-M0 microcontroller လေးကို OM13071 LPCXpresso824-MAX Development board သုံးပြီး evaluate လုပ်လို့ရတဲ့ အတွေ့အကြုံလေးကို ပြောချင်ပါတယ်။ Board မှာ သုံးထားတဲ့ MCU အမျိုးအစားက LPC824M201JHI33 ပါ။ အရွယ်အစား က 5 x 5 x 0.85 mm ပဲရှိတဲ့ 33 pins ပါတဲ့ HVQFN package ပါ။

သူ့အတွက် MCUXpresso Integrated Development Environment (IDE) ကို download လုပ်ပြီး၊ install လုပ်ပါမယ်။ အခြား လိုအပ်တဲ့ tools တွေကိုလည်း ဒီမှာ တွေ့နိုင်ပါတယ်။ MCUXpresso ကိုဖွင့် ပြီး workspace သတ်မှတ်ပြီးတဲ့ အခါ ဘယ်ဘက်အောက်နားက Quick Start Paner ထဲက Import projects from file system ... ဆိုတာကိုနှိပ်ပြီး Browse LPC open resources ကိုနှိပ်ပြီး နမူနာ တွေကို ယူနိုင်ပါတယ်။



Wednesday, May 31, 2017

Programming serial port in C++ with wxWidgets for Windows and Linux

Seriar Port ကိုအသုံးပြုနိုင်တဲ့၊ ကျနော်ဖန်တီးထားတဲ့ C++ class library လေးတစ်ခု အကြောင်း ပြောချင်ပါတယ်။ သူက cross-platform ဖြစ်ပြီး Windows ရော၊ Linux မှာပါ သုံးနိုင်ပါတယ်။ နမူနာ အနေနဲ့ ရိုးရှင်းတဲ့ C++ console program လေးတစ်ခုကို ဖော်ပြထားပြီး၊ GUI application အနေနဲ့ wxWidgets ကိုသုံးထားတဲ့ program ကိုပါ ဖော်ပြထားပါတယ်။ သူတို့ရဲ့ source code တွေကို အောက်က လင့်ခ် မှာ တွေ့နိုင်ပါတယ်။

https://github.com/yan9a/serial


Figure. A wxWidgets GUI application using 'Serial' class with Visual Studio 2017