2014年1月10日 星期五

如何格式化SD卡成為FAT16(FAT),製作Makerbot用的SD卡?

可以在Windows中的執行輸入cmd打開doc控制台

再來輸入指令 Fromat 磁碟機編號: /fs:檔案格式

EX: format I: /fs:fat

如果你的SD卡大於2GB(2GB可以用),那麼可以放棄了...

因為就算格式化還是沒辦法用,甚至是把SD卡做分割磁碟也沒用

解決方案還是要買一片2GB以下的SD卡,並Format成FAT格式。


創用CC,轉貼或引用請註明出處

2013年8月3日 星期六

[筆記] Linux網路通訊程式範例 Network Programming

可以直接編譯的Linux簡單網路範例程式

使用TCP協定

Server端程式
#include<stdio.h>
#include<strings.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#define PORT 1234
#define MAXSOCKFD 10

int main()
{
 int sockfd,newsockfd,is_connected[MAXSOCKFD],fd;
 struct sockaddr_in addr;
 int addr_len = sizeof(struct sockaddr_in);
 fd_set readfds;
 char buffer[256];
 char msg[ ] ="Welcome to server!";

 /* 建立socket */
 if ((sockfd = socket(AF_INET,SOCK_STREAM,0))<0){
  perror("socket");
  return 1;
 }

 /* 填寫server端的sockaddr_in結構 */
 bzero(&addr,sizeof(addr));
 addr.sin_family =AF_INET;
 addr.sin_port = htons(PORT);
 addr.sin_addr.s_addr = htonl(INADDR_ANY);

 /* 連結socket */
 if(bind(sockfd,(struct sockaddr *) &addr,sizeof(addr))<0){
  perror("connect");
  return 1;
 }

 /* 等待連線 */
 if(listen(sockfd,3)<0){
  perror("listen");
 return 1;
 }

 /* */
 for(fd=0;fd<MAXSOCKFD;fd++)
 is_connected[fd]=0;
 
 /* */
 while(1){
  FD_ZERO(&readfds);
  FD_SET(sockfd,&readfds);
  for(fd=0;fd<MAXSOCKFD;fd++)
  if(is_connected[fd]) FD_SET(fd,&readfds);
  if(!select(MAXSOCKFD,&readfds,NULL,NULL,NULL))continue;
  for(fd=0;fd<MAXSOCKFD;fd++)
  if(FD_ISSET(fd,&readfds)){
  if(sockfd == fd){
   if((newsockfd = accept (sockfd,(struct sockaddr *) &addr,(socklen_t *) &addr_len))<0)
   perror("accept");
   write(newsockfd,msg,sizeof(msg));
   is_connected[newsockfd] =1;
   printf("connect from %s\n",inet_ntoa(addr.sin_addr));
   }else{
   bzero(buffer,sizeof(buffer));
   if(read(fd,buffer,sizeof(buffer))<=0){
   printf("connect closed.\n");
   is_connected[fd]=0;
   close(fd);
   }else
   printf("%s",buffer);
   }
   }
 }
}

Client端程式

2013年7月25日 星期四

[筆記] Linux Kernel & Linux Driver 教學

簡單的Linux Driver
example.c
#include< linux/init.h >
#include< linux module.h >
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
 printk(KERN_ALERT "Hello, world\n");
 return 0;
}
 static void hello_exit(void)
{
 printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);

編譯Linux Driver的Makefile檔案

[筆記] ArDrone開發筆記

連上ArDrone的linux系統
1.先使用電腦wifi連線ArDrone
2.在cmd輸入telnet 192.168.1.1或是使用PuTTy Telnet連入192.168.1.1
3.Success! 可使用linux的指令

如果要寫AR Drone上可以跑的程式,可以參考官方開放的Toolchain
https://projects.ardrone.org/wiki/ardrone-api/Gpl

創用CC,轉貼或引用請註明出處

[筆記] 遙控飛機、直升機電控電池規格筆記

飛機、直升機DIY基礎規格認識

電池規格
S數的意思是額定電壓大小
公式為
額定電壓(V) = 電池單芯電壓(V) * S數
電池單芯電壓:Li-Po聚合鋰電池為3.7V
參考資料:
離聚合物電池(Li-Po)
http://en.wikipedia.org/wiki/Lithium_polymer_battery
離電池(Li-ion)
http://en.wikipedia.org/wiki/Lithium-ion_battery

C數的意思是額定輸出電流大小
換算公式為
額定電流(mA) = 電池容量(mah) * C數


馬達規格



創用CC,轉貼或引用請註明出處

2013年7月19日 星期五

[筆記] 在OpenCV2及OpenCV1抓取網路攝影機的影像 How to get image from webcam in opencv

抓取網路攝影機的影像,更新頻率是每10毫秒抓一次,

可以更改waitKey(10)裡面的值,單位是毫秒

原始碼如下

For OpenCV2
#include < opencv2/highgui/highgui.hpp >
#include < iostream >

using namespace std;
using namespace cv;
            
int main ( int argc, char **argv ){
 VideoCapture capture(1); // -1 any video 0 default 1~99 select
 if(!capture.isOpened()){     
  cout << "could not read file" << endl;  
  return -1;        
 }
 //double rate=capture.get(CV_CAP_PROP_FPS);
 //bool stop(false);
 Mat imgInput;
 namedWindow("Extract frame");
 while(1){
  if(!capture.read(imgInput)) break;
  imshow("Extract frame", imgInput);
  //delay 10 milliseconds
  if(waitKey(10)>=0){
   cout << "stop" << endl;
   capture.release();
   break;
  }
 }
 return 0;
}    
For OpenCV 1

2013年6月7日 星期五

[Research] 用免費資源讓電路會說話!使用Google App Engine讓Android與Arduino溝通。

最近我開始做有關物連網的研究,

何謂物連網?

物連網簡單說就是,讓物體會說話!

舉個例子,日光燈如果會說話,門如果會說話,

那麼當有人打開門的時候,門就可以跟日光燈做溝通,

燈會自動打開。

2012年5月16日 星期三

[Knowledge] 手機耳機的功能鍵按鈕原理


市面上有各式各樣的耳機,但是同樣是耳機,不知道你有沒有發現,有的耳機插頭是三段

式,而有的是四段式呢?

哈哈,我想很多人都不會注意到吧,那是因為工程師們相容性實在做得太好了,雖然耳機有

別,可是用起來,似乎都沒有什麼問題發生。

那我來貼上兩種耳機的照片囉

這是三孔耳機的特寫

2012年5月15日 星期二

[Solution] 如何使用Quartus燒錄FPGA Board,並解決USB Blaster於Win7 64bit發生找不到Hardware的問題

今天要來燒錄一個剛出爐的實驗程式到DE2-115上面,我來說明一下正確的燒錄步驟

1.在Quartus上面寫好程式並Compiler。

2.再用Pin Planer規劃輸入輸出腳位,Device記得要設定正確。

3.設定完再Compiler一次。

2011年9月8日 星期四

[Repair] 無線遙控開關維修,供電問題

這是一台無線遙控開關,它利用無限電收發模組搭配HT12D及HT12E做訊號收發,

並用繼電器控制輸出線的電源啟閉,我檢查了一下外殼的內部,

有融化的痕跡.....,這不知道是誰接錯線幹出來的好事,我檢查各個元件,

發現其中輸出端的保險絲已經燒斷,我將接點短路,功能依舊有出不來,