2017年2月10日 星期五

vim 套件安裝 - powerline 遇到的問題


powerline 算是 vim 的一個套件,可以讓介面看起來比較好看一些

我使用的環境是 ubnutu 16.04 LTS

安裝的方法很簡單

只需輸入 apt-get install 指令輸入帳戶密碼即可安裝


sudo apt-get install powerline 
安裝完後需要套用至 vim 的設定

方法為在 vim 設定檔 ~/.vimrc 中加入下列文字後重啟

set laststatus=2
set t_Co=256
python from powerline.vim import setup as powerline_setup
python powerline_setup()
python del powerline_setup

重啟後我使用 vim 都會出現此錯誤訊息(還是可編輯檔案)

Error detected while processing /x/x/.vimrc:
line    3:
E319: Sorry, the command is not available in this version: python from powerline.vim import setup as powerline_setup
line    4:
E319: Sorry, the command is not available in this version: python powerline_setup()
line    5:
E319: Sorry, the command is not available in this version: python del powerline_setup

我的解決方法為

apt-get install vim-nox-py2

即可成功使用此套件囉


2016年7月4日 星期一

Intel® Galileo Gen 2 (2/2)

Arduino -> Linux

透過這範例可以透過這方式把數值傳給系統做其他的應用

把資料寫入系統範例


結果

Intel® Galileo Gen 2 Getting Started

首先來透過節錄官網的文字簡單介紹一下 Intel® Galileo Gen 2 這片板子


Intel® Galileo 第 2 代開發板是以 Intel® Quark SoC X1000 應用處理器 (32 位元的 Intel® Pentium® 品牌系統單晶片) 為基礎的微控制器主機板。這是首款以 Intel® 架構為基礎,具備軟硬體腳位相容特性,且針對 Arduino Uno 設計擴充板的主機板。

Intel Galileo 第 2 代主機板和 Arduino 軟體開發環境的軟體也具有相容性,十分容易使用及導入。除 Arduino 硬體和軟體相容性以外,Intel Galileo 第 2 代主機板還配備數個電腦業界標準 I/O 連接埠和功能,可拓展其原生用途及功能,超越 Arduino 擴充板價值鏈體系的界限。主機板標準配備為一個全尺寸 mini-PCI Express* 插槽、100 Mb 乙太網路連接埠、Micro-SD 插槽、6 支針腳 3.3V USB TTL UART 接頭、USB 主控端連接埠、USB 用戶端連接埠,以及 8 Mbyte NOR Flash*。

這是一款由正版 Intel® 處理器與 SoC 的周邊原生 I/O 功能所結合而成,同時適合製造商社群與學生使用的全功能產品。專業開發人員若想要尋找簡單且符合成本效益的開發環境,用於替代較為複雜的 Intel® Atom™ 處理器與 Intel® Core™ 處理器設計,則本產品也是理想的選擇。

簡單來說就是 Arduino uno 的升級版,除了原本的功能以外還多了網路、作業系統等功能

不過也要注意一下哦!這片板子並不是完全相容於 uno 的板子

有些在 Arduino Uno 的板子上能跑的程式碼到了 Intel Galileo Gen2 上不見得能能執行

