Arduino練習題

1.  居家安全系統-簡單:
偵測按鈕是否被按壓,是->亮LED警告,否->沒事

/*
  Program1- Home Security System-simple
  This program is made by CCU COMM RongSon.
  Only for SERVICE-LEARNING use.
*/

int buttonInput=7;
int ledOutput=8;
int warning=0;

void setup(){
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println(“setup!”);
  pinMode(ledOutput,OUTPUT);
  pinMode(buttonInput,INPUT);
}

void loop() {
  warning= digitalRead(buttonInput);
  if(warning==0){
    Serial.println(“nothing happen”);
  }else{
    Serial.print(“Warning!!!!!!:”);
    Serial.println(warning);
    digitalWrite(ledOutput,HIGH);
    delay(1000);
    digitalWrite(ledOutput,LOW);
  }
  delay(500);
}

next->
1. 換四腳按鈕

2. debounce (?

3. 加光敏電阻

4. 按鈕架構換成 按著光敏電阻+麥克風

Kali on RPI – 目前所遇到的問題(不確定連上的是誰)

在沒有連接螢幕的情況下
只有透過ssh連線後才可以確認連到的wifi是誰

一開始設定RPI剛開機後可以上網設定很多個地方
但是我卻不清楚到底我改的哪個地方才是真正有用到的

測試到現在
剛開機的時候 且 手機熱點有開 且 筆電也是連熱點 的情況下
才能成功用ssh連線

目前有可能改的點是
1. /etc/rc.local => 剛開機時的設定
iwconfig

ifconfig wlan0
ifconfig wlan0 up
iwconfig wlan0 essid “RS” key s:“1qaz2wsx” channel auto
iwconfig wlan0
dhclient wlan0
exit 0

2. /etc/network/interfaces => 自動連線且連上後為固定IP 但是不知道是什麼時候會執行

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
        #iface wlan0 inet dhcp
        #wpa-conf /etc/wpa_supplicant.conf
iface wlan0 inet static
address 172.20.10.5
netmask 255.255.255.240
gateway 172.20.10.1
wpa-conf /etc/wpa_supplicant.conf
3. /etc/wpa_supplicant.conf => 新增markho的network進去後,還是沒辦法連線,就算重開RPI也是一樣
ctrl_interface=/var/run/wpa_supplicant
network={
        ssid=”RS”
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP TKIP
        group=CCMP TKIP
        psk=”xxxxx”
}
network={
        ssid=”markho”
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP TKIP
        group=CCMP TKIP
        psk=”1150XXXX”
}

保留IP分級

0.0.0.0 ~ 255.255.255.255
各級保留IP

Class A:
1) 0.0.0.0/8 : 表示所有、任何、預設的意思

2) 10.0.0.0/8 : 內部網路私有IP使用,這個範圍的IP不可在網際網路上使用,要透過NAT(network address translation)才能用

3) 127.0.0.0/8 : 網路主機的內部迴圈之用,任何發送到127.0.0.1的資料封包,都將原封不動的傳回發送主機上,可用以偵測網路環境是否架設妥當

4) 100.64.0.0/10 : 在IPv4/IPv6轉換期間提供過度解決方案,專門給各地區ISP供應商所使用的CGN(carrier-grade NAT)技術

Class B:
1) 172.16.0.0/12 : 內部網路私有I P,當新加入的電腦主機無法藉由DHCP(dynamic host configuration protocol)獲取相對應的IP設定時,會拿此範圍的IP自動套用



Class C: 

1) 192.168.0.0/16 : 私有IP,家中路由器

2) 192.0.0.0/24、192.0.2.0/24、192.88.99.0/24、198.18.0.0/15、198.51.100.0/24、203.0.113.0/24: 保留給各種技術使用

Kali on RPI記錄(1)- 轉接, 無線網卡, 自動登入, SSH

不知道改什麼?

到/usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service
[D-BUS Service]
Name=fi.epitest.hostap.WPASupplicant
Exec=/sbin/wpa_supplicant -u -f /var/log/wpa_supplicant.log
User=root
SystemdService=wpa_supplicant.service
改成
[D-BUS Service]
Name=fi.epitest.hostap.WPASupplicant
Exec=/sbin/wpa_supplicant -u -onl80211 -O/var/run/wpa_supplicant

User=root


1. HDMI to VGA轉接頭 輸出到螢幕
=> 記憶卡內新增 config.txt 檔
:
hdmi_force_hotplug=1    #強迫以HDMI輸出
#hdmi_drive=2
#hdmi_group=2
#hdmi_mode=16


因為Raspberry Pi的視訊輸出有Composite RCA(AV端子、又稱複合端子,通常是黃色的RCA端子)與HDMI,兩者不能同時使用。當開機時,系統預設從AV端子輸出,但若偵測到有接HDMI,便會從HDMI輸出。若使用轉接頭或轉接線,Raspberry Pi便可能無法正常偵測,於是仍從AV端子輸出視訊,導致根本沒畫面。

參考:1.葉難 http://yehnan.blogspot.tw/2013/10/raspberry-pi.html
2. 雄:http://gsyan888.blogspot.tw/2013/06/raspberrypi-hdmi-to-vga.html

3. https://www.youtube.com/watch?v=1CiZVk8oJUA



