Zeus Smart Car Kit: luce e potenziamento del segnale WiFi per esplorare il buio

Spread the love

La SunFounder Zeus Smart Car Kit per Arduino UNO è un kit educativo pensato per principianti e bambini, con l’obiettivo di fornire un’esperienza pratica nel campo dell’elettronica, della robotica e della programmazione.

SunFounder Zeus Car Kit con potenziamento luce e WiFi
SunFounder Zeus Car Kit con potenziamento luce e WiFi

Il kit include uno shield SunFounder per Arduino Uno R3 ed è dotato di vari moduli come l’ESP32 CAM, modulo ad ultrasuoni e moduli di evitamento ostacoli. Il kit offre due modalità: Modalità Gioco e Modalità Programmazione, permettendo agli utenti di controllare direttamente l’auto o di immergersi nel codice per comprenderne le funzionalità.

È possibile trovarlo su Aliexpress e SunFounder.

Caratteristiche

  1. Ruote Mecanum: la Zeus Car è dotata di ruote Mecanum da 6 cm, che permettono un movimento omnidirezionale a 360°. Ciò significa che l’auto può muoversi in avanti, indietro, lateralmente e persino driftare. Le ruote Mecanum sono progettate per offrire una maggiore manovrabilità, facilitando la navigazione in terreni complessi o spazi ristretti.
  2. ESP32 CAM: l’auto è dotata di un modulo ESP32 CAM, che consente un’esperienza di guida in prima persona. Puoi visualizzare il video in streaming in tempo reale sul tuo dispositivo mobile tramite l’app SunFounder Controller. Questa caratteristica migliora l’esperienza interattiva, permettendoti di vedere ciò che l’auto “vede”.
  3. Moduli di Evitamento Ostacoli: la Zeus Car ha due moduli di evitamento ostacoli, insieme a un modulo ad ultrasuoni e due sensori IR. Questi moduli aiutano l’auto a rilevare ed evitare ostacoli sul suo percorso. Ciò è particolarmente utile per la navigazione autonoma e può essere un ottimo modo per imparare sui sensori e l’automazione nella robotica.
  4. Modulo in Scala di Grigi: l’auto ha un modulo in scala di grigi a 8 canali posizionato circolarmente nella sua parte inferiore. Questo modulo permette all’auto di seguire una linea sul terreno in qualsiasi direzione. Questo viene spesso utilizzato nelle competizioni di robotica e può essere un modo divertente per imparare sulla visione artificiale e gli algoritmi di inseguimento del percorso.
  5. Controllo Remoto IR: oltre ai controlli basati sull’app, la Zeus Car può anche essere controllata tramite un telecomando a infrarossi (IR). Questo fornisce un modo più tradizionale di controllare l’auto ed è un ottimo punto di partenza per chi si avvicina per la prima volta alla robotica.
Zeus Car modificata con l'app SunFounder Control
Zeus Car modificata con l’app SunFounder Control

Montaggio e inizio immediato con la Modalità Gioco

La Zeus Car viene fornita con un codice pre-caricato sulla scheda Arduino, permettendoti di iniziare a utilizzare l’auto subito dopo il montaggio. Questo è particolarmente utile per i principianti o per coloro che vogliono testare rapidamente le funzionalità dell’auto.

Due Opzioni di Controllo

  1. Controllo tramite APP:
    • Widget Joystick: L’app SunFounder Controller dispone di un widget joystick che ti permette di controllare il movimento dell’auto in tutte le direzioni.
    • Streaming Video in Tempo Reale: Una delle caratteristiche più importanti è la possibilità di visualizzare in tempo reale il video catturato dalla ESP32 CAM della Zeus Car. Questo offre un’esperienza di guida in prima persona, rendendo l’interazione più coinvolgente.
  2. Controllo tramite Telecomando:
    • Il kit include un semplice telecomando a infrarossi.
    • Questo è un modo semplice e diretto per controllare l’auto ed è ideale per gli utenti che vogliono iniziare ad utilizzare l’auto senza alcuna configurazione.

