2018年2月27日 星期二

Origo 31A002 Twister Tower Fan 直立式風扇電子控制板拆解 (四)

Origo 31A002 Twister Tower Fan 直立式風扇電子控制板拆解 (四):

這個 Origo 31A002 Twister Tower Fan 直立式風扇已經在 2013年拆解了,因為沒有時間拆解,所以將電子控制板和遙控都保存了,由於要在 ESP8266 使用紅外線遙控功能,便將這電子控制板和遙控器(Remote Controller)拆解,將部分紅外線接收器用在 ESP8266 上。

Origo 31A002 Twister Tower Fan 直立式風扇電子控制板
Origo 31A002 Twister Tower Fan 的電子控制板尺寸120mm × 90 / 76mm × 1.6mm,單面 PCB 板(Single Side PCB),PCB 編號 31A002 31A005F VER 1.5,生產商是 CAN / ACL,估計 PCB 生產時間是 2006年19周,PCB 板上有一顆 PDIP-24 封裝的 IC 編號 ELAN(義隆)eFHP5842P(8-bit Microcontroller MCU EM78P5842)及環氧樹脂(Epoxy)封裝的 LCD 驅動 IC COB(Chip On Board) 模塊,LCD 驅動 IC 是 Holtek(合泰)的 HT1621(RAM Mapping 32x4 LCD Control for MCU),筆者最主要是拆卸紅外線接收器(IR Receiver Diode)TSOP38 封裝和配對的遙控器(Remote Controller)作為 ESP8266 實驗之用。
Origo 31A002 Twister Tower Fan 直立式風扇電子控制板正面
Origo 31A002 Twister Tower Fan 直立式風扇電子控制板背面
Origo 31A002 Twister Tower Fan 直立式風扇電子控制板的微處理器
Origo 31A002 Twister Tower Fan 直立式風扇電子控制板的LED板
產品 PCB 板主要零件(BOM):
Type
Brand
P/N
Qty
U1
ELAN
eFHP6842P
PDIP-24
U2
Holtek
HT1621PCB
1pc
TR3 ~ TR7 Standard 0.8 A Triacs
ST
Z00607
5pcs
Q1 TO92 NPN Transistor
?
S9013
1pc
Q2 TO92 PNP Transistor
?
S9015
1pc
Diode
?
Diode
6pcs
Capacitor
?
Capacitor
12pcs
Resistor
?
Resistor
23pcs
AR1 Varistor
CNR
07D471K
1pc
Buzzer
?
Buzzer
1pc
LED
?
LED
1pc
IR Receiver
?
IR Receiver
1pc
Fuse
?
Fuse
1pc

相關網址:
※ Origo 31A002 Twister Tower Fan 直立式風扇拆解 (一)
※ Origo 31A002 Twister Tower Fan 直立式風扇拆解 (二)
※ Origo 31A002 Twister Tower Fan 直立式風扇轉動台拆解 (三)

2018年 2月 27日 天氣報告
氣溫:20.7@ 19:30
相對濕度:百分之 68%
天氣:大致多雲

2018年2月26日 星期一

Canon DK100i USB 12位液晶顯示器計算機 - 拆解(一)

Canon DK100i USB 12位液晶顯示器計算機 - 拆解(一):

這台桌面計算機(Calculator)是 12位液晶顯示器計算機(12 Digit Desktop Tax and Business Calculator),品牌是日本佳能(Canon),型號是 DK100i,特別是這台桌面計算機可以連接電腦的 USB 接口,作為數字鍵盤的輸入。但 LCD 液晶顯示屏有漏液,已經看不清數字顯示,所以拆解(Teardown)。Canon DK100i 12位液晶顯示器計算機 PCB 板尺寸為 94mm × 80mm × 1.1mm,雙面 PCB 板(Double Side PCB),PCB 板編號是 08-200i*0 R&D-1,生產時間 2004年,生產廠家 CANON 代工。

