[Raspberry Pi][Cam Module] 行車記錄器

文章目錄
  1. 目的
  2. 方法
  3. 成果

目的

自從桃園一場大水以後,

我的小佛浮起來了,行車記錄器也跟着消失了... 最近一直聽到有關行車糾紛,心理怕怕,但是又不想花錢買行車記錄器. 所以想說用免錢的PI camera module 來玩玩.

方法

1.製作免費的case,在上一篇文章中, 可以參考一下.

2. 我主要參考這篇

這篇功能超級多...但是我現在其實只要錄制的功能, 所以我把大部分的東西都拔掉了. 假如想要玩更高階的行車記錄器,可以仔細研究聯結.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/sh
# Purpose : Just test for recording video on cam module of raspberry pi
# Author : Sheldon
echo `date +%D` ", Start the test for cam module !!"

cd /home/pi
# set limit of rolling videos to 16GB
limit=4000000

while [ true ]; do
# Video disk space used
used=$(du Video | tail -1 | awk '{print $1}')
#echo `date +%s` "U Video" $used

# Free up disk space if needed
while [ $limit -le $used ]
do
remove=$(ls -1tr Video | grep .h264 | head -n 1)
echo `date +%D` "-" $remove
rm Video/$remove
# Calculate disk space used
used=$(du Video | tail -1 | awk '{print $1}')
done

# New file name
current=$(date +"%Y_%m_%d_%H:%M:%S.h264")
echo `date +%s` "+" $current

# Capture a 5 minute segment of video
raspivid -n -b 9000000 -w 1280 -h 720 -o Video/$current -t 300000
done

成果

Raspberry Pi 放反了,..主要是來測試cam module, 基本功能看起來work...XDD

[Ubuntu]如何在Ubuntu底下安裝LINE

文章目錄
  1. 目的
  2. 方法

目的

我每次要用line的時候,都需要把virtual box的windows打開,這樣才能使用 PC上的line,這樣真的太耗時了,所以今天研究了在ubuntu底下如何使用LINE.

1. Ubuntu 版本

1
2
sheldon$ cat /etc/issue
Ubuntu 14.04.2 LTS \n \l

2. Wine 版本

1
2
sheldon$ wine --version
wine-1.6.2

方法

我參考了這個聯結

0. 安裝p7zip以及vcrun2008

1
2
3
4
sudo apt-get install p7zip  # [p7zip](http://packages.ubuntu.com/zh-tw/lucid/utils/p7zip-full)是具有高壓縮率的套件
wget http://winetricks.org/winetricks # [winetricks](http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?post_id=66666) 是wine自動安裝函式庫的好工具XD
chmod +x winetricks # 賦予執行的權利
./winetricks #執行winetricks

參考底下圖片安裝vcrun2008

1. 產生一個暫存的line_tmp, 並cd 進去

1
2
mkdir line_tmp
cd line_tmp

2. wget 最新的LINE version, 並且利用7z去extract 資料出來

1
2
3
4
wget http://dl.desktop.line.naver.jp/naver/LINE/win/LineInst.exe
7z x -y LineInst.exe
# x eXtract with full paths
# -y Assume Yes on all queries

3. 由於你7z extract 出來的三個資料夾都是亂碼, 所以用node number去將名字改成LINE/resources,並將resources 放到LINE folder中

1
2
3
4
5
6
7
8
inode1=$(ls -ilab | awk 'FNR == 4 {print $1}')
inode2=$(ls -ilab | awk 'FNR == 6 {print $1}')
find . -inum $inode1 -exec mv {} LINE \; #將inode1的folder更名成LINE
find . -inum $inode2 -exec mv {} resources \; #將indoe2的folder更名成resources
mv ./resources/res ./LINE
mv ./LINE ../
cd ..
rm -R line_tmp

4. 用wine執行 Line.exe

1
wine Line.exe

[Raspberry Pi] 製作PI的衣服 (Case)

文章目錄
  1. 目的
  2. 方法

目的

最近想把PI帶出去外面走走, 但是只帶裸機, 未免有點不體面. 所以想他找找有沒有比較他便宜他的外殼可以用, 而且還要有cam module 的外殼. 網拍找了找, 都是出奇的貴鬆鬆, 都要能夠他買個一個新的PI了. WTF, 爲了省錢, 所以只能來個DIY....

方法

1. 準被材料

a. 瓦楞紙 20 NTD

b. 印一張A4 紙 2 NTD --> 下載草稿

c. 白膠和橡皮筋 (家裏就有了, 不用錢)

比一下PI跟草稿圖是不是很合. XD

2.痛苦又有趣的開始

a. 將A4紙粘貼在瓦楞紙的上面, 並沿着實線將不要的瓦楞紙剪下來.

b. 我把CAM年粘在正中央, 並用常識把應該折的地方折好, 使力的讓你的PI適應新的衣服 QQ. 就大功告成了

3. 結論

我果然不適合做手工藝的東西, 弄的太醜了, 或許應該來買一臺3D printer 弄個模子之類的, 就不用這麼花時了. 剩下的就等着明天來實際, 測試一下我的車用行車記錄器. HaHa

[Raspberry Pi] 要如何自動的進入shell裏面, 而不需要輸入密碼

文章目錄
  1. 目的
  2. 方法

目的

假如你寫了一程式, 但是你希望他能在Pi上, 從一上電後自己能夠執行. 要怎麼做呢?

方法

我參考了這篇. auto_login

