/*******************************************
* ESPをAPでサーバにする
* ESP_Server :: LCDつないでないときは動きがバグるので全部コメントアウトした
* 電源いれたらスマホのwifiをAT_THINKER????につないでtcp/udp test toolを起動
*******************************************/
#include "mcc_generated_files/mcc.h"
#include "i2c_lib2.h"
#include "lcd_lib2.h"
uint8_t StMsg[] = "Start Wi-Fi Test";
uint8_t Buffer[128], i, rcv;
/* WiFi設定用コマンドデータ */
const uint8_t Mode[] = "AT+CWMODE=2\r\n";
const uint8_t Mult[] = "AT+CIPMUX=1\r\n";
const uint8_t Serv[] = "AT+CIPSERVER=1,9000\r\n";
const uint8_t Send[] = "AT+CIPSEND=0,10\r\n";
const uint8_t Data[] = "AAAAAAAA\r\n";
/* 関数プロトタイプ */
void SendCmd(const uint8_t *cmd);
void Receive(uint8_t *buf);
/******* メイン関数 *****************/
void main(void)
{
SYSTEM_Initialize(); // 初期化
INTERRUPT_GlobalInterruptEnable();// 割込み許可
INTERRUPT_PeripheralInterruptEnable();
//lcd_init(); // LCD初期化
//lcd_clear(); // LCD全消去
//lcd_str(StMsg); // 初期メッセージ
__delay_ms(5000); // decomment above 3 lines add this line by me
SendCmd(Mode); // ソフトAPモード
SendCmd(Mult); // マルチ接続モード
SendCmd(Serv); // サーバモード
while (1)
{
if(EUSART_is_rx_ready() != 0){// 受信あり
Receive(Buffer); // \nまで受信
//lcd_cmd(0x80); // LCD1行目指定
//for(i=0; i<32; i++){ // 32文字出力
// lcd_data(Buffer[i]);// 1文字表示出力
// if(i == 15) // 16文字目か
// lcd_cmd(0xC0); // LCD2行目指定
//}
SendCmd(Send); // 送信
SendCmd(Buffer); // 10文字(12345678+\r+\nをおくってみた)
}
//if(S1_GetValue() == 0){ // S1オンの場合
SendCmd(Send); // 送信
SendCmd(Data); // AAAAAの送信
//}
__delay_ms(5000);
}
}
/********************************
* WiFiコマンド送信関数
* 遅延挿入後戻る
********************************/
void SendCmd(const uint8_t *cmd){
while(*cmd != 0) // 0まで繰り返し
EUSART_Write(*cmd++); // 1バイト送信
__delay_ms(1000); // 1秒待ち
}
/***********************************
* WiFI受信関数 割り込み処理で受信
***********************************/
void Receive(uint8_t *buf){
uint8_t rcv, cnt;
cnt = 0; // カウンタリセット
while(rcv != '\n'){ // \nまで繰り返し
if(EUSART_is_rx_ready() != 0){// 受信あり
rcv = EUSART_Read();// データ取り出し
if((rcv != '\n')&&(rcv != '\r')){
*buf = rcv; // バッファに文字保存
buf++; // ポインタ更新
cnt++; // カウンタ更新
}
}
}
while(cnt < 32){ // 32文字まで
*buf = 0x20; // スペース追加
cnt++; // カウンタ更新
buf++; // ポインタ更新
}
}
/*******************************************
* ESPをアクセスポイントにする
* ESP_AP 簡単dhcp機能つき 端末は192.168.4.1固定
*******************************************/
#include "mcc_generated_files/mcc.h"
/* WiFi設定用コマンドデータ */
const uint8_t Mode[] = "AT+CWMODE=2\r\n";
const uint8_t Mult[] = "AT+CIPMUX=1\r\n";
const uint8_t Serv[] = "AT+CIPSERVER=1\r\n";
/* 関数プロトタイプ */
void SendCmd(const uint8_t *cmd);
/******* メイン関数 *****************/
void main(void)
{
SYSTEM_Initialize();
__delay_ms(5000);
__delay_ms(5000);
SendCmd(Mode); // APモード
SendCmd(Mult); // マルチ接続モード
SendCmd(Serv); // サーバモード
while (1)
{ }
}
/********************************
* WiFiコマンド送信関数
* 遅延挿入後戻る
********************************/
void SendCmd(const uint8_t *cmd){
while(*cmd != 0)
EUSART_Write(*cmd++);
__delay_ms(1000);
}
https://analogicintelligence.blogspot.com/2019/09/wroom-02atweb-server.html
これはさらにWebserverをつくっているが。。。。