2. 無線網卡上網設定
=> 改 /etc/wpa_supplicant/wpa_supplicant.conf
:
network={
ssid=”RS”             #看WIFI叫什麼名字
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk=”12345678″   #WIFI密碼
}

=> 改  /etc/network/interfaces
:  (DHCP版)
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  (固定IP版)


auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0



iface wlan0 inet static
        address 192.168.2.100 #要改
        netmask 255.255.255.0
       gateway 192.168.2.254

參考:1. 樹莓派:https://www.raspberrypi.com.tw/2152/setting-up-wifi-with-the-command-line/
2. 雄:http://gsyan888.blogspot.tw/2013/04/raspberry-pi-wireless-network.html
3. 自動登入 (未成功)
=> 改 /etc/inittab
:

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
T0:23:respawn:/bin/login -f pi ttyAMA0 </dev/ttyAMA0 >/dev/ttyAMA0 2>&1

=>改 /etc/gdm3/daemon.conf.
:
[daemon]# Enabling automatic login
AutomaticLoginEnable = true
AutomaticLogin = root
=>改 /etc/kde4/kdm/kdmrc
:
[X-:0-Core]
AllowRootLogin=true
AutoLoginAgain=true
AutoLoginDelay=0
AutoLoginEnable=true
AutoLoginLocked=false
AutoLoginUser=root
ClientLogFile=.xsession-errors

=> 重新啟動網路設定
: /etc/init.d/networking restart


參考:1. 夢想不該只是夢想 http://inpega.blogspot.tw/2015/04/blog-post_17.html
2. http://www.blackmoreops.com/2013/12/19/auto-login-root-user-system-start-kali-linux-gnome-kde/



4. SSH(未成功)
=> 改/etc/ssh/sshd_config
#PermitRootLogin without-password
PermitRootLogin yes

=> 改/etc/motd -> 可改登入時顯示的字串 (可加入banner)

=> 重新啟動ssh
: service ssh restart

參考:1.Chaos:Enable SSH on kali: http://www.drchaos.com/enable-ssh-on-kali-linux/
2. banner製造機: http://patorjk.com/software/taag

Mac OS X 常用的終端機指令(common command in terminal on mac)

移動游標
– 將游標移到指令最前 / 後

=> 按住option+ a / e
– 將游標移到指定位置
=> 按住option+滑鼠點擊

目錄
– 顯示現在所處目錄
=> pwd
– 顯示現在所處目錄內容
=> ls
– 顯示現在所處目錄所有內容(含隱藏)
=> ls -a
– 顯示現在所處目錄所有內容(可看可讀可寫rw等)
=> ls -al
– 顯示不在當前目錄的內容 (ex.Desktop)
=> ls ~/Desktop
– 移動到不在當前目錄的內容 (ex.Desktop)
=> cd ~/Desktop
– 創資料夾(ex. haha)
=> mkdir haha
– 刪資料夾(ex. haha)
=> rmdir haha
 查看資料夾所佔大小
=> du -shc ~/Desktop           // -s: summarize , -h: human-readable, -c: several folders’ total
– 用finder開啟當前目錄
=> open .

看檔案內容
– 直接全部印出來 (適用小檔案)
=> cat filename
– 只看後面 (適用超大檔案 ex. log)
=> tail filename
– 跳到閱讀器看全部 (適用中型檔案,且不會搞亂畫面)
=> less filename
– 看檔案資訊
=> file filename

寫入檔案
– 寫入某字串
=> echo something >> filename
or
echo “something” >> filename
or
echo ‘something’ >> filename
– 把某檔整個串在另一個檔案下
=> cat file >> anotherFile
– 寫入並覆蓋
=> echo something > filename
=> cat file > filename

搜尋檔案
– 找檔名
=> find path -name “filename”
ex. find ~/Desktop -name “*.jpg”
ex. find . -name “*.???”
– 用spotlight找檔名
=> mdfind -name “filename”
ex. mdfind -name “*.jpg”  ( 跑不出來 不知道為什麼?

懶人
– 執行之前執行過的(之前如果執行過cd ls mkdir, 而現在若想再創新資料夾)
=> !m or !mk or !mkd or …..
– 讓電腦不休眠
=> peseta noodle
 查詢指令作用
=> man echo / tldr echo
 設定名詞來取代指令
=> alias go=”cd ~/Desktop”    -> 之後打go, 就可以直接到桌面的目錄
 讓電腦說話
=> say -v 人名 話                    ->(打say -v ? => 可知道有誰的聲音)
ex. Mea-Jia說中文
– 打到一半,清除游標之前的指令
=> control+u or control+w
– 打到一半,清除游標之後的指令
=> control+k

process
 查看現在所有的process
=> ps aux // ps auxww
– 超猛
=> top

網路
– 查網卡介面狀態
=> ifconfig
– 查無線網卡狀態
=> iwconfig
– 查開啟的port
=> netstat

系統相關
– 查看現在硬碟使用量
=> df -h
– 查看系統資訊(包括kernel版本)
=> uname -a
– 查看環境變數有哪些
=> env
– 查看所有變數
=> set

參考:
1. 20141203 mac os terminal 常用指令與小技巧,from Liwei Chen
http://www.slideshare.net/liweitw/20141119-mac-os-terminal-42332054
2. 把複雜的man取代成簡單白話的模組: http://tldr-pages.github.io
3. 終端使用初級教程:https://www.renfei.org/blog/mac-os-x-terminal-101.html