Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronach Poprzednia wersja
Nowa wersja
Poprzednia wersja
projekty:szuszacz [2017/11/29 12:58]
yazjack [Wykonanie]
— (aktualna)
Linia 1: Linia 1:
-==== Opis projektu ==== 
  
-Mój synek dość niespokojnie śpi, najczęściej wybudza się co jakiś czas i trzeba brać go na ręce, ponownie usypiać itd. To wszystkow ​ czasie, kiedy kręgosłup odmawiał mi posłuszeństwa. Jedyną opcją było "​szuszanie",​ kiedy słyszał ten dźwięk, uspokajał się i ponownie zasypiał. Są nawet badania, wskazujące na korzystne działanie białego szumu na sen u dzieci. Nie ważne, działało. Z tym mankamentem,​ że trzeba było obserwować małego, kiedy zaczynał się poruszać we śnie, to był moment na "​szuszanie"​. 
- 
-Pomysł był dość prosty, zrobić czujkę, która "​obserwuje"​ malucha za mnie i "​szusza"​ w odpowiednim momencie. 
- 
-==== Wykonanie ==== 
- 
-Elementy: 
- 
-- Arduino Nano 
-- DFPlayer 
-- zasilacz do płytek prototypowych 
-- czujnik PIR 
-- mikrofon 
- 
-Zaczęło się i skończyło na prototypie na płytce. Bo działało i wystarczyło. Za układ starujący posłużyło Arduino Nano, za odtwarzanie dźwięku DFPlayer z głośnikiem,​ za wykrywanie ruchu i dźwięku czujnik PIR i mikrofon. Arduino przyjmowało sygnał z PIR i odtwarzało losowo cykl pięciu z dziesięciu czterosekundowych nagrań. Takie rozwiązanie pozwalało na odtworzenie dość naturalnego,​ niepowtarzalnego "​szuszania"​. Mikrofon miał wykrywać płacz i zwiększać głośność,​ ewentualnie dawać znać do odbiornika przez wifi, ale nie oddalam się nigdy na tyle, żeby było to konieczne. 
- 
-<code cpp> 
- 
-#include "​Arduino.h"​ 
-#include "​SoftwareSerial.h"​ 
-#include "​DFRobotDFPlayerMini.h"​ 
- 
-SoftwareSerial mySoftwareSerial(10,​ 11); // RX, TX 
-DFRobotDFPlayerMini myDFPlayer; 
-void printDetail(uint8_t type, int value); 
- 
-void setup() 
-{ 
-  mySoftwareSerial.begin(9600);​ 
-  Serial.begin(115200);​ 
- 
-  Serial.println();​ 
-  Serial.println(F("​DFRobot DFPlayer Mini Demo"​));​ 
-  Serial.println(F("​Initializing DFPlayer ... (May take 3~5 seconds)"​));​ 
- 
-  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3. 
-    Serial.println(F("​Unable to begin:"​));​ 
-    Serial.println(F("​1.Please recheck the connection!"​));​ 
-    Serial.println(F("​2.Please insert the SD card!"​));​ 
-    while(true);​ 
-  } 
-  Serial.println(F("​DFPlayer Mini online."​));​ 
- 
-  myDFPlayer.volume(10); ​ //Set volume value. From 0 to 30 
-  myDFPlayer.play(1); ​ //Play the first mp3 
-} 
- 
-void loop() 
-{ 
-  static unsigned long timer = millis(); 
- 
-  if (millis() - timer > 3000) { 
-    timer = millis(); 
-    myDFPlayer.next(); ​ //Play next mp3 every 3 second. 
-  } 
- 
-  if (myDFPlayer.available()) { 
-    printDetail(myDFPlayer.readType(),​ myDFPlayer.read());​ //Print the detail message from DFPlayer to handle different errors and states. 
-  } 
-} 
- 
-void printDetail(uint8_t type, int value){ 
-  switch (type) { 
-    case TimeOut: 
-      Serial.println(F("​Time Out!"​));​ 
-      break; 
-    case WrongStack: 
-      Serial.println(F("​Stack Wrong!"​));​ 
-      break; 
-    case DFPlayerCardInserted:​ 
-      Serial.println(F("​Card Inserted!"​));​ 
-      break; 
-    case DFPlayerCardRemoved:​ 
-      Serial.println(F("​Card Removed!"​));​ 
-      break; 
-    case DFPlayerCardOnline:​ 
-      Serial.println(F("​Card Online!"​));​ 
-      break; 
-    case DFPlayerPlayFinished:​ 
-      Serial.print(F("​Number:"​));​ 
-      Serial.print(value);​ 
-      Serial.println(F("​ Play Finished!"​));​ 
-      break; 
-    case DFPlayerError:​ 
-      Serial.print(F("​DFPlayerError:"​));​ 
-      switch (value) { 
-        case Busy: 
-          Serial.println(F("​Card not found"​));​ 
-          break; 
-        case Sleeping: 
-          Serial.println(F("​Sleeping"​));​ 
-          break; 
-        case SerialWrongStack:​ 
-          Serial.println(F("​Get Wrong Stack"​));​ 
-          break; 
-        case CheckSumNotMatch:​ 
-          Serial.println(F("​Check Sum Not Match"​));​ 
-          break; 
-        case FileIndexOut:​ 
-          Serial.println(F("​File Index Out of Bound"​));​ 
-          break; 
-        case FileMismatch:​ 
-          Serial.println(F("​Cannot Find File"​));​ 
-          break; 
-        case Advertise: 
-          Serial.println(F("​In Advertise"​));​ 
-          break; 
-        default: 
-          break; 
-      } 
-      break; 
-    default: 
-      break; 
-  } 
-} 
-</​code>​ 
-==== Finał projektu ==== 
- 
-Na zdjęciu pierwszy test bojowy. Działało idealnie, drzemki trwały bez przerw. 10/10, używam do tej pory. 
- 
-{{https://​trello-attachments.s3.amazonaws.com/​5a156db2be9d8433cfe1eaaa/​5a1e9c9965016cd49e972e71/​7784e26863b65249e9157f23b065e324/​IMG_20170615_152405.jpg?​400}} 
  • projekty/szuszacz.1511956681.txt.gz
  • ostatnio zmienione: 2020/09/24 20:27
  • (edycja zewnętrzna)