Programação


  • no. usp, nome, frquencia, nota final

    11453692 Alejandro Enrique Noblecilla Mejia 100 9.0
    8041060 Andrei Kenji Tsuda 100 9.0
    11281245 Augusto Cesar Magalhaes Coutinho 100 9.0
    10378081 Caio Filipe Escanferla Silva 100 9.0
    10278531 Eduarda Wiltiner Reis Santana 100 9.0
    10773850 Felipe Albuquerque Montezi 100 9.5
    10751831 Gabriela Simoes Kind 100 9.0
    10770392 Giulia Duo Cardella 100 9.0
    9348794 Henrique Cleves de Oliveira Carmo 100 9.0
    11453890 Jaime Nobre Sainz 100 9.0
    11453733 Leonardo Galgani 100 9.0
    11262091 Leonardo Martins Pires 100 9.0
    10333567 Luis Eduardo Farias Sales Nobrega 100 9.0
    10333608 Luis Estevao Windisch Olenscki 100 9.0
    10770603 Luiz Fernando Ferreira da Silva 100 9.0
    9345575 Maicon Roberto Daltrozo 100 9.5
    10773606 Marcelo Augusto Gazola Paiva 100 9.5
    9345860 Marco Enrique dos Santos Abensur 100 9.0
    11027810 Ramon Andrade Sousa Carvalho 100 9.5




    Aulas: Terça-feira e Quinta-feira, sala C1-10. 16:50-18:40.

    Professor: Sergio Takeo Kofuji

    As aulas terao conteudo teorico e pratico. A parte pratica usara servicos na Nuvem (IBM CLOUD, GOOGLE, AZURE, FREEBOARD, FIWARE etc.), e dispositivos como smartphone e raspberry-PI.

    No mes de Outubro os alunos devrao se agrupar em 5 grupos, para a arealizacao EM AULA do trabalho final da disciplina, que correspondera a avaliacao 3.

    Avaliacao 1: pratica com smartphone como IoT device, conectado 1) ao dweet.io+freeboard; 2) smartphone conectado ao Bluemix IoT e ao IBM Node-RED

    Avaliacao 2: pratica com TTS e STT usando o raspberry PI e diversas formas de implementacao local e na nuvem

    Avaliacao 3: implementacao de um assistente domotico com interface humano-maquina por voz


    Instalação do Raspian no raspiberry 3B

    -fazer download do arquivo img do raspibian stretch standard (nao use o lite e nem o full)

    -gravar o microSD com o BalenaEtcher

    -colocar o microSD no raspberry, conectar o teclado, mouse e conector hdmi. Ligar a fonte

    -seguir o procedimento de inicializacao - faça os updates necessários

    -instalar o node.js/nmp e o node-red usando o script do link

    -iniciar o node-red. Abrir o chromium no link http://128.0.0.1:1880

    -instalar os pallets do node red: browser-utils e watson

    -instalar o sotware corresponte ao TTS (exceto o cepstral, festival e espeak)

    -NODE-RED NO RASPBERRY (como usar os GPIOs)

    -configuração do wifi do raspberry-pi: a placa deve se autenticar numa rede WIFI com portas habilitadas para acesso aos serviços externos


    Materiais de Apolo


    1) Freboard e dweet.io


    2) Grafana

    https://grafana.com/


    3)NODE-RED

    http://inf.ufes.br/~zegonc/material/Redes%20de%20Sensores%20sem%20Fio/Minicurso%20Node-RED.pd

    https://cookbook.nodered.org


    4)RASPBERRY-PI


    5) Assistente Domotico com Raspberry Pi e Bluemix


    6) MQTT



    • Os alunos devem subir o(s) arquivo(s) referente a primeira avaliacao:

      -mostrar como foi feita a implementacao do sistema IoT com o smartphone como sensor conectado ao dweet.io/freeboard.

      -passo-a-passo da implementacao

      -demosntracao do sistema funcional

      -idem, smarthone+IBM Cloud (bluemix IoT e IBM Node-Red)

      atencao:

      os alunos devem entregar em grupo de no maximo 4 (quatro) alunos. A entrega pode mestrar arquivos power-point narrados (com voz) e screen-cast. Pode-se tambem utilizar camera de video na demosntracao do sistema funcional

      DATA MAXIMA DE ENTREGA - 23 DE OUTUBRO, 23H59M



    • Upload da 2a. Aavaliacao (arquivo zip)

      -documento pdf

      -materiais adicionais


      em caso de entrega de material de grande tamanho, recomenda-se o envio de um link para um DRIVE na Nuvem.


  • Tópico 1

    Aula-01 Introdução à Disciplina, Apresentação Geral de Internet das Coisas (IoT) e Sistemas Embarcados para IoT.

  • Tópico 2

    Aula01 - Dispositivos IoT


  • Tópico 3

    PRÁTICA: PLATAFORMAS DE IOT DWEET E FREEBOARD

  • Tópico 4

    Aula 12/09/2019

    Assistente Domotico usando Raspberry PI e TTS


  • Tópico 5

  • Tópico 6

    26/Set/2019 Assistente Domótico: Raspberry PI e Txt-to-Speech

    1) RPi Text to Speech (Speech Synthesis)

    https://elinux.org/RPi_Text_to_Speech_(Speech_Synthesis)

    2) Parte Prática

    2.1) Google Service para TTS

    2.2) Integração do Google-Service no NODE-RED

    2.3) Node-Red e TTS local






  • Tópico 7

    01/1Out/2019: Implementando Sistema Assistente Domotico com o Raspberry Pi: Speech to Text

    1) criar um serviço de STT no IBM Cloud (Watson)

    2) anote as credenciais

    3) Realize as atividades do STT Parte 1

    3.1) STT Demo: https://speech-to-text-demo.ng.bluemix.net/?_ga=2.124640525.669862313.1569945002-1069859680.1568390831&cm_mc_uid=49059241891215683908281&cm_mc_sid_50200000=44813581569944999825&cm_mc_sid_52640000=57251241569944999826

    3.2) https://cloud.ibm.com/docs/services/speech-to-text?topic=speech-to-text-gettingStarted

    4) Prática com o Node Red

    4.1) instale o json correspondente à parte 02. Verifique a configuraçao de cada nó

    4.2) teste com o microfone

    4.3) modifique o exemplo de forma a inserir novas funcionalidades, como incluir um feedback do sistema ao usuario usando o TTS visto na aula passada.

    4.4) leia a seção 5.4 da tese

    5) leia a secao sobre o ZAMIA, um STT que roda localmente no Raspberry PI.


  • Tópico 8

    3/Out/2019

    Conclusao da parte pratica da aula passada - secao 6.4 (pag. 51) da tese "Developing a voice-controlled
    home-assisting system for KTH Live-in Labs".  SHREYANS MALOO.

    -teste o sistema varias vezes com os comandos programados. Veja qual ]e a taxa de acertos, e quais sao os tipos de interpretacao erronea. Altere o programa (flow) node-red para aumentar a taxa de acertos.

    -conecte um LED a um dos pinos de saida do raspberry-PI para ver  se o prgrama funciona.

    Dica: https://thepihut.com/blogs/raspberry-pi-tutorials/27968772-turning-on-an-led-with-your-raspberry-pis-gpio-pins



  • Tópico 9

    08/1Out/2019 Assistente Domótico - stt&tts, sensor de temperatura/umidade, tocador de musica

    1. acrescentar o serviço de TTS no IBM Cloud. Anote as credenciais (API key e link)

    2. Teste o TTS IBM no Node-Red Raspberry-PI usando o modulo USB

    3. acrescente o TTS o fluxo de controle domotico com STT versao prototipo 1 da tese.

    4. verifique o funcionamento em LINGUA PORTUGUESA BRASILEIRA

    5. teste a função *TOQUE MUSICA"

    pode-se utilizar o youtube, o vlc, o aplay, o mplayer, etc. para tocar musicas armazenadas localmente ou na rede.

    pode-se tambem tocar radios.

    6. acrescente o palete do sensor DHT11 no Node-Red (node-red-contrib-dht-sensor). Configure o nó dht11 para o pino físico da figura abaixo)

    7 monte o sensor de temperatura/umidade


    protocolo de comunicacao dht11

    8. Teste o funcionamento

  • Tópico 10

    10/Out/2019 Semana de Provas 1o. e 2o. ano

    Dica sobre o Tocado dr Musica:

    exemplo de implementacao de um radio internet implementado sobre o NODE-RED

    https://flows.nodered.org/flow/8b75e690f46b339639347cb0dce63344


  • Tópico 11

    17/OUTUBRO/2019

    IMPLEMENTACAO DO  BLOCO TOCADOR DE MUSICA.

    SIGA AS  INSTRUCOES APRESENTADAS NO TOPICO 10

    MODIFIQUE O TOCADOR DE MUSICA PARA OUTRAS MODALIDADES DE TOCADOR  DE MIDIA (LISTA DE MUSICAS, ESTACOES DE RADIO, ETC.)

    MODIFIQUE O SISTEMA PARA RECEBER COMANDOS DE VOZ

    COMO OBTER LINKS PLS DE RADIO INTERNET:

    entre em: https://www.internet-radio.com/

    selecione uma modalidade de musica, por exemplo jazz

    tela de https://www.internet-radio.com/stations/jazz/


    clique em .pls e salve em algum editor do tipo notepad...

    obtenha o URL da radio internet (pls)

    BOA SORTE

  • Tópico 12

    22/10/2019

    -completar o flow diagram de play music, usando os links .pls do internet-radio

    -realizar a medição de temperatura do sensor DHT11

    -realizar a integração do raspberrypi como IoT device ao IBM Cloud Bluemix IoT

    • verifique se o palette node-red-contrib-ibm-watson-iot está instalado. Caso contrário, faça a instalação.
    • crie uma nova aba de fluxo
    • insira um nó watson iot de saída
    • conecte na entrada do nó watsion iot output um nó inject (timestamp)
    • conecte na saída do nó watson um nó debug
    • configure o nó watson, clicando duas vezes com o mouse. configure como device, e quickstart. Coloque no quickstart id o MAC address da placa de rede wireless na forma NN-NN-NN-NN-NN-NN
    • faça o deployment do Raspberry Node-Red
    • no janela de configuração do ibm watson output, clique no icone de dashboard ao lado do campo de quickstart id. Isso irá abrir a janela do ibm watson iot para operacao quickstart
    • clique no nó de injeção ou configure o nõ de injeção para gerar eventos a cada segundo.
    • veja os eventos na janela quickstart do IBM
    • modifique a configuração do no IBM Watson output para REGISTERED
      • utilize o oganization id (orgid) do IBM Cloud utilizado na sua conta
      • adote como server orgid.messaging.internetofthings.ibmcloud.com
      • preencha o token adotado na instalação do dispositivo no IBM Cloud IoT

    -implemente um display da tempertarura medida pelo DHT11 no IBM Node-Red Dashboard

    • insira um leitor de temperatura DHT11 no node-red do raspberry-pi. Envie os dados de temperatura ao IBM Watson IoT
    • abra a janela do IBM Node-Red e faça um gráfico com os dados de temperatura. Atenção - assegure que o IBM Cloud IoT está conectado com o IBM Node-Red...

    -implemente um controle de limite de temperatura no IBM Node-Red de forma a enviar um commando ao Raspberry Pi assim que a temperatura atingir 30 graus Celsius, simulando um controle elementar de controle de temperatura. Para isso voce deve utilizar um no IBM Watson input no Raspberry Node-Red. Configure o no da mesma forma que foi feito no IBM Cloud output.

    • insira um nó Watson Iot input no node-red do raspberry-pi
    • conecte com o ibm IoT
    • verifique se voce consegue mandar dados do IBM Cloud ao Raspberry Node-Red
    • agora tente enviar dados do IBM Node-Red ao Raspberry Node-Red
    • complete o exercício. Quando a temperatura atingir um limite, acione um alarme no raspberry (acenda ul LED, toque uma mensagem de voz, toque um sirene, acione um ventilador, etc). Quando a temperatura cair abaixo de um limite, desative o alarme.

    -mande alarmes via sms, twitter ou outro mecanismo ao celular do usuario

    -acrescente funções de TTS (com saida de voz pelo browser) no IBM Dashboard para interface com o usuário e teste no browser de um smartphone.

      



  • Tópico 13

    24/10/2019

    Integração Raspberry Node-Red com o IBM Node-Red

    -completar as tarefas do dia 22/10/2019

    -antes de tentar enviar a temperatura do sensor DHT11, pode-se enviar a temperatura do CPU do Raspberry, executando o comando:

    • vcgencmd measure_temp | egrep -o '[0-9]*\.[0-9]*'
    como explicado no link:


  • Tópico 14

    29/10/2019

    implementação de um dispositivo IoT com o ESP8266

    iot device com o esp8266


  • Tópico 15

    31/10/2019

    CLIENTE PUB/SUB NO ESP8266 NODEMCU V3

    -INSTALAR UM CLIENTE MQTT. TESTAR COM UM MQTT BROKER

    -CONECTAR O CLIENTE MQTT AO IOT GATEWAY (RASPBERRY-PI RODANDO O NODE-RED)



  • Tópico 16

    05/11/2019

    Integração IoT Device (ESP8266) + IoT Gateway (Raspberry-PI)

    1) complete a implementação do IoT Device MQTT Client com o ESP8266 NodeMCU V3, para ler a temperatura (sensor DHT11) e acender o buit-n LED

    2) trocar o Mqtt broker na nuvem (HIVE) pelo MQTT Broker do Raspberry-PI (MOSCA MQTT do Node-Red). Testar o funcioanmento, lendo a temperatura e acendendo o LED se a temperatura passar um limite (dica: implemente clientes  publish e subscriber no Raspberry-Pi NOD-RED para testar 


    Observações - leitura do sensor DHT11

    -ESP8266: modifique o programa mqtt_esp8266 para incluir o programa DHT_ESP8111 ou o DHT11 para leitura do sensor DHT11. Verifique no programa o pino tilizado para leitura do sensor.

    -https://circuits4you.com/2019/01/25/interfacing-dht11-with-nodemcu-example/

    -circuito
    circuito

    -DHT11 pinout


    pinagem de um modulo sensor DHT11 disponivel no mercado

    pinagem de outros modulos DHT11

    -esp8266 nodemcu pinout

    https://circuits4you.com/2017/12/31/nodemcu-pinout/

    -apos instalar a biblioteca, teste o seguinte programa para ler a temperatura e humidade com o DHT11

    -----------------------------------------------------------CUT HERE-----------------------------------

    /* 

     * ESP8266 NodeMCU DHT11 - Humidity Temperature Sensor Example

     * https://circuits4you.com

     * 

     * References

     * https://circuits4you.com/2017/12/31/nodemcu-pinout/

     * 

     */

     

    #include "DHTesp.h"


    #define DHTpin 14    //D5 of NodeMCU is GPIO14


    DHTesp dht;


    void setup()

    {

      Serial.begin(115200);

      Serial.println();

      Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)\tHeatIndex (C)\t(F)");

      

      // Autodetect is not working reliable, don't use the following line

      // dht.setup(17);


      // use this instead: 

      dht.setup(DHTpin, DHTesp::DHT11); //for DHT11 Connect DHT sensor to GPIO 17

      //dht.setup(DHTpin, DHTesp::DHT22); //for DHT22 Connect DHT sensor to GPIO 17

    }


    void loop()

    {

      delay(dht.getMinimumSamplingPeriod());


      float humidity = dht.getHumidity();

      float temperature = dht.getTemperature();


      Serial.print(dht.getStatusString());

      Serial.print("\t");

      Serial.print(humidity, 1);

      Serial.print("\t\t");

      Serial.print(temperature, 1);

      Serial.print("\t\t");

      Serial.print(dht.toFahrenheit(temperature), 1);

      Serial.print("\t\t");

      Serial.print(dht.computeHeatIndex(temperature, humidity, false), 1);

      Serial.print("\t\t");

      Serial.println(dht.computeHeatIndex(dht.toFahrenheit(temperature), humidity, true), 1);

    }

    ---------------------------------------------------------------END-----------------------------------------------------------------------


  • Tópico 17

    07/11/2019

    -Implementação de um sensor de temperatura e humidade e acionamento de lampada LED com o ESP8266 NODEMCU V3 com clientes MQTT PUB/SUB

    -discussão sobre a avaliação 2 e data de entrega.

    -codigo ESP8266 NODEMCU V3


    ----------------------------------------------------CUT HERE--------------------------------------------------------

    /*

      ESP8266 MQTT DHT11


     This sketch demonstrates the capabilities of the pubsub library in combination

     with the ESP8266 board/library.


     It connects to an MQTT server then:

      - publishes DHT11 Temperature to the topic "tempPOLI" every two seconds

      - subscribes to the topic "ledPOLI", printing out any messages

        it receives. NB - it assumes the received payloads are strings not binary

      - If the first character of the topic "ledPOLI" is an 1, switch ON the ESP Led,

        else switch it off


     It will reconnect to the server if the connection is lost using a blocking

     reconnect function. See the 'mqtt_reconnect_nonblocking' example for how to

     achieve the same result without blocking the main loop.


     To install the ESP8266 board, (using Arduino 1.6.4+):

      - Add the following 3rd party board manager under "File -> Preferences -> Additional Boards Manager URLs":

           http://arduino.esp8266.com/stable/package_esp8266com_index.json

      - Open the "Tools -> Board -> Board Manager" and click install for the ESP8266"

      - Select your ESP8266 in "Tools -> Board"


    */


    #include <ESP8266WiFi.h>

    #include <PubSubClient.h>

    #include "DHTesp.h" /*STK*/


    //builtin LED is in differente from V2!

    #define LED_02 2


    #define DHTpin 14    //D5 of NodeMCU is GPIO14 /*STK*/


    // Update these with values suitable for your network.


    const char* ssid = "-----";

    const char* password = "------";

    const char* mqtt_server = "broker.hivemq.com";


    DHTesp dht; /*STK*/

    WiFiClient espClient;

    PubSubClient client(espClient);

    long lastMsg = 0;

    char msg[50];

    int value = 0;



    void setup_wifi() {


      delay(10);

      // We start by connecting to a WiFi network

      Serial.println();

      Serial.print("Connecting to ");

      Serial.println(ssid);


      WiFi.begin(ssid, password);


      while (WiFi.status() != WL_CONNECTED) {

        delay(500);

        Serial.print(".");

      }


      randomSeed(micros());


      Serial.println("");

      Serial.println("WiFi connected");

      Serial.println("IP address: ");

      Serial.println(WiFi.localIP());

    }



    void callback(char* topic, byte* payload, unsigned int length) {

      Serial.print("Message arrived [");

      Serial.print(topic);

      Serial.print("] ");

      for (int i = 0; i < length; i++) {

        Serial.print((char)payload[i]);

      }

      Serial.println();


      // Switch on the LED if an 1 was received as first character

      if ((char)payload[0] == '1') {

        digitalWrite(LED_02, LOW);   // Turn the LED on (Note that LOW is the voltage level

        // but actually the LED is on; this is because

        // it is active low on the ESP-01)

      } else {

        digitalWrite(LED_02, HIGH);  // Turn the LED off by making the voltage HIGH

      }


    }


    void reconnect() {

      // Loop until we're reconnected

      while (!client.connected()) {

        Serial.print("Attempting MQTT connection...");

        // Create a random client ID

        String clientId = "ESP8266Client-";

        clientId += String(random(0xffff), HEX);

        // Attempt to connect

        if (client.connect(clientId.c_str())) {

          Serial.println("connected");

          // Once connected, publish an announcement...

          client.publish("tempPOLI", "hello world");

          // ... and resubscribe

          client.subscribe("ledPOLI");

        } else {

          Serial.print("failed, rc=");

          Serial.print(client.state());

          Serial.println(" try again in 5 seconds");

          // Wait 5 seconds before retrying

          delay(5000);

        }

      }

    }


    void setup() {

      pinMode(LED_02, OUTPUT);     // Initialize the BUILTIN_LED pin as an output

      Serial.begin(115200);

      setup_wifi();

      

      dht.setup(DHTpin, DHTesp::DHT11); //for DHT11 Connect DHT sensor to GPIO 17 /*STK 07/11/2019 */

      

      client.setServer(mqtt_server, 1883);

      client.setCallback(callback);

    }


    void loop() {


      if (!client.connected()) {

        reconnect();

      }

      client.loop();


      long now = millis();

      if (now - lastMsg > 2000) {


     float humidity = dht.getHumidity();


     float temperature = dht.getTemperature(); /* STK 07/11/2019 */

        

        lastMsg = now;

        ++value;

        snprintf (msg, 50, "Temperature %f", temperature);

        Serial.print("Publish message: ");

        Serial.println(msg);

        client.publish("tempPOLI", msg);

      }

    }

    ---------------------------------------END-------------------------------------



  • Tópico 18

    12/11/2019

    -Sistema IoT Completo, composto por um sensor (DHT11), um IoT device (ESP8266), um IoT Gateway (Raspberry Pi), e uma plataforma de  Cloud IoT

    -Entrega dos títulos dos Trabalhos Finais

    -O Trabalho Final deverá ser entregue até o dia 28 de Novembro. Este prazo poderá ser extendido por uma semana em caso de sobreposição com provas. O Trabalho final deve conter: apresentação do problema a ser tratado pelo projeto, visão de alto nivel do sistema  sistema. Decomposição do sistema, descrevendo as partes constituintes e interfaces. Codigos e node-red flow diagrams.