/* 自定義代碼塊樣式 */

2019年3月29日 星期五

ESP32 讀取 SHT20 溫濕度感測器

markdown


之前在使用ESP8266讀取SHT20時就遇到過,使用網路上的 Library時無法正確讀取溫溼度的問題,但是那時沒時間debug,就一個個的download下來,使用try and error的精神,總算用SHT21的可以使用,就一直沒再去看問題啦

這次使用ESP32讀取時,因沒有紀錄之前哪些程式庫可以使用,就只好重來一次啦,但這次就不打算亂槍打鳥,好好來看一下問題出在哪兒吧

這次使用[DFRobot SHT20](https://github.com/DFRobot/DFRobot_SHT20)的程式庫,照著example code做,得到的結果都是998的數值

Errors 998 if not sensor is detected. Error 999 if CRC is bad.

確認了好幾次,線路明明就有接好呀,怎麼會沒偵測到呢? 最後拿出了LA鈎訊號,一直覺得讀取間隔時間太快了,把間隔拉長後就竟然讀取到溫溼度的數值了

在DFRobot\_SHT20.c的 DFRobot\_SHT20::readValue(byte cmd)程式中,調整 DELAY\_INTERVAL的大小,即為調整間隔時間,我是直接將它延長兩倍時間就可以正確讀取到了
for(counter = 0, toRead = 0 ; counter < MAX_COUNTER && toRead != 3; counter++){
    delay(DELAY_INTERVAL);
    toRead = i2cPort->
    requestFrom(SLAVE_ADDRESS, 3);
}

DELAY\_INTERVAL的定義是在 DFRobot\_SHT20.h 中,所以就修改這個數值,就解決讀不到溫溼度的問題啦

2019年3月21日 星期四

RF 2.4G 無線鍵盤

為了給樹莓派一個好攜帶的鍵盤,在網路上尋找好久,一直沒找到滿意的產品,看到喜歡的價格就不便宜,便宜的外觀又不喜歡,最後終於被我找到一個價格可以接受,外觀也喜歡的產品

打開來看看本尊吧,比樹莓派再大一些些而已,一個USB接收器,一條Micro USB充電線



開關與USB充電都位在頂部,USB接收器先插在我的NB上,打開鍵盤電源開關看看

鍵盤右上方出現白色電源符號,指示鍵盤在開機狀態

鍵盤按鈕還有白色背光會透出,讓在比較昏暗處也可以清楚的看到按鍵功能
關掉電燈,讓背光可以看得更清楚些

輸入的功能,還少了一樣,滑鼠呢

來,我們翻面看看,『Touch Panel』,是觸控板啦
上面有三個圖示,拉近點看看,

一個手指點擊,代表滑鼠左鍵
二個手指點擊,代表滑鼠右鍵
二個手指滑動,可以捲動

滑鼠基本該有的功能都有啦
那操作Touch Panel時,鍵盤不會誤觸嗎?

這產品有內建G-Sensor,會判斷是在哪一面進行操作,會自動把朝下那面的功能取消,所以不用擔心會誤觸

更厲害的是,在操作Touch Panel它會知道上下左右的方向,自動修正方向,而不用去搞清楚說現在的上方在哪裡,下方在哪裡,看圖比較清楚

 不管方向怎麼轉,紅燈都會維持在右上方的位置


還沒完呀,Touch Panel面還有另一項功能,更換LED顏色

四個手指上去,透過RGB三個LED做顏色的混色組合,它就會慢慢變色給你看呢





買到一個顏值高的小鍵盤,除了給樹莓派使用外,偶爾還拿來給客廳的機上盒使用,瀏覽網頁,打字都可以比一般遙控器好操作呢,最後再來看看在手上操作的大小吧









2019年3月20日 星期三

ESP32 Homekit 開關 (SWITCH)

之前使用ESP8266製作Homekit裝置時,都須藉由RPi3當中繼,才能透過手機與Homekit裝置做控制
現在在ESP32上,裝置已經可以獨立運作,不再需要RPi3了

感謝網路上的許多神人們 younghyunjo , maximkulkin

開發ESP32的程式可以使用Arduio IDE的環境,官方網站有提供教學,或是到MAKERPRO也可以喔,不過本篇重點不在Arduino IDE的環境下做開發,就不再多做說明了

開發Homekit的程式,目前似乎都是在ESP-IDF或是ESP-OPEN-RTOS之下所開發的,所以就需要安裝相關的環境做開發,但是還是可以安裝Arduino的元件(Component),就可以混合使用Arduino的語法做開發囉

開始動手

Step 1 照著官方的步驟,安裝ESP-IDF的開發環境吧

Step 2 從Y大的GitHub下載 esp32-Homekit
$ git clone --recursive https://github.com/younghyunjo/esp32-homekit.git

Step 3 修改 examples/switch/main/main.c 裡面WiFi的SSID與WiFi密碼
#define EXAMPLE_ESP_WIFI_SSID "myssid"
#define EXAMPLE_ESP_WIFI_PASS "12345678"  

Step 4 編譯跟燒錄

以開關的範例示範
$ cd examples/switch
$ make
$ make flash

Step 5 配對
可以開啟支援Homekit的iPhone或iPad進行配對了,配對過程中會需要密碼,程式中預設的密碼為053-58-197,可以尋找程式中 hap_accessory_register 函數,自行修改配對密碼

選擇「沒有代碼或無法掃描」選項

可以看到「SWITCH」配件出現,點選它



我們是秉持DIY精神的,所以並沒有通過認證,直接強制加入就可以啦

輸入程式中的預設密碼,053-58-197


開始搜尋配件


找到後,在我們的「家庭」中就可已看到「SWICTH」了,我們可以將它重新命名,如「電燈開關」






直接在「SWITCH」上點擊,燈就會亮起啦 (ESP32 板子上的LED也會跟著亮起)


2017年3月24日 星期五

重新在SD卡上安裝Raspberry Pi

解決Win32DiskImager製作Raspberry Pi的SD卡時出現 Error 5, Lock problem的問題

開啟[命令提示字元]

於命令列下輸入 ‘diskpart’,便會出現另一個視窗並出現提示列  ‘DISKPART>’
在DISKPART視窗中輸入‘list disk’.

會出現類似於下圖的說明
Disk ###  Status         Size     Free     Dyn  Gpt ——–  ————-  ——-  ——-  —  — Disk 0    Online          465 GB      0 B Disk 1    Online         7580 MB  5723 MB DISKPART>

    我們8GB的SD卡目前是位於DISK 1,所以輸入
    select disk 1
    

    查看SD卡被切割成幾個區域
    list partition
    

    現在要刪除第一區
    select partition 1
    delete partition
    
    最後
    delete partition override
    exit
    
    完成

    取消Raspberry Pi WiFi進入休眠模式

    markdown
    若使用Respberry Pi 內建的WiFi來連結網路時,作業系統預設是開啟WiFi後,若太久沒有進行傳輸動作,WiFi會進入休眠模式,下面兩種方式可取消WiFi休眠模式

    第一種就是直接下指令關閉,但重開機後又會開啟休眠
    sudo iwconfig wlan0 power off
    
    第二種則是修改無線網路設定檔,直接關閉電源管理機制。
    sudo nano /etc/network/interfaces
    
    找到
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
    在下面加入一行指令
    wireless-power off
    

    2017年3月23日 星期四

    安裝 Mosquitto MQTT

    取得key後進行安裝
    sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
    sudo apt-key add mosquitto-repo.gpg.key
    cd /etc/apt/sources.list.d/
    sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
    sudo apt-get update
    sudo apt-get install mosquitto
    
    安裝三個 Mosquitto proper 會用到的程式庫
    mosquitto – the MQTT broker (or in other words, a server)
    mosquitto-clients – command line clients, very useful in debugging
    python-mosquitto – the Python language bindings
    sudo apt-get install mosquitto mosquitto-clients python-mosquitto 
    
    安裝完後mosquitto會立即執行,但還需要進行部分設定,所以先停止
    sudo /etc/init.d/mosquitto stop 
    
    開啟設定檔案
    sudo nano /etc/mosquitto/mosquitto.conf 
    
    修改找到 log_dest 列,將後面改為 topic,如下
    log_dest topic
    
    並再增加下面六個參數後存檔
    log_type error
    log_type warning
    log_type notice
    log_type information
    connection_messages true
    log_timestamp true 
    
    重新啟動mosquitto
    sudo /etc/init.d/mosquitto start 
    
    進行測試,開啟終端機,輸入下列指令
    mosquitto_sub -d -t hello/world 
    
    再開啟另一個終端機,輸入下列指令
    mosquitto_pub -d -t hello/world -m "Hello from Terminal 2!" 
    

    會在第一個開啟的終端機看到如上畫面

    會在第二個開啟的終端機看到如上畫面




    安裝HAP-NodeJS


    確定安裝完成 Node.js (安裝Nodejs)
    先安裝會用到的套件

    sudo apt-get install npm git-core libnss-mdns libavahi-compat-libdnssd-dev 
    

    安裝node module
    sudo npm install -g npm  sudo npm install -g node-gyp 
    

    下載HomeKit 模擬套件 HAP-NodeJS:
    git clone https://github.com/KhaosT/HAP-NodeJS.git  
    cd HAP-NodeJS  
    npm rebuild  
    sudo npm install node-persist  
    sudo npm install srp 
    
    安裝失敗,下載最近版本gcc
    sudo apt-get install gcc-4.8 g++-4.8
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50
    
    繼續安裝套件
    sudo npm install srp
    sudo npm install mdns --unsafe-perm
    sudo npm install debug
    sudo npm install ed25519 --unsafe-perm
    sudo npm install curve25519 --unsafe-perm
    
    再次確認套件是否安裝完整
    sudo npm install
    
    開始執行模擬器
    node Core.js
    
    可以列印debug訊息的語法
    DEBUG=* node Core.js
    

    按下Ctrl+C 退出模擬器

    成功執行的畫面

    定義Arduino Flash Partition

    在Arduino 的工程目錄中,增加一個 partitions.csv 文字檔案,內容範例如下 # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x5000, o...