Canon DK100i USB 12位液晶顯示器計算機
Canon DK100i USB 12位液晶顯示器計算機的正面
Canon DK100i USB 12位液晶顯示器計算機的背面
Canon DK100i USB 12位液晶顯示器計算機的側面
Canon DK100i USB 12位液晶顯示器計算機的側面
Canon DK100i USB 12位液晶顯示器計算機頂部的 USB 接口
Canon DK100i USB 12位液晶顯示器計算機內置 USB Type A ~ microUSB 連接線
拆除底殼的兩顆十字螺絲
兩顆十字螺絲
在機殼邊撬開倒扣
打開底面殼
PCB 板安裝在面殼下
USB microUSB 插座
數字 / 計算 按鍵尺寸為 13.85mm × 9.78mm × 4.72 mm,特別功能按鍵尺寸為 13.85mm × 5.65mm × 5.31 mm。

Canon DK100i USB 12位液晶顯示器計算機的按鍵正面
Canon DK100i USB 12位液晶顯示器計算機的按鍵背面
Canon DK100i USB 12位液晶顯示器計算機的特別功能數字按鍵
Canon DK100i USB 12位液晶顯示器計算機的按鍵
Canon DK100i USB 12位液晶顯示器計算機的按鍵 PCB Pad
Canon DK100i USB 12位液晶顯示器計算機的按鍵 Silicon Pad
品牌型號:佳能(Canon)USB 12位數小型桌面計算機(12 Digit Desktop Tax and Business Calculator)
型號:DK100i
螢幕:12位液晶顯示
功能:稅率計算及商務計算
鍵盤:29按鍵(電腦用鍵:ENTER,UP,DOWN,LEFT,RIGHT) 
接口: USB minUSB Type B 接口(內置 USB Type A ~ microUSB 連接線)
自動電源關閉: 7分鐘
電池:太陽能 + 3.0V × 1
顏色:黑色
機身設計:桌面
機身尺寸:103mm x 136mm x 34mm
重量:122g
生産地:中國(Made in China)
日期:2004年
參考售價:美元 $27.99

2018年 2月 26日 天氣報告
氣溫:16.9@ 21:10
相對濕度:百分之 77%
天氣:大致多雲

2018年2月20日 星期二

DIY - ESP8266:ESP-12F Interrupt 中斷測試(七十二)

DIY - ESP8266:ESP-12F Interrupt 中斷測試(七十二):

筆者是第一次測試 ESP8266 的中斷(Interrupt)功能,看看能否將來的製作會使用中斷,這次是使用 GPIO4 作測試, GPIO4 會連接到按鍵開關,當按鍵按下,便會產生中斷要求,停止現在執行的工作,跳至中斷程式執行完畢,便會回到執行中的工作,繼續執行。

ESP8266 ESP-12F Interrupt 中斷測試
ESP8266 ESP-12F 中斷(Interrupt)設定程式:
// Initialize all GPIOs
   gpio_init();

// Setup GPIO4
   PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);
// Disable internal pullup/pulldown
   PIN_PULLUP_DIS(PERIPHS_IO_MUX_GPIO4_U);

// Setup GPIO4 Interrupt
// Disable Interrupts by GPIO
   ETS_GPIO_INTR_DISABLE();

 // Attach interrupt handle when GPIO interrupts.
    ETS_GPIO_INTR_ATTACH(gpio_intr_handler, &Interrupt_count);
    gpio_register_set(GPIO_PIN_ADDR(4),
    GPIO_PIN_INT_TYPE_SET(GPIO_PIN_INTR_DISABLE)  |
    GPIO_PIN_PAD_DRIVER_SET(GPIO_PAD_DRIVER_DISABLE) |
    GPIO_PIN_SOURCE_SET(GPIO_AS_PIN_SOURCE));

// Clear GPIO status
   GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, BIT(4));

// Enable interrupt for his GPIO
   gpio_pin_intr_state_set(GPIO_ID_PIN(4), 2); // NEGEDGE
   ETS_GPIO_INTR_ENABLE();
 