可能原因感覺是因為GPIO的傳輸速度不一樣 ( 看起來是這樣





現在就讓我們開始使用它吧!

燒錄作業系統映像檔


其燒錄方法與其他開發板無異,我燒入的作業系統映像檔是由 Intel 為 IoT 所開發的原始 yocto

連結

你也可以選擇有包其他不一樣東西的 yocto

連結

下載下來解壓縮後就可以透過 Win32 Disk Imager 之類的軟體把映像檔燒入記憶卡之中這步驟
就結束囉!




環境建設

下載並安裝特定版本(太舊不行)的 Arduino IDE 與驅動程式,我是僅安裝 Arduino IDE 與 i586 
core 後就可使用。

Arduino IDE 1.6.9 + 安裝 i586 core 步驟


  1. Arduino IDE
  2. 驅動程式


只有比較新版的 IDE 才有此擴充功能
選擇我們的板子與序列埠後就可以進行範例程式測試
燒錄成功後則可透過板子上的 LED 看到結果

連結上作業系統

把記憶卡插入板子並接上電源、網路線後我們有兩個方法連接到作業系統裡

可以參考這篇文章


  •  UART 介面

使用這種方法需要有一片 FTDI 的板子使電腦能與板子上的系統透過 UART 溝通,如果臨時
沒有 FTDI 板子或是不想買時可以用另一種方法




  • 網路

只要有了板子的 IP 就可以透過遠端連線(ssh)的方式來控制我們的作業系統,除了固定 IP、查
詢網路基地台 (AP) 狀態取得裝置 IP 以外我們還可以透過 Arduino IDE 來取得 IP 與取得新的
IP 需要註冊時 ex.學校網路 可以設定 IP 與 MAC 碼

作業系統與 Arduino IDE 有特別做出一個溝通橋樑使他們可以溝通,這裡使用的是 system() 指
令其意思等於在裡面的作業系統下 comment line,有了這個方法即可以把 Arduino 裡的資料傳
給系統再做更進一步的應用或是取得作業系統上的資料

取得IP

取得系統上的 IP 並傳到Serial介面 (ifconfig > /dev/ttyGS0)

設定 IP 、 MAC 碼

此方法在不想額外申請或是想用舊有的 IP 時使用,其實就是把板子上的參數設定的與你想替代的電腦或是其他裝置一樣,不過不可以同時兩個裝置都連接上網路哦!

僅供參考
依照需求重設系統的網卡參數

結果

備註:
enp0s20f6 為系統辨識的網卡名稱,照打即可
hw ether 為實體位置(MAC)
netmask 為網路遮罩
gw 為預設閘道
兩個網卡參數一樣的裝置不要同時連上網路


到這裡就可以使用IP連進你的系統囉

不管你是用ssh還是putty等方式,都要記得要在同個網域






2016年6月2日 星期四

ESP8266


由於可以搜尋到的資料很多,就不另外製作一篇範例了,這裡有稍微整理好一些資料供有需要的人參考。


接線圖、AT指令、可以參考這個網頁

Arduino WIFI(ESP8266) 初次上手應用

或官方的文件

ESP8266 WiFi Module Quick Start Guide


如果要在 Arduino 上使用 ESP8266的話需另外安裝開發套件

Arduino IDE 裡安裝 ESP8266 Arduino 開發板套件

其中要特別注意 IDE 的版本 至少需要版本號 1.6.5 以上


HTTP GET 方法

Arduino WIFI(ESP8266) 入門應用<網頁控制LED>   

2016年5月5日 星期四

WF8266R 結合 Rapiro (Arduino) 透過 ScaratchX 操控 機器人



近期大學實驗室有意在暑假期間至附近校園進行教學

使用的教具暫定為 Rapiro 機器人 , 已經設置好的話則不需要額外的接線就可以使用 Scaratch

拼圖編輯程式進行線上編輯程式並立即透過機器人檢視結果, 也許能使學齡較小的學童引起對

程式、科學學習的興趣

目的  


 Rapiro 與 WF8266R 間建立連結 (UART) 


設置過程



Rapiro 機器人原本連接到 Raspberry pi 板上的 6 Pin 排線


把原本接到 pi 版上的排線改接到8266

接線圖

接好線路確認無誤後就可以開機進行測試

如果 8266 是第一次使用需要做一些設定

以下為官網的教導步驟



連上線後我們就可以透過 ScratchX : WF8266R.js Extension 來進行編程控制囉!

產品教程影片 ( 官網



ScratchX : WF8266R.js Extension : http://goo.gl/g6mdSb


範例拼塊擷取圖

開發版位置需為 8266 取得的 IP , 不要照著打

沒有意外的話 按下旗子後 就可以用鍵盤控制 8266 透過 UART 送出一些 Rapiro "看得懂"的指令來操控它

如果按了沒有反應可以檢查接線或是重新開啟專案一次試試看

以下附上測試專案 , 要記得打上自己 8266 的 IP 且留意你使用的電腦與連線的 AP 網路是通的






2015年2月2日 星期一

Rapiro (1) 基本介紹與 Arduino 燒錄範例


最近老師進了一批 Rapiro 機器人準備當做課程上的教材

這隻機器人組裝方便 可以自己編譯程式 外觀也頗可愛的

其組裝過程官網有詳細圖解

甚至還提供了機器人的 3D 模型圖與電路圖

取自官方相簿


而他的身體上有 12 顆伺服馬達 (關節

各馬達位置剖面圖 取自


以一個人形機器人來說其實不多

能做的動作也會受到先天上的限制

其控制方式是使用 Arduino 來當作他的主控板


Arduino 主控版

他的頭部有保留位置讓我們可以加裝 Raspberry pi 或是其他類似的微電腦讓機器人本身可以有更多的應用


像是替它裝上耳朵與眼睛 取自

機器人組裝完成後需要安裝他們的驅動才能燒錄他們的範例程式 這些在組裝步驟的第 204 點有提到

組裝完就可以來玩一下他們提供的範例程式囉!

另外提醒一下如果 Tx Rx 腳位有用到的話 ( 有接 pi 板之類的

燒錄前要記得關電或是先拔掉佔用的線哦!

腳位被佔住是無法完成燒錄的大家應該都知道

基本上範例程式我們只會動到機器人的歸零(細調)值 還有 更改原本範例寫好的動作

每台機器人幾乎都會有各自的一組歸零值來調整各自的一些零件誤差

各馬達細調值


而寫好的動作分別有 0~9 總計 10 個動作  官方範例影片

也可以去修改裡面的角度完成一個自己設計的動作




燒錄完成後可以透過 IDE 裡的 Serial Monitor 去對 Arduino 下指令觀看結果

傳送指令

收到預設的指令機器人就會做出相對應的動作囉

除了使用他們寫好的一串動作 也可以用單步的指令來熟悉一下馬達或是 RGB LED 的控制


傳送門在此




2015年1月20日 星期二

Google App Engine X Python X Ubuntu 第二篇 使用 webapp2 架構


繼上次的 Hello World 後我們今天來使用 webapp2 架構來寫我們的前端程式

需要在 app.yaml 檔裡加上這幾行  官方文章傳送門


libraries:
- name: webapp2
  version: latest


加入後的 app.yaml 檔案


接下來雲端程式就能看得懂我們的網頁標籤了

這裡我用一個簡單的輸入變數然後印出迴圈值來演示給大家看


py檔的內容

結果圖


其中比較需要注意的就是 Python 的縮排格式與上引號的使用方式

這種方法是 Html 語法跟 Python 寫在一起的方式

 Html 程式碼一多就會顯得程式碼雜亂

還有另外一種方式是使用模板( Template )的方式可以讓兩種程式碼分開放方便管理與維護

會在後面一點教到

而這禮拜老師出的作業是可輸入變數的乘法表

只需要利用上面的例題動動腦就能做出來囉


結果圖


py檔程式範例

# -*- coding: utf-8 -*-
#create an N-by-M multiplication table

import webapp2

MAIN_PAGE_HTML = """\
<!DOCTYPE html>
<html>
  <body>
    <form action="/" method="post">
     <div> N<input name="N" rows="1" cols="20"/>
           M<input name="M" rows="1" cols="20"/>
            <input type="submit" value="create"> </div>
"""
class MainPage(webapp2.RequestHandler):

    def get(self):
        self.response.write(MAIN_PAGE_HTML)
        self.response.write("</form></html>")

    def post(self):
        self.response.write(MAIN_PAGE_HTML)
        N = int(self.request.get('N'))
        M = int(self.request.get('M'))
        self.response.write("<br><table><tr>")
        for i in range(1,N+1):
            self.response.write("<td>")
            for j in range(1,M+1):
                self.response.write('%s x %s = %2s '%(i,j,j*i)+"<br>")
            self.response.write("</td>")
        self.response.write("</tr></table></form></html>")

application = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)
有問題歡迎提問