La Modalità Gioco offre una varietà di funzioni predefinite a cui è possibile accedere sia tramite l’app che il telecomando. Queste possono includere movimenti di base, evitamento di ostacoli e persino azioni più complesse come il drifting.

La Modalità Gioco è progettata per essere user-friendly. Non è necessario preoccuparsi della programmazione o della configurazione del software; puoi iniziare a giocare con l’auto non appena è assemblata.

Se decidi di esplorare come le funzioni dell’auto sono implementate nel codice, puoi facilmente passare alla Modalità Programmazione. Questa flessibilità rende la Zeus Car adattabile a diverse curve di apprendimento e interessi.

Il passo successivo è utilizzare la modalità programmazione

La Modalità Programmazione è pensata per coloro che vogliono comprendere il codice sottostante che controlla la Zeus Car. Permette di modificare i progetti preesistenti o addirittura di creare nuove funzionalità da zero. Questa modalità è particolarmente utile per scopi educativi, offrendo un’esperienza pratica nella programmazione, nella robotica e nell’elettronica.

La Modalità Programmazione viene fornita con 17 progetti separati, ognuno incentrato su un aspetto o una funzionalità diversa della Zeus Car. Questi progetti sono accompagnati dal codice corrispondente e da spiegazioni, fornendo un’esperienza di apprendimento completa.

Esempi di Progetti

Ecco alcuni dei progetti che potresti incontrare:

  • Movimenti di Base: Impara a programmare l’auto per movimenti di base come avanti, indietro e lateralmente.
  • Movimento Omni: Comprendi come sfruttare le ruote Mecanum per un movimento omnidirezionale.
  • Controllo Remoto: Immergiti nel codice che permette le funzionalità di controllo remoto.
  • Evitamento Ostacoli: Comprendi i sensori e gli algoritmi dietro la capacità dell’auto di evitare ostacoli.
  • Tracciamento della Linea: Impara sugli algoritmi di visione artificiale che permettono all’auto di seguire una linea.

La Zeus Car utilizza il linguaggio di programmazione Arduino, che è un sottoinsieme del C/C++. Dovrai installare l’IDE Arduino (Ambiente di Sviluppo Integrato) e le relative librerie per iniziare a programmare.

Ogni progetto viene fornito con una documentazione dettagliata che include sia il codice che le spiegazioni. Ciò rende più facile comprendere come ogni funzione è implementata e offre approfondimenti sulla programmazione robotica.

Uno dei migliori aspetti della Modalità Programmazione è la flessibilità che offre. Puoi modificare il codice esistente per adattarlo alle tue esigenze o persino integrare ulteriori moduli hardware per estendere le capacità dell’auto.

La Modalità Programmazione non riguarda solo la codifica; riguarda anche la risoluzione dei problemi, il pensiero logico e la comprensione delle sfumature della robotica e dell’automazione. Offre un’esperienza di apprendimento completa che va oltre l’aula.

La Modalità Programmazione è per coloro che desiderano andare oltre il semplice utilizzo della Zeus Car e vogliono comprendere il suo funzionamento interno. Offre un’esperienza educativa ricca, fornendo gli strumenti e le conoscenze necessarie per esplorare il mondo della programmazione robotica.

Montaggio

Ecco, il pacco mi è arrivato, ed era inaspettatamente piccolo.

Scatola del SunFounder Zeus Car KIT
Scatola del SunFounder Zeus Car KIT

Gli oggetti sono molto compressi ma perfettamente confezionati.

SunFounder Zeus Car KIT sconfezionato
SunFounder Zeus Car KIT sconfezionato

Iniziamo subito montando i motori.

SunFounder Zeus Car KIT inizio assemblaggio
SunFounder Zeus Car KIT inizio assemblaggio

È una struttura classica con un motore per ogni ruota.

SunFounder Zeus Car KIT motori
SunFounder Zeus Car KIT motori

Qui puoi vedere l’ESP32-CAM utilizzato per lo streaming video della parte anteriore dell’auto.

SunFounder Zeus Car KIT: Ultrasonico e ESP32-Cam
SunFounder Zeus Car KIT: Ultrasonico e ESP32-Cam

