2016年1月19日 星期二

如果沒有網路...但是還是想從電腦遠端遙控raspberry...那你可以這個方法...usb2tty


請參考葉大師的文章....

買了  USB轉TTL的轉換線

直接插上去....等了一會兒....driver自動裝好了....然後是COM4....


然後把TTL的線連接到RPI上


TTL 的線如下:   

  紅色 :  +5V
  黑色 : GND
  綠色 : TXD
  白色 : RXD

由於必須和RPI 是 跨接....也就是說.... TXD 要接到對方的RXD.... RXD 要接到對方的TXD

pin 6 GND  -> GND (共地)
pin 8 TXD -> 白色
pin 10 RXD -> 綠色

紅色線就不用接了.....




打開 Putty  ...  Connection type 選 Serial  ....Speed 設成:115200...  Serial line 設成COM4


.
按下連線....

然後把RPI 插上電....就可以看到連線成功



接下來去修改  編輯  /etc/network/interfaces

Change iface wlan0 inet static into iface wlan0 inet dhcp
先改成動態IP.....可以連線上網之後.....就可以把 putty 改成 SSH 連線模式.....

至於怎麼設定  wpa_supplicant.conf

可以參考這一篇 wpa_supplicant_setting

編輯   /etc/wpa_supplicant/wpa_supplicant.conf
========================================
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
        ssid="jacky_0328"
        psk="your_pass"
        key_mgmt=WPA-PSK

}
============================================

再新增一組

network={
        ssid="new_host"
        psk="new_pass"
        key_mgmt=WPA-PSK

}

存檔.... 然後     

sudo ifdown wlan0
sudo ifup wlan0



Reference : http://yehnan.blogspot.tw/2013/09/raspberry-pi.html

Reference : http://weworkweplay.com/play/automatically-connect-a-raspberry-pi-to-a-wifi-network/

Raspberry 忘記密碼怎麼辦....不用整個重灌...


參考葉難大師的文章...

拔出記憶卡,放到其他台電腦裡,修改第一個分割區裡的cmdline.txt,裡頭只有一行,原本內容大概如下:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

在最後面加上「init=/bin/sh」。

然後放回Raspberry Pi開機,應該很快就會出現「#」提示字元,然後輸入底下的指令:

# su  (變成超級使用者)
# passwd pi  (重新設定帳號pi的密碼)
# sync  (清空緩衝區,確保設定儲存生效)
# exec /sbin/init  (執行一般開機後會執行的程序)

然後會看到平常的開機訊息,看到login:後,登入帳號pi,再去修改/boot/cmdline.txt,拿掉之前加入的「init=/bin/sh」。

然後重開機,完工。


Reference : http://yehnan.blogspot.tw/2014/01/raspberry-piraspbian_29.html

參考葉難大師的文章...可以增加deb 的下載來源...增加下載速度

查看了/etc/apt/sources.list檔案內容

deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian/ wheezy main contrib non-free rpi


其中套件伺服器遠在國外,可到Raspbian Repository Mirrors查詢鏡像站,有台灣的,所以試試在sources.list首行加入:

deb ftp://ftp.yzu.edu.tw/Linux/raspbian/raspbian/ wheezy main contrib non-free rpi

然後輸入

sudo apt-get update

就會發現下載速度變快了....因為可以從taiwan的server下載....



Reference : http://yehnan.blogspot.tw/2015/03/raspberry-piraspbiandeb.html

用Raspberry 來當主機, 使用wordpress 來架設blogger






Reference : 葉難大師的安裝文

Reference : https://www.raspberrypi.org/learning/lamp-web-server-with-wordpress/worksheet/


write gmail by using python on raspberry


如果當raspberry 偵測到警報時(有煙霧時)....可以透過gmail馬上通知你.....

可以參考下面的python code



