AE-ESP-WROOM-02をWifiに接続します。

 

その前に、前回の記事、失敗でした。ソフトでUSARTを組んだのですが9600bpsが限界だったようです。ESP-WROOM-02の初期設定は115200bpsが初期設定なのでこのスピードにしてやらないと通信出来ません。

それと、前回も書きましたがESP-WROOM-02は5Vを掛けると壊れます。

 

そこで、

PIC16F1827をレベル変換器にする

 

単純にレベル変換するだけなら、入力ポートの状態を出力してやれば良いだけ(の筈)。

 

main.c

/*
 * File:   main.c
 * Author:
 *
 * Created on 2017/11/02, 15:54
 */

#include <stdio.h>
#include <stdlib.h>

// PIC16F1827 Configuration Bit Settings

// 'C' source line config statements

#include <xc.h>

#define _XTAL_FREQ 8000000 // delay用(クロック8MHzで動作時)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG1
#pragma config FOSC = INTOSC       // Oscillator Selection (ECH, External Clock, High Power Mode (4-32 MHz): device clock supplied to CLKIN pin)
#pragma config WDTE = ON        // Watchdog Timer Enable (WDT enabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = ON       // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF   // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = ON        // Internal/External Switchover (Internal/External Switchover mode is enabled)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)

// CONFIG2
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = ON       // PLL Enable (4x PLL enabled)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = ON         // Low-Voltage Programming Enable (Low-voltage programming enabled)


/*
 *
 */
void main(void) {
    OSCCON = 0b01110010; // 内部クロックは8MHzとする
    ANSELA = 0b00000000; //汎用ポート
    ANSELB = 0b00000000; //汎用ポート
    TRISA = 0b00000101;  // 1で入力 0で出力 RA1-RA7出力に設定
    TRISB = 0b00000000;  // RB0-RB7を出力に設定
    PORTA = 0b00001010 ; // RA出力ピンの初期化(全てLOWにする)
    PORTB = 0b00000000 ; // RB出力ピンの初期化(全てLOWにする)

    RA1 = 1;
    RA3 = 1;
    while(1)
    {
        if(RA0==0)
        {
            RA3=0;
        } else {
            RA3=1;
        }
        if(RA2==0)
        {
            RA1=0;
        } else {
            RA1=1;
        }
    }
}

 

 

RA0の状態をRA3に、RA2の状態をRA1に出力しています。

内部クロックは8MHzで動いているのでこれで大丈夫な筈。

 

PIC18F14K50のUSARTを115200bpsにする

 

#define _XTAL_FREQ 48000000 追加

InitializeUSARTの

        //SPBRG = 129; コメントアウト
        SPBRGH = 0x00; 追加
        SPBRG = 103;    //48MHz 115200baud 追加

 

PIC18F14K50はPICkit3でビルドして、hexファイルをUSB Bootloaderで流し込むと便利です。

 

ESP-WROOM-02をWifi接続する

参考ページ:

DEVICE PLUS

はじめての電子工作超入門

「第33回 Arduinoマイコンとしても使える小型WifiモジュールESP-WROOM-02を使ってみる(Wifi通信テスト編)」

http://deviceplus.jp/hobby/entry0033/

 

回路図

 

配線図

Arduino IDEからシリアルモニタを開いてESP-WROOM-02をリセットしたところ

 

 

文字化けが多いです 泣

 

 

ESP-WROOM-02を9600pbsにする

 

ユーザーインターフェースは人より早く動く必要はないので9600bpsにします。

 

AT+UART_DEF=9600,8,1,0,0 エンター

 

文字化けしてErrorになった場合はOKが出るまで繰り返す。

 

9600bpsにしてATコマンドを送ったところです。

PIC18F14K50の設定を戻してないのですが何故か動きます。笑

 

Wifiに接続する

 

AT+CWLAP エンター

 

とすると、周辺のアクセスポイントを表示してくれます。

 

AT+CWJAP="SSID","PASSWORD" エンター

 

WIFI CONNECTED

WIFI GOT IP

 

が出れば成功です。

 

 

MENUに戻る