L’IR viene utilizzato per evitare ostacoli, e tutti i sensori sono gestiti dall’Arduino UNO montato sulla parte superiore.

SunFounder Zeus Car KIT IR e Arduino Uno
SunFounder Zeus Car KIT IR e Arduino Uno

Nella parte inferiore, stiamo per mettere il pacchetto batteria creato con due litio ricaricabili 18650.

SunFounder Zeus Car KIT: batteria inferiore
SunFounder Zeus Car KIT: batteria inferiore

Il sensore e i driver del motore sono assemblati e cablati tramite uno shield.

SunFounder Zeus Car KIT: shield cablato
SunFounder Zeus Car KIT: shield cablato

Senza le ruote, l’auto è molto compatta e ben strutturata.

SunFounder Zeus Car KIT: semi assemblato senza ruota
SunFounder Zeus Car KIT: semi-assemblato senza ruota

Alla fine, il risultato dell’auto è stato molto soddisfacente.

SunFounder Zeus Car KIT: assemblato
SunFounder Zeus Car KIT: assemblato

Usabilità

Telecomando

Zeus Smart Car Kit IR remote commands
Zeus Smart Car Kit IR remote commands

Il telecomando offre un’esperienza molto buona, una soluzione divertente per i bambini e un test rapido dell’implementazione di base delle funzionalità.

Controller SunFounder

Le app Android e IOS offrono una soluzione bella e completa. Ecco una breve guida all’installazione.

  1. Avvio della Zeus Car:
    • Inizialmente, lo Shield Zeus Car potrebbe attivare il suo circuito di protezione da sovra-scarica. Per disattivarlo, collegare il cavo Type-C per circa 5 secondi.
    • Se l’indicatore di alimentazione si illumina, significa che lo stato di protezione è stato rilasciato. Se entrambi gli indicatori della batteria sono spenti, continuare a collegare il cavo Type-C per caricare la batteria.
    • Spostare l’interruttore più piccolo a destra per stabilire la comunicazione tra l’auto e la ESP32 CAM. Premere il pulsante Reset per riavviare il codice. Le luci del telaio dovrebbero passare dall’arancione al blu chiaro.
Controller SunFounder WiFi AP Zeus Car
Controller SunFounder WiFi AP Zeus Car
  1. Installazione dell’App:
  2. Connessione alla WLAN Zeus Car:
    • Collega il tuo dispositivo mobile alla rete locale (LAN) trasmessa dalla Zeus Car.
    • Trova “Zeus_Car” sulla WLAN del tuo dispositivo mobile, inserisci la password “12345678” e connetti. Potrebbe apparire un avviso sulla mancanza di accesso a Internet su questa rete WLAN; scegli di continuare la connessione.
  3. Creazione di un Controller:
    • Nell’app Controller SunFounder, fai clic sull’icona “+”.
    • Sono disponibili controller preimpostati. Scegli “Zeus Car”, dargli un nome o tocca Conferma.
    • L’app cercherà la Zeus Car. Una volta connesso, puoi visualizzare il feed video in diretta e controllare l’auto utilizzando i widget forniti.
Controller SunFounder per Zeus Car
Controller SunFounder per Zeus Car
  1. Funzioni del Widget:
    • Calibrazione(E): Attiva la calibrazione della bussola.
    • Ferma(F): Ferma tutti i movimenti dell’auto.
    • Reimposta Direzione(G): Imposta una direzione specifica come fronte del movimento dell’auto.
    • Parlato(I): Passa alla modalità di controllo vocale.
    • Abilita Derapata(J): Attiva la funzione di derapata.
    • Muovi in Tutte le Direzioni(K): Controlla il movimento dell’auto in tutte le direzioni.
    • Traccia Linea: Passa alla modalità di tracciamento della linea.
    • Segui(O): Passa alla modalità di inseguimento.
    • Evita(P): Passa alla modalità di evitamento degli ostacoli.
    • Controlla la Direzione(Q): Controlla la direzione della testa dell’auto.
  2. Note Aggiuntive:
    • La funzione STT (Da Parola a Testo) richiede una connessione internet e i servizi Google sui dispositivi Android. Tuttavia, non funziona con la modalità AP (Access Point) preimpostata sulla Zeus Car. I dispositivi iOS, che utilizzano un motore di riconoscimento vocale offline, funzionano bene sia in modalità AP che STA.