=========================================================

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Send email via smtp_host."""
import smtplib
from email.mime.text import MIMEText
from email.header    import Header

####smtp_host = 'smtp.live.com'        # microsoft
smtp_host = 'smtp.gmail.com'       # google
####smtp_host = 'smtp.mail.yahoo.com'  # yahoo
login = "your_gmail_account@gmail.com"
#password = raw_input(">>> Type your gmail password:")
password = "your_password"
recipients_emails = [login]

msg = MIMEText('body…', 'plain', 'utf-8')
msg['Subject'] = Header('subject…', 'utf-8')
msg['From'] = login
msg['To'] = ", ".join(recipients_emails)

s = smtplib.SMTP(smtp_host, 587, timeout=10)
s.set_debuglevel(1)
try:
    s.ehlo()
    s.starttls()
    s.ehlo()
    s.login(login, password)
    s.sendmail(msg['From'], recipients_emails, msg.as_string())
finally:
    s.quit()

=====================================================

你需要改三個地方.....

1 :  login = "your_gmail_account@gmail.com"
2 :  password = "your_password"
3 :  msg = MIMEText('body…', 'plain', 'utf-8')

把  你的帳號和密碼改上去後....然後把你要傳的message 換上去('body...').....

執行之後....大概就會得到下面的error message 



大概是說你被gmail 擋了下來....

把關鍵字再去google

可以看到這一篇


有位帥哥回文說 :

Google blocks sign-in attempts from apps which do not use modern security standards (mentioned on their support page). You can however, turn on/off this safety feature by going to the link below:



選擇打開之後.....再執行一次就可以順利傳送gmail

一些開發工具的基本入門 strace, ltrace, ps, top,mtrace....

1.  strace:

     strace是一個功能強大的除錯,分析診斷工具.你將發現他是一個極好的幫手在你要除錯一個無法看到原始碼或者原始碼無法在編譯的程序

   以main.c  的例子來看




    可以看到我們呼叫了  open.....  write     ... 和 close 等  system 的function....

2.   ltrace :

       ltrace 是觀察函示庫的呼叫....使用方法很像...

      不過我一開始輸入的時候..他說找不到ptrace....只好試著先安裝看看
       sudo apt-get install ltrace
      發覺有套件可以安裝.....
     
3. ps :

      ps  可以把機器上正在執行的所有行程(process)顯示出來...輸入
      ps aux
     

     欄位介紹  

      USER 就是使用者帳號.....PID  就是 (行程ID)
   %CPU  表式  從行程開始執行後...佔去了多少百分比
    %MEM   :  行程常駐的記憶體佔了全部的記憶體的百分比
     VSZ :  是行程的虛擬記憶體大小...單位為KB
      RSS :  行程所使用的實體記憶體中沒有被置換的部分....單位為KB

4 :  top : 

        top 會定期的擷取系統狀態和行程資訊....會一直更新

5 : mtrace:
             可以分析程式裡面呼叫 malloc(), realloc() 和free()的使用情形

6 :  readelf:

          可以檢視你的elf 二進位檔案.....

    例如:    
           要顯示ELF 檔案的符號表

   readelf -s <filename>

            要顯示ELF 檔案的所有區段..

            readelf -e <filename>

           
   

reference : 使用 truss、strace 或 ltrace 診斷軟件的疑難雜症
reference : ltrace - Linux Debugging Utility Tutorial
reference : Linux上编译ltrace
   

如何解決執行 make menuconfig 時...會遇到 recipe for target 'scripts/kconfig/mconf.o' failed



在 linux 的目錄下.......   輸入

make menuconfig  

 會遇到這個error message


google了一下發覺是套件   ncurses-devel 沒有安裝....輸入

 sudo apt-get install ncurses-devel


又遇到另外一個問題.....



真是屋漏偏逢連夜雨.....

再繼續google....

在reference 的網站發現...原來是套件改了名字....改成 libncurses5-dev
 sudo apt-get install libncurses5-dev

再執行 make menuconfig  
就可以得到正確的畫面....開始好好的來設定你的 kernel configuration




Reference : http://blog.csdn.net/yao_qinwei/article/details/8805101