1. 將/etc/inittab 裏面的, 下面這行mark.

1
Line 54 ==> #1:2345:respawn:/sbin/getty --noclear 38400 tty1

2. 並將底下這行附在剛剛mark的地方

1
Line 55 ==> 1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1

不知道有沒有人會跟我一樣好奇, 爲什麼上面這行, 沒有帶密碼但是卻能夠, 自動的登入. 我google了一下, 有網友說

The commands in inittab are run as root and root does not need passwords for many things.

也就是說, 在執行inittab的時候, 程式就是root了, 所以根本不需要密碼.

3. 將你要跑的script 放在.bashrc 裏面.

例如底下

1
./your_script.sh &

[Network] fping的用法

文章目錄
  1. 目的
  2. 做法

目的

之前遇到了一個問題, 假如我現在在一個封閉的區域網路內, 我要如何得知在這個網域裏面, 有存在哪些其他電腦.

做法

這時後就可以用ubuntu 裏面的fpring 來解決這個問題.

1.先利用ifconfig 來觀察, 你現在所在的網域.

2. 再利用fping 來觀察其他電腦IP

-g addr/mask

Generate a target list from a supplied IP netmask, or a starting and ending IP. Specify the netmask or start/end in the targets portion of the command line. If a network with netmask is given, the network and broadcast addresses will be excluded. ex. To ping the network 192.168.1.0/24, the specified command line could look like either:

fping -g 192.168.1.0/24 or fping -g 192.168.1.1 192.168.1.254

[GDB] 基本指令

文章目錄

GDB 是一個很好的除錯指令, 這給了一個方法, 去快速知道你的程式發生了闍麼問題.

而不要一直使用printf去做debug. gdb 可以用在 server/client 的online debug 模式,

或是僅僅offline 的觀察coredump.

使用gdb 除錯, 你必須在編code的時候, 在gcc 的compiler option 多加-g

底下是我最近練習到的gdb指令.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(gdb) r     \\ 開始執行程式
(gdb) c \\ 假如你現在停在breakpoint, 接着執行程式(continue)
(gdb) b function \\ 設定中斷點
(gdb) b file:line \\ 設定中斷點的另一個方法
(gdb) layout src \\ 將現在程式跑到的位置, 跟src code做一個mapping.
(gdb) stack \\ 觀察現在的stack
(gdb) info all-registers \\ 觀察現在所有的registers
(gdb) p $r0 \\ 讀取現在的cpu $r0 registers
(gdb) threads \\ 觀察program 裏面, 所有的thread 運行的情況卒. (有點像ps)
(gdb) s \\ 單步執行, 遇到function的時候, 進入function的stack.
(gdb) n \\ 單步執行, 遇到function的時候, 不進入function的stack
(gdb) return \\ 離開現在的fucntion, 返回calling
(gdb) jump line \\ 將PC 指向程式的line的位置
(gdb) info locals \\ 列出現在的local變數
(gdb) info args \\列出引數
(gdb) bt \\ bracktrace

[Pointer] Simple concept

文章目錄
  1. (&*ptr) 等於 (*&ptr) ??

(&*ptr) 等於 (*&ptr) ??

最近看到有人在問這個問題, 所以就簡單分析一下這個概念.

1
2
3
4
int a = 10, *ptr = &a;
&*ptr 等於 &(*ptr) ??
// 假如 a 所在的位置是0x7fffffffd9e4
// 假如 ptr 的位置是0x7fffffffd9e8

因式分解

&*ptr

  1. *ptr -> 這個指的是pointer ptr 所指向位置的值, 也就是10.
  2. &(*ptr) = &(a) -> 也就是a的位置 0x7fffffffd9e4

*&ptr

  1. &ptr -> pointer ptr 的位置0x7fffffffd9e8
  2. &ptr = (&ptr) = *(0x7fffffffd9e8) = (將這個位置的值取出來) = &a = 0x7fffffffd9e4

因此

1
&*ptr 等於 *&ptr

[GCC][MACRO-LOG]

文章目錄

以前一直是用printf來debug, 每次都寫差不多格式的log, 所以去查了一下, 在巨集裏面要如何把default foramt 添加上去, 是時後要學點GDB了.... XD.

1
#define DBG(fmt, vars...) printf("[%s][%d] "fmt, __FUNCTION__, __LINE__, ##vars)

理財-基本面名詞-損益表

文章目錄
  1. 損益表
    1. EPS (Earning Per Share) , 公司最後就會用稅後純益來決定每一個股要發多少錢給各股東.

損益表

要看一間公司賺不賺錢, 就可以從損益表, 一窺究竟. 損益表是由許多經濟名詞組合 而成, 所以要想從損益表來得知公司情況好壞的話, 這些名詞是必須要清楚明白的.

營業收入 = 公司從客戶上賺的錢

營業成本 = (直接成本) 生產產品所需要的原物料成本, 經營公司所用倒的人事成本, 公司所在辦公大樓的租金

營業毛利 = 營業收入-營業成本

營業費用 = (間接成本)行銷, 研發經費

營業外收入 = 與本業無關的收入

營業外支出 = 與本業無關的支出

營業外收支 = 營業外收入 - 營業外支出

稅前純益 = 營業毛利 - 營業費用 - 營業外收支

稅後純益 = 稅後純益 - 稅

EPS (Earning Per Share) , 公司最後就會用稅後純益來決定每一個股要發多少錢給各股東.