Modalità di Programmazione

La Zeus CAR, un prodotto di SunFounder, offre una sezione di documentazione chiamata “Modalità di Programmazione“. Questa è progettata per coloro che hanno già esplorato la Modalità Play e sono desiderosi di approfondire la meccanica di come funziona ogni funzione. L’obiettivo principale di questa modalità è fornire agli utenti una comprensione completa delle funzionalità e consentire loro di modificare gli effetti in base alle loro preferenze e idee.

Aspetto Educativo

  1. Apprendimento Strutturato: La modalità di programmazione è strutturata meticolosamente, con ogni funzione categorizzata in un progetto separato. In totale, ci sono 17 progetti distinti. Questo approccio modulare garantisce che gli studenti possano concentrarsi su un aspetto alla volta, rendendo il processo di apprendimento più gestibile e sistematico.
  2. Spiegazioni Dettagliate: Ad ogni progetto è associato un insieme di codici e le rispettive spiegazioni. Ciò garantisce che gli studenti non solo sappiano cosa fa un particolare pezzo di codice, ma anche comprendano la logica e il ragionamento sottostante. Un approccio così dettagliato rafforza l’apprendimento e promuove una comprensione più profonda dell’argomento.
  3. Esperienza Pratica con Arduino: I progetti all’interno della modalità di programmazione utilizzano il linguaggio di programmazione Arduino. Questo offre agli studenti l’opportunità di familiarizzare con una delle piattaforme microcontrollore più popolari. Prima di immergersi nei progetti, agli utenti viene guidato l’installazione dell’IDE Arduino e delle librerie necessarie, garantendo di avere tutti gli strumenti necessari per iniziare il loro viaggio di programmazione.
  4. Ampia Gamma di Progetti: I 17 progetti coprono una vasta gamma di funzionalità, dai movimenti di base e controllo remoto a funzionalità più avanzate come la rilevazione AI da un’app e l’evitamento degli ostacoli. Questa diversità garantisce che gli studenti siano esposti a vari aspetti della robotica e della programmazione, rendendo la loro esperienza di apprendimento olistica e completa.
  5. Viaggio alla Scoperta: La modalità di programmazione non riguarda solo la codifica; si tratta di intraprendere un viaggio alla scoperta. Man mano che gli studenti avanzano nei progetti, incontreranno sfide, risolveranno problemi e, soprattutto, vedranno le loro idee prendere vita. Questo approccio all’apprendimento esperienziale è inestimabile nell’inculcare fiducia e nel promuovere l’amore per la robotica e la programmazione.

La Modalità di Programmazione della Zeus CAR è uno strumento educativo. Collega la teoria alla pratica, permettendo agli utenti di applicare ciò che hanno imparato in scenari reali. Che tu sia un principiante che vuole iniziare nel mondo della robotica o un programmatore esperto che cerca di espandere i tuoi orizzonti, la Modalità di Programmazione della Zeus CAR offre un’esperienza ricca, coinvolgente e, soprattutto, educativa.

Aggiungi controllo luci alla modalità gioco

La Zeus CAR, un dispositivo che ha guadagnato notevole ammirazione sia da me che dai miei figli, trova spesso la sua utilità nel navigare in ambienti più oscuri come sotto i letti, negli spazi della soffitta, all’interno delle tubazioni e in altre aree con scarsa illuminazione. Riconoscendo ciò, emerge un requisito tecnico fondamentale: dotare la Zeus Car di un sistema di illuminazione dedicato.

ESP32 CAM pinout
ESP32 CAM pinout

Ecco l'ESP32-CAM e la scheda programmatore AliExpress ESP32-CAM programmer - AliExpress ESP32-CAM bundle

