2017年6月17日 星期六

在mac OSX下設定ESP32的發展環境

idf 環境, 原廠設定的說明文件: https://esp-idf.readthedocs.io/en/latest/get-started/index.html#setup-toolchain
有以下要修正與注意的地方:
  • 環境變數設定在 ~/.profile , 應為 ~/.bash_profile 才對
  • 原廠 esp32 dev board 使用 cp2102 晶片, 所以在 mac 上需安裝 CP2102 的 driver
  • make menuconfig 時 (在檔案 sdkconfig 裡面) 設定的通訊 port (CONFIG_ESPTOOLPY_PORT) 為 /dev/cu.SLAB_USBtoUAR
arduino 環境, 原廠設定的說明文件: https://github.com/espressif/arduino-esp32#instructions-for-mac , 如果重新啟動 arduino 後找不到 esp32, 要到 Preference 裡面去修改 Sketchbook location 的設定

2017年6月13日 星期二

[ESP32] arduino環境下的ADC test

經測試發現原本ESP3216CHADCWiFI啟動後, 只剩下GPIO 36393435 32336隻腳可以用,這6隻腳都是屬於ADC1的channel, esp-idf 環境尚未測試,所以規劃時可以將這6隻腳對應到原本 arduino 的A0~A5
測試程式如下

2017年6月4日 星期日

ESP32 使用 I2C LCD

ESP32 晶片原本有 2 組 I2C 介面, 它的 Arduino Core 預設支援一組I2C, IO21為SDA, IO22為SCL, 要注意的是:
  1. 須選用3.3V的LCD模組
  2. 因為 ESP32 使用 4 組 timer 去支援 16ch 的 PWM, 且須先使用 attach 將某個 ch 與 pin 連接, 因此沒有原生的 AnalogWrite(), 而是使用ledcAnalogWrite(), 導致某些版本的 I2CLCD 程式庫編譯時會發生錯誤, 因此須使用直接呼叫Wire程式庫的版本, 例如 https://github.com/esp8266/Basic/tree/master/libraries/LiquidCrystal

2017年5月30日 星期二

在ESP32使用mqtt publish與subscribe

要在ESP32上使用mqtt, 需先到 Sketch>Include Library>Manage 下載安裝 PubSubClient 程式庫, 以下為 ESP32 的程式

在RPi3上安裝mosquitto (mqtt broker)

以下設定以2017-04-10-raspbian-jessie版本為準
------ 安裝
sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients  

2017年5月8日 星期一

適用於ESP32 server應用的HttpRequestString類別



最近在測試ESP32他的SimepleWiFiServer範例直接使用WiFiServer類別建立server,ESP8266則直接提供WebServer類別,server.on()函數可以根據url後面的字串自動呼叫處理函數,這功能在ESP32目前尚無法使用因此撰寫了 HttpRequestString 類別用來支援參數分析只要將GET後面的字串帶入就可得到 Uri與參數的Name-Value該類別使用了 String 類別WString.hESP32提供的如果用於其他Core須自行修改例如 #include <String.h>

2017年4月19日 星期三

解決RPi3的WiFi設定為AP後子網路內的裝置無法互相連線的問題

想用RPi3打造智慧家庭的閘道器, 參考這篇 [Raspberry Pi 3] 多了WiFi,價格不變,輕鬆打造隨身無線基地台 , 把Wifi設定為AP後, 發現子網路內的裝置無法互聯, 修改方式很簡單, 只要在原文調整防火牆的 IP 偽裝設定這一段加一行iptables的設定就可以了, 修改後的設定步驟如下:
sudo iptables -F
sudo iptables -F -t nat
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o wlan0 -j ACCEPT