發表文章

目前顯示的是 6月, 2018的文章

IoT|硬體 |樹莓派|實作|Homebridge 結合 MQTT Homebridge-server、Homebridge-config-ui-x、Homebridge-mqtt

圖片
安裝 Homebridge-server sudo npm -g --unsafe-perm install homebridge-server 安裝後設定 Config,設定好後重新 Homebridge nano /home/pi/.homebridge/config.json {   "bridge": {     "name": "控制訊號整合閘道器",     "username": "E8:4E:06:35:47:C6",     "port": 51826,     "pin": "123-45-678"   }, "platforms": [    {     "platform": "Server",     "port"    : 8080,     "name"    : "Homebridge Server",     "log"     : "/var/log/daemon.log",      "restart" : "sudo systemctl restart homebridge.service"   }  ] } 安裝 Homebridge-config-ui-x、Homebridge-mqtt(安裝前,先確認是否安裝 mosquitto server) sudo npm install -g homebridge-mqtt sudo npm install -g --unsafe-perm homebridge-config-ui-x 因已安裝 Homebridge-server 套件,固可採兩種方式設定 Config 方式一:檔案編輯 nano /home/pi/.homebridge/config.json {   

IoT|硬體 |樹莓派|實作|安裝樹莓派作業系統|採用 NOOBS

圖片
各種支援樹莓系統介紹  http://makerpro.cc/2015/03/how-to-select-your-os-for-raspberry-pi/ 安裝方式介紹 由於樹莓派有多種系統可以安裝,因此樹莓派基金會提供兩種安裝模式 *  NOOBS(New Out Of Box Software) 安裝     * 多系統開機,在一片SD卡上可以選擇不同的系統,但是容量大些比較合適。     * 因為要等待使用者選擇系統,所以若是遠端開機較慢。     * 一旦SD卡損壞時,可能會災情慘重。 * Raw Images  安裝     * 單一系統開機,一片SD卡安裝一種系統,更換SD卡作為更換系統。     * 容量小的SD卡比較合適安裝,SD卡損壞時,不會災情慘重。     * 適合備份系統儲存、複製或還原。 在此選擇 NOOBS 下載SD卡安裝軟體,直接將 .zip 解壓縮到SD卡。官方建議使用  the New Out Of Box Software (NOOBS),一方面可以多系統使用,另一方面不用擴展記憶空間,但是SD卡容量大些較好。 下載   NOOBS ,選擇完整版 將 下載好的 zip 檔案解壓縮進行壓縮,完成後放入已格式好的 SD 卡中,然後插入樹莓派的卡槽內 啟動樹莓派,選擇欲欲安裝的系統,在此之前確認網路已連線 然後系統開始自動安裝! [資源] 網站 1. NOOBS安裝(多系統開機)

IoT|硬體|感測器|CJMCU-7620 手勢控制

圖片
焊接圖 接線 3.3v VCC 一定要接 3.3v GND GND SDA A4 SCL A5 INT 2 Not connected 九種手勢及對應指令 Gesture Register Register Address If Yes if Not Up data==GES_UP_FLAG 0x43 Gesture detected No gesture detected Down data==GES_DOWN_FLAG 0x43 Gesture detected No gesture detected Left data==GES_LEFT_FLAG 0x43 Gesture detected No gesture detected Right data==GES_RIGHT_FLAG 0x43 Gesture detected No gesture detected Forward data==GES_FORWARD_FLAG 0x43 Gesture detected No gesture detected Backward data==GES_BACKWARD_FLAG 0x43 Gesture detected No gesture detected Clockwise data==GES_CLOCKWISE_FLAG 0x43 Gesture detected No gesture detected Count Clockwise data==GES_COUNT_CLOCKWISE_FLAG 0x43 Gesture detected No gesture detected Wave data==GES_WAVE_FLAG 0x44 Gesture detected No gesture detected paj7620_9gestures.ino /* * Copyright (c) 2015

IoT|硬體|設備|Arduino EEPROM 記憶儲存

介紹 電子抹除式可複寫唯讀記憶體(Electrically- Erasable Programmable Read-Only Memory) Arduino  板上的微控制器有 512 位元組 的  EEPROM  存儲器:當開發板關閉時(就像一個小型硬盤驅動器)開始記憶(即是保存這些數值)。 這個解決方案可以節省執行時間,因為每一個寫操作需要 3.3 毫秒; EEPROM 也有每個單位置 100.000 的寫週期的限 不同設備 EEPROM 有不同容量 Arduno Duemilanove 512b EEPROM storage Arduino Uno 1kb EEPROM storage Arduino Mega 4kb EEPROM storage 官方提供了一些 Examples,裡面有完整的程式碼 * EEPROM.update() * EEPROM library reference * EEPROM Clear - Fills the content of the EEPROM memory with 「 0 」 . (清理 EEPROM 裡面的數據。) * EEPROM Read – Reads values stored into EEPROM and prints them on Serial. (讀取 EEPROM ,並且發送它的值到電腦) * EEPROM Write – Stores values read from A0 into EEPROM. (保存模擬輸入引腳的值到 EEPROM ) * EEPROM Crc – Calculates the CRC of EEPROM contents as if it was an array. (將 EEPROM 內容里的 CRC 當作數組分析) * EEPROM Iteration – Programming examples on how to go through the EEPROM memory locations. (明白怎樣到達 EEPROM 存儲本地。) * EEPROM Put – Put values in EEPROM using variable

IoT|硬體|通訊|Arduino 使用 SoftwareSerial Library 與電腦通訊

圖片
介紹 UART Arduino  硬件在 0 pin  和 1 pin  口支持串行通信( 電腦通過  USB  連接) ,其實是使用了一個 ( 內置芯片 ) 稱為  UART  的芯片。這種硬件允許  ATmega  即使正在進行其他任務時也能通信,只要 serial 的 64 byte 緩存有其他的空間。 SoftwareSerial 使用  SoftwareSerial Library  可以在  Arduino  的任何數字引腳上進行通信,因此軟件端口數可以擴展,並且波特率可達 115200bps 。 有個叫 Mikal Hart 的傢伙編寫了 NewSoftSerial library ,這個庫改進了 SoftwareSerial Library ,優點更多,因此之後的版本都是基於這個庫的。這種其實是軟件模擬通信的,具有很多局限性。 範例程式:選擇不同 baud rate 與設備通訊 #include <SoftwareSerial.h> SoftwareSerial DLSerial(10, 11); // RX,TX int cammand; int baudChoose; void setup() {   Serial.begin(9600);   DLSerial.begin(9600);    } void loop() {   String s = "";   while (Serial.available()) {     char c = Serial.read();     if (c != '\n') {       s += c;     }     delay(5);    // 沒有延遲的話 UART 串口速度會跟不上Arduino的速度,會導致資料不完整   }   String value;   if (s != "") {     cammand = (s.substring(0, 2)).toInt();     value  = (s.substring(3, 22));     switch (c