p kj
/
LPC824-BlynkWeatherstation
Microduino
Fork of Io_moon by
main.cpp@1:e34100dd6532, 2016-06-24 (annotated)
- Committer:
- lixianyu
- Date:
- Fri Jun 24 02:06:43 2016 +0000
- Revision:
- 1:e34100dd6532
- Parent:
- 0:740c1eb2df13
?Arduino??????????0~255??????LPC824????????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lixianyu | 0:740c1eb2df13 | 1 | /* |
lixianyu | 0:740c1eb2df13 | 2 | * Io_moon(木卫一) is a project name. |
lixianyu | 0:740c1eb2df13 | 3 | * Io_moon port ESP8266BlynkWeatherStation from Microduino Core+ to LPC824. |
lixianyu | 0:740c1eb2df13 | 4 | * |
lixianyu | 0:740c1eb2df13 | 5 | * ref: |
lixianyu | 0:740c1eb2df13 | 6 | * http://wiki.microduino.cn/index.php/开源WiFi气象站系统/zh |
lixianyu | 0:740c1eb2df13 | 7 | * https://github.com/Microduino/ESP8266BlynkWeatherStation |
lixianyu | 0:740c1eb2df13 | 8 | */ |
lixianyu | 0:740c1eb2df13 | 9 | #include "mbed.h" |
lixianyu | 0:740c1eb2df13 | 10 | |
lixianyu | 0:740c1eb2df13 | 11 | #include "Config.h" |
lixianyu | 0:740c1eb2df13 | 12 | #include "MicroduinoPinNames.h" |
lixianyu | 0:740c1eb2df13 | 13 | DigitalOut myled(P0_20); |
lixianyu | 0:740c1eb2df13 | 14 | I2C g_i2c(P0_11, P0_10);//SDA, SCL |
lixianyu | 0:740c1eb2df13 | 15 | Timer g_MainTimer; |
lixianyu | 0:740c1eb2df13 | 16 | Ticker g_Ticker; |
lixianyu | 0:740c1eb2df13 | 17 | #include "SimpleTimer.h" |
lixianyu | 0:740c1eb2df13 | 18 | #include "userDef.h" |
lixianyu | 0:740c1eb2df13 | 19 | #include "sensor.h" |
lixianyu | 0:740c1eb2df13 | 20 | #ifdef OPEN_OLED |
lixianyu | 0:740c1eb2df13 | 21 | #include "oled.h" |
lixianyu | 0:740c1eb2df13 | 22 | #endif |
lixianyu | 0:740c1eb2df13 | 23 | #ifdef OPEN_BLYNK |
lixianyu | 0:740c1eb2df13 | 24 | #include "WiFiBlynk.h" |
lixianyu | 0:740c1eb2df13 | 25 | #endif |
lixianyu | 0:740c1eb2df13 | 26 | Serial pc(P0_4, P0_0); // tx, rx |
lixianyu | 0:740c1eb2df13 | 27 | |
lixianyu | 0:740c1eb2df13 | 28 | void led_flash() |
lixianyu | 0:740c1eb2df13 | 29 | { |
lixianyu | 0:740c1eb2df13 | 30 | #if 0 |
lixianyu | 0:740c1eb2df13 | 31 | static int cot = 0; |
lixianyu | 0:740c1eb2df13 | 32 | cot++; |
lixianyu | 0:740c1eb2df13 | 33 | if (cot > 4) { |
lixianyu | 0:740c1eb2df13 | 34 | g_Timer.reset(); |
lixianyu | 0:740c1eb2df13 | 35 | cot = 0; |
lixianyu | 0:740c1eb2df13 | 36 | } |
lixianyu | 0:740c1eb2df13 | 37 | #endif |
lixianyu | 0:740c1eb2df13 | 38 | myled = 1; |
lixianyu | 0:740c1eb2df13 | 39 | wait_ms(70); |
lixianyu | 0:740c1eb2df13 | 40 | myled = 0; |
lixianyu | 0:740c1eb2df13 | 41 | } |
lixianyu | 0:740c1eb2df13 | 42 | |
lixianyu | 0:740c1eb2df13 | 43 | static void led_flash_fast() |
lixianyu | 0:740c1eb2df13 | 44 | { |
lixianyu | 0:740c1eb2df13 | 45 | myled = !myled; |
lixianyu | 0:740c1eb2df13 | 46 | } |
lixianyu | 0:740c1eb2df13 | 47 | |
lixianyu | 0:740c1eb2df13 | 48 | #ifdef OPEN_OLED |
lixianyu | 0:740c1eb2df13 | 49 | Adafruit_SSD1306_I2c adaf(g_i2c, P0_13, 0x78, 64, 128); |
lixianyu | 0:740c1eb2df13 | 50 | void update_oled() |
lixianyu | 0:740c1eb2df13 | 51 | { |
lixianyu | 0:740c1eb2df13 | 52 | static uint32_t start; |
lixianyu | 0:740c1eb2df13 | 53 | start = g_MainTimer.read_ms(); |
lixianyu | 1:e34100dd6532 | 54 | //pc.printf("update_oled: %u ms\r\n", start); |
lixianyu | 0:740c1eb2df13 | 55 | myled = 1; |
lixianyu | 0:740c1eb2df13 | 56 | wait_ms(60); |
lixianyu | 0:740c1eb2df13 | 57 | myled = 0; |
lixianyu | 0:740c1eb2df13 | 58 | oled(adaf, sensor_tem, sensor_hum, sensor_light, sensorPM25, Sensor_etoh); |
lixianyu | 0:740c1eb2df13 | 59 | } |
lixianyu | 0:740c1eb2df13 | 60 | #endif |
lixianyu | 0:740c1eb2df13 | 61 | |
lixianyu | 0:740c1eb2df13 | 62 | int main() |
lixianyu | 0:740c1eb2df13 | 63 | { |
lixianyu | 0:740c1eb2df13 | 64 | g_Ticker.attach_us(led_flash_fast, 40000); |
lixianyu | 0:740c1eb2df13 | 65 | pc.baud(115200); |
lixianyu | 0:740c1eb2df13 | 66 | pc.printf("Enter main()\r\n"); |
lixianyu | 0:740c1eb2df13 | 67 | g_MainTimer.start(); |
lixianyu | 0:740c1eb2df13 | 68 | SimpleTimer gSimpleTimer; |
lixianyu | 0:740c1eb2df13 | 69 | |
lixianyu | 0:740c1eb2df13 | 70 | // Setup a function to be called every second |
lixianyu | 0:740c1eb2df13 | 71 | #ifdef OPEN_BLYNK |
lixianyu | 0:740c1eb2df13 | 72 | gSimpleTimer.setInterval(2000, senTempHumi); |
lixianyu | 0:740c1eb2df13 | 73 | gSimpleTimer.setInterval(3000, sendLight); |
lixianyu | 0:740c1eb2df13 | 74 | gSimpleTimer.setInterval(4000, sendCH4); |
lixianyu | 0:740c1eb2df13 | 75 | gSimpleTimer.setInterval(5000, sendPM25); |
lixianyu | 0:740c1eb2df13 | 76 | #endif |
lixianyu | 0:740c1eb2df13 | 77 | gSimpleTimer.setInterval(1001, updateLight); |
lixianyu | 0:740c1eb2df13 | 78 | gSimpleTimer.setInterval(4002, updateCH4); |
lixianyu | 0:740c1eb2df13 | 79 | gSimpleTimer.setInterval(4001, updateTempHumi); |
lixianyu | 0:740c1eb2df13 | 80 | #ifdef OPEN_PM25 |
lixianyu | 0:740c1eb2df13 | 81 | gSimpleTimer.setInterval(3000, PM25); |
lixianyu | 0:740c1eb2df13 | 82 | #endif |
lixianyu | 0:740c1eb2df13 | 83 | gSimpleTimer.setInterval(4000, led_flash); |
lixianyu | 0:740c1eb2df13 | 84 | #ifdef OPEN_OLED |
lixianyu | 0:740c1eb2df13 | 85 | gSimpleTimer.setInterval(2000, update_oled); |
lixianyu | 0:740c1eb2df13 | 86 | #endif |
lixianyu | 0:740c1eb2df13 | 87 | #ifdef OPEN_PM25 |
lixianyu | 0:740c1eb2df13 | 88 | PM25_init(); |
lixianyu | 0:740c1eb2df13 | 89 | #endif |
lixianyu | 0:740c1eb2df13 | 90 | wait_ms(2000); |
lixianyu | 0:740c1eb2df13 | 91 | #ifdef OPEN_OLED |
lixianyu | 0:740c1eb2df13 | 92 | oled_init(adaf); |
lixianyu | 0:740c1eb2df13 | 93 | #endif |
lixianyu | 0:740c1eb2df13 | 94 | #ifdef OPEN_BLYNK |
lixianyu | 0:740c1eb2df13 | 95 | /* |
lixianyu | 0:740c1eb2df13 | 96 | * Set ESP8266 baud rate |
lixianyu | 0:740c1eb2df13 | 97 | * 在LPC824上,波特率设为115200时,ESP8266无法工作 |
lixianyu | 0:740c1eb2df13 | 98 | */ |
lixianyu | 0:740c1eb2df13 | 99 | #define TARGET_BAUD 9600 |
lixianyu | 0:740c1eb2df13 | 100 | EspSerial.baud(115200); |
lixianyu | 0:740c1eb2df13 | 101 | wifi.setUart(TARGET_BAUD, 2); |
lixianyu | 0:740c1eb2df13 | 102 | EspSerial.baud(TARGET_BAUD); |
lixianyu | 0:740c1eb2df13 | 103 | wait(2.0); |
lixianyu | 0:740c1eb2df13 | 104 | |
lixianyu | 0:740c1eb2df13 | 105 | Blynk.begin(auth, wifi, SSID, PASS); |
lixianyu | 1:e34100dd6532 | 106 | wait(3.0); |
lixianyu | 0:740c1eb2df13 | 107 | #endif |
lixianyu | 0:740c1eb2df13 | 108 | g_Ticker.detach(); |
lixianyu | 0:740c1eb2df13 | 109 | |
lixianyu | 0:740c1eb2df13 | 110 | while(1) { |
lixianyu | 0:740c1eb2df13 | 111 | //pc.printf("Enter while(1)\r\n"); |
lixianyu | 0:740c1eb2df13 | 112 | //myled = !myled; |
lixianyu | 0:740c1eb2df13 | 113 | gSimpleTimer.run(); |
lixianyu | 0:740c1eb2df13 | 114 | #ifdef OPEN_BLYNK |
lixianyu | 0:740c1eb2df13 | 115 | Blynk.run(); // All the Blynk Magic happens here... |
lixianyu | 0:740c1eb2df13 | 116 | #endif |
lixianyu | 0:740c1eb2df13 | 117 | |
lixianyu | 0:740c1eb2df13 | 118 | } |
lixianyu | 0:740c1eb2df13 | 119 | } |