venerdì 7 settembre 2018

Wemos TTGO Wifi BT ESP32

Questa scheda di sviluppo integrata diversi aspetti interessanti: un microprocessore ESP32, WiFi, Bluetooth 4,schermo OLED SSD1306 da 0.96" ed un alloggiamento per una batteria LiPo tipo 18650 con circuito di ricarica integrato

Per aggiungere la scheda all'Arduino IDE si deve scaricare il pacchetto


https://dl.espressif.com/dl/package_esp32_index.json
inoltre potrebbero essere necessari i driver per la porta seriale via USB scaricabili da qui
https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

Questo e' il pinout della scheda

Una cosa che mi ha fatto impazzire e' che nonostante questi settaggi abbastanza conservativi non riuscivo a fare l'upload sulla scheda (con il messaggio di errore  

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

Il trucco e' quello di premere il pulsante di Boot al momento di fare l'upload

Le connessioni dell'ESP 32 con l'OLED sono attraverso i seguenti pin

SCL - Pin 4
SDA - Pin 5

La libreria per controllare l'OLED si puo' scaricare da qui . I programmi di esempio della libreria devono essere modificati (per esempo SSD1306SimpleDemo) cosi'

-----------------------------------------------
#include <Wire.h>  // Only needed for Arduino 1.6.5 and earlier
#include "SSD1306.h" // alias for `#include "SSD1306Wire.h"`
#include "images.h"

SSD1306  display(0x3c, 5, 4);

#define DEMO_DURATION 3000
typedef void (*Demo)(void);
-----------------------------------------------

Questo e' invece un semplice WiFi Scanner (unione di due esempi) che mostra i dati a display 


----------------------------------------------
#include "WiFi.h"
#include "SSD1306.h"

SSD1306  display(0x3c, 5, 4);


void setup()
{

    pinMode(16,OUTPUT);
    digitalWrite(16, LOW);    
    delay(50); 
    digitalWrite(16, HIGH); 
    Serial.begin(115200);

    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);

    display.init();

    display.flipScreenVertically();
    display.setFont(ArialMT_Plain_10);

    Serial.println("Setup done");
}

void loop()
{
    display.clear();
    display.setTextAlignment(TEXT_ALIGN_LEFT);
 
    Serial.println("scan start");

    int n = WiFi.scanNetworks();
    Serial.println("scan done");
    if (n == 0) {
        Serial.println("no networks found");
    } else {
        Serial.print(n);
        Serial.println(" networks found");
        for (int i = 0; i < n; ++i) {
            // Print SSID and RSSI for each network found
            Serial.print(i + 1);
            Serial.print(": ");
            Serial.print(WiFi.SSID(i));
            Serial.print(" (");
            Serial.print(WiFi.RSSI(i));
            Serial.print(")");
            Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
            display.drawString(0, (10*i),WiFi.SSID(i)+" "+WiFi.RSSI(i));
            display.display();

            delay(10);
        }
    }
    Serial.println("");

    delay(5000);
}

Nessun commento:

Posta un commento

Alpine Linux 2024 su IBM A31

Ho provato a far resuscitare un IBM A31 destinato alla discarica. La macchina ha processore P4, 256 Mb di RAM, la batteria CMOS morta ed e&#...