Da un punto di vista tecnico, la Zeus CAR sfrutta le capacità del modulo ESP32-CAM per le sue funzioni di streaming video.

schema di connessione per caricare lo sketch su esp32-cam 5v
schema di connessione per caricare lo sketch su esp32-cam 5v

Per coloro che hanno seguito i miei scritti tecnici, ho trattato ampiamente l’ESP32-CAM in una serie di articoli. Un articolo affronta specificamente l’integrazione di un meccanismo di controllo della torcia, intitolato “ESP32-CAM: Aggiornamento CameraWebServer con Funzione Flash“. Data questa precedente esplorazione, diventa un passo logico sfruttare questa conoscenza per le esigenze di illuminazione della Zeus CAR.

ESP32-cam IP camera flash aperto con il tester
ESP32-cam IP camera flash aperto con il tester

La nostra roadmap tecnica prevede un approccio su due fronti:

  1. Modifica del Firmware: Miriamo a modificare il ai-camera-firmware, potenziando le sue capacità per supportare la nuova funzione di illuminazione.
  2. Miglioramento dell’Interfaccia: Verrà introdotto un nuovo widget nella dashboard di controllo della Zeus Car. Questo widget è progettato per attivare la torcia e fornire un controllo granulare sulla sua intensità, garantendo l’adattabilità a diverse condizioni di illuminazione.

Per un approfondimento sulle complessità tecniche dell’ESP32-CAM e delle sue varie applicazioni, vi invito a esplorare l’elenco completo di articoli disponibili qui.

Comunicazione tra Arduino e ESP32-CAM

L’interazione tra l’ESP32-CAM e il Firmware Arduino della Zeus Car è orchestrata attraverso due principali canali di comunicazione: Serial e WebSocket.

L’interfaccia Seriale funge da principale canale di comunicazione. Attraverso questa interfaccia, il Firmware Arduino della Zeus Car utilizza specifici comandi per inizializzare e configurare l’ESP32-CAM.

Arduino Car version 1.4.5
Initialzing...
SET+RESET
...[OK]
ESP32 firmware version 1.3.1
SET+NAMEZeus_Car
...[OK]
SET+TYPEZeus_Car
...[OK]
SET+SSIDZeus_Car
...[OK]
SET+PSK12345678
...[OK]
SET+MODE2
...[OK]
SET+PORT8765
...[OK]
SET+START
...[OK]
WebServer started on ws://192.168.4.1:8765
Okie!
[CAM_I] camera stream start on: http://192.168.4.1:9000/mjpg

Durante la fase di inizializzazione, viene inviata una serie di comandi Seriali per configurare l’ESP32-CAM in modo che operi in modalità AP (Access Point). La stretta di mano inizia con la Zeus Car che annuncia la sua versione come “Arduino Car version 1.4.5” e si inizializza. A seguito di ciò, vengono inviati una serie di comandi:

  • SET+RESET per reimpostare le impostazioni, ricevendo un riconoscimento con “…[OK]”.
  • L’ESP32-CAM annuncia quindi la sua versione firmware come “ESP32 firmware version 1.3.1”.
  • SET+NAMEZeus_Car per impostare il nome del dispositivo.
  • SET+TYPEZeus_Car per definire il tipo di dispositivo.
  • SET+SSIDZeus_Car e SET+PSK12345678 per configurare le credenziali di rete.
  • SET+MODE2 per configurare il dispositivo in modalità AP.
  • SET+PORT8765 per specificare la porta del server WebSocket.
  • Infine, viene inviato SET+START per avviare la connessione e, in caso di successo, l’ESP32-CAM conferma con “WebServer avviato su ws://192.168.4.1:8765” e “Okie!”. Inoltre, lo streaming della fotocamera inizia ed è accessibile su “http://192.168.4.1:9000/mjpg“.

D’altra parte, il WebSocket, implementato nel firmware della fotocamera ai, funge da mezzo di comunicazione secondario. Questo canale viene utilizzato principalmente dall’app SunFounder Control per trasmettere comandi all’ESP32-CAM. I messaggi inviati tramite WebSocket sono strutturati in un formato posizionale.

