IMX6U-Game/_ref_report_text.txt

2919 lines
62 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

STM32 IMX6ULL
STM32 IMX6ULL
-
19-1 201908010117
2022.07.01
1
STM32 IMX6ULL
%
/ %
1/
/ / 30 / 30
2// / / 10 20 30
3/ / 10 / 10 20
4/ 11.1
5/ 11.2 / / 10 / 10
10 / / / 10
10 10 50 30 100
%
%
/
1/
2//
3/ / / /
4/ 11.1
5/ 11.2 / /
/ /
/ / /
/ / /
2
STM32 IMX6ULL
STM32 IMX6ULL
STM32F407 IMX6ULL
IMX6ULL WIFI QT
STM32WIFIIMX6ULL
3
STM32 IMX6ULL
SMART HOME SYSTEM BASED ON STM32 AND IMX6ULL
ABSTRACT
With the advent of the era of knowledge economy and network economy, intelligent housing
has become the fundamental guarantee for a new way of life in the new century. Today, with the
rapid development of social informatization, people's attention to housing is no longer limited to
the living area, surrounding environment, transportation and other aspects, but more attention is
paid to information services and housing safety. Therefore, smart home came into being, Smart
home system is one of the hot words in recent years. The implementation of smart home system
can greatly facilitate people's daily home life and ensure home safety. Under the background of
current smart home development upsurge, this system has designed a set of home system based
on stm32f407 development platform and imx6ull development platform, which can control the
opening and closing of curtains and small lights, detect room temperature and humidity and
smoke alarm functions through ultrasonic induction of human distance. At the same time, the user
can also control the home through the WiFi module through the imx6ull terminal, and query the
temperature and humidity in the room through the QT interface.
Key words: Smart home; STM32; WIFIIMX6ULLHuman body sensing module; Smoke
alarm
4
STM32 IMX6ULL
...................................................................................................................................... 5
1. ....................................................................................................................................... 7
1.1 .................................................................................................................. 7
1.1.1 ............................................................................................ 7
1.1.2 ............................................................................................ 8
1.2 ...................................................................................................... 9
1.2.1 ..................................................................................................... 9
1.2.2 ..................................................................................................... 9
1.3 ......................................................................................................11
2. ....................................................................................................................... 12
2.1 ................................................................................................................ 12
2.2 .................................................................................................... 13
2.2.1 STM32F407 ................................................................................. 13
2.2.2 IMX6ULL ............................................................................ 14
2.2.3 42 .......................................................................................... 14
2.2.4 HC-SRO4 ................................................................. 16
2.2.5 MQ2 ............................................................................. 17
2.2.6 ESP8266 RTL8189WIFI ..................................................... 18
2.2.7 DHT11 .................................................................................. 19
2.2.8 QT ................................................................................................. 20
2.3 ...................................................................................................... 21
3. ................................................................................................................... 22
3.1 ............................................................................................ 22
3.2 ..................................................................................................... 24
4. ..................................................................................................................... 25
4.1 ................................................................................................ 25
5
STM32 IMX6ULL
4.1.1 .................................................................................. 25
4.1.2 ...................................................................................... 27
4.1.3 .............................................................................................. 29
4.2 HC-SR04 ............................................................................................. 33
4.2.1 HC-SR04 .................................................................. 33
4.2.2 .......................................................................................... 34
4.3 MQ2 ................................................................................................ 37
4.3.1 MQ2 ............................................................................. 37
4.3.2 MQ2 ............................................................................................. 38
4.4 DHT11 ......................................................................................... 39
4.4.1 DHT11 .................................................................. 39
4.4.2 DHT11 .................................................................................. 40
4.5 QT .................................................................................................................... 42
4.5.1 ...................................................................................................... 42
4.5.2 socket .................................................................................................... 42
4.5.3 .............................................................................................. 43
4.5.4 Socet ......................................................................... 45
4.6 WIFI IMX6ULL......................................................................................... 46
5 .......................................................................................................................... 48
6. ............................................................................................................... 53
................................................................................................................................ 55
........................................................................................................................................ 56
A ..................................................................................................... 56
B ..................................................................................................... 60
6
STM32 IMX6ULL
1.
1.1
"+"
1.1.1
1984
20 80
7
STM32 IMX6ULL
1.1.2
1995
7000
0.3%
2016
97 30
9912 5.3%
2020 17.23%
4 1994--1999
2000--2005
2006--2010
2014
U-HOME
8
STM32 IMX6ULL
1.2
1.2.1
,
,
STM32 IMX6ULL
1.2.2
""
QT
,
,"":
,,
,,"",
9
STM32 IMX6ULL
""
1500ppm
10
STM32 IMX6ULL
1.3
STM32F407 IMX6ULL HCSR04
STM32F407
<50cm
PWM 42
LED
LED
DHT11 MQ2
MQ-2 ,
,
STM32F407
WIFI STM32 ESP8266,IMX6ULL
RTL8189 IMX6ULL QT
QT
11
STM32 IMX6ULL
2.
2.1
" STM32F407 IMX6ULL "
STM32F407 IMX6ULL
HCSR04 MQ2 ESP8266WIFI
1 STM32F407 PWM 42
2 HCSR04
3 MQ2 1500ppm
4 ESP8266 RTL8189 WIFI STM32F407 IMX6ULL
5 QT IMX6ULL
LED
6 DHT11
12
STM32 IMX6ULL
2.2
2.2.1 STM32F407
ALIENTEK STM32F4 STM32F407
STM32F407
121mm*160mm
ALIENTEK STM32
5
V2.2
ALIENTEK STM32F4
1
2
IO IO
B0B1 1 USB STM32
3 1M FLASH STM32F407ZGT6 1M
SRAM 16M FLASH
4
2.1 STM32F407
STM32F407 PWM
13
STM32 IMX6ULL
WIFI LCD
STM32F407
WIFI WIFI STM32F407
GPIO 144
2.2.2 IMX6ULL
imx6ull 2019 10 Linux
imx6ull EMMC BTB
6 CPU MCIMX6Y2CVM08AB 800MHz( 792MHz) BGA289
ddr3L NT5CC256M16EP-EK256MB
NAND FLASH MCIMX6Y2CVM08AB8GB EMMC
2.2 IMX6ULL
Linux QT
QT IMX6ULL
2.2.3 42
42
14
STM32 IMX6ULL
,
42 42
42mm 0.5NM;57
57mm 3.0NM
2.3 42
15
STM32 IMX6ULL
2.4 42
2.2.4 HC-SRO4
""
STM32 HC-SR04
HC-SR04
2cm-400cm 3mm
2.5 HC-SR04
16
STM32 IMX6ULL
(1) IO TRIG 10us
(2) 8 40khz
(3) IO ECHO
=(*(340M/S))/2;
2-1 HC-SR04
HC-SR04
DC 5V
15mA
40kHz
4m
2cm
15
10uS TTL
TTL
45*20*15mm
2.2.5 MQ2
MQ2
MQ2
17
STM32 IMX6ULL
2.6 MQ2
2.2.6 ESP8266 RTL8189WIFI
STM32
IMX6ULL QT
IMX6ULL
LINUX STM32
WIFI
2.7 ESP8266WIFI
18
STM32 IMX6ULL
ESP8266 Wi-Fi
Wi-Fi WIFI
socket
IMX6ULL WIFI
RTL8189WIFI
WIFI
WIFI
2.8 RTL8189WIFI
2.2.7 DHT11
DHT11 CJSLDHT11
NTC
8
CJSLDHT11
OTP
19
STM32 IMX6ULL
4
2.9 DHT11
2.2.8 QT
QT QT
20
STM32 IMX6ULL
2.10 QT
2.11 QT
2.3
21
STM32 IMX6ULL
3.
STM32
IMX6ULL QT
QT
3.1
32 32
STM32F407
15cm
STM32F407 14 PWM
DIR
3.1 42
22
STM32 IMX6ULL
MQ2
STM32F407
1500ppm STM32F407
3.2
WIFI
STM32F407
23
STM32 IMX6ULL
3.3 WIFI
3.2
IMX6ULL
Ubuntu Qt
Qt
Qt
Qt
3.4 Qt
IMX6ULL QT
24
STM32 IMX6ULL
4.
4.1
4.1.1
PWM
42
4.1
SB SASCSD B 03
14 CD 25 DA
SC SBSASD C 14
14 C 03 AB
25 AD ABCD
ABCD
25
STM32 IMX6ULL
4.2
STM32F407 IO 5V
4.3
1: NS
2:
26
STM32 IMX6ULL
1.8 200
3(HOLDING TORQUE):
4DETENT TORQUE) :
:
:( l <20>100%
5:
4.1.2
1
4-1
PUL+ PUL-
DIR+ DIR-
EN+ EN-
2
4-2
A+ A+ A- A-
B+ B+ B- B-
3
4-3
VCC"+" GND"-"
PUL-DIR-EN-
27
STM32 IMX6ULL
PUL+ DIR+
EN+ R
4.4
STM32F407 PWM
DIR
4.5
28
STM32 IMX6ULL
4.1.3
STM32F407 PWM
CCRX CCRX
CCRx
4.6 STM32 PWM
PWM
OCCM[2:0] 0-2 PWM
4.7 STM32 PWM
STM32F407
29
STM32 IMX6ULL
A7 14 1 PWM PA7
TIME14
arr
4.8 IO
IO PWM
PWM 1
TIM_OC1PreloadConfig TIM14 CCR1
4.9 PWM
STM32 84M 84M/84=1Mhz
1us 2ms
30
STM32 IMX6ULL
4.10 ARR
DIR
PE4IO
4.11 DIR
15cm a<15
TIM_SetCompare1(TIM14,led1pwmval), CCR TIM14
PWM
CCR 0
flag 1
4.11
31
STM32 IMX6ULL
15cm a>15
TIM_SetCompare1(TIM14,led1pwmval), CCR TIM14
PWM
CCR 0
flag 0
DIR DIR
4.11
STlink STM32F407
DIR
32
STM32 IMX6ULL
4.12
STM32
4.2 HC-SR04
4.2.1 HC-SR04
HC-SR04 2cm-400cm
3mm
IO TRIG 10us 8 40khz
IO ECHO
=( *
(340M/S))/2
33
STM32 IMX6ULL
4.13
10uS 8
40kHz
uS/58= uS/148==*340M/S/2
60ms
4.2.2
4.1.1
GPIO
34
STM32 IMX6ULL
4.14
IO IO
IO PB6 PB7 PB6
PB7
4.15
3
35
STM32 IMX6ULL
3 1000
4.16
HC-SR04
4.16 HC-SR04
HC-SR04
TRIG_Send 1 20us
36
STM32 IMX6ULL
0 20us
IO
GetHCSR04Timer (*(340M/S))/2
4.17 HC-SR04
4.3 MQ2
4.3.1 MQ2
MQ-2 , N
200~300 ,,,
,,,
,,
37
STM32 IMX6ULL
,,
4.18 MQ2
4.3.2 MQ2
MQ2
20 20
4.19 MQ2
38
STM32 IMX6ULL
Get_Adc
4.20 MQ2
PPM MQ2
4.4 DHT11
DHT11
DHT11
4.4.1 DHT11
1
CJSLDHT11
5.1k
2
DATA SDHT11 ,
40 :8bit +8bit +8bit
+8bit +8bit 0
39
STM32 IMX6ULL
3
8bit +8bi +8bit +8bit "8bit
8
4-4 DHT11
(DATA) 200us
CJSLDHT11 (),
CJSLDHT11 (DATA),
83<38>s 87<38>s
CJSLDHT11 (DATA) 40-bit
, 1
1byte +1byte +1byte
+1byte +1byte
bit7 0 1
(+++)
8
4.4.2 DHT11
DHT11_Read_Bit() bit
DHT11 8
40
STM32 IMX6ULL
4.21 DHT11
DHT11 40
temp
humi
4.22 DHT11
STM32F407
4.22
41
STM32 IMX6ULL
4.5 QT
QT QT
sokcet
QT soket
WIFI IMX6ULL QT
4.5.1
QT
Signal & Slot Qt Qt
Qt Signal
PushButton
clicked() ComboBox
CurrentIndexChanged() GUI
Slot C++
publicprivate protected
Qt connect
QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
4.5.2 socket
Socket
Socket Socket
socket
42
STM32 IMX6ULL
TCP/IP HTTP
Socket TCP/IP
IP IP
Socket
ServerSocket
0 65536 0 1024
(Socket) IP
()
4.23 socket
4.5.3
QT LED
QT Qt
43
STM32 IMX6ULL
4.24
slotlighton lighton
"1" STM32 STM32F407
LED
4.25
connect Qt
STM32F407 LED LED
4.26 LED
44
STM32 IMX6ULL
4.5.4 Socet
Qt
Qt
Socket
4.27 slotReadyRead
STM32F407
1
0 2 1 2
3 4
LED
Qt
45
STM32 IMX6ULL
4.28 Qt
4.6 WIFI IMX6ULL
WIFI WIFI
Socket
IMX6ULL WIFI
SDIO WIFI RTL8189, SDIO WIFI TF
SDIO WIFI TF
SDIO WIFI TF eMMC Nand Flash
4.29 Qt RTL8189
RTL8189 cd /home/root/driver/rtl8189/
46
STM32 IMX6ULL
4.30
/home/root/ wpa_supplicant.conf
WIFI WIFI WIFI
ssid psk
4.31 WIFI
" wlan0:CTRL-EVENT-CONNECTED-Connection to ec:88:8f:77:d6:da completed [id=0
id_str=]""wlan0: WPA: 4-Way Handshake failed
- pre-shared key may be incorrect"
4.32 WIFI
IP Socket
udhcpc -i wlan0
4.33 IP
47
STM32 IMX6ULL
5
5.1
LED
5.1
HC-SR04
48
STM32 IMX6ULL
5.2
DHT11
5.3
49
STM32 IMX6ULL
5.4
DIR
5.5
50
STM32 IMX6ULL
5.5
WIFI
Qt LED
Qt
51
STM32 IMX6ULL
5.5 led
5.5
52
STM32 IMX6ULL
6.
STM32F407 IMX6ULL
Qt
C++Qt
Qt Qt
Qt
IMX6ULL LINUX
WIFI
53
STM32 IMX6ULL
""
QT
Qt
""
54
STM32 IMX6ULL
[1] .[J].,2022(05):133-134.
[2] .[J].,2022(13):32-35.
[3],. STM32 [J].,2021(24):81-83.
[4],,. STM32 [J].
,2019(35):29-30.
[5] , , . STM32 [J].
,2017(05):104-107.
[6]. Qt [J].,2018,27(08):59-62.
[7] , . [J].
,2022(05):37-39.
55
STM32 IMX6ULL
A
A1 STM32F407
56
STM32 IMX6ULL
A2 IMX6ULL
A3 IMX6ULL
57
STM32 IMX6ULL
A4 HC-SR04
A5 MQ2
58
STM32 IMX6ULL
A6 DHT11
59
STM32 IMX6ULL
B
Main.c
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "usmart.h"
#include "sram.h"
#include "malloc.h"
#include "w25qxx.h"
#include "sdio_sdcard.h"
#include "ff.h"
#include "exfuns.h"
#include "fontupd.h"
#include "text.h"
#include "usmart.h"
#include "touch.h"
#include "usart3.h"
#include "common.h"
#include "stm32f4xx.h"
#include "beep.h"
#include "pwm.h"
#include "HCSR04.h"
#include "dht11.h"
#include "MQ2.h"
#include "math.h"
//ALIENTEK STM32F407 5
//ATK-RM04 WIFI -
//www.openedv.com
//http://eboard.taobao.com
//
// @ALIENTEK
void Initialization(){ //
BEEP_Init();
HCSR04Init();
DHT11_Init();
Adc_Init();
}
60
STM32 IMX6ULL
int main(void)
{
u8 key,fontok=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 2
delay_init(168); //
uart_init(115200); // 115200
usart3_init(115200); // 3 115200
Initialization();
LED_Init(); // LED
LCD_Init(); //LCD
KEY_Init(); //
W25QXX_Init(); // W25Q128
tp_dev.init(); //
usmart_dev.init(168); // USMART
my_mem_init(SRAMIN); //
my_mem_init(SRAMCCM); // CCM
exfuns_init(); // fatfs
f_mount(fs[0],"0:",1); // SD
f_mount(fs[1],"1:",1); // FLASH.
key=KEY_Scan(0);
if(key==KEY0_PRES) //
{
LCD_Clear(WHITE); //
TP_Adjust(); //
TP_Save_Adjdata();
LCD_Clear(WHITE); //
}
fontok=font_init(); // OK
if(fontok||key==KEY1_PRES)//
{
LCD_Clear(WHITE); //
POINT_COLOR=RED; //
LCD_ShowString(60,50,200,16,16,"ALIENTEK STM32");
while(SD_Init()) // SD
{
LCD_ShowString(60,70,200,16,16,"SD Card Failed!");
delay_ms(200);
LCD_Fill(60,70,200+60,70+16,WHITE);
delay_ms(200);
}
LCD_ShowString(60,70,200,16,16,"SD Card OK");
LCD_ShowString(60,90,200,16,16,"Font Updating...");
key=update_font(20,110,16,"0:");// SD
while(key)//
61
STM32 IMX6ULL
{
LCD_ShowString(60,110,200,16,16,"Font Update Failed!");
delay_ms(200);
LCD_Fill(20,110,200+20,110+16,WHITE);
delay_ms(200);
}
LCD_ShowString(60,110,200,16,16,"Font Update Success!");
delay_ms(1500);
LCD_Clear(WHITE);//
}
atk_8266_test(); // ATK_ESP8266
}
Common.c:
#include "common.h"
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//ALIENTEK STM32
//ATK-ESP8266 WIFI
//@ALIENTEK
//:www.openedv.com
//:2014/4/3
//V1.0
//
//Copyright(C) 2009-2019
//All rights reserved
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//:8086,.
const u8* portnum="8086";
//WIFI STA ,,,.
const u8* wifista_ssid="REDMIK20"; // SSID
const u8* wifista_encryption="wpawpa2_aes"; //wpa/wpa2 aes
const u8* wifista_password="12345678"; //
//WIFI AP ,,.
const u8* wifiap_ssid="ATK-ESP8266"; // SSID
const u8* wifiap_encryption="wpawpa2_aes"; //wpa/wpa2 aes
const u8* wifiap_password="12345678"; //
62
STM32 IMX6ULL
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//4
const u8 *ATK_ESP8266_CWMODE_TBL[3]={"STA ","AP ","AP&STA "};
//ATK-ESP8266,3 ,(ROUTER)
//4
const u8 *ATK_ESP8266_WORKMODE_TBL[3]={"TCP ","TCP "," UDP "};
//ATK-ESP8266,4
//5
const u8
*ATK_ESP8266_ECN_TBL[5]={"OPEN","WEP","WPA_PSK","WPA2_PSK","WPA_WAP2_PSK"};
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//usmart
// AT
//mode:0, USART3_RX_STA;
// 1, USART3_RX_STA;
void atk_8266_at_response(u8 mode)
{ //
if(USART3_RX_STA&0X8000)
{
USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//
printf("%s",USART3_RX_BUF); //
if(mode)USART3_RX_STA=0;
}
}
//ATK-ESP8266 ,
//str:
//:0,
// ,(str )
u8* atk_8266_check_cmd(u8 *str)
{
char *strx=0;
if(USART3_RX_STA&0X8000) //
{
USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//
strx=strstr((const char*)USART3_RX_BUF,(const char*)str);
}
return (u8*)strx;
}
// ATK-ESP8266
//cmd:
//ack:,,
//waittime:(:10ms)
63
STM32 IMX6ULL
//:0,()
// 1,
u8 atk_8266_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
u8 res=0;
USART3_RX_STA=0;
u3_printf("%s\r\n",cmd); //
if(ack&&waittime) //
{
while(--waittime) //
{
delay_ms(10);
if(USART3_RX_STA&0X8000)//
{
if(atk_8266_check_cmd(ack))
{
printf("ack:%s\r\n",(u8*)ack);
break;//
}
USART3_RX_STA=0;
}
}
if(waittime==0)res=1;
}
return res;
}
// ATK-ESP8266
//data:()
//ack:,,
//waittime:(:10ms)
//:0,()luojian
u8 atk_8266_send_data(u8 *data,u8 *ack,u16 waittime)
{
u8 res=0;
USART3_RX_STA=0;
u3_printf("%s",data); //
if(ack&&waittime) //
{
while(--waittime) //
{
delay_ms(10);
if(USART3_RX_STA&0X8000)//
{
if(atk_8266_check_cmd(ack))break;//
64
STM32 IMX6ULL
USART3_RX_STA=0;
}
}
if(waittime==0)res=1;
}
return res;
}
//ATK-ESP8266
//:0,;
// 1,
u8 atk_8266_quit_trans(void)
{
while((USART3->SR&0X40)==0); //
USART3->DR='+';
delay_ms(15); //(10ms)
while((USART3->SR&0X40)==0); //
USART3->DR='+';
delay_ms(15); //(10ms)
while((USART3->SR&0X40)==0); //
USART3->DR='+';
delay_ms(500); // 500ms
return atk_8266_send_cmd("AT","OK",20);//.
}
// ATK-ESP8266 AP+STA
//:0;1,
u8 atk_8266_apsta_check(void)
{
if(atk_8266_quit_trans())return 0; //
atk_8266_send_cmd("AT+CIPSTATUS",":",50); // AT+CIPSTATUS ,
if(atk_8266_check_cmd("+CIPSTATUS:0")&&
atk_8266_check_cmd("+CIPSTATUS:1")&&
atk_8266_check_cmd("+CIPSTATUS:2")&&
atk_8266_check_cmd("+CIPSTATUS:4"))
return 0;
else return 1;
}
// ATK-ESP8266
//:0,;1,.
u8 atk_8266_consta_check(void)
{
u8 *p;
u8 res;
if(atk_8266_quit_trans())return 0; //
atk_8266_send_cmd("AT+CIPSTATUS",":",50); // AT+CIPSTATUS ,
65
STM32 IMX6ULL
p=atk_8266_check_cmd("+CIPSTATUS:"); //
res=*p;
return res;
}
//
const u8* kbd_tbl[13]={"1","2","3","4","5","6","7","8","9",".","0","#","DEL"};
u8* kbd_fn_tbl[2];
// 240*140
//x,y:320*240 x 0
void atk_8266_load_keyboard(u16 x,u16 y)
{
u16 i;
POINT_COLOR=RED;
LCD_Fill(x,y,x+240,y+140,WHITE);
LCD_DrawRectangle(x,y,x+240,y+140);
LCD_DrawRectangle(x+80,y,x+160,y+140);
LCD_DrawRectangle(x,y+28,x+240,y+56);
LCD_DrawRectangle(x,y+84,x+240,y+112);
POINT_COLOR=BLUE;
for(i=0;i<15;i++)
{
if(i<13)Show_Str_Mid(x+(i%3)*80,y+6+28*(i/3),(u8*)kbd_tbl[i],16,80);
else Show_Str_Mid(x+(i%3)*80,y+6+28*(i/3),kbd_fn_tbl[i-13],16,80);
}
}
//
//x,y:
//key:0~8
//sta:01
void atk_8266_key_staset(u16 x,u16 y,u8 keyx,u8 sta)
{
u16 i=keyx/3,j=keyx%3;
if(keyx>15)return;
if(sta)LCD_Fill(x+j*80+1,y+i*28+1,x+j*80+78,y+i*28+26,GREEN);
else LCD_Fill(x+j*80+1,y+i*28+1,x+j*80+78,y+i*28+26,WHITE);
if(j&&(i>3))Show_Str_Mid(x+j*80,y+6+28*i,(u8*)kbd_fn_tbl[keyx-13],16,80);
else Show_Str_Mid(x+j*80,y+6+28*i,(u8*)kbd_tbl[keyx],16,80);
}
//
//x,y:
//1~15 0,
u8 atk_8266_get_keynum(u16 x,u16 y)
{
u16 i,j;
66
STM32 IMX6ULL
static u8 key_x=0;//0,1~151~15
u8 key=0;
tp_dev.scan(0); //
if(tp_dev.sta&TP_PRES_DOWN)
{
for(i=0;i<5;i++)
{
for(j=0;j<3;j++)
{
if(tp_dev.x[0]<(x+j*80+80)&&tp_dev.x[0]>(x+j*80)&&tp_dev.y[0]<(y+i*28+28)&&tp_dev.y[0]>(y+i*2
8))
{
key=i*3+j+1;
break;
}
}
if(key)
{
if(key_x==key)key=0;
else
{
atk_8266_key_staset(x,y,key_x-1,0);
key_x=key;
atk_8266_key_staset(x,y,key_x-1,1);
}
break;
}
}
}else if(key_x)
{
atk_8266_key_staset(x,y,key_x-1,0);
key_x=0;
}
return key;
}
// Client ip
//ipbuf:ip
void atk_8266_get_wanip(u8* ipbuf)
{
u8 *p,*p1;
if(atk_8266_send_cmd("AT+CIFSR","OK",50))// WAN IP
{
ipbuf[0]=0;
67
STM32 IMX6ULL
return;
}
p=atk_8266_check_cmd("\"");
p1=(u8*)strstr((const char*)(p+1),"\"");
*p1=0;
sprintf((char*)ipbuf,"%s",p+1);
}
// AP+STA ip
//ipbuf:ip
void atk_8266_get_ip(u8 x,u8 y)
{
u8 *p;
u8 *p1;
u8 *p2;
u8 *ipbuf;
u8 *buf;
p=mymalloc(SRAMIN,32); // 32
p1=mymalloc(SRAMIN,32); // 32
p2=mymalloc(SRAMIN,32); // 32
ipbuf=mymalloc(SRAMIN,32); // 32
buf=mymalloc(SRAMIN,32); // 32
if(atk_8266_send_cmd("AT+CIFSR","OK",50))// WAN IP
{
*ipbuf=0;
}
else
{
p=atk_8266_check_cmd("APIP,\"");
p1=(u8*)strstr((const char*)(p+6),"\"");
p2=p1;
*p1=0;
ipbuf=p+6;
sprintf((char*)buf,"AP IP:%s :%s",ipbuf,(u8*)portnum);
Show_Str(x,y,200,12,buf,12,0); // AP IP
p=(u8*)strstr((const char*)(p2+1),"STAIP,\"");
p1=(u8*)strstr((const char*)(p+7),"\"");
*p1=0;
ipbuf=p+7;
sprintf((char*)buf,"STA IP:%s :%s",ipbuf,(u8*)portnum);
Show_Str(x,y+15,200,12,buf,12,0); // STA IP
myfree(SRAMIN,p); //
myfree(SRAMIN,p1); //
myfree(SRAMIN,p2); //
68
STM32 IMX6ULL
myfree(SRAMIN,ipbuf); //
myfree(SRAMIN,buf); //
}
}
//ATK-ESP8266
//x,y:.
//wanip:0,;1, wanip.
void atk_8266_msg_show(u16 x,u16 y,u8 wanip)
{
u8 *p,*p1,*p2; // 32
p=mymalloc(SRAMIN,32); // 32
p1=mymalloc(SRAMIN,32); // 32
p2=mymalloc(SRAMIN,32);
POINT_COLOR=BLUE;
atk_8266_send_cmd("AT+CWMODE=2","OK",20);
atk_8266_send_cmd("AT+RST","OK",20);
delay_ms(1000);// 2s
delay_ms(1000);//
delay_ms(1000);
delay_ms(1000); // AP
sprintf((char*)p,"AT+CWSAP=\"%s\",\"%s\",1,4",wifiap_ssid,wifiap_password);
atk_8266_send_cmd(p,"OK",1000);
if(wanip==0)//
{ //
atk_8266_send_cmd("AT+GMR","OK",20);
p=atk_8266_check_cmd("SDK version:");
Show_Str(x,y,240,16,":",16,0);Show_Str(x+72,y,240,16,p,16,0);
atk_8266_send_cmd("AT+CWMODE?","+CWMODE:",20); //
p=atk_8266_check_cmd(":");
Show_Str(x,y+16,240,16,"
:",16,0);Show_Str(x+72,y+16,240,16,(u8*)ATK_ESP8266_CWMODE_TBL[*(p+1)-'1'],16,0);
atk_8266_send_cmd("AT+CWSAP?","+CWSAP:",20); // wifi
p=atk_8266_check_cmd("\"");
p1=(u8*)strstr((const char*)(p+1),"\"");
p2=p1;
*p1=0;
Show_Str(x,y+32,240,16,"SSID :",16,0);Show_Str(x+56,y+32,240,16,p+1,16,0);
p=(u8*)strstr((const char*)(p2+1),"\"");
p1=(u8*)strstr((const char*)(p+1),"\"");
p2=p1;
*p1=0;
Show_Str(x,y+48,240,16,":",16,0);Show_Str(x+40,y+48,240,16,p+1,16,0);
69
STM32 IMX6ULL
p=(u8*)strstr((const char*)(p2+1),",");
p1=(u8*)strstr((const char*)(p+1),",");
*p1=0;
Show_Str(x,y+64,240,16,":",16,0);Show_Str(x+56,y+64,240,16,p+1,16,0);
Show_Str(x,y+80,240,16,"
:",16,0);Show_Str(x+72,y+80,240,16,(u8*)ATK_ESP8266_ECN_TBL[*(p1+1)-'0'],16,0);
} //
myfree(SRAMIN,p); //
myfree(SRAMIN,p1); //
myfree(SRAMIN,p2);
}
//ATK-ESP8266 WIFI ( WIFI STA/WIFI AP )
//x,y:.
//rmd:
//ssid,encryption,password: SSID,,
void atk_8266_wificonf_show(u16 x,u16 y,u8* rmd,u8* ssid,u8* encryption,u8* password)
{
POINT_COLOR=RED;
Show_Str(x,y,240,12,rmd,12,0);//
Show_Str(x,y+20,240,12,"SSID:",12,0);
Show_Str(x,y+36,240,12,":",12,0);
Show_Str(x,y+52,240,12,":",12,0);
POINT_COLOR=BLUE;
Show_Str(x+30,y+20,240,12,ssid,12,0);
Show_Str(x+54,y+36,240,12,encryption,12,0);
Show_Str(x+30,y+52,240,12,password,12,0);
}
//
//:
//0,TCP
//1,TCP
//2,UDP
u8 atk_8266_netpro_sel(u16 x,u16 y,u8* name)
{
u8 key=0,t=0,*p;
u8 netpro=0;
LCD_Clear(WHITE);
POINT_COLOR=RED;
p=mymalloc(SRAMIN,50);// 50
sprintf((char*)p,"%s ",name);
Show_Str_Mid(0,y,p,16,240);
Show_Str(x,y+30,200,16,"KEY0:",16,0);
Show_Str(x,y+50,200,16,"KEY1:",16,0);
Show_Str(x,y+70,200,16,"WK_UP:",16,0);
70
STM32 IMX6ULL
Show_Str(x,y+100,200,16,":",16,0);
POINT_COLOR=BLUE;
Show_Str(x+16,y+120,200,16,"TCP ",16,0);
Show_Str(x+16,y+140,200,16,"TCP ",16,0);
Show_Str(x+16,y+160,200,16,"UDP ",16,0);
POINT_COLOR=RED;
Show_Str(x,y+120,200,16,"",16,0);
while(1)
{
key=KEY_Scan(0);
if(key)
{
if(key==WKUP_PRES)break; //WK_UP
Show_Str(x,y+120+netpro*20,200,16," ",16,0);//
if(key==KEY0_PRES)//KEY0
{
if(netpro<2)netpro++;
else netpro=0;
}else if(key==KEY1_PRES)//KEY1
{
if(netpro>0)netpro--;
else netpro=2;
}
Show_Str(x,y+120+netpro*20,200,16,"",16,0);//
}
delay_ms(10);
atk_8266_at_response(1);
if((t++)==20){t=0;LED0=!LED0;}//LED
}
myfree(SRAMIN,p);
return netpro;//
}
//STA AP TCPUDP //
u8 atk_8266_mode_cofig(u8 netpro)
{
//u8 netpro;
u8 ipbuf[16]; //IP
u8 *p;
u8 key;
p=mymalloc(SRAMIN,32);// 32
PRESTA:
netpro|=(atk_8266_netpro_sel(50,30,(u8*)ATK_ESP8266_CWMODE_TBL[1]))<<4;
71
STM32 IMX6ULL
if(netpro&0X20)
{
LCD_Clear(WHITE);
if(atk_8266_ip_set("WIFI-AP UDP IP ","UDP ",(u8*)portnum,ipbuf))goto
PRESTA;//IP
if(netpro&0X03)sprintf((char*)p,"AT+CIPSTART=1,\"UDP\",\"%s\",%s",ipbuf,(u8*)portnum);
// UDP , ID STA 0
else sprintf((char*)p,"AT+CIPSTART=0,\"UDP\",\"%s\",%s",ipbuf,(u8*)portnum); //
UDP , ID STA 0
delay_ms(200);
LCD_Clear(WHITE);
atk_8266_send_cmd(p,"OK",200);
} //AP TCP Client
else if(netpro&0X10)
{
LCD_Clear(WHITE);
POINT_COLOR=RED;
Show_Str_Mid(0,30,"ATK-ESP WIFI-STA ",16,240);
Show_Str(30,50,200,16," ATK-ESP ,...",12,0);
if(atk_8266_ip_set("WIFI-AP IP ","TCP Client",(u8*)portnum,ipbuf))goto PRESTA;
//IP
if(netpro&0X03)sprintf((char*)p,"AT+CIPSTART=1,\"TCP\",\"%s\",%s",ipbuf,(u8*)portnum);
// TCP , ID STA client 1
else sprintf((char*)p,"AT+CIPSTART=0,\"TCP\",\"%s\",%s",ipbuf,(u8*)portnum); //
TCP , ID STA server 0
while(atk_8266_send_cmd(p,"OK",200))
{
LCD_Clear(WHITE);
POINT_COLOR=RED;
Show_Str_Mid(0,40,"WK_UP:",16,240);
Show_Str(30,80,200,12,"ATK-ESP TCP SERVER ",12,0); //
key=KEY_Scan(0);
if(key==WKUP_PRES)goto PRESTA;
}
}
else; //
myfree(SRAMIN,p);
return netpro;
}
72
STM32 IMX6ULL
//IP
//title:ip
//mode:
//port:
//*ip:ip ( IP )
//:0,;1,.
u8 atk_8266_ip_set(u8* title,u8* mode,u8* port,u8* ip)
{
u8 res=0;
u8 key;
u8 timex=0;
u8 iplen=0; //IP
LCD_Clear(WHITE);
POINT_COLOR=RED;
Show_Str_Mid(0,30,title,16,240); //
Show_Str(30,90,200,16,":",16,0); //
Show_Str(30,110,200,16,"IP :",16,0); //IP
Show_Str(30,130,200,16,":",16,0); //
kbd_fn_tbl[0]="";
kbd_fn_tbl[1]="";
atk_8266_load_keyboard(0,180); //
POINT_COLOR=BLUE;
Show_Str(30+72,90,200,16,mode,16,0); //
Show_Str(30+40,130,200,16,port,16,0); //
ip[0]=0;
while(1)
{
key=atk_8266_get_keynum(0,180);
if(key)
{
if(key<12)
{
if(iplen<15)
{
ip[iplen++]=kbd_tbl[key-1][0];
}
}else
{
if(key==13)if(iplen)iplen--; //
if(key==14&&iplen)break; //
if(key==15){res=1;break;} //
}
ip[iplen]=0;
73
STM32 IMX6ULL
LCD_Fill(30+56,110,239,110+16,WHITE);
Show_Str(30+56,110,200,16,ip,16,0); // IP
}
timex++;
if(timex==20)
{
timex=0;
LED0=!LED0;
}
delay_ms(10);
atk_8266_at_response(1);//WIFI ,
}
return res;
}
// UI
void atk_8266_mtest_ui(u16 x,u16 y)
{
LCD_Clear(WHITE);
POINT_COLOR=RED;
Show_Str_Mid(0,y,"ATK_ESP8266 WIFI ",16,240);
Show_Str(x,y+25,200,16,":",16,0);
Show_Str(x,y+45,200,16,"KEY0:WIFI STA+AP",16,0);
Show_Str(x,y+65,200,16,"KEY1:WIFI STA",16,0);
Show_Str(x,y+85,200,16,"WK_UP:WIFI AP",16,0);
atk_8266_msg_show(x,y+125,0);
}
//ATK-ESP8266
void atk_8266_test(void)
{
// u16 rlen=0;
u8 key;
POINT_COLOR=RED;
//
Show_Str_Mid(0,30,"ATK-ESP8266 WIFI ",16,240);
while(atk_8266_send_cmd("AT","OK",20))// WIFI
{
atk_8266_quit_trans();//
atk_8266_send_cmd("AT+CIPMODE=0","OK",200); //
74
STM32 IMX6ULL
Show_Str(40,55,200,16,"!!!",16,0);
delay_ms(800);
LCD_Fill(40,55,200,55+16,WHITE);
Show_Str(40,55,200,16,"...",16,0);
}
while(atk_8266_send_cmd("ATE0","OK",20));//
atk_8266_mtest_ui(32,30);
while(1)
{
delay_ms(10);
atk_8266_at_response(1);// ATK-ESP8266 ,
key=KEY_Scan(0);
if(key)
{
LCD_Clear(WHITE);
POINT_COLOR=RED;
switch(key)
{
case 1://KEY0
Show_Str_Mid(0,30,"ATK-ESP WIFI-AP+STA ",16,240);
Show_Str_Mid(0,50," ATK-ESP8266 ...",12,240);
atk_8266_apsta_test(); //
break;
case 2://KEY1
Show_Str_Mid(0,30,"ATK-ESP WIFI-STA ",16,240);
Show_Str_Mid(0,50," ATK-ESP8266 ...",12,240);
atk_8266_wifista_test();//WIFI STA
break;
case 4://WK_UP
atk_8266_wifiap_test(); //WIFI AP
break;
}
atk_8266_mtest_ui(32,30);
}
}
Wisita.c:
#include "common.h"
#include "stdlib.h"
#include "beep.h"
#include "led.h"
#include "key.h"
#include "pwm.h"
75
STM32 IMX6ULL
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "HCSR04.h"
#include "dht11.h"
#include "MQ2.h"
#include "math.h"
#include "stm32f4xx.h"
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//ALIENTEK STM32
//ATK-ESP8266 WIFI WIFI STA
//@ALIENTEK
//:www.openedv.com
//:2015/4/3
//V1.0
//
//Copyright(C) 2009-2019
//All rights reserved
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//ATK-ESP8266 WIFI STA
// TCP/UDP
//:0,
// ,
u8 netpro=0; //
u8 atk_8266_wifista_test(void)
{
//u8 netpro=0; //
double length=0;
u8 temperature;
u8 humidity;
u16 adcx;
double a=0.0;
u8 flag=0;
u8 flag2=0;
u8 flag1=0;
u8 key;
u8 ledstate=0;
u8 ledstate1=0;
u8 timex=0;
u8 ipbuf[16]; //IP
u8 *p;
76
STM32 IMX6ULL
u16 t=999; //
u8 res=0;
u16 rlen=0;
u8 constate=0; //
u16 number;
u16 num=1000;
u16 led1pwmval=1500;
//char state;
char formerstate='0';
TIM14_PWM_Init(2000-1,84-1);
LED0=1;
LED1=1;
DIR=0;
p=mymalloc(SRAMIN,32); // 32
atk_8266_send_cmd("AT+CWMODE=1","OK",50); // WIFI STA
atk_8266_send_cmd("AT+RST","OK",20); //DHCP ( AP )
delay_ms(1000); // 3S
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
// WIFI //,
!!
sprintf((char*)p,"AT+CWJAP=\"%s\",\"%s\"",wifista_ssid,wifista_password);//
:ssid,
while(atk_8266_send_cmd(p,"WIFI GOT IP",300)); //,
IP
PRESTA:
netpro|=atk_8266_netpro_sel(50,30,(u8*)ATK_ESP8266_CWMODE_TBL[0]); //
if(netpro&0X02) //UDP
{
LCD_Clear(WHITE);
POINT_COLOR=RED;
Show_Str_Mid(0,30,"ATK-ESP WIFI-STA ",16,240);
Show_Str(30,50,200,16," ATK-ESP ,...",12,0);
if(atk_8266_ip_set("WIFI-STA UDP IP
",(u8*)ATK_ESP8266_WORKMODE_TBL[netpro],(u8*)portnum,ipbuf))goto PRESTA; //IP
sprintf((char*)p,"AT+CIPSTART=\"UDP\",\"%s\",%s",ipbuf,(u8*)portnum);
// UDP
delay_ms(200);
atk_8266_send_cmd("AT+CIPMUX=0","OK",20); //
delay_ms(200);
77
STM32 IMX6ULL
LCD_Clear(WHITE);
while(atk_8266_send_cmd(p,"OK",500));
}
else //TCP
{
if(netpro&0X01) //TCP Client
{
LCD_Clear(WHITE);
POINT_COLOR=RED;
Show_Str_Mid(0,30,"ATK-ESP WIFI-STA ",16,240);
Show_Str(30,50,200,16," ATK-ESP ,...",12,0);
if(atk_8266_ip_set("WIFI-STA IP
",(u8*)ATK_ESP8266_WORKMODE_TBL[netpro],(u8*)portnum,ipbuf))goto PRESTA; //IP
atk_8266_send_cmd("AT+CIPMUX=0","OK",20); //01
sprintf((char*)p,"AT+CIPSTART=\"TCP\",\"%s\",%s",ipbuf,(u8*)portnum); //
TCP
while(atk_8266_send_cmd(p,"OK",200))
{
LCD_Clear(WHITE);
POINT_COLOR=RED;
Show_Str_Mid(0,40,"WK_UP:",16,240);
Show_Str(30,80,200,12,"ATK-ESP TCP ",12,0); //
key=KEY_Scan(0);
if(key==WKUP_PRES)goto PRESTA;
}
atk_8266_send_cmd("AT+CIPMODE=1","OK",200); //
}
else //TCP Server
{
LCD_Clear(WHITE);
POINT_COLOR=RED;
Show_Str_Mid(0,30,"ATK-ESP WIFI-STA ",16,240);
Show_Str(30,50,200,16," ATK-ESP ,...",12,0);
atk_8266_send_cmd("AT+CIPMUX=1","OK",20); //01
sprintf((char*)p,"AT+CIPSERVER=1,%s",(u8*)portnum); // Server
(01) portnum
atk_8266_send_cmd(p,"OK",50);
}
}
LCD_Clear(WHITE);
POINT_COLOR=RED;
Show_Str_Mid(0,30,"ATK-ESP WIFI-STA ",16,240);
78
STM32 IMX6ULL
Show_Str(30,50,200,16," ATK-ESP ,...",12,0);
LCD_Fill(30,50,239,50+12,WHITE); //
Show_Str(30,50,200,16,"WK_UP: KEY0:",12,0);
LCD_Fill(30,80,239,80+12,WHITE);
atk_8266_get_wanip(ipbuf);//, WAN IP
sprintf((char*)p,"IP :%s :%s",ipbuf,(u8*)portnum);
Show_Str(30,65,200,12,p,12,0); // IP
Show_Str(30,80,200,12,":",12,0); //
Show_Str(120,80,200,12,":",12,0); //
Show_Str(30,100,200,12,":",12,0); //
Show_Str(30,115,200,12,":",12,0); //
atk_8266_wificonf_show(30,180,"
:",(u8*)wifista_ssid,(u8*)wifista_encryption,(u8*)wifista_password);
POINT_COLOR=BLUE;
Show_Str(120+30,80,200,12,(u8*)ATK_ESP8266_WORKMODE_TBL[netpro],12,0);
//
USART3_RX_STA=0;
while(1)
{
//
length=GetHCSR04_Distance();
//
DHT11_Read_Data(&temperature,&humidity);
//
adcx=Get_Adc_Average(ADC_Channel_5,20);// 5 20
ledstate=GPIO_ReadOutputDataBit(GPIOF,GPIO_Pin_3);
ledstate1=GPIO_ReadOutputDataBit(GPIOF,GPIO_Pin_10);
if(adcx >1500)
{
GPIO_SetBits(GPIOF,GPIO_Pin_8);
delay_ms(300);
GPIO_ResetBits(GPIOF,GPIO_Pin_8);
delay_ms(300);
}
printf("\n");
a=length;
if(flag1==0&&a<15)
{
while(1){
flag2=0;
delay_ms(10);
79
STM32 IMX6ULL
LED0=0;
LED1=0;
delay_ms(num);
DIR=1;
flag++;
number=7000/num;
if(flag>=number){
flag1=1;
delay_ms(num);
TIM_SetCompare1(TIM14,0);
break;
}
else
{
TIM_SetCompare1(TIM14,led1pwmval);
delay_ms(10);
}
}
}
if(flag1==1&&a>15)
{
while(1)
{
flag=0;
delay_ms(1000);
LED0=1;
LED1=1;
DIR=0;
flag2++;
if(flag2>=7){
flag1=0;
TIM_SetCompare1(TIM14,0);
break;
}
else
{
TIM_SetCompare1(TIM14,led1pwmval);
delay_ms(10);
}
}
}
key=KEY_Scan(0);
80
STM32 IMX6ULL
if(key==WKUP_PRES) //WK_UP
{
res=0;
atk_8266_quit_trans(); //
atk_8266_send_cmd("AT+CIPMODE=0","OK",20); //
break;
}
else if(10==t) //TCP Server
{
sprintf((char*)p,"%02d%02d%04d%1d%1d",temperature,humidity,adcx,ledstate,ledstate1);//
Show_Str(30+54,100,200,12,p,12,0);
atk_8266_send_cmd("AT+CIPSEND=0,10","OK",200); //
delay_ms(200);
atk_8266_send_data(p,"OK",100); //
timex=50;
}else;
if(timex)timex--;
if(timex==1)LCD_Fill(30+54,100,239,112,WHITE);
t++;
delay_ms(10);
if(USART3_RX_STA&0X8000) //
{
rlen=USART3_RX_STA&0X7FFF; //
USART3_RX_BUF[rlen]=0; //?
if('1'==USART3_RX_BUF[rlen-1])
{
formerstate='1';
}
else if('0'==USART3_RX_BUF[rlen-1])
{
formerstate='0';
}
else;
if(formerstate=='0')
{
81
} STM32 IMX6ULL
else
GPIO_SetBits(GPIOF,GPIO_Pin_10);
{
GPIO_ResetBits(GPIOF,GPIO_Pin_10);
}
printf("%s",USART3_RX_BUF); //
sprintf((char*)p,"%d ,",rlen);//
LCD_Fill(30+54,115,239,130,WHITE);
POINT_COLOR=BRED;
Show_Str(30+54,115,156,12,p,12,0); //
POINT_COLOR=BLUE;
LCD_Fill(30,130,239,319,WHITE);
Show_Str(30,130,180,190,USART3_RX_BUF,12,0);//
USART3_RX_STA=0;
if(constate!='+')t=1000; //,
else t=0; //,10
}
if(t==1000)// 10 ,.
{
// // LCD_Fill(30+54,125,239,130,WHITE);
// LCD_Fill(60,80,120,92,WHITE);
constate=atk_8266_consta_check();//
if(constate=='+')Show_Str(30+30,80,200,12,"",12,0); //
else Show_Str(30+30,80,200,12,"",12,0);
t=0;
}
atk_8266_at_response(1);
} //
myfree(SRAMIN,p);
return res;}
82