Przedstawiam wam kolejny ciekawy moduł, jest to bardzo malutka płytka ESP8266 12F Możliwości są ogromne, dlaczego? Bo jest to kompletnie oddzielny moduł zupełnie jak arduino i nie musi potrzebować do działania nic więcej, po prostu programujemy go tak samo jak arduino i może działać samodzielnie. Ma procesor o taktowaniu 80 MHz oraz pamięć 4 megabajty.
Na sam początek zróbmy sobie prosty projekt rutera WIFI, moduł ten można zaprogramować na wiele sposobów, można nawet na nich uruchomić serwer plików WWW, posiada wbudowaną pamięć 4 megabajty (ale można ją rozszerzyć np. dołączając czytnik kart SD), można za jego pomocą wykonać stację pogody (złącza GPIO służą tak samo jak te same w arduino więc możemy podłączać cokolwiek) i dołączyć do światowej mapy czujników internetowych, może nam służyć również jako ruter wifi, np. gdy potrzebujemy jakiegoś punktu dostępowego by połączyć kilka komputerów lub innych urządzeń w sieć i coś udostępniać.
Co potrzebujemy?
- konwerter z USB na UART (koniecznie z czipem FT232)
https://nettigo.pl/products/konwerter-usb-uart-ft232-miniusb
Oraz coś nowego:
- Moduł ESP8266 12F
https://nettigo.pl/products/modul-wifi-esp8266-12f
Schemat połączeń
Co robimy dalej?
https://drive.google.com/open?id=12479NIgmKGrXqvrTbaftqgCPqIKP8EMx
Uruchamiamy i przygotowujemy program Arduino
W polu "Dodatkowe adresy URL do menedżera płytek" wklejamy link pobrany ze strony projektu esp8266.com:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
Sprawdź na ich stronie czy nie ma nowych wersji:
https://github.com/esp8266/arduino
Potem przechodzimy do Narzędzia i Menedżer płytek, oraz pobieramy/instalujemy z samego dołu pakiet esp8266
Program do wgrania:
const char *ssid = NAZWA TWOJEJ SIECI;
const char *password = HASLO TWOJEJ SIECI;
/*
Copyright (c) 2015, Majenko Technologies
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
* * Neither the name of Majenko Technologies nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/* Create a WiFi access point and provide a web server on it. */
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#ifndef APSSID
#define APSSID "ESPap"
#define APPSK "thereisnospoon"
#endif
/* Set these to your desired credentials. */
const char *ssid = NAZWA TWOJEJ SIECI;
const char *password = HASLO TWOJEJ SIECI;
ESP8266WebServer server(80);
/* Just a little test message. Go to http://192.168.4.1 in a web browser
connected to this access point to see it.
*/
void handleRoot() {
server.send(200, "text/html", "<h1>You are connected</h1>");
}
void setup() {
delay(1000);
Serial.begin(115200);
Serial.println();
Serial.print("Configuring access point...");
/* You can remove the password parameter if you want the AP to be open. */
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
server.on("/", handleRoot);
server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();
}
Pamiętaj aby po zaprogramowaniu kontrolera, odłączyć pin GPIO 0 od masy (ponieważ moduł ci się nie uruchomi) oraz byś zasilał go napięciem nie większym niż 4 volt (najlepiej stary akumulatorek z telefonu lub ogniwo 18650).
Pin EN (z napięciem) oraz GPIO15 (z masą) muszą być nadal zwarte ponieważ kontroler także nie wystartuje.
Schematy wyjść kontrolera:
Specyfikacja:
- posiada 11 (13) portów GPIO, prawie wszystkie z PWM
- procesor RISC 80MHz (160MHz) Tensilica L106.
- zasilanie 3.3V
- logika 3.3V
- wbudowana antena na PCB
- 10-bitowy konwerter analogowo-cyfrowy
Wyprowadzenia:
- RST - Resetuje moduł
- ADC - Konwerter A/C Napięcie w zakresie 0-1V konwertowane na wartość 0-1024
- EN - Chip enable. HIGH - aktywny
- GPIO16; WAKE - Używany do wybudzenia modułu z trybu DEEP SLEEP
- GPIO14; HSPI_CLK
- GPIO12; HSPI_MISO
- GPIO13; HSPI_MOSI; UART0_CTS
- VCC - zasilanie 3.3V
- CS0 - Chip select
- MISO
- GPIO9
- GPIO10
- MOSI
- SCLK - Zegar
- GND
- GPIO15; MTDO; HSPICS; UART0_RTS
- GPIO2; UART1_TXD
- GPIO0
- GPIO4
- GPIO5
- RXD; UART0_RXD; GPIO3
- TXD; UART0_TXD; GPIO1
Zobacz stronę internetową dotyczącą tego modułu oraz projektów na nim opartych:
Gotowy efekt
Zobacz więcej na kanale ElektroPrzewodnik