Il codice che gestisce ciò si trova in ai-camera-firmware/ws_server.cpp

[...]
    // receive text
    case WStype_TEXT:{
      ws_connected = true;

      out = intToString(payload, length);

      // reset ping_pong time
      lastPingPong = millis();
      if (strcmp(out.c_str(), "ping") == 0) {
        Serial.println("[APPSTOP]");
        return;
      }

      // ------------- send simplified text -------------
      DynamicJsonDocument recvBuffer(WS_BUFFER_SIZE);
      deserializeJson(recvBuffer, out);
      String result = "WS+";

      // REGIONS
      for (int i=0; i<REGIONS_LENGTH; i++){
        String region = String(REGIONS[i]);
        String value;
        if (recvBuffer[region].is<JsonArray>()) {
          for (int j=0; j<recvBuffer[region].size(); j++) {
            value += recvBuffer[region][j].as<String>();
            if (j != recvBuffer[region].size()-1) value += ',';
          }
        } else {
          value = recvBuffer[region].as<String>();
        }

        if (value == "true") value = "1";
        else if (value == "false") value = "0";
        if (value != "null") result += value;
        if (i != REGIONS_LENGTH - 1) result += ';';
      }

      // send
      if (millis() - last_send_time > SEND_INTERVAL ) {
        Serial.println(result);
        last_send_time = millis();
      }
      break;
    }
    // For everything else: do nothing
[...]

Ogni messaggio arriva in formato JSON e ogni posizione nel messaggio corrisponde a un valore specifico. Nell’app SunFounder Control, ogni widget o elemento di controllo è rappresentato da una lettera unica. Ognuna di queste lettere corrisponde a una posizione specifica nell’array di messaggi. Ad esempio, la lettera “L” rappresenta l’undicesimo valore nel messaggio.

Posizioni dei widget del Controller Sunfounder
Posizioni dei widget del Controller Sunfounder

Al ricevimento di un messaggio WebSocket, il firmware ESP32-CAM lo traduce in un messaggio Seriale, come WS+;;;;;;;;;;;100;;;;;;;;;;;;;;. Questo formato indica che la posizione rappresentata da “L” ha un valore di 100. L’ESP32-CAM invia quindi questo messaggio Seriale al firmware Arduino della Zeus Car. Al ricevimento, il firmware Arduino elabora il messaggio e attiva la funzione o azione corrispondente. In sostanza, l’app SunFounder Control comunica i comandi dell’utente tramite WebSocket all’ESP32-CAM, che poi traduce questi comandi in messaggi Seriali. Questi messaggi vengono successivamente elaborati dal firmware Arduino della Zeus Car per eseguire funzioni o azioni specifiche.

Modifica il firmware della fotocamera ai per gestire la luce

Ora, prima di tutto, devi scaricare il firmware della fotocamera ai da Git Hub. Puoi utilizzare il client git o scaricare direttamente da qui.

Ora apri il file ino dal tuo IDE preferito (l’IDE Arduino funziona bene e per configurare le schede ESP32, fai riferimento a “ESP32-CAM: pinout, specifiche e configurazione dell’IDE Arduino“).

Dipendenze

  • WebSockets di Markus Sattler
  • ArduinoJson

Impostazioni Flash

Board: "ESP32 Dev Module"
Upload Speed: "115200" ## You can try more but some device don't work
CPU Frequency: "240MHz (WiFi/BT)"
Flash Frequency: "80MHz"
Flash Mode: "QIO"
Flash Size: "4MB (32Mb)"
Partition Scheme: "Huge APP (3MB No OTA/1MB SPIFFS)"
Core Debug Level: "None"
PSRAM: "Enabled"
Arduino Runs On: "Core 1"
Events Run On: "Core 1"
ai-camera-firmware flash settings
ai-camera-firmware flash settings

Ora procedi a modificare il file ws_server.cppe. Innanzitutto aggiungi 2 define per centralizzare la configurazione:

#include "pins.h"

