追蹤者

2021年6月14日 星期一

I2C ESP32

 [Basic I2C]

circuitcrush.com/i2c-tutorial/


[ESP32 default I2C]

ESP32 晶片原本有 2 組 I2C 介面, 它的 Arduino Core 預設支援一組I2C, IO21為SDA, IO22為SCL, 要注意的是:3.3V LCD

https://ghostyguo.pixnet.net/blog/post/314586685-esp32-%E4%BD%BF%E7%94%A8-i2c-lcd


[Single I2C]

https://randomnerdtutorials.com/esp32-i2c-communication-arduino-ide/



[ x2 I2C]

https://github.com/espressif/arduino-esp32/issues/977

Kutscher07 commented on 15 Feb 2018

/* I2C slave Address Scanner

for 5V bus
 * Connect a 4.7k resistor between SDA and Vcc
 * Connect a 4.7k resistor between SCL and Vcc
for 3.3V bus
 * Connect a 2.4k resistor between SDA and Vcc
 * Connect a 2.4k resistor between SCL and Vcc
Kutscher07: Modified for TTGO TQ board with builtin OLED
 */

#include <Wire.h>

#include <dummy.h>  //for esp32

#define SDA1 21
#define SCL1 22

#define SDA2 5
#define SCL2 4


TwoWire I2Cone = TwoWire(0);
TwoWire I2Ctwo = TwoWire(1);

void scan1(){
Serial.println("Scanning I2C Addresses Channel 1");
uint8_t cnt=0;
for(uint8_t i=0;i<128;i++){
  I2Cone.beginTransmission(i);
  uint8_t ec=I2Cone.endTransmission(true);
  if(ec==0){
    if(i<16)Serial.print('0');
    Serial.print(i,HEX);
    cnt++;
  }
  else Serial.print("..");
  Serial.print(' ');
  if ((i&0x0f)==0x0f)Serial.println();
  }
Serial.print("Scan Completed, ");
Serial.print(cnt);
Serial.println(" I2C Devices found.");

}
void scan2(){
Serial.println("Scanning I2C Addresses Channel 2");
uint8_t cnt=0;
for(uint8_t i=0;i<128;i++){
  I2Ctwo.beginTransmission(i);
  uint8_t ec=I2Ctwo.endTransmission(true);
  if(ec==0){
    if(i<16)Serial.print('0');
    Serial.print(i,HEX);
    cnt++;
  }
  else Serial.print("..");
  Serial.print(' ');
  if ((i&0x0f)==0x0f)Serial.println();
  }
Serial.print("Scan Completed, ");
Serial.print(cnt);
Serial.println(" I2C Devices found.");

}
void setup(){
Serial.begin(115200);
I2Cone.begin(SDA1,SCL1,400000); // SDA pin 21, SCL pin 22 TTGO TQ
I2Ctwo.begin(SDA2,SCL2,400000); // SDA pin 5, SCL pin 4 builtin OLED

}
void loop(){
scan1();
Serial.println();
delay(100);
scan2();
Serial.println();
delay(5000);

}

[多組I2C OLED ]

Good! There are codes  https://github.com/bitbank2/Multi_OLED  master.zip <download


[多組I2C OLED 討論]



[多組I2C OLED youtube]

tobozo tagada:  All displays have the same I2C address, the multiplexer takes care of addressing them separately and in sequence.


TCA9548ATCA9548A




[多組I2C Devices]




[任何引腳設置為具有I2C功能]
使用ESP32,您幾乎可以將任何引腳設置為具有I2C功能,您只需要在代碼中進行設置即可。

原文網址:https://kknews.cc/tech/m93j356.html

台灣汽車碰撞測試合格資訊

 有了 碰撞測試合格資訊,  比較敢買國產車了吧!

國外施行多年 台灣也漸漸有類似的汽車碰撞測試資訊了
[:D]


車輛安全資訊網 側方碰撞乘員保護
[:D]

車輛安全資訊網 前方碰撞乘員保護
[:D]








ESP8266, ESP32 免安裝

 整個過程 只要新增一個portable 目錄! 其他自動產生, 不用建.


Arduino 官網  https://www.arduino.cc/en/Guide/PortableIDE

1. download ZIP file  選右側 Zipfile> Justdownload

2. 
  • Open the extracted folder and in its root create a new directory called portable, alongside the others;


  • portable> 

    • portable>packages

    • portable>sketchbook>libraries

    • portable>staging

3. From now on all the sketches, libraries and additional cores will be installed in the portable folder. 

You can copy the whole main folder and bring it with you anywhere you want: it will retain all your preferences, libraries, cores and sketches.






 以下實作測試

[設定ESP32]
  
 Arduino>
     1 .  工具 >  開發板選 Arduino UNO
  2 .  工具 >  開發板選 開發板管理員> 搜尋 ESP32> 安裝 ESP32
  3 .  工具 >  開發板   >   ESP 32 Arduino >  DOIT  ESP32 DEVKIT V1
               此時 會自動產生 portable\packages\esp32  目錄

     4 .  工具 >  upload speed > 115200
     5 .  工具 >  choose com port   (此時無法點選 哪個PORT)


[偏好設定   

   Arduino>檔案>偏好設定

A.   sketchbooks
草稿碼簿的位置, 指向portable\packages\esp32  
例如  C:\arduino-1.8.15\portable\paackages\esp32

此時 Arduino>工具> 序列阜 "COM3" 可點選 (字體由灰變黑)

B.  額外的開發板管理員網址 

加上下列網址
https://dl.espressif.com/dl/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json

 
[簡易測試 

Arduino>檔案> 範例 > 01. Basics> Blink
upload
save file   此時 會自動產生 portable\packages\esp32  Blink目錄下 INO 檔案

[ 建立 PORTABLE ARDUINO 成功 ]
之後存檔 or 新增Sketch
便會存在portable\packages\esp32目錄下

也可嘗試 加上 ESP8266 portable , sketch 會存在portable\packages\esp8266
[設定ESP8266]

Step1 開啟 Arduino IDE。

Step2 點擊「檔案」>「偏好設定」,將底下那一行字貼到「Additional Boards Manager URLs:」右側欄位內

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Step3 點擊「確定」鈕,並關閉 Arduino IDE。

Step4 再次開啟 Arduino IDE。

Step5 安裝 ESP8266 工具,點擊「工具」>「板子」>「Boards Manager...」。
(出現「Boards Manager」對話窗)

Step6 捲動右側拉桿到下方,點擊「esp8266 by ESP8266 Community」那一欄,再點擊「Install」鈕。

Step7 點擊「關閉」鈕。


開啟範例程式

在自己編寫程式之前,我們先來執行內建的範例程式。這個程式會讓 NodeMCU 板載的 LED 閃爍。

Step1 開啟 Arduino IDE。

Step2 點擊「工具」>「板子」,選擇「NodeMCU 1.0 (ESP-12E Module)」。

Step3 點擊「序列埠」,選擇正確的埠。

Step4 點擊「檔案」>「範例」>「ESP8266」>「Blink」。

Step5 點擊「上傳」。


PS
產生 BIN檔案                                                                                                   Arduino>檔案>偏好設定>顯示詳細輸出: 編譯 , 上傳 打勾      , Arduino>草稿碼>匯出以編譯的二進位檔  ------>   2/27/2020 OK.                                                             但 Arduino>上傳, 卻出現"error: espcomm_open failed". <<< 不外接設備 重新上傳成功,                 如此不用每次都編譯再加上傳, 速度快很多了!