ESP8266 ESP-12F 中斷(Interrupt)程式:
LOCAL void  gpio_intr_handler(int * dummy)
{
// Read GPIO
   uint32 gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);

// Check  GPIO4 Intereupt
    if (gpio_status & BIT(4))
    {
        // Disable interrupt for GPIO0
          gpio_pin_intr_state_set(GPIO_ID_PIN(4), GPIO_PIN_INTR_DISABLE);

       //Clear interrupt status for GPIO0
        GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status & BIT(4));

       // Display Interrupt Occurred
        at_port_print("GPIO4=0 (D2) Interrupt Occurred .....\r\n");
        os_delay_us(1000);

// Reactivate interrupts for GPIO0
   gpio_pin_intr_state_set(GPIO_ID_PIN(4), 2);
    }
}

volatile int Interrupt_count;
 

ESP8266 ESP-12F Interrupt 中斷試驗
ESP-12F Interrupt 中斷試驗進行中
2018年 2月 20日 天氣報告
氣溫:20.2@ 21:40
相對濕度:百分之 89%
天氣:多雲
 

2018年2月19日 星期一

DIY - ESP8266:ESP8266 Interrupt 中斷介紹(七十一)

DIY - ESP8266:ESP8266 Interrupt 中斷介紹(七十一):

在微處理器(CPU / MCU)的執行程式中,中斷(Interrupt)是非常有用的方法,中斷是可以導致微處理器或微控制器停止執行正在工作中的任務,並且跳至指定的中斷任務,完成中斷任務後,返回中斷之前的任務,繼續執行,不用浪費許多時間在訪問/輪詢(Polling)工作上。

微處理器(CPU / MCU)執行中斷程式
中斷可以分為外部觸發(Internal Interrupt)或內部觸發(External Interrupt),ESP8266 也是具有這兩種中斷方式。

ESP8266 I/O 的四種中斷:
  1. GPIO 中斷
  2. 計時器中斷
  3. 串口中斷
  4. SPI 中斷
ESP8266 外部觸發中斷方法:
  1. GPIO_PIN_INTR_POSEDGE = 1 //上升沿
  2. GPIO_PIN_INTR_NEGEDGE = 2 //下降沿
  3. GPIO_PIN_INTR_ANYEDGE = 3 //雙邊沿
  4. GPIO_PIN_INTR_LOLEVEL  = 4 //低電平
  5. GPIO_PIN_INTR_HILEVEL    = 5 //高電平
ESP8266 外部中斷的配置步驟:
  1. 選擇管腳,除了 GPIO16 引腳,其他引腳都可以使用中斷功能。 PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U,FUNC_GPIO2); GPIO0:PERIPHS_IO_MUX_GPIO0_U
    GPIO1:PERIPHS_IO_MUX_U0TXD_U
    GPIO2:PERIPHS_IO_MUX_GPIO2_U
    GPIO3:PERIPHS_IO_MUX_U0RXD_U
    GPIO4:PERIPHS_IO_MUX_GPIO4_U
    GPIO5:PERIPHS_IO_MUX_GPIO5_U
    GPIO6:PERIPHS_IO_MUX_SD_CLK_U
    GPIO7:PERIPHS_IO_MUX_SD_DATA0_U
    GPIO8:PERIPHS_IO_MUX_SD_DATA1_U
    GPIO9:PERIPHS_IO_MUX_SD_DATA2_U
    GPIO10:PERIPHS_IO_MUX_SD_DATA3_U
    GPIO11:PERIPHS_IO_MUX_SD_CMD_U
    GPIO12:PERIPHS_IO_MUX_MTDI_U
    GPIO13:PERIPHS_IO_MUX_MTCK_U
    GPIO14:PERIPHS_IO_MUX_MTMS_U
    GPIO15:PERIPHS_IO_MUX_MTDO_U
  2. 設置對應管腳為輸入模式
    GPIO_DIS_OUTPUT(GPIO_ID_PIN(2));
  3. 設置對應中斷的觸發方式 觸發方式有5種
    gpio_pin_intr_state_set(GPIO_ID_PIN(2),GPIO_PIN_INTR_NEGEDGE); GPIO_PIN_INTR_POSEDGE = 1 //上升沿
    GPIO_PIN_INTR_NEGEDGE = 2 //下降沿
    GPIO_PIN_INTR_ANYEDGE = 3 //雙邊沿
    GPIO_PIN_INTR_LOLEVEL = 4 //低電平
    GPIO_PIN_INTR_HILEVEL = 5 //高電平
  4. 設置中斷的回呼函數
    ETS_GPIO_INTR_ATTACH(ext_interrupt_callback,NULL); //設置中斷回呼函數 
  5. 開啟中斷
    ETS_GPIO_INTR_ENABLE(); //開啟gpio中斷
  6. Callback 函數的編寫