#define BRIGHTNESS_MULTIPLIER 0.5
#define CAMERA_PIN_FLASH 4

Poi, modifica il codice per analizzare l’undicesimo valore e impostalo su LED.

    // receive text
    case WStype_TEXT:{
      ws_connected = true;

      out = intToString(payload, length);

      // reset ping_pong time
      lastPingPong = millis();
      if (strcmp(out.c_str(), "ping") == 0) {
        Serial.println("[APPSTOP]");
        return;
      }

      // ------------- send simplified text -------------
      DynamicJsonDocument recvBuffer(WS_BUFFER_SIZE);
      deserializeJson(recvBuffer, out);
      String result = "WS+";

      // REGIONS
      for (int i=0; i<REGIONS_LENGTH; i++){
        String region = String(REGIONS[i]);
        String value;
        if (recvBuffer[region].is<JsonArray>()) {
          for (int j=0; j<recvBuffer[region].size(); j++) {
            value += recvBuffer[region][j].as<String>();
            if (j != recvBuffer[region].size()-1) value += ',';
          }
        } else {
          value = recvBuffer[region].as<String>();
        }

        if (value == "true") value = "1";
        else if (value == "false") value = "0";
        if (value != "null") result += value;
        if (i != REGIONS_LENGTH - 1) result += ';';

        if (i==11 && value != "null" && value != "" && ledPrecValue != value.toInt()) {
//        	Serial.print(i);Serial.print(" - ");
//			Serial.println(value);

        	ledPrecValue = value.toInt();
        	analogWrite(CAMERA_PIN_FLASH, (int)ledPrecValue*BRIGHTNESS_MULTIPLIER);
		}

      }

      // send
      if (millis() - last_send_time > SEND_INTERVAL ) {
        Serial.println(result);
        last_send_time = millis();
      }
      break;
    }
    // For everything else: do nothing

Il codice è molto semplice. Controllo il valore dell’undicesimo elemento e lo ottengo. Applico un moltiplicatore inferiore a uno perché, con la potenza massima, il flash a volte riceve troppa potenza e blocca il dispositivo (così puoi conservare la potenza) e imposto con PWM il valore al pin del flash della fotocamera (nel mio caso il pin 4 come descritto nell’articolo collegato in precedenza).

        if (i==11 && value != "null" && value != "" && ledPrecValue != value.toInt()) {
//        	Serial.print(i);Serial.print(" - ");
//			Serial.println(value);

        	ledPrecValue = value.toInt();
        	analogWrite(CAMERA_PIN_FLASH, (int)ledPrecValue*BRIGHTNESS_MULTIPLIER);
		}

      }

Ora, dobbiamo impostare il widget corretto nella posizione corretta; la posizione L è l’undicesimo elemento e devi mettere il widget di controllo lì.

Per fare ciò, apri il controller SunFounder e aggiungi il controllo Zeus Car. Dopodiché, fai clic sul pulsante di modifica nell’angolo in alto a destra.

Controller SunFounder Zeus Car control: modifica per aggiungere luce
Controller SunFounder Zeus Car control: modifica per aggiungere luce

Ho cambiato solo il nome e il valore iniziale.

Controller SunFounder Zeus Car control: impostazioni luce
Controller SunFounder Zeus Car control: impostazioni luce

Testa la modifica

Luce

Il risultato è esattamente ciò di cui avevo bisogno.

Zeus Car modificato con luce
Zeus Car modificato con luce

Limito la luce a circa il 30% della potenza massima, ma il risultato è molto impressionante.

Qui, l’auto è al buio senza LED.

Zeus Car luce spenta
Zeus Car luce spenta

E qui con il LED acceso.

Zeus Car luce accesa
Zeus Car luce accesa

Antenna

Come puoi vedere nella foto, ho anche una nuova antenna per estendere la portata del WiFi nell’angolo remoto della casa. È abbastanza economico e ha un adesivo. Ho aggiunto il link qui.

You can find here 8dbi WiFi antenna

Grazie

Puoi trovare il mio ai-camera-firmware modificato qui.


Spread the love

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *