Difference between revisions of "Arduino Environment and Esp8266"

From Tuxamito
Jump to: navigation, search
(Timer 0 Example)
 
Line 10: Line 10:
 
[[File:esp8266_arduino_01.png]]
 
[[File:esp8266_arduino_01.png]]
  
* Then go to "Tools -> Boards -> Boards Manager" and in the box "Type" select “Contributed”.  Select the “esp8266 by ESP8266 Community” package and click the “Install” button.
+
* Then go to "Tools -> Boards -> Boards Manager" and in the box "Type" select “Contributed”.
  
 
[[File:esp8266_arduino_02.png]]
 
[[File:esp8266_arduino_02.png]]
 +
 +
* Select the “esp8266 by ESP8266 Community” package and click the “Install” button.
 +
 +
[[File:esp8266_arduino_03.png]]
  
 
* Now you can select the board for developing from "Tools -> Boards->ESP8266 Modules" and choose the board you want to program.
 
* Now you can select the board for developing from "Tools -> Boards->ESP8266 Modules" and choose the board you want to program.
  
[[File:esp8266_arduino_03.png]]
+
[[File:esp8266_arduino_04.png]]
  
 
= Test Programs =
 
= Test Programs =

Latest revision as of 11:00, 12 May 2016

Installation

Arduino IDE 1.6.x or newer is needed (I tried it on version 1.6.8).

  • Open the Arduino IDE and go to "File -> Preferences"

Esp8266 arduino 00.png

Esp8266 arduino 01.png

  • Then go to "Tools -> Boards -> Boards Manager" and in the box "Type" select “Contributed”.

Esp8266 arduino 02.png

  • Select the “esp8266 by ESP8266 Community” package and click the “Install” button.

Esp8266 arduino 03.png

  • Now you can select the board for developing from "Tools -> Boards->ESP8266 Modules" and choose the board you want to program.

Esp8266 arduino 04.png

Test Programs

Blink

This example makes the led attached to pin 16 (D0 of the NodeMCU 1.0 board) blink and prints the number of iterations done in the serial terminal. For the pin mapping see NodeMCU#Pin_Mapping_for_Arduino_IDE

 1 int pin = 16; // D0 pin in NodeMCU
 2 int i = 0;
 3 
 4 // the setup function runs once when you press reset or power the board
 5 void setup() {
 6   Serial.begin(115200);
 7 
 8   // initialize digital pin 16 (D0) as an output.
 9   pinMode(pin, OUTPUT);
10 }
11 
12 // the loop function runs over and over again forever
13 void loop() {
14   Serial.print("Line ");
15   Serial.println(i);
16   i++;
17   digitalWrite(pin, HIGH); // turn the LED off by making the voltage HIGH
18   delay(100);              // wait for a second
19   digitalWrite(pin, LOW);  // turn the LED on by making the voltage LOW
20   delay(900);              // wait for a second
21 }

Connecting to Wifi Access Point

 1 #include <ESP8266WiFi.h>
 2 
 3 const char* SSID_NAME = "..." // WiFi SSID Name
 4 const char* SSID_PASS = "..." // WiFi SSID Password
 5 
 6 void setup() {
 7   ...
 8 
 9   waitMaxWifi = 0;
10   WiFi.mode(WIFI_STA);
11   WiFi.begin(SSID_NAME, SSID_PASS);
12 
13   while (WiFi.status() != WL_CONNECTED && waitMaxWifi < 30) {
14     delay(1000); // Wait or do something useful
15   }
16 }
17 
18 void loop() {
19    ...
20 }

ESP8266 as Access Point

 1 #include <ESP8266WiFi.h>
 2 
 3 const char* SSID_NAME = "ESP8266AP";  // WiFi AP SSID Name
 4 const char* SSID_PASS = "0123456789"; // WiFi AP SSID Password
 5 
 6 void setup() {
 7   ...
 8 
 9   WiFi.mode(WIFI_AP);
10   WiFi.softAP(SSID_NAME, SSID_PASS);
11 }
12 
13 void loop() {
14    ...
15 }


Timers

Timer 0 Example

 1 void timer0_ISR (void){
 2   // Do some work
 3   ...
 4   // Set-up the next interrupt cycle
 5   timer0_write(ESP.getCycleCount() + 80000000); //80Mhz -> 80*10^6 = 1 second
 6 }
 7 
 8 void setup() {
 9   ...
10 
11   noInterrupts();
12   timer0_isr_init();
13   timer0_attachInterrupt(timer0_ISR);
14   timer0_write(ESP.getCycleCount() + 80000000); //80Mhz -> 80*10^6 = 1 second
15   interrupts();
16 }
17 
18 void loop() {
19   ...
20 }