ESP8266 中斷(Interrupt)設定程式:
void ICACHE_FLASH_ATTR
GPIO_Input_Inter(void)
{
  // GPIO 功能定義
   PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);
   PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U, FUNC_GPIO5                         

  // Disable 輸出功能
   GPIO_DIS_OUTPUT(FUNC_GPIO5);
   GPIO_DIS_OUTPUT(FUNC_GPIO4);

 //GPIO5 中斷配置
  ETS_GPIO_INTR_DISABLE();                 //中斷失能
  ETS_GPIO_INTR_ATTACH(&GPIO_ISR_Handler, NULL );     //註冊中斷函數

 //設置 GPIO5 中斷方式
  gpio_pin_intr_state_set( GPIO_ID_PIN(5), GPIO_PIN_INTR_ANYEDGE );
 // 清除該引腳的GPIO中斷標誌       
 GPIO_REG_WRITE( GPIO_STATUS_W1TC_ADDRESS, BIT(5)); 

 ETS_GPIO_INTR_ENABLE();                      //中斷使能

ETS_GPIO_INTR_DISABLE();
ETS_GPIO_INTR_ATTACH(&GPIO_ISR_Handler, NULL );  //註冊中斷函數

//設置 GPIO4 中斷方式
gpio_pin_intr_state_set( GPIO_ID_PIN(4), GPIO_PIN_INTR_ANYEDGE );
GPIO_REG_WRITE( GPIO_STATUS_W1TC_ADDRESS,  BIT(4));
ETS_GPIO_INTR_ENABLE();

 ETS_GPIO_INTR_DISABLE();
 ETS_GPIO_INTR_ATTACH(&GPIO_ISR_Handler, NULL );  //註冊中斷函數  TTL1

PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO5_U);        //使能上拉
PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO4_U);

gpio_output_set(0,0,0,BIT5);                  //使能輸入
            gpio_output_set(0,0,0,BIT4);
                        gpio_output_set(0,0,0,BIT14);
                        gpio_output_set(0,0,0,BIT13);

                        gpio_output_set(0,0,0,BIT12);
}

ESP8266 中斷(Interrupt)執行程式:
void GPIO_ISR_Handler(void)
{
 u32 pin_status=0;
 // 讀取 GPIO 中斷狀態可以判斷是那個埠的中斷
 pin_status = GPIO_REG_READ( GPIO_STATUS_ADDRESS );     
 ETS_GPIO_INTR_DISABLE();    //關閉 GPIO 中斷
                     
 if ( pin_status&BIT(5) )   //GPIO5 的中斷
      {
          os_printf("GPIO5 觸發中斷\r\n");
               }

 // 清除 GPIO 中斷標誌
GPIO_REG_WRITE( GPIO_STATUS_W1TC_ADDRESS,  pin_status );           ETS_GPIO_INTR_ENABLE();     // 開啟 GPIO 中斷
}

ESP8266 中斷函數:incude\ets_sys.h,include\eagle_soc.h

2018年 2月 19日 天氣報告
氣溫:20.3@ 23:10
相對濕度:百分之 83%